var gForms = ["q","l"];
var gPanels = ["0","3"];


var serverURL;

function e(id){
	return document.getElementById(id);
}

function d0(id) {
	e(id).style.display = "none";
}

function d1(id) {
	e(id).style.display = "";
}

function switchForm(name) {
	var desiredTabFound = false;
	for (var i = 0; i < gForms.length; i++) {
		var n = gForms[i];
		d0(n + "_f");
		e(n + "_l").className = "unselected";
		if (n == name) {
			desiredTabFound = true;
		}
	}
	if (!desiredTabFound) {
		name = gForms[0];
	}
	d1(name + "_f");
	e(name + "_l").className = "selected";
	try {
		e(name + "_d").focus();
	}
	catch(ex) {}
	return false;
}

function muestraPanel(id){
	var desiredTabFound = false;
	/*
	for (var i = 0; i < gPanels.length; i++) {
		var n = gPanels[i];
		d0("opanel"+n);
		e(n + "_tab").className = "tabOff";
		if (n == id) {
			desiredTabFound = true;
		}
	}
	if (!desiredTabFound) {
		id = gPanels[0];
	}
	*/
	d1("opanel"+id);
	//e(id + "_tab").className = "tabOn";
	return false;
}

function openInfoLink() {
    
}

function ocultaPermaLinkInicial(){
	var divPerLnk = map.getControlsByClass("OpenLayers.Control.Permalink")[0].element;
	divPerLnk.style.display = "none";
}

function makeObject(){
	var naveg; 
	var browser = navigator.appName; 
	if(browser == "Microsoft Internet Explorer"){
		naveg = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		naveg = new XMLHttpRequest();	
	}
	return naveg;
}

var xmlDoc = makeObject();

var espera = "<div id='div_espera' align='center'><img src='../share/img/g/ajax-loader.gif'></div>";

function cercarCarrer(){

}

function parseInfoCarrer(){
	document.getElementById('panel0').innerHTML="";
	//tipus="estacions";
	if(xmlDoc.readyState == 1){
		//escriuValorInfo('CERCANT...');
		//document.getElementById('avis').style.display="block";
		document.getElementById('panel0').innerHTML=espera;
		//document.getElementById('div_espera').style.position = "relative";
		//document.getElementById('div_espera').style.top = "10px";
	}
	if(xmlDoc.readyState == 4){ 
		//escriuValorInfo('');
		if(xmlDoc.status == 200){
			//document.getElementById('avis').style.display="none";
			var resposta=xmlDoc.responseText;
			//if(resposta.indexOf("fondotaula.gif")!=-1){
				document.getElementById('panel0').innerHTML=resposta;	
			//}else{
			//document.getElementById('posFitxes').style.visibility='visible';
			//document.getElementById('posFitxes').style.height = "275px";
			//document.getElementById('posFitxes').style.width = "265px";
			//document.getElementById('posFitxes').innerHTML=resposta;
			//}
			muestraPanel('0');
		}
	}
}

function buscaIntro(e,tipo){
	if(document.all){
    	tecla=event.keyCode;
    }else{
    	tecla=e.which; 
    }
    if(tecla==13){
    	cercarMapes();
    	if (tipo == 1){
    		//cercarCarrer();
    	}
    	else if (tipo == 2){
    		//cercarToponims();
    	}
    }
}

function enviaEmail(){
	alert(map.getExtent());
}

function muestraAdreca(x,y,tipo,texto){
	var cX = x;
	var cY = y;
	var point1 = new OpenLayers.LonLat(cX, cY); 
    point1 = point1.transform(p23031, p4326);
    cX = point1.lon;
    cY = point1.lat;
	var zL = 6;
	if (tipo == 0){
		zL = 18;
	}else if (tipo == 1){
		zL = 16;
	}else if (tipo == 2){
		zL = 17;
	}
	if (markers.markers.length > 0){
		for (i = 0; i < markers.markers.length; i++){
			markers.removeMarker(markers.markers[i]);
		}
	}
	var size = new OpenLayers.Size(38,32);
	//var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
    var offset = new OpenLayers.Pixel(-16, -size.h);
    var icon = new OpenLayers.Icon('../share/img/g/green-dot.png',size,offset);
    markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(cX,cY),icon));
    markers.setVisibility(true);
    map.moveTo(new OpenLayers.LonLat(cX,cY),zL);
    if (texto != null || texto != "null" || texto != ""){
    	texto = replaceAll(texto,"@%","'");
	    if(map.popups.length > 0){
	    	for (i = 0; i < map.popups.length; i++){
	    		map.removePopup(map.popups[i]);
	    	}
	    }
	    var popup = new OpenLayers.Popup.FramedCloud("nubol", 
	      	new OpenLayers.LonLat(cX,cY),
	        null,
	        texto,
	        null, true);
	    map.addPopup(popup);
    }
}

function canviValor(valor){
	valor=valor.toUpperCase();
	accent=new Array('À','È','É','Í','Ì','Ò','Ó','Ú','Ù','Ï','Ü');
	noaccent=new Array('A','E','E','I','I','O','O','U','U','I','U');
	for(i=0;i<accent.length;i++){
		if (valor.indexOf(0,accent[i])){
			valor=valor.replace(accent[i],noaccent[i]);
		}
	}
	return valor;
}

function cercarToponims(){
	var q = document.getElementById('l_d').value;
	//Coje el bbox de la vista actual
	//var bbactual = map.getExtent();
	//Coje el bbox del municipi
	var bbactual = map.getMaxExtent();
	var minX = bbactual.left;
	var minY = bbactual.bottom;
	var maxX = bbactual.right;
	var maxY = bbactual.top;
	var sURL = serverURL+"cercaToponim.jsp?";
	sURL += "q="+q+"&codiMun="+codiMun+"&minX="+minX+"&minY="+minY+"&maxX="+maxX+"&maxY="+maxY;
	xmlDoc.open('GET', sURL, true);
	xmlDoc.setRequestHeader("Content-Type", "text/plain;charset=iso-8859-1");
	xmlDoc.onreadystatechange = parseInfoTopo; 
	xmlDoc.send('');
}

function parseInfoTopo(){
	document.getElementById('panel0').innerHTML="";
	//tipus="estacions";
	if(xmlDoc.readyState == 1){
		//escriuValorInfo('CERCANT...');
		//document.getElementById('avis').style.display="block";
		document.getElementById('panel0').innerHTML=espera;
		//document.getElementById('div_espera').style.position = "relative";
		//document.getElementById('div_espera').style.top = "10px";
	}
	if(xmlDoc.readyState == 4){ 
		//escriuValorInfo('');
		if(xmlDoc.status == 200){
			//document.getElementById('avis').style.display="none";
			var resposta=xmlDoc.responseText;
			//if(resposta.indexOf("fondotaula.gif")!=-1){
				document.getElementById('panel0').innerHTML=resposta;
				//agregaPuntosToponims();	
			//}else{
			//document.getElementById('posFitxes').style.visibility='visible';
			//document.getElementById('posFitxes').style.height = "275px";
			//document.getElementById('posFitxes').style.width = "265px";
			//document.getElementById('posFitxes').innerHTML=resposta;
			//}
			muestraPanel('0');
		}
	}
}

function agregaPuntosToponims(){
	var resp_eq = document.getElementsByName("resp_equipament");
	var resp_to = document.getElementsByName("resp_toponim");
	if (markers.markers.length > 0){
		for (i = 0; i < markers.markers.length; i++){
			markers.removeMarker(markers.markers[i]);
		}
	}
	for (i = 0; i < resp_eq.length; i++){
		var resp_pto = resp_eq[i];
		var resp_ptoC = resp_pto.value.split(",");
		var cX = resp_ptoC[0];
		var cY = resp_ptoC[1];
		var size = new OpenLayers.Size(38,32);
		var offset = new OpenLayers.Pixel(-16, -size.h);
		var icon = new OpenLayers.Icon('../share/img/g/green-dot.png',size,offset);
		markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(cX,cY),icon));
		markers.setVisibility(true);
	}
	for (i = 0; i < resp_to.length; i++){
		var resp_pto = resp_to[i];
		var resp_ptoC = resp_pto.value.split(",");
		var cX = resp_ptoC[0];
		var cY = resp_ptoC[1];
		var size = new OpenLayers.Size(38,32);
		var offset = new OpenLayers.Pixel(-16, -size.h);
		var icon = new OpenLayers.Icon('../share/img/g/green-dot.png',size,offset);
		markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(cX,cY),icon));
		markers.setVisibility(true);
	}
	//alert(resp_eq.length);
}

function cercarMapes(){
	/*
	var bbactual = map.getMaxExtent();
	var minX = bbactual.left;
	var minY = bbactual.bottom;
	var maxX = bbactual.right;
	var maxY = bbactual.top;
	*/
	var minX = bounds.left;
	var minY = bounds.bottom;
	var maxX = bounds.right;
	var maxY = bounds.top;
	var q = document.getElementById('q_d').value;
	var sURL = serverURL+"cercarMapes.jsp?";
	sURL += "q="+q+"&codiMun="+codiMun+"&minX="+minX+"&minY="+minY+"&maxX="+maxX+"&maxY="+maxY;
	xmlDoc.open('GET', sURL, true);
	xmlDoc.setRequestHeader("Content-Type", "text/plain;charset=iso-8859-1");
	xmlDoc.onreadystatechange = parseInfoMapes; 
	xmlDoc.send('');
	muestraPanel('0');
}

function parseInfoMapes(){
	document.getElementById('panel0').innerHTML="";
	//tipus="estacions";
	if(xmlDoc.readyState == 1){
		//escriuValorInfo('CERCANT...');
		//document.getElementById('avis').style.display="block";
		document.getElementById('panel0').innerHTML=espera;
		//document.getElementById('div_espera').style.position = "relative";
		//document.getElementById('div_espera').style.top = "10px";
	}
	if(xmlDoc.readyState == 4){ 
		//escriuValorInfo('');
		if(xmlDoc.status == 200){
			//document.getElementById('avis').style.display="none";
			var resposta=xmlDoc.responseText;
			//if(resposta.indexOf("fondotaula.gif")!=-1){
				document.getElementById('panel0').innerHTML=resposta;	
			//}else{
			//document.getElementById('posFitxes').style.visibility='visible';
			//document.getElementById('posFitxes').style.height = "275px";
			//document.getElementById('posFitxes').style.width = "265px";
			//document.getElementById('posFitxes').innerHTML=resposta;
			//}
			muestraPanel('0');
		}
	}
}

function cambiaICC(chk){
	if (chk.checked){
		map.layers[2].setVisibility(true);
		var urls = map.layers[2].getURL(map.getExtent());
		alert(urls);
		if (chk.value == 'orto'){
		
		}else{
			
		}
	}else{
		map.layers[2].setVisibility(false);
	}
}

function zoomToInicial(){
	//alert("aca");
	map.zoomToExtent(bounds);
	//map.setCenter(new OpenLayers.LonLat(444400,4605700),4);
}

function Imprimir(){
	//alert(map.getZoom());
	window.open("imprimir.htm", "Imprimir", 'width=650,height=600,left=150,top=150,resizable=yes,status=no,toolbar=no,menubar=no,location=no,scrollbars=yes');
}

var F_ACTIVA = "MAPA";
var Z_ACTUAL = "";
function cambiaFondo(val){
	var centre = map.getCenter();
	if (val == "ORTO"){
  		map.baseLayer.setVisibility(true);
  		document.getElementById('btnMapa').className = 'boto';
  		document.getElementById('btnSatelit').className = 'boto';
  		document.getElementById('btnOrto').className = 'botoSel';
  		document.getElementById('btnTopo').className = 'boto';
  		document.getElementById('btnBlanc').className = 'boto';
  		if (val != F_ACTIVA){
  			F_ACTIVA = val;
  			controlEscala();
  		}
  	}
  	else if (val == "TOPO"){
  		document.getElementById('btnMapa').className = 'boto';
  		document.getElementById('btnSatelit').className = 'boto';
  		document.getElementById('btnOrto').className = 'boto';
  		document.getElementById('btnTopo').className = 'botoSel';
  		document.getElementById('btnBlanc').className = 'boto';
  		F_ACTIVA = val;
  		controlEscala();
  		map.baseLayer.setVisibility(true);
  		/*
  		var centre = map.getCenter();
  		map.baseLayer.setVisibility(true);
  		if (val != F_ACTIVA){
  			F_ACTIVA = val;
  			controlEscala(1);
  		}else{
  			F_ACTIVA = val;
  			controlEscala();
  		}
  		map.setCenter(centre);
  		*/
  	}else if (val == "BLANC"){
  		F_ACTIVA = val;
  		map.baseLayer.setVisibility(false);
  		document.getElementById('btnMapa').className = 'boto';
  		document.getElementById('btnSatelit').className = 'boto';
  		document.getElementById('btnOrto').className = 'boto';
  		document.getElementById('btnTopo').className = 'boto';
  		document.getElementById('btnBlanc').className = 'botoSel';
  	}
  	else if (val == "MAPA"){
  		map.baseLayer.setVisibility(true);
  		document.getElementById('btnMapa').className = 'botoSel';
  		document.getElementById('btnSatelit').className = 'boto';
  		document.getElementById('btnOrto').className = 'boto';
  		document.getElementById('btnTopo').className = 'boto';
  		document.getElementById('btnBlanc').className = 'boto';
  		if (val != F_ACTIVA){
  			F_ACTIVA = val;
  			controlEscala();
  		}
  	}
  	else if (val == "SATELIT"){
  		map.baseLayer.setVisibility(true);
  		document.getElementById('btnMapa').className = 'boto';
  		document.getElementById('btnSatelit').className = 'botoSel';
  		document.getElementById('btnOrto').className = 'boto';
  		document.getElementById('btnTopo').className = 'boto';
  		document.getElementById('btnBlanc').className = 'boto';
  		if (val != F_ACTIVA){
  			F_ACTIVA = val;
  			controlEscala();
  		}
  	}
  	map.setCenter(centre); 
}

function controlEscala(tipo){
	var zoom = map.getZoom();
	var layr;
	if (F_ACTIVA == "TOPO"){
		
				layr = map.layers[3]; 		
	}
	else if (F_ACTIVA == "ORTO"){
		layr = map.layers[1];
		//map.setBaseLayer(map.layers[2], false);
	}
	else if (F_ACTIVA == "MAPA"){
		layr = map.layers[0];
		//map.setBaseLayer(map.layers[0], false);
	}
	else if (F_ACTIVA == "SATELIT"){
		layr = map.layers[2];
		//map.setBaseLayer(map.layers[1], false);
	}
	layr.map.setBaseLayer(layr);
	map.setBaseLayer(layr, false);
	Z_ACTUAL = zoom;
	if (zoom < 8){
		map.zoomToMaxExtent();
	}
}

function llamaVinculo(){
	var win = document.getElementById('divVinculo');
	var lnk = document.getElementById('idVincle').value;
	var adr = document.getElementById('idAdrec').value;
	var vinc = crearVincle(adr,lnk);
	win.innerHTML = vinc;
}

function crearVincle(adreca,link){
	var point1 = new OpenLayers.LonLat(map.getExtent().left, map.getExtent().bottom); 
    point1 = point1.transform(p4326, p23031);
    var point2 = new OpenLayers.LonLat(map.getExtent().right, map.getExtent().top); 
    point2 = point2.transform(p4326, p23031);
		
	var cap="";
	var BBOX=redondear(point1.lon,4)+","+redondear(point1.lat,4)+","+redondear(point2.lon,4)+","+redondear(point2.lat,4);
	var n=0
	var str="";
	var tipus="";
	var x = map.getCenter().lon;
	var y = map.getCenter().lat;
	var factor = map.getZoom(); 
	var fond = map.baseLayer.name;
	if (fond == "Google Streets"){
		fond = "gm";
	}else if (fond == "Google Hybrid"){
		fond = "gs";
	}else if (fond == "ICC ORTO"){
		fond = "o";
	}else if (fond == "ICC TOPO5"){
		fond = "t";
	}else if (fond == "ICC TOPO10"){
		fond = "t";
	}else if (fond == "ICC TOPO250"){
		fond = "t";
	}
	if(!map.baseLayer.visibility){
		fond = "b";
	}
	str = document.location.href;
	
	for (var i=n; i < map.layers.length; i++) {
		var layer = map.layers[i];
		if (layer.getVisibility()){
			if (layer.CLASS_NAME == "IdeLocal.WMS"){
				var aLayersTitle = layer.titles.split(',');
				//alert(aLayersTitle);
				var totLay = layer.subLayers;
				//alert(totLay.length);
				var aLayersLay = layer.params["LAYERS"];
				//alert(aLayersLay.length);
				for (k = 0; k < aLayersLay.length; k++){
					var aLay = aLayersLay[k];
					for (j = 0; j < totLay.length; j++){
						var tLay = totLay[j];
						if (aLay == tLay){
							cap = cap + aLayersTitle[j] + ",";
						}
					}
				}
			}
		}
	}
	cap=cap.substring(0,cap.length-1)
	
	str +="&capes="+cap;
	
	var point3 = new OpenLayers.LonLat(x, y); 
    point3 = point3.transform(p4326, p23031);
	
	var strVista=str+"&bbox="+BBOX;
	var Xx = redondear(point3.lon,4);
	var Yy = redondear(point3.lat,4);
	str +="&x="+Xx+"&y="+Yy+"&zfactor="+factor;
	str +="&fond="+fond;
	strVista += "&fond="+fond;
	if(adreca!=null){
		if(adreca!=""){
			if (link!=null){
				if (link!=""){
					if (link == "http://"){
						str +="&text="+adreca;
					}else{
						str +="&text=&lt;a href='"+link+"' target='_blank'&gt;"+adreca+"&lt;/a&gt;";
					}
				}else{
					str +="&text="+adreca;
				}
			}else{
				str +="&text="+adreca;
			}
		}else{
			if (link!=null){
				if (link!=""){
					if (link != "http://"){
						str +="&text=&lt;a href='"+link+"' target='_blank'&gt;"+link+"&lt;/a&gt;";
					}
				}
			}
		}
	}else{
		adreca="incidència";
	}
	var text="<div class=\"text\" style=\"font-family: Verdada;font-size: 9px;color: #0000CC;position:absolute;top:100px;left:0px;padding:10px;\">";
	text +="<table cellspacing=\"0\" cellpadding=\"0\" class=\"text\" border=\"0\" width=\"100%\" >";
	text +="<tr><td class=\"text\"><b>Vincle amb punt: </b><br><input class=\"text\" type=\"text\" size=\"95\" id=\"x00\" value=\""+str+"\" readonly/></td></tr>";
	text +="<tr><td class=\"text\"><b>Vincle sense punt: </b><br><input class=\"text\" type=\"text\" size=\"95\" id=\"x01\" value=\""+strVista+"\" readonly/></td></tr>";
	text +="<tr><td class=\"text\"><b>Coordenada XY:</b><br><input class=\"text\" type=\"text\" size=\"95\" id=\"x02\" value=\""+Xx+","+Yy+"\" readonly/></td></tr>";
	text +="<tr><td class=\"text\"><b>Caixa de Coordenades:</b><br><input class=\"text\" type=\"text\" size=\"95\" id=\"x03\" value=\""+BBOX+"\" readonly/></td></tr>";
	text += "</table></div>";
	return text;
}

function redondear(cantidad, decimales) {
	var cantidad = parseFloat(cantidad);
	var decimales = parseFloat(decimales);
	decimales = (!decimales ? 2 : decimales);
	return Math.round(cantidad * Math.pow(10, decimales)) / Math.pow(10, decimales);
} 

function activaMapaPunt(x, y, zL, texto){
	var cX = x;
	var cY = y;
    var size = new OpenLayers.Size(38,32);
    var offset = new OpenLayers.Pixel(-16, -size.h);
    var icon = new OpenLayers.Icon('../images/green-dot.png',size,offset);
    markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(cX,cY),icon));
   	markers.setVisibility(true);
    map.moveTo(new OpenLayers.LonLat(cX,cY),zL);
    if (texto != null && texto != "null" && texto != ""){
	    if(map.popups.length > 0){
	    	for (i = 0; i < map.popups.length; i++){
	    		map.removePopup(map.popups[i]);
	    	}
	    }
	    var popup = new OpenLayers.Popup.FramedCloud("nubol", 
	      	new OpenLayers.LonLat(cX,cY),
	        null,
	        texto,
	        null, true);
	    map.addPopup(popup);
    }
}

function cargarParametros(){
	if (Cpar != ""){
		cargarCapes(Cpar);
	}
}

function cargarCapes(cap){
	var lays = cap.split(",");
	var capes = null;
	for (var j=0; j < map.layers.length; j++) {
		var layer = map.layers[j];
		if (layer.CLASS_NAME == "IdeLocal.WMS"){
			capes = null;
			var aLayersTitle = layer.titles.split(',');
			var totLay = layer.subLayers;
			for (k = 0; k < aLayersTitle.length; k++){
				for (i = 0; i < lays.length; i++){
					var lay = lays[i];
					var aLay = aLayersTitle[k];
					if (lay == aLay){
						var tLay = totLay[k];
						var tId = "input_"+tLay;
						if (capes == null){
		            		capes = [];
		            	}
		            	capes.push(document.getElementById(tId).value);
		            }
				}
			}
			if (capes != null){
       			layer.mergeNewParams({layers:capes});
       			layer.setVisibility(true);
       		}
		}
	}
}

function toggleOverview() {
	$('overview').toggle();
	$('ovHider').firstDescendant().src = $('overview').visible() ? '../share/javascript/images/hide.gif' : '../share/javascript/images/show.gif';
}

function cambiaBase(){
	
}
