var map;
var vias1;
var vias2;
var vias3;
var vias4;
var vias5;
var vias6;
var vias7;
var vias8;
var vias9;
var entorno;
var ferrov;
var accesos;
var equip;

var WMS_URL_PNOA;
var G_MAP_WMS_PNOA; 

var WMS_URL_IDEE;
var G_MAP_WMS_IDEE; 

var WMS_URL_LIMIT;
var G_MAP_WMS_LIMIT;

var WMS_URL_NATURAL;
var G_MAP_WMS_NATURAL;

var WMS_URL_PROTEGIDO;
var G_MAP_WMS_PROTEGIDO;

var html;

function centrar(item)
{
	if(item == null){ 		
		map.setCenter(new GLatLng(40, -3.75), 6);
	}
	else{		
		map.setCenter(new GLatLng(item.coordX, item.coordY), item.nivel);
	}
}

function centrarGM(item) {	
      if (geocoder) {
        geocoder.getLatLng(
          item.texto,
          function(point) {
            if (!point) {
              alert(item.texto + " not found");
            } else {
              map.setCenter(point, item.nivel);
            }
          }
        );
      }
    }

function cambiaKML(checkButton)
{
	if(checkButton.checked == true) {
		if (checkButton.value == "vias") {
			activaKML("vias");
		} else {				
			if (map.getZoom() >= 10) {			
				activaKML(checkButton.value);
			}
		}	
	}
	else {
		desactivaKML(checkButton.value);
	} 
}



function activaKML(item)
{			
	switch (item) {
	case "vias": 
		map.addOverlay(vias1);
		map.addOverlay(vias2);
		map.addOverlay(vias3);
		map.addOverlay(vias4);
		map.addOverlay(vias5);
		map.addOverlay(vias6);
		map.addOverlay(vias7);
		map.addOverlay(vias8);
		map.addOverlay(vias9);		
		break;	
	case "entorno":map.addOverlay(entorno);break;	
	case "ferrov":map.addOverlay(ferrov);break;	
	case "accesos":map.addOverlay(accesos);break;	
	case "equip":map.addOverlay(equip);break;	
	}		        
}

function desactivaKML(item)
{
	switch (item) {
	case "vias": 
		map.removeOverlay(vias1);
		map.removeOverlay(vias2);
		map.removeOverlay(vias3);
		map.removeOverlay(vias4);
		map.removeOverlay(vias5);
		map.removeOverlay(vias6);
		map.removeOverlay(vias7);
		map.removeOverlay(vias8);
		map.removeOverlay(vias9);		
		break;	
	case "entorno":map.removeOverlay(entorno);break;	         
	case "ferrov":map.removeOverlay(ferrov);break;	
	case "accesos":map.removeOverlay(accesos);break;	
	case "equip":map.removeOverlay(equip);break;	

	}	
}

function cambiaWMS(checkButton)
{
	if(checkButton.checked == true) {
		activaWMS(checkButton.value);
	}
	else {
		desactivaWMS(checkButton.value);
	} 
}

function activaWMS(item)
{			

	switch (item) {
	case "IDEE": G_MAP_WMS_IDEE.show();break;
	case "PNOA": G_MAP_WMS_PNOA.show();break;
	case "LIMIT": G_MAP_WMS_LIMIT.show();break;	
	case "NATURAL": G_MAP_WMS_NATURAL.show();break;
	case "PROTEGIDO": G_MAP_WMS_PROTEGIDO.show();break;	
	}	

}

function desactivaWMS(item)
{

	switch (item) {
	case "IDEE": G_MAP_WMS_IDEE.hide();break;
	case "PNOA": G_MAP_WMS_PNOA.hide();break;
	case "LIMIT": G_MAP_WMS_LIMIT.hide();break;	
	case "NATURAL": G_MAP_WMS_NATURAL.hide();break;	
	case "PROTEGIDO": G_MAP_WMS_PROTEGIDO.hide();break;	
	}	

}

function place(lat,lng) {
        var point = new GLatLng(lat,lng);
        map.setCenter(point,16);         
        html = "";
      }

function showAddress() {	
        var search = document.getElementById("search").value + ", ES";
	
        geocoder.getLocations(search, function (result)
          {		            		
            if (result.Status.code == G_GEO_SUCCESS) {              
              if (result.Placemark.length > 1) { 		                
		html = "";
                for (var i=0; i<result.Placemark.length; i++) {			
                  var p = result.Placemark[i].Point.coordinates;
		  html += "&nbsp;<a href='javascript:place(" +p[1]+","+p[0]+")'>"+ "<font size=1 color=black>" + result.Placemark[i].address+ "</font>" + "<\/a>"+"&nbsp;<br>";
                }
		top.f_dialogOpen(html, 'Localizaciones', 'width=200px, height=150px');
              }              
              else {		
		html = "";
                var p = result.Placemark[0].Point.coordinates;
                place(p[1],p[0]);
              }
            }            
            else {		
              alert('No se ha encontrado ningún resultado');
            }		
          }
        );	
      }

function showCCAA(formulario) {
	var indice = formulario['D1'].selectedIndex;
	if (indice > 0) {
        	var search = formulario['D1'].options[indice].text;
	        geocoder.getLocations(search, function (result)
        	  {		                	
	                var p = result.Placemark[0].Point.coordinates;        	           
			var point = new GLatLng(p[1],p[0]);
			map.setCenter(point,8);                 
        	  }
        	);
	} else {
		map.setCenter(new GLatLng(40, -3.75), 6)
	}
      }

function showPROV(formulario) {	
	var indice = formulario['D2'].selectedIndex;	
        var search = formulario['D2'].options[indice].text + ",ES";

	geocoder.getLocations(search, function (result)
        	{		        		
		        var p = result.Placemark[0].Point.coordinates;        	   
			var point = new GLatLng(p[1],p[0]);
			map.setCenter(point,9);                 
	        }
        );	
      }

function showVia(formulario) {
	var indice = formulario['D3'].selectedIndex;
	if (indice > 0) {
		var coord = formulario['D3'].options[indice].value.split(",");		
		var point = new GLatLng(coord[1],coord[0])
		map.setCenter(point,12);
	}
}

var OW = getWindowSize();

window.onresize = function(){	
	redimensionar();
};

function redimensionar() {
	var mapDiv = document.getElementById("map");	
	var NS = getWindowSize();
	
	mapDiv.style.width = (NS.width - 300) + 'px';	
	mapDiv.style.height = (NS.height - 120) + 'px';			
	
};


function getWindowSize(){
	var e = new Object();
	if(window.self && self.innerWidth){
		e.width = self.innerWidth;
		e.height = self.innerHeight;
	}else if(document.documentElement && document.documentElement.clientHeight){
		e.width = document.documentElement.clientWidth;
		e.height = document.documentElement.clientHeight;
	}else{
		e.width = document.body.clientWidth;
		e.height = document.body.clientHeight;
	}	
	return e
}

function activaDesactiva(zoom) {	
	//var optVV = document.getElementById("optVV");	
	var optEF = document.getElementById("optEF");	
	var optEQ = document.getElementById("optEQ");	
	var optAC = document.getElementById("optAC");	
	var optEN = document.getElementById("optEN");	
	if (zoom < 10) {
		optEF.disabled = true;
		optEQ.disabled = true;
		optAC.disabled = true;
		optEN.disabled = true;
		//desactivaKML("vias");
		desactivaKML("entorno");
		desactivaKML("ferrov");
		desactivaKML("accesos");
		desactivaKML("equip");
	} else {
		optEF.disabled =false;		
		optEQ.disabled =false;		
		optAC.disabled =false;		
		optEN.disabled =false;		
		//if (optVV.checked == true) {activaKML("vias");};
		if (optEF.checked == true) {activaKML("ferrov");};
		if (optEQ.checked == true) {activaKML("equip");};
		if (optAC.checked == true) {activaKML("accesos");};
		if (optEN.checked == true) {activaKML("entorno");};
	}	
}

function initialize() {	

	map = new GMap2(document.getElementById("map")); 
      map.enableScrollWheelZoom();		

	geocoder = new GClientGeocoder();
			
      map.addControl(new GHierarchicalMapTypeControl());      	
	map.addControl(new GScaleControl());
	map.addControl(new GOverviewMapControl());


	var NORMAL = new GMapType([G_NORMAL_MAP.getTileLayers()[0]], new GMercatorProjection(32),"Mapas"); 
	map.addMapType(NORMAL);

	var FISICO = new GMapType([G_PHYSICAL_MAP.getTileLayers()[0]], new GMercatorProjection(32),"Relieve"); 
	map.addMapType(FISICO);

	var IMAGENES = new GMapType([G_SATELLITE_MAP.getTileLayers()[0]], new GMercatorProjection(32),"Imágenes");  
	map.addMapType(IMAGENES);

	map.addMapType(G_SATELLITE_3D_MAP);

	map.removeMapType(G_NORMAL_MAP);		
	map.removeMapType(G_SATELLITE_MAP);
	map.removeMapType(G_HYBRID_MAP);


	var Url = location.href;
      Url = Url.replace(/.*\?(.*?)/,"$1");
      Variables = Url.split ("&");

	var coordy = 40;
	var coordx = -3.75;
	
	if (Variables.length > 1) {
		Separ = Variables[0].split("=");
		coordx = Separ[1];
		Separ = Variables[1].split("=");
		coordy = Separ[1];
		map.setCenter(new GLatLng(coordy, coordx), 12);	
	} else {
		map.setCenter(new GLatLng(coordy, coordx), 6);	
	}

	var listenerZoom = GEvent.addListener(map, 'zoomend', function(oldzoom, newzoom) {
			activaDesactiva(newzoom);						
		});

	var listener3D = GEvent.addListener(map, 'maptypechanged', function(){ 
			if (map.getCurrentMapType() == G_SATELLITE_3D_MAP) {			
				var optVV = document.getElementById("optVV");
				var optEF = document.getElementById("optEF");	
				var optEQ = document.getElementById("optEQ");	
				var optAC = document.getElementById("optAC");	
				var optEN = document.getElementById("optEN");

				desactivaKML("vias");
				desactivaKML("ferrov");
				desactivaKML("equip");
				desactivaKML("accesos");
				desactivaKML("entorno");

				optVV.checked = false;
				optEF.checked = false;
				optEQ.checked = false;
				optAC.checked = false;
				optEN.checked = false;

				alert("Advertencia: Esta funcionalidad 3D está actualmente en desarrollo y algunas opciones no funcionan correctamente. Por favor, active los datos cuando el mapa 3D se haya cargado");								
			}
		});
			      
	var boxStyleOpts = { opacity: .2, border: "2px solid yellow" };
	var otherOpts = {
        	buttonHTML: "<img src='img/zoom-control-inactive.png' />",
            buttonZoomingHTML: "<img src='img/zoom-control-active.png' />",
            buttonStartingStyle: {width: '17px', height: '17px'},
            overlayRemoveTime: 0 };

	map.addControl(new DragZoomControl(boxStyleOpts, otherOpts, {}),
      new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(27,7)));            
      map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,32)));
	
      vias1 = new GGeoXml("http://mapas.viasverdes.com/data/vv01.kmz");   
      vias2 = new GGeoXml("http://mapas.viasverdes.com/data/vv02.kmz");
     	vias3 = new GGeoXml("http://mapas.viasverdes.com/data/vv03.kmz");
      vias4 = new GGeoXml("http://mapas.viasverdes.com/data/vv04.kmz");
      vias5 = new GGeoXml("http://mapas.viasverdes.com/data/vv05.kmz");
      vias6 = new GGeoXml("http://mapas.viasverdes.com/data/vv06.kmz");
      vias7 = new GGeoXml("http://mapas.viasverdes.com/data/vv07.kmz");
      vias8 = new GGeoXml("http://mapas.viasverdes.com/data/vv08.kmz");
      vias9 = new GGeoXml("http://mapas.viasverdes.com/data/vv09.kmz");        
   
      entorno = new GGeoXml("http://mapas.viasverdes.com/data/entorno.kmz");   
      ferrov = new GGeoXml("http://mapas.viasverdes.com/data/ferrovi.kmz");   
      accesos = new GGeoXml("http://mapas.viasverdes.com/data/accesos.kmz");   
      equip = new GGeoXml("http://mapas.viasverdes.com/data/equip.kmz");  

      WMS_URL_PNOA = 'http://www.idee.es/wms/PNOA/PNOA?';
      G_MAP_WMS_PNOA = createWMSSpec(WMS_URL_PNOA, 'PNOA', 'PNOA', 'PNOA', 'default', 'image/png', '1.1.1'); 
      	
      WMS_URL_IDEE = 'http://www.idee.es/wms/IDEE-Base/IDEE-Base?';
      G_MAP_WMS_IDEE = createWMSSpec(WMS_URL_IDEE, 'IDEE', 'IDEE', 'Todas', 'default', 'image/png', '1.1.1'); 
      	
	WMS_URL_LIMIT = 'http://217.116.29.174/cgi-bin/mapserv.exe?map=/QUIJOTE/ms4w/apps/ViasVerdes.map';
	G_MAP_WMS_LIMIT = createWMSSpec(WMS_URL_LIMIT, 'Toponimia', 'Toponimia', 'municipios', 'default', 'image/png', '1.1.1'); 

	WMS_URL_NATURAL = 'http://www.opengis.uab.es/cgi-bin/europarc/miramon5_0.cgi?';
	G_MAP_WMS_NATURAL = createWMSSpec(WMS_URL_NATURAL, 'Recursos Naturales', 'Recursos Naturales', 'microreservas_2007,monumentos_2007,otros_2007,parajes_2007,nacional_2007,parques_2007,pein_2007,reservas_2007', '', 'image/png', '1.1.1'); 

	WMS_URL_PROTEGIDO = 'http://www.opengis.uab.es/cgi-bin/europarc/miramon5_0.cgi?';
	G_MAP_WMS_PROTEGIDO = createWMSSpec(WMS_URL_PROTEGIDO, 'Espacios Protegidos', 'Espacios Protegidos', 'lic_2007,zepa_2007,otros_2007', '', 'image/png', '1.1.1'); 

	desactivaWMS("IDEE");
	desactivaWMS("PNOA");
	desactivaWMS("LIMIT");
	desactivaWMS("NATURAL");
	desactivaWMS("PROTEGIDO");

      activaDesactiva(6);
	activaKML("vias");
	
	redimensionar();

}