var precintos = new Array();
precintos[1]=55;
precintos[2]=38;
precintos[3]=35;
precintos[4]=81;
precintos[5]=69;
precintos[6]=40;
precintos[7]=null;
precintos[8]=80;
precintos[9]=25;
precintos[10]=null;
precintos[11]=null;
precintos[12]=46;
precintos[13]=null;
precintos[14]=30;
precintos[15]=null;
precintos[16]=null;
precintos[17]=8;
precintos[18]=77;
precintos[19]=98;
precintos[20]=23;
precintos[21]=76;
precintos[22]=68;
precintos[23]=null;
precintos[24]=72;
precintos[25]=97;
precintos[26]=15;
precintos[27]=99;
precintos[28]=24;
precintos[29]=48;
precintos[30]=79;
precintos[31]=58;
precintos[32]=null;
precintos[33]=null;
precintos[34]=null;
precintos[35]=45;
precintos[36]=94;
precintos[37]=32;
precintos[38]=null;
precintos[39]=null;
precintos[40]=88;
precintos[41]=47;
precintos[42]=53;
precintos[43]=34;
precintos[44]=null;
precintos[45]=103;
precintos[46]=100;
precintos[47]=null;
precintos[48]=50;
precintos[49]=92;
precintos[50]=null;
precintos[51]=null;
precintos[52]=20;
precintos[53]=95;
precintos[54]=73;
precintos[55]=66;
precintos[56]=91;
precintos[57]=59;
precintos[58]=null;
precintos[59]=31;
precintos[60]=39;
precintos[61]=null;
precintos[62]=49;
precintos[63]=78;
precintos[64]=null;
precintos[65]=null;
precintos[66]=null;
precintos[67]=33;
precintos[68]=67;
precintos[69]=13;
precintos[70]=14;
precintos[71]=null;
precintos[72]=54;
precintos[73]=null;
precintos[74]=null;
precintos[75]=96;
precintos[76]=65;
precintos[77]=93;
precintos[78]=null;

	// ** start of functions related to the PR map

	// set coords of map popup
	function coordsMapPopup(ev){		
		// get mouse coordinates from onclick mouse event
		if (!ev) var ev = window.event;
		var x;
		var y;
		if(typeof ev.pageX != 'undefined'){
			// firefox
			x = ev.pageX - 5;
			y = ev.pageY - 15;
		}
		else{
			x = ev.clientX - 5 + getOffsetX();
			y = ev.clientY - 15 + getOffsetY();
		}
		
		// set map popup position and display it
		var mapPopup = document.getElementById("mapPopup");
		mapPopup.style.left = x + "px";
		mapPopup.style.top = y + "px";
	}
	
	// hide map popup
	function hidePopup(e){
		if (!e) var e = window.event;
		var tg = (window.event) ? e.srcElement : e.target;
		var mapPopup = document.getElementById("mapPopup");
		if(tg == mapPopup || tg.nodeName=="AREA" || tg.nodeName=="A"){
			return;
		}
		mapPopup.style.display = 'none';
		
		var precintosLinks = document.getElementById("precintosLinks");
		precintosLinks.innerHTML = "";
		var centrosLinks = document.getElementById("centrosLinks");
		centrosLinks.innerHTML = "";
	}
	
	// add precintos to the map popup precintos links
	function addPrecintosLinks(precintos){
		var precintosLinks = document.getElementById("precintosLinks");
		var linksHTML = "";
		for(var i=1; i<precintos.length; i++){ // starts on 1, because first one is "Seleccione..."
			var precinto = precintos[i];
			linksHTML += "<a href=\"javascript:getByPrecinto(" + precinto.value + ")\">" + precinto.text + "</a><br/>";
		}
		precintosLinks.innerHTML = linksHTML;
	}
	
	// add centros to the map popup centros links
	function addCentrosLinks(centros){
		var centrosLinks = document.getElementById("centrosLinks");
		var linksHTML = "";
		for(var i=1; i<centros.length; i++){ // starts on 1, because first one is "Seleccione..."
			var centro = centros[i];
			linksHTML += "<a href=\"javascript:getByCentro(" + centro.value + ")\">" + centro.text + "</a><br/>";
		}
		
		var mapPopup = document.getElementById("mapPopup");
		if(mapPopup){
			if(centros.length > 6){
				mapPopup.style.height = "150px";
				mapPopup.style.overflow = "hidden";
				centrosLinks.style.height = "125px";
				centrosLinks.style.overflow = "scroll";
			}
			else{
				mapPopup.style.height = "";
				mapPopup.style.overflow = "auto";
				centrosLinks.style.height = "";
				centrosLinks.style.overflow = "auto";
			}
		}
		centrosLinks.innerHTML = linksHTML;
	}
	
	// change municipio from map
	function clickMunicipio(municipioId){		
		// set municipio value to the input field
		var municipioIn = document.getElementById('municipioId');
		municipioIn.value = municipioId;
		
		var precinto = precintos[municipioId]; 
		if(precinto!=null){
			// municipio with one precinto
			getByPrecinto(precinto);
		}
		else{
			var mapPopup = document.getElementById("mapPopup");
			mapPopup.style.display = 'block';
			// call AJAX to update the centros and precintos
			getPrecintos(municipioId);
		}
	}
	
	// show papeletas for the specified precinto
	function getByPrecinto(id){
		var parameter = document.getElementById("parameter");
		parameter.value = "precinto";
		var precintoId = document.getElementById('precintoId');
		precintoId.value = id;
		
		submitForm();
	}
	
	// show papeletas for the specified centro
	function getByCentro(id){
		var parameter = document.getElementById("parameter");
		parameter.value = "centro";
		var centroId = document.getElementById('centroId');
		centroId.value = id;
		
		submitForm();
	}
	
	// end functions related to the PR map **
 
	function getCentros(municipioId){
		var centrosLinks = document.getElementById("centrosLinks");
		centrosLinks.innerHTML = "Cargando...<br /><img src=\"images/roller.gif\" />";

		var message = document.getElementById('message');
		message.style.display = 'none';
		
		// get XML HTTP Object
		var xmlHttp = getXmlHttpObject();
		
		// set callback function
		xmlHttp.onreadystatechange = function(){
	    	if(xmlHttp.readyState==4){
	    		var result = xmlHttp.responseText;
				if(result.length > 0){
					var respObject = safeEval(result);
					var centros = respObject.centros;
					if(centros != null){
						if(centros.length > 0){
							if(centros[0].id == -1){
								// name contains error message
								message.innerHTML = centros[0].name;
								message.style.display = 'block';
								return;
							}
							
							var centrosSel = document.createElement("SELECT");
							centrosSel.options.length = 0;
							var nOption = document.createElement("OPTION");
							nOption.value="0";
							nOption.text="Seleccione...";
							nOption.selected = true;
							centrosSel.options.add(nOption);

							for(var i=0; i<centros.length; i++){
								var centro = centros[i];
								nOption = document.createElement("OPTION");
								nOption.value=centro.id;
								nOption.text=centro.name;
								centrosSel.options.add(nOption);
							}

							// add centros links to map popup
							addCentrosLinks(centrosSel.options);
						}
					}
				}
			}
	    }
		// send request
	  	xmlHttp.open('POST','GetCentros', true);
	  	var params = 'municipioId=' + municipioId;
	  	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF8');
	  	xmlHttp.send(params);
	}
	
	function getPrecintos(municipioId){
		var precintosLinks = document.getElementById("precintosLinks");
		precintosLinks.innerHTML = "Cargando...<br /><img src=\"images/roller.gif\" />";

		var message = document.getElementById('message');
		message.style.display = 'none';
		
		// get XML HTTP Object
		var xmlHttp = getXmlHttpObject();
		
		// set callback function
		xmlHttp.onreadystatechange = function(){
	    	if(xmlHttp.readyState==4){
	    		var result = xmlHttp.responseText;
				
				if(result.length > 0){
					var respObject = safeEval(result);
					var precintos = respObject.precintos;
					if(precintos != null){
						if(precintos.length > 0){
							if(precintos[0].id == -1){
								message.innerHTML = precintos[0].name;
								message.style.display = 'block';
								return;
							}

							getCentros(municipioId);

							var precintosSel = document.createElement("SELECT");
							precintosSel.options.length = 0;
							var nOption = document.createElement("OPTION");
							nOption.value="0";
							nOption.text="Seleccione...";
							nOption.selected = true;
							precintosSel.options.add(nOption);

							for(var i=0; i<precintos.length; i++){
								var precinto = precintos[i];
								nOption = document.createElement("OPTION");
								nOption.value=precinto.id;
								nOption.text=precinto.name;
								precintosSel.options.add(nOption);
							}

							// add precintos links to map popup
							addPrecintosLinks(precintosSel.options);
						}					
					}
				}
			}
	    }
		// send request
	  	xmlHttp.open('POST','GetPrecintos', true);
	  	var params = 'municipioId=' + municipioId;
	  	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF8');
	  	xmlHttp.send(params);
	}
	
	function submitForm(){		
		var mainForm = document.getElementById("mainForm");
		mainForm.submit();
	}
	
	function getCentrosPrecintos(){
		var mSelect = document.getElementById('municipioId');
		var municipioId = mSelect.value;

		var optionsTable = document.getElementById('optionsTable');
		var precinto = precintos[municipioId];
		if(municipioId == 0){
			optionsTable.style.display = 'none';
		}
		else if(precinto!=null){
			// municipio with one precinto
			getByPrecinto(precinto);
		}
		else{
			optionsTable.style.display = 'block';
			getPrecintos(municipioId);
		}
	}
	
	function getByNumElectoral(condition, message){
		var numElec = document.getElementById('numElec');
		var message = document.getElementById('elecMessage');
		if(numElec.value == ""){
			message.innerHTML = "Tienes que especificar un n&uacute;mero."
			message.style.display = 'block';
			return;
		}

		message.style.display = 'none';
		
		// get XML HTTP Object
		var xmlHttp = getXmlHttpObject();

		var loading = document.getElementById("elecLoading");
		// set callback function
		xmlHttp.onreadystatechange = function(){
			if(xmlHttp.readyState==1){
				loading.style.display = 'block';
			}
			else{
				loading.style.display = 'none';
			}
	    	if(xmlHttp.readyState==4){
	    		var result = xmlHttp.responseText;
//	    		alert(result);
	    		
				if(result.length > 0){
					var respObject = safeEval(result);
					if(respObject.invalid){
						message.innerHTML = 'El n&uacute;mero que entraste es inv&aacute;lido.';
						message.style.display = 'block';
						numElec.select();
					}
					else if(respObject.error){
						message.innerHTML = 'Hubo un error verificando tu n&uacute;mero.';
						message.style.display = 'block';
					}
					else if(respObject.activo){
							loading.style.display = "block";
							var precintoId = document.getElementById('elecPrecinto');
							precintoId.value = respObject.precintoId;
							var elecUnidad = document.getElementById('elecUnidad');
							elecUnidad.value = respObject.unidad;
							
	//						alert(precintoId.value);
							if (condition(respObject)) {
								var elecForm = document.getElementById("elecForm");
								elecForm.submit();
							} else {
								loading.style.display = 'none';
								message.innerHTML = getInvalidPrecintoMessage();
								message.style.display = 'block';
							}
					}
					else{
						message.innerHTML = 'El elector con el n&uacute;mero indicado no est&aacute; activo.';
						message.style.display = "block";
						numElec.select();
					}
				}
			}
	    }
		// send request
	  	xmlHttp.open('POST','numElecJSON.jsp', true);
	  	var params = 'numElec=' + numElec.value;
	  	//alert('numElec=' + numElec.value);
	  	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
	  	xmlHttp.send(params);
	}
	
	function precintoDeCaguas(respObject) {
		var valid = false;
		var precinto = respObject.precintoId;
		if (precinto == '82' || precinto == '83') {
			valid = true;
		}
		return valid;
	}
	
	function getInvalidPrecintoMessage() {
		return 'El elector no vota en los precintos de Caguas';
	}
	function alwaysTrue () {
		return true;
	}
	function elecSubmit(e) {
		if (!e) var e = window.event;
		//var tg = (window.event) ? e.srcElement : e.target;
		//var numElec = document.getElementById("numElec");
		//if(tg != numElec){
		//	return false;
		//}
		if(e.keyCode == 13){
			var elecButton = document.getElementById("elecButton");
			elecButton.focus();
			return false;
		}
	}

