var gmaps   = null;
var gmDiv   = null;
var gicon   = null;
var gback   = null;
var sIcoOn  = null;
var sIcoOf  = null;
var jTitle  = null;
var jTodos  = null;
var jMunis  = null;
var bFirst  = true;
var oCmrkB  = null;
var oStatus = null;

var ZonaTit = function (gplg) {
	this.gplg   = gplg;
	this.bounds = this.gplg.getBounds();
	this.center = this.bounds.getCenter();
	this.zoom   = gmaps.getBoundsZoomLevel(this.bounds);
}
ZonaTit.prototype = new GOverlay();
ZonaTit.prototype.initialize = function (map) {
	var me = this;
	this.map = map;
	this.div = document.createElement("div");

	$(this.div).addClass("tile").css({ width: parseInt(this.width), cursor: 'pointer' });
	$(this.div).html(this.name+" | <strong>"+this.num+"</strong>");
	$(this.div).click(function () { me.click(); });
	
	this.map.getPane(G_MAP_MARKER_SHADOW_PANE).appendChild(this.div);
}
ZonaTit.prototype.redraw = function (force) {
	if(this.lat!=0) {
		var px = this.map.fromLatLngToDivPixel(new GLatLng(this.lat, this.lon));
		this.div.style.top  = px.y+"px";
		this.div.style.left = px.x+"px";
	} else {
		var c1 = this.map.fromLatLngToDivPixel(this.bounds.getSouthWest());
		var c2 = this.map.fromLatLngToDivPixel(this.bounds.getNorthEast());
		this.div.style.top  = c2.y+((c1.y-c2.y)/2)+"px";
		this.div.style.left = c2.x+((c1.x-c2.x)/2)+"px";
	}
}
ZonaTit.prototype.remove = function () {
  this.div.parentNode.removeChild(this.div);
}

var MuniTit = function (gmrk) {
	this.gmrk   = gmrk;
	this.center = this.gmrk.getLatLng();
}
MuniTit.prototype = new GOverlay();
MuniTit.prototype.initialize = function (map) {
	var me = this;
	this.map = map;
	this.div = document.createElement("div");

	$(this.div).addClass("tile").css({ width: 100 });
	$(this.div).html(this.title).css({ display: "none" });
	
	GEvent.addListener(this.gmrk, "mouseover", function () {
		$(me.div).css({ display: "block" });
	});
	GEvent.addListener(this.gmrk, "mouseout", function () {
		$(me.div).css({ display: "none" });
	});
	
	this.map.getPane(G_MAP_MARKER_PANE).appendChild(this.div);
}
MuniTit.prototype.redraw = function (force) {
	var px = this.map.fromLatLngToDivPixel(this.center);
	this.div.style.top  = px.y+"px";
	this.div.style.left = px.x+"px";
}
MuniTit.prototype.remove = function () {
  this.div.parentNode.removeChild(this.div);
}

var ButtonBack = function () {
}
ButtonBack.prototype = new GControl();
ButtonBack.prototype.initialize = function (map) {
	var me = this;
	this.map = map;
	this.cnt = document.createElement("div");
	this.img = new Image();
	this.show = function () { $(this.cnt).css({ display: "block" }); };
	this.hide = function () { $(this.cnt).css({ display: "none"  }); };

	this.img.src = sBase+"gifs/volver-provincia.gif";
	this.cnt.appendChild(this.img);
	$(this.img).css({ cursor: "pointer" });

	GEvent.addDomListener(this.img, "click", function () {
		gmaps.setCenter(new GLatLng(parseFloat(aProv.lat), parseFloat(aProv.lon)), parseFloat(aProv.zoom));
		f_rNrComarcas();
	});

	map.getContainer().appendChild(this.cnt);
	return this.cnt;
}
ButtonBack.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7));
}

var StatusInfo = function () {
	this.params = {};
	this.last   = 0;
	
	this.jGoTo  = $("#tabsline a");
	
	this.setLast = function (n) { 
		this.last = n;
		this.jGoTo.each(function (i, o) {
			var j = $(o);
		//	j.attr("href", j.attr("org")+"?a="+n);
		});
		setCookie("lst_cmrk", n);
	};
	
	this.jGoTo.each(function (i, o) {
		var j = $(o);
		j.attr("org", j.attr("href"));
	});

	var href = (href = location.href).substr(1+href.indexOf("?"));
	var lp   = getCookie("lst_prov", "");
	var lc   = getCookie("lst_cmrk", 0);
	this.params   = this.str2obj(href);
	this.params.a = (lp!=aProv.uri ? parseInt(this.params.a || 0) : parseInt(this.params.a || lc)); // !bRefB
	setCookie("lst_prov", aProv.uri);
}
StatusInfo.prototype.str2obj = function (str) {
	var pair, obj = {};
	str = str.split("&");
	for(k in str) { 
		pair = str[k].split("=");
		obj[pair[0]] = pair[1];
	}
	return obj;
}
StatusInfo.prototype.str2glla = function (str) {
	var pairs  = str.split(";");
	var glla   = [];
	for(kk in pairs) {
		var pair = pairs[kk].split(",");
		glla.push(new GLatLng(pair[1], pair[0]));
	}
	return glla;
}

function f_init() {
	jTitle  = $("#hTitMapa");
	jTodos  = $("#hTodos");
	jMunis  = $("#ulMunis");
	sIcoOn  = sBase+"segunda-mano/gifs/icon_on.png";
	sIcoOf  = sBase+"segunda-mano/gifs/icon_off.png";
	oStatus = new StatusInfo();
	if(GBrowserIsCompatible()) {
		gmDiv = document.getElementById("gmaps");
		gicon = new GIcon();
		gicon.image = sIcoOn
		gicon.iconSize   = new GSize(25, 25);
		gicon.iconAnchor = new GPoint(13, 25);
		gback = new ButtonBack();
		gmaps = new GMap2(gmDiv);
		gmaps.addControl(gback);
		gmaps.addControl(new GMapTypeControl());
		gmaps.disableDoubleClickZoom();
		gmaps.setCenter(new GLatLng(parseFloat(aProv.lat), parseFloat(aProv.lon)), parseFloat(aProv.zoom));
		if(oStatus.params.a==0) f_rNrComarcas();
		else { var a = { id: oStatus.params.a, c: f_comrkClick }; a.c(); }
	}
}

function f_rNrComarcas() {
	oStatus.setLast(0);
	jTodos.attr("href", sBase+sLnkP).html(sLitP);
	gback.hide();
	jQuery.getJSON(sBase+"obra-nueva/ajax-on-municipios.aspx", { uriprov: aProv.uri, uritipo: sTipo }, function(aInfo) {
		jTitle.html(aInfo.title);
		// if(!bFirst) f_loadMunis("ajax-on-municipios-lmc", { uriprov: aProv.uri, uritipo: sTipo });
		{
			jMunis.empty();
			$(".ov").html(aInfo.ov);
			$(".vi").html(aInfo.vi);
			jMunis.html(aInfo.html).multicol({colNum: 4, colMargin: 20});
		}
		var nInmus = 0, nPromos = 0;
		gmaps.clearOverlays();
		for(k in aInfo.items) {
			var item   = aInfo.items[k];
			var glla   = oStatus.str2glla(item.coords);
			var gplg = new GPolygon(glla, "#666666", 2, 1, "#EFEFEF", 0.25, {});
			var cmrk = new ZonaTit(gplg);
			cmrk.id    = k;
			cmrk.name  = item.name;
			cmrk.num   = item.npromos;
			cmrk.lat   = item.lat;
			cmrk.lon   = item.lon;
			cmrk.width = item.width;
			cmrk.click = f_comrkClick;
			gmaps.addOverlay(gplg);
			gmaps.addOverlay(cmrk);
			nInmus += parseInt(item.ninmus);
			nPromos += parseInt(item.npromos);
			if(k==25 ) { oCmrkB = cmrk; $(".idZ25" ).click(function () { oCmrkB.click(); return false;  }); }
			if(k==72 ) { oCmrkB = cmrk; $(".idZ72" ).click(function () { oCmrkB.click(); return false;  }); }
			if(k==110) { oCmrkB = cmrk; $(".idZ110").click(function () { oCmrkB.click(); return false;  }); }
		}
		$(".ninmus").html(f_fnum(nInmus));
		$(".npromos").html(f_fnum(nPromos));
		bFirst = false;
	});
}

function f_comrkClick(obj) {
	var me = this;
	oStatus.setLast(this.id);
	jTodos.attr("href", sBase+sLnkC.replace("[area]", this.id)).html(sLitC);
	gback.show();
	gmaps.clearOverlays();
	jQuery.getJSON(sBase+"obra-nueva/ajax-on-municipios.aspx", { idcomrk: this.id, uritipo: sTipo }, function(aInfo) {
		jTitle.html(aInfo.title);
		if(aInfo.jump!=0) {
			var item   = aInfo.items[aInfo.jump];
			item.id    = me.id;
			item.click = f_muniClick;
			item.click(null);
			jMunis.empty();
		} else {
			var glla = oStatus.str2glla(aInfo.coords);
			me.gplg   = new GPolygon(glla, "#666666", 2, 1, "#EFEFEF", 0.25, {});
			me.bounds = me.gplg.getBounds();
			me.center = me.bounds.getCenter();
			me.zoom   = gmaps.getBoundsZoomLevel(me.bounds);
			gmaps.addOverlay(me.gplg);
			gmaps.setCenter(me.center, me.zoom);
			var nInmus = 0, nPromos = 0;
			// f_loadMunis("ajax-on-municipios-lmc", { idcomrk: me.id, uritipo: sTipo });
			{
				jMunis.empty();
				$(".ov").html(aInfo.ov);
				$(".vi").html(aInfo.vi);
				jMunis.html(aInfo.html).multicol({colNum: 4, colMargin: 20});
			}
			for(k in aInfo.items) {
				var item   = aInfo.items[k];
				var gll    = new GLatLng(item.lat, item.lon);
				var gmrk   = new GMarker(gll, { icon: gicon }); // title: item.name+" ("+item.ninmus+")", 
				var muni   = new MuniTit(gmrk);
				gmrk.item = item;
				muni.title = item.name+" ("+item.ninmus+")";
				gmaps.addOverlay(gmrk);
				gmaps.addOverlay(muni);
				GEvent.bind(gmrk, "click", item, f_muniClick);
				nInmus += parseInt(item.ninmus);
				nPromos += parseInt(item.npromos);
			}
			$(".ninmus").html(f_fnum(nInmus));
			$(".npromos").html(f_fnum(nPromos));
		}
	});
}

function f_muniClick(obj) {
	var me = this;
	if(!isNaN(this.id)) oStatus.setLast(this.id);
	jTodos.attr("href", sBase+sLnkM.replace("[muni]", this.uri)).html(sLitM);
	if(this.lnk!="#") { location.href = this.lnk; return false; }
	gback.show();
	gmaps.clearOverlays();
	jQuery.getJSON(sBase+"obra-nueva/ajax-on-municipios.aspx", { urimuni: this.uri, uritipo: sTipo }, function(aInfo) {
		jTitle.html(aInfo.title);
		// f_loadMunis("ajax-on-municipios-lbm", { urimuni: me.uri, uritipo: sTipo });
		{
			jMunis.empty();
			$(".ov").html(aInfo.ov);
			$(".vi").html(aInfo.vi);
			jMunis.html(aInfo.html).multicol({colNum: 4, colMargin: 20});
		}
		var gaux = [];
		var nInmus = 0, nPromos = 0;
		for(k in aInfo.items) {
			var item   = aInfo.items[k];
			var coords = item.coords;
			var pairs  = coords.split(";");
			var glla   = [];
			for(kk in pairs) {
				var pair = pairs[kk].split(",");
				glla.push(new GLatLng(pair[1], pair[0]));
				gaux.push(new GLatLng(pair[1], pair[0]));
			}
			var gplg = new GPolygon(glla, "#666666", 2, 1, "#EFEFEF", 0.25, {});
			var cmrk = new ZonaTit(gplg);
			cmrk.id    = k;
			cmrk.name  = item.name;
			cmrk.num   = item.npromos;
			cmrk.lnk   = item.lnk;
			cmrk.lat   = item.lat;
			cmrk.lon   = item.lon;
			cmrk.width = item.width;
			cmrk.click = f_barrioClick;
			gmaps.addOverlay(gplg);
			gmaps.addOverlay(cmrk);
		//	GEvent.bind(gplg, "click", cmrk, f_barrioClick);
			nInmus += parseInt(item.ninmus);
			nPromos += parseInt(item.npromos);
		}
		$(".ninmus").html(f_fnum(nInmus));
		$(".npromos").html(f_fnum(nPromos));
		var zl = 0, gc = new GLatLng(39, 0);
		gaux = new GPolyline(gaux, "#666666", 2, 1, {});
		if(me.uri=='valencia'        ) { zl = 13; gc = new GLatLng(39.47, -0.38); }
		if(me.uri=='alicante-alacant') { zl = 13; gc = gaux.getBounds().getCenter(); }
		if(me.uri=='castellon'       ) { zl = 12; gc = gaux.getBounds().getCenter(); }
		gmaps.setCenter(gc, zl); // gaux.getBounds().getCenter(); gmaps.getBoundsZoomLevel(gaux.getBounds())
	});
}

function f_barrioClick() {
	location.href = this.lnk;
	return false;
}

function f_fnum(n) {
	var s = n.toString();
	var l = s.length;
	return l>6 ? s.substr(0, l-6)+"."+s.substr(l-6, 3)+"."+s.substr(l-3, 3) : l>3 ? s.substr(0, l-3)+"."+s.substr(l-3, 3) : s;
}

function setCookie(name, value) {
	var dom = location.hostname || location.host;
	document.cookie = name+"="+value+";path=/;"; // +";domain="+dom+"";
//	$("#tabsline").before("<p><strong>cookie: ("+name+","+value+")</strong>"+(document.cookie)+"</p>");
}

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;
}

function f_loadMunis(page, params) {
	jMunis.empty();
	jQuery.getJSON(sBase+"obra-nueva/"+page+".aspx", params, function (a) {
		$(".ov").html(a.ov); // .parent().attr("href", a.lov);
		$(".vi").html(a.vi); // .parent().attr("href", a.lon);
		jMunis.html(a.html).multicol({colNum: 4, colMargin: 20});
	});
}
