var form = null;
var id_municipi = 0;
var admarker = null;
var infow = null;

var formEvents = function() {
	form = document.fMunicipi;
	form.id_provincia.onchange = getMunicipis;
	form.id_municipi.onchange = showMapMunicipi;
	form.id_adreca.onchange = getDadesAdreca;
	// inhabilita combos
	if (form.id_municipi.options.length < 2) {
		form.id_municipi.disabled = true;
	}
	if (form.id_municipi.disabled) {
		form.id_adreca.disabled = true;
	}
	
	// finestra ajuda
	var ajuda = document.getElementById("ajuda");
	ajuda.onclick = showHelp;
}

var showHelp = function() {
	url = "llegenda.html";
 	ShowHelp = window.open(url,"ShowHelp",'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=400,height=350');
}

var getMunicipis = function () {
	var muns = $("id_municipi");
	Mapa.clean();
	Infow.close();

	// elimina las options de adreca
	var adrecas = $("id_adreca");
	var num = adrecas.options.length;
	for (i=0; i<num; i++) {
		adrecas.options[1] = null;
	}
	adrecas.disabled = true;
	
	if (this.value != 0) {
		// llista de municipis
		Element.show("indicator");
		var id_prov = this.value;
		url = '/ajax/get_municipis_uds.php';
		var pars = 'id_prov=' + id_prov;
		new Ajax.Request(url, {method: 'get', parameters: pars, onComplete:showMunicipis});
	} else {
		muns.selectedIndex = 0;
		muns.disabled = true;
	}
}

var showMunicipis = function(req) {
	var combo = $("id_municipi");
	
	if (req.readyState == 4) {
		if (req.status == 200) {
			var xmldoc = req.responseXML;
			var munnodes = xmldoc.getElementsByTagName("municipi");
			if (munnodes.length > 0) {
				combo.disabled = false;
				var num = combo.options.length;
				for (i=0; i<num; i++) {
					combo.options[1] = null;
				}
				// afegeix municipis
				for (j=0; j<munnodes.length; j++) {
					var nom = munnodes[j].firstChild.data;
					var id = munnodes[j].getAttribute("id");
					combo.options[j+1] = new Option(nom, id, false, false);
				}
			}
		} else {
			alert("No s'ha pogut obtenir la llista");
		}			
	} else {
		alert("Problema de comunicació");
	}
	Element.hide("indicator");
}

var showMapMunicipi = function() {
	if (this.value != 0) {
		Mapa.clean();
		var index = this.selectedIndex;
		var index_prov = form.id_provincia.selectedIndex;
		var id_municipi = this.value;
		nom_municipi = this.options[index].text;
		nom_provincia = form.id_provincia.options[index_prov].text
		Mapa.showMunicipi(nom_municipi, nom_provincia, id_municipi);
		
		// oculta la ventana de info si la hay
		if (admarker != null) {
			map.removeOverlay(admarker);
		}
		Infow.close();
		// elimina las options de adreca
		var adrecas = $("id_adreca");
		var num = adrecas.options.length;
		for (i=0; i<num; i++) {
			adrecas.options[1] = null;
		}
		adrecas.disabled = true;
		
		// form.submit();
		// muestra la lista de direcciones de ese municipi
		showAdrecas(id_municipi)
	}
}

var showAdrecas = function(id_municipi) {
	// obtiene el anyo
	if (regYear.test(document.location)) {
		var year = RegExp.$2;
	} else {
		var fecha = new Date();
		var year = fecha.getFullYear();
	}
	url = '/ajax/get_nius_municipi.php';
	var pars = 'id=' + id_municipi +"&any="+year;
	new Ajax.Request(url, {method: 'get', parameters: pars, onComplete:loadAdrecas});
}

var loadAdrecas = function (req) {
	var combo = $("id_adreca");
	var lst = eval(req.responseText);
	var num = combo.options.length;
	for (i=0; i<num; i++) {
		combo.options[1] = null;
	}
	if (lst.length > 0) {
		combo.disabled = false;
	} else {
		combo.disabled = true;
	}
	for (var i=0; i<lst.length; i++) {
		// afegeix municipis
		for (j=0; j<lst.length; j++) {
			var nom = lst[j].adreca;
			if (lst[j].numero != null) {
				nom += ", "+lst[j].numero;
			}
			var id = lst[j].id_xy;
			combo.options[j+1] = new Option(nom, id, false, false);
		}
	}
}

var getDadesAdreca = function () {
	if (this.value != 0) {
		var id_adreca = this.value;
		
		// obtiene el anyo
		if (regYear.test(document.location)) {
			var year = RegExp.$2;
		} else {
			var fecha = new Date();
			var year = fecha.getFullYear();
		}
		// obtiene las coordenadas de esa direccion, para centrar el mapa
		url = '/ajax/get_dades_adreca.php';
		
		var pars = 'id=' + id_adreca + "&any="+year;
		new Ajax.Request(url, {method: 'get', parameters: pars, onComplete:showDadesAdreca});
		// Infow.init(niu);
	}
}

var showDadesAdreca = function(req) {
	var niu = eval(req.responseText);
	// centra el mapa
	var center = new GLatLng(niu.lat, niu.lng);
	var zoom = 15;
	if (admarker != null) {
		map.removeOverlay(admarker);
	}
	admarker = new GMarker(center);
	map.addOverlay(admarker);
	map.setZoom(zoom);
	map.panTo(center);
	Infow.init(niu);
}

var showUnitats = function() {
	var id_municipi = document.fMunicipi.id_municipi.value;
	Mapa.getUdsMostreig(id_municipi);
	Mapa.getNidos(id_municipi);
}

var showNius = function() {
	var id_municipi = document.fMunicipi.id_municipi.value;
	
}