﻿window.onload = f_init;
window.onunload = f_end;

var gmap, gzoom = 6.5;
var gico01, gico02, gico03;
var aprov = null, aprom = null;

function f_end() {
}

function f_init() {
	if(GBrowserIsCompatible()) {
		var nLat  = getCookie("lat", 0);
		var nLon  = getCookie("lon", 0);
		var nZoom = getCookie("zoom", 0);
		var div   = document.getElementById("gmap");
				
		gico01 = new GIcon();
		gico01.image = sURLBase+"gifs/ico-provinciaconpromo.png";
		gico01.iconSize   = new GSize(22, 34);
		gico01.iconAnchor = new GPoint(11, 34);
		gico02 = new GIcon();
		gico02.image = sURLBase+"gifs/ico-promoenventapeq.png";
		gico02.iconSize   = new GSize(18, 20);
		gico02.iconAnchor = new GPoint( 9, 20);
		gico03 = new GIcon();
		gico03.image = sURLBase+"gifs/ico-proximapromopeq.png";
		gico03.iconSize   = new GSize(18, 20);
		gico03.iconAnchor = new GPoint( 9, 20);

		gmap  = new GMap2(div);
		gmap.addControl(new GLargeMapControl());
		gmap.addControl(new GMapTypeControl());
		
		f_loadProv();
		
		GEvent.bind(gmap, "dragend", this, f_saveStatus);
		GEvent.bind(gmap, "zoomend", this, f_repaint   );
		
		if(nLat!=0 && nLon!=0 && nZoom!=0) {
			var gll = new GLatLng(nLat, nLon);
			gmap.setCenter(gll, parseInt(nZoom));		
		} else {
			f_center();
		}
	}
}

function f_center() {
	var gll = new GLatLng(40, -2.3);
	gmap.setCenter(gll, 6);
}

function f_loadProv() {
	var sel = document.getElementById("isel");
	var opt = null;
	aprov = getJSON(sURLBase+"ajax-mapa-prov.aspx?idi="+idIdioma);
	sel.onchange = f_changeProv;
	for(k in aprov) {
		var gpnt = new GLatLng(aprov[k].lat, aprov[k].lon);
		var gmrk = new GMarker(gpnt, gico01);
		aprov[k].id     = k;
		aprov[k].center = f_zoomProv;
		aprov[k].mark   = gmrk;
		opt = document.createElement("option");
		opt.value     = k;
		opt.innerHTML = aprov[k].name;
		sel.appendChild(opt);
	}
	f_loadProm();
}

function f_loadProm() {
	aprom = getJSON(sURLBase+"ajax-mapa-prom.aspx?idi="+idIdioma);
	for(k in aprom) {
		for(kk in aprom[k]) {
			var gpnt = new GLatLng(aprom[k][kk].lat, aprom[k][kk].lon);
			var gmrk = new GMarker(gpnt, aprom[k][kk].ep==1 ? gico02 : gico03);
			aprom[k][kk].openinfo = f_openinfo;
			aprom[k][kk].mark = gmrk;
		}
	}
	return true;
}

function f_repaint() {
	var url, repaint = false;
	var zoom = gmap.getZoom();
	if(zoom<7 && gzoom > 6) {
		gzoom = zoom;
		gmap.clearOverlays();
		for(k in aprov) {
			gmap.addOverlay(aprov[k].mark);
			GEvent.bind(aprov[k].mark, "click", aprov[k], aprov[k].center);
		}
	}
	if(zoom>6 && gzoom < 7) {
		gzoom = zoom;
		gmap.clearOverlays();
		for(k in aprom) { 
			for(kk in aprom[k]) { 
				gmap.addOverlay(aprom[k][kk].mark);
				GEvent.bind(aprom[k][kk].mark, "click", aprom[k][kk], aprom[k][kk].openinfo);
			}
		}
	}
	f_saveStatus();
}

function f_zoomProv(k) {
	var sel = document.getElementById("isel");
	var prv = (typeof k)=="string" ? aprov[k] : this;
	var gll = new GLatLng(prv.lat, prv.lon);
	selectSel(sel, prv.id)
	gmap.setCenter(gll, prv.zm-1);
}

function f_changeProv() {
	var sel = document.getElementById("isel");
	var opt = sel.options[sel.selectedIndex];
	var val = opt.value;
	if(val!="") f_zoomProv(val);
	else        f_center();
}

function f_openinfo(k) {
	var prm = (typeof k)=="string" ? aprov[k] : this;
	var gp  = prm.mark.getPoint();
	var htm = "";
	htm += "<a href='"+prm.link+"'><img style='float: left;' src='"+prm.image+"' /></a>"
	htm += "<div style='width: 220px; height: 100px; margin-left: 130px;'>";
	htm += "<h3 class='tipo1'><a href='"+prm.link+"'>"+prm.name+"</a></h3>";
	htm += "<div style='margin-left: 15px;'>";
	htm += "<p style='margin-top: -6px; font-family: Arial; font-size: 12px;'>"+prm.tagline+"</p>";
	if(prm.price!="0 &euro;")
	if(idIdioma==2057) {
		htm += "<p>Price from <span style='font-size: 15px; font-weight: bold;'>"+prm.price+"</span></p>";
		htm += "<p><a href='"+prm.link+"'>more information »</a></p>";
	}
	if(idIdioma==1031) {
		htm += "<p>Preis von <span style='font-size: 15px; font-weight: bold;'>"+prm.price+"</span></p>";
		htm += "<p><a href='"+prm.link+"'>mehr Informationen »</a></p>";
	}
	if(idIdioma==1049) {
		htm += "<p>Цена от <span style='font-size: 15px; font-weight: bold;'>"+prm.price+"</span></p>";
		htm += "<p><a href='"+prm.link+"'>Еще инфо »</a></p>";
	}
	htm += "</div>";
	htm += "</div>";
	htm += "<div style='clear: both'></div>";
	//prm.mark.openInfoWindowHtml("asd", { maxWidth: 200 });
	gmap.openInfoWindowHtml(gp, htm, { maxWidth: 350 });
}

function f_saveStatus() {
	setCookie("lat", gmap.getCenter().lat());
	setCookie("lon", gmap.getCenter().lng());
	setCookie("zoom", gmap.getZoom());
}

function getHtml(sURL) {
	var xmlHttp = GXmlHttp.create();
	xmlHttp.open("GET", sURL, false);
	xmlHttp.send(null);	
	return xmlHttp.responseText;
}
function getJSON(sURL) {
	var xmlHttp = GXmlHttp.create();
	xmlHttp.open("GET", sURL, false);
	xmlHttp.send(null);
	return eval(xmlHttp.responseText);
}

function selectSel(oSel, oVal) {
	for(i=0; i<oSel.options.length; i++) {
		if(oSel.options[i].value == oVal) {
			oSel.selectedIndex = i;
		}
	}
}

function setCookie(name, value) {
	document.cookie = name+"="+value+"";
}

function getCookie(name, def) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return def;
}
