﻿    //////////////////////////////////////////////////////////////////////////////////////////
    var country					= opciones[0];
    var language				= opciones[1];
    var latitudPorDefecto		= opciones[2];
    var longitudPorDefecto		= opciones[3];
    var zoomPorDefecto			= opciones[4];
    var dominioPrimerNivel		= opciones[5];
    var mostrarControlVista		= opciones[6];
    //////////////////////////////////////////////////////////////////////////////////////////
    var countryEspana = (country=='es');
    var languageEspanol = (language=='es');
    var referenciaCatastralMarcada = '';
    var fechaCartografia = ''; 
    var layersCatastro = {'t':'Catastro', 'n':'Catastro','q':'1', 'o':'1', 'Minx':'-18.409875869751', 'Miny':'26.275447845459', 'Maxx':'5.22597980499268', 'Maxy':'44.8553581237793'}; 
    var outputAnterior;  
    //var mostrandoListadoImprimir = false;
    //var mostrandoListadoMasOpciones = false;
    var nombreCapaCatastro='Catastro';
    var nombreCapaCatastroSatelite='CatastroSatelite';
    var nombreCapaCatastroPnoa='CatastroPnoa';
    var nombreCapaCatastroSigPac='CatastroSigPac';
    var idMapaCatastro = configuracionProcuccion?24337:10081;
    var mapaCatastro;
    var controlVista;
    var controlLoadingMapa;
    var controlOpcionesCatastro;
    var mostrandoEn3d=false;
    var mostrandoDual = false;
    var map;
    var marker;
    var infowindow;
    var geocoder = new google.maps.Geocoder();
    var opcionTipoDeBusqueda = 1;
    var mostrandoSubmenuFechasCatastro = false;
    var mostrandoSubmenuOpcionesCatastro = false;
    var mostrandoSubmenuOptionsLayer = false;
    var listenerClick;
    var anchocolumnaPanelLateral = 340;
    var divMapDual;
    var divBottom;
    var divMap;
    var columnaPanelLateral;
    var panelLateralTop;
    var ulPanelLateralTop;
    var divDegradadoVertical;
    var divBottom;
    var iconClosePanelLateral;
    var mostrandoPanelLateral = false;
    var panelLateralContent;
    var mapDual;
    var yainitializedaux = false;
    var LibreriaDeMapas;
    var gruposDeMapas;
    var mapInfo;
    var ulTabsInfoWindos;
    var liInfoWindowSeleccionado = '';
    var	ulSelectPais; 

    function initialize() {
        CrearDegradadoPaneles();
        CrearMenuBuscador();
        CrearMenuTop();
        CrearMenusPanelLateral();
	    InicializarTextos();
	    if(esExplorer6 || esExplorer7)alert(mvar.avisoExplorer6);
	
        $("TextDireccion").value = "";
	    $("inputTipoDeBusqueda").innerHTML = mtext.inputTipoDeBusqueda;
	    $("TextReferencia").value = "";
	    $("latitud").value = "";
	    $("longitud").value = "";
	    $("CoordenadaX").value = "";
	    $("CoordenadaY").value = "";
	    $("poligono").value = "";
	    $("parcela").value = "";
	    $("numero").value = "";
	    $("Zona").value = "";
	    $("DivBusquedaRutaDesde").value = "";
	    $("DivBusquedaRutaHasta").value = "";
	    disableSelection($("inputTipoDeBusqueda"));
	    disableSelection($("inputSelectPais"));
	    $("TextDireccion").focus();	
	
	    divMapDual = $("mapDual");
	    divBottom = $("divBottom");
	    divMap = $("map");
	    columnaPanelLateral = $("columnaPanelLateral");
	    panelLateralTop = $("panelLateralTop");
	    divDegradadoVertical = $("divDegradadoVertical");
	    divBottom = $("divBottom");
	    iconClosePanelLateral = $("iconClosePanelLateral");
	    panelLateralContent = $("panelLateralContent");

        CargarCountrySeleccionado();
	    TratarParametros();
	    prepararMapa();	
	    MostrarPanelLateralDeGolpe();
	
	    if(!countryEspana){
		    $("TipoDeBusqueda2").parentNode.style.display = $("TipoDeBusqueda3").parentNode.style.display = $("TipoDeBusqueda4").parentNode.style.display = "none";
	    }
	    else{
		    $("liTextoUsuarioRegistrado").style.display  =  "";
		    ValidarUsuarioPorCookie();
		    setTimeout("AccessControl()",7000);
	    }
	
	    var ajusteTextBox = esExplorer? 4 : esChrome? 3:0;
	    if(ajusteTextBox!=0) $("TextDireccion").style.paddingTop = $("TextReferencia").style.paddingTop = $("numero").style.paddingTop = $("poligono").style.paddingTop = $("parcela").style.paddingTop = $("latitud").style.paddingTop =  $("longitud").style.paddingTop =  $("CoordenadaX").style.paddingTop = $("CoordenadaY").style.paddingTop =  $("Zona").style.paddingTop = $("DivBusquedaRutaDesde").style.paddingTop = $("DivBusquedaRutaHasta").style.paddingTop = ajusteTextBox + "px";

        if(acc=='pedidocancelado' || acc=='pedidopagado'){_pagar(function(){PedidoPagadoOCancelado(idPedido, (acc=='pedidopagado'));});}
	    else if(acc=='cancelarsuscripciontpv' ){_pagar(function(){CancelarSuscripcionTPV(idPedido);});}
		
	    google.maps.event.addDomListener(document.body, "click",ocultarElementosVisiblesEnMapa);
	
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    var mostrandoPais= false;
    var countriesCargados = false;

    function CargarCountrySeleccionado(){
        for(var i=0;i<listadoCountries.length;i++){
            var countryAux = listadoCountries[i];
            if (countryAux.country == "co.uk") countryAux.country = "uk";
            if(country == countryAux.country){
			        $("inputSelectPais").innerHTML = "";
			        var img = $new("span");
			        var span = $new("span");
			        //span.innerHTML = countryAux.name;
			        img.className = "iconFlag";
			        var position = countryAux.icon.split(',');
			        img.style.backgroundPosition = "-" + position[0] +"px -"+ position[1]+"px";
			        img.style.marginRight = "5px";
			        $("inputSelectPais").appendChild(img);
			        $("inputSelectPais").appendChild(span);
            }
        }
    
    }

    function CargarListadoCountries(){
	    ulSelectPais = $("ulSelectPais");
	    ulSelectPais.style.maxHeight=(altoDeVentana-60)+"px";
	
	    listadoCountries.sort(function (a,b){return (a.name < b.name) ? -1 : 1;});
	    for(var i=0;i<listadoCountries.length;i++){
		    var countryAux = listadoCountries[i];
		    var li = $new("li");
		    var div = $new("div");
		    var spanImg = $new("span");
		    var spanCountryName = $new("span");
		    div.id = "country"+countryAux.country;
		    div.country = countryAux;
		    spanCountryName.innerHTML = countryAux.name;
		    spanCountryName.className = "textoFlag";
		    spanImg.className = "iconFlag";
		    var position = countryAux.icon.split(',');
		    spanImg.style.backgroundPosition = "-" + position[0] +"px -"+ position[1]+"px";


		    google.maps.event.addDomListener(div, "click", function () {
		        if (country != this.country.country) {
		            if (configuracionProcuccion) {
		                if (this.country.fld == 'true') {
		                    if (this.country.country == "uk") this.country.country = "co.uk";
		                    window.location = "http://www.goolzoom." + this.country.country;
		                }
		                else window.location = "http://" + this.country.country + ".goolzoom.com";
		            }
		            else window.location = rutaPrincipal + "?&hc=" + this.country.country + ((acc == 1) ? "&acc=1" : "");
		        }
		    });
		    div.appendChild(spanImg);
		    div.appendChild(spanCountryName);
		    li.appendChild(div);
		    ulSelectPais.appendChild(li);	
		
	    }
    }

    function show_dropdownPais(){
        if(!countriesCargados){
            CargarListadoCountries();
            countriesCargados = true;
        }
	    if(mostrandoPais ){
		    $("selectPais").style.visibility = "hidden";
	    }
	    else{
		    $("selectPais").style.visibility = "visible";
		    setTimeout('mostrandoPais=true;',20);
	    }
	
    }
    function OcultarPais(){
	    document.getElementById("selectPais").style.visibility="hidden";
	    mostrandoPais = false;
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function InitializeAux(){
    
	    if(yainitializedaux)return;
	    yainitializedaux = true;
	
	    map.customMapPnoa = new CustomMapWms(idMapaCatastro, map, nombreCapaCatastroPnoa, true,1, 21, {'t':'pnoa', 'n':'pnoa','q':'0', 'o':'1'},['image/jpeg'],'1.1.1', 'TRUE','1', 'http://www.idee.es/wms/PNOA/PNOA?');
        map.customMapSigPac = new CustomMapWms(idMapaCatastro, map, nombreCapaCatastroSigPac, true,1, 21, {'t':'Ortofotos', 'n':'ORTOFOTOS','q':'0', 'o':'1'},['image/jpeg'],'1.1.1', 'TRUE','1', 'http://wms.mapa.es/wms/wms.aspx?');
        map.imageMapTypePnoa = new google.maps.ImageMapType(map.customMapPnoa);
        map.imageMapTypeSigPac = new google.maps.ImageMapType(map.customMapSigPac);
	
        controlOpcionesCatastro = new ControlOpcionesCatastro(map);	        
    
        google.maps.event.trigger(ulPanelLateralTop.childNodes[0], 'click');
    
	    if(lat!=0 && lng!=0){PosicionarMapa(map, lat, lng, zoom, maptype, markerposition,ma,openmarker, idl, idgr);}			
	    else if(dir!=''){showAddress({'address':dir});}
	    else if(ref!=''){$("TextReferencia").value=ref; _buscar(function(){BuscarPorReferencia(false, maptype);});}
	    else if(north && east && zone){
		    $("CoordenadaX").value = east;
		    $("CoordenadaY").value = north;
		    $("Zona").value = zone;
		    _buscar(function(){BuscarPorCoordenadasUTM();});
	    }
	
    }

    function CrearControlGruposDeMapas(){
        if(!gruposDeMapas) gruposDeMapas = new GruposDeMapas(map);
        gruposDeMapas.MostrarControl();
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function CrearDegradadoPaneles(){
        var divDegradado = $("divDegradado");
        var divDegradadoVertical = $("divDegradadoVertical");
        var aux =1;
        for(var i=10;i>=2;i-=2){
            divDegradado.appendChild($new('div', {'class':'degradadoMapa', 'style':'filter: alpha(opacity='+i+'); height: '+aux+'px; opacity:'+(i/100)}));
            divDegradadoVertical.appendChild($new('div', {'class':'degradadoMapaVertical', 'style':'filter: alpha(opacity='+i+'); width: '+aux+'px; opacity:'+(i/100)}));
            aux++;
        }
    
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function CrearMenuBuscador(){
        var separador1 = $new("div");
        separador1.className = "separador";
        var separador2 = $new("div");
        separador2.className = "separador";
        var separador3 = $new("div");
        separador3.className = "separador";
        var separador4 = $new("div");
        separador4.className = "separador";
        var separador5 = $new("div");
        separador5.className = "separador";
        var separador6 = $new("div");
        separador6.className = "separador";

        var divTextboxBuscador = $("divTextboxBuscador");  
    
        var TextDireccion = $new('input', {'type':'text', 'id':'TextDireccion', 'name':'TextDireccion', 'class':'textBoxBuscador', 'placeholder': unescape(mvalue.TextDireccion)});
        divTextboxBuscador.appendChild(TextDireccion);
    
        var TextReferencia = $new('input', {'type':'text', 'id':'TextReferencia', 'name':'TextReferencia', 'class':'textBoxBuscador', 'placeholder': mvalue.TextReferencia});
        divTextboxBuscador.appendChild(TextReferencia);
    
    
        var divDireccionExacta = $new('div',{'id':'divDireccionExacta'} );
        divTextboxBuscador.appendChild(divDireccionExacta);
        
        var provincias2 = $new('select', {'id':'provincias2', 'name':'provincias2', 'class':'textBoxRoudedLeft'});
        provincias2.style.width = "80px";
        google.maps.event.addDomListener(provincias2, "change",function(){_recursos(function(){SeleccionarPoblacion($('provincias2'), $('poblaciones2'));});});
        divDireccionExacta.appendChild(provincias2);
    
        var poblaciones2 = $new('select', {'id':'poblaciones2', 'name':'poblaciones2', 'class':'textBoxRoudedLeft'});
        poblaciones2.style.width = "96px";
        google.maps.event.addDomListener(poblaciones2, "change",function(){_recursos(function(){CargarCalles($('calles'));});});
        divDireccionExacta.appendChild(poblaciones2);
    
        var calles = $new('select', {'id':'calles', 'name':'calles', 'class':'textBoxRoudedLeft'});
        calles.style.width = "96px";
        google.maps.event.addDomListener(calles, "change",function(){$('numero').focus();});
        divDireccionExacta.appendChild(calles);
        //divDireccionExacta.appendChild(separador1);
    
        var numero = $new('input', {'type':'text', 'id':'numero', 'name':'numero', 'class':'textBoxRoudedLeft', 'placeholder': mvalue.numero});
        numero.style.width = "25px";
        divDireccionExacta.appendChild(numero);
    
    
        var divPoligonoYParcela = $new('div',{'id':'divPoligonoYParcela'} );
        divTextboxBuscador.appendChild(divPoligonoYParcela);
        
        var provincias = $new('select', {'id':'provincias', 'name':'provincias', 'class':'textBoxRoudedLeft'});
        provincias.style.width = "90px";
        google.maps.event.addDomListener(provincias, "change",function(){_recursos(function(){SeleccionarPoblacion($('provincias'), $('poblaciones'));});});
        divPoligonoYParcela.appendChild(provincias);
    
         var poblaciones = $new('select', {'id':'poblaciones', 'name':'poblaciones', 'class':'textBoxRoudedLeft'});
        poblaciones.style.width = "142px";
        google.maps.event.addDomListener(poblaciones, "change",function(){_recursos(function(){$('poligono').focus();});});
        divPoligonoYParcela.appendChild(poblaciones);
    
        var poligono = $new('input', {'type':'text', 'id':'poligono', 'name':'poligono', 'class':'textBoxRoudedLeft', 'placeholder': mvalue.poligono});
        poligono.style.width = "30px";
        divPoligonoYParcela.appendChild(poligono);
        divPoligonoYParcela.appendChild(separador2);
    
        var parcela = $new('input', {'type':'text', 'id':'parcela', 'name':'parcela', 'class':'textBoxRoudedLeft', 'placeholder': mvalue.parcela});
        parcela.style.width = "30px";
        divPoligonoYParcela.appendChild(parcela);
   
        var divCoordenadasGeograficas = $new('div',{'id':'divCoordenadasGeograficas'} );
        divTextboxBuscador.appendChild(divCoordenadasGeograficas);
        
        var latitud = $new('input', {'type':'text', 'id':'latitud', 'name':'latitud', 'class':'textBoxBuscador', 'placeholder': mvalue.latitud});
        latitud.style.width = "146px";
        divCoordenadasGeograficas.appendChild(latitud);
        divCoordenadasGeograficas.appendChild(separador3);
    
        var longitud = $new('input', {'type':'text', 'id':'longitud', 'name':'longitud', 'class':'textBoxBuscador', 'placeholder': mvalue.longitud});
        longitud.style.width = "146px";
        divCoordenadasGeograficas.appendChild(longitud);    
    
        var DivCoordenadasUTM = $new('div',{'id':'DivCoordenadasUTM'} );
        divTextboxBuscador.appendChild(DivCoordenadasUTM);
        
        var CoordenadaX = $new('input', {'type':'text', 'id':'CoordenadaX', 'name':'CoordenadaX', 'class':'textBoxBuscador', 'placeholder': mvalue.CoordenadaX});
        CoordenadaX.style.width = "96px";
        DivCoordenadasUTM.appendChild(CoordenadaX);
        DivCoordenadasUTM.appendChild(separador4);
    
        var CoordenadaY = $new('input', {'type':'text', 'id':'CoordenadaY', 'name':'CoordenadaY', 'class':'textBoxBuscador', 'placeholder': mvalue.CoordenadaY});
        CoordenadaY.style.width = "96px";
        DivCoordenadasUTM.appendChild(CoordenadaY);
        DivCoordenadasUTM.appendChild(separador5);
    
        var Zona = $new('input', {'type':'text', 'id':'Zona', 'name':'Zona', 'class':'textBoxBuscador', 'placeholder': mvalue.Zona});
        Zona.style.width = "90px";
        DivCoordenadasUTM.appendChild(Zona);
        
        var DivBusquedaRuta = $new('div',{'id':'DivBusquedaRuta'} );
        divTextboxBuscador.appendChild(DivBusquedaRuta);
        
        var DivBusquedaRutaDesde = $new('input', {'type':'text', 'id':'DivBusquedaRutaDesde', 'name':'DivBusquedaRutaDesde', 'class':'textBoxBuscador', 'placeholder': mvalue.DivBusquedaRutaDesde});
        DivBusquedaRutaDesde.style.width = "146px";
        DivBusquedaRuta.appendChild(DivBusquedaRutaDesde);
        DivBusquedaRuta.appendChild(separador6);
    
        var DivBusquedaRutaHasta = $new('input', {'type':'text', 'id':'DivBusquedaRutaHasta', 'name':'DivBusquedaRutaHasta', 'class':'textBoxBuscador', 'placeholder': mvalue.DivBusquedaRutaHasta});
        DivBusquedaRutaHasta.style.width = "146px";
        DivBusquedaRuta.appendChild(DivBusquedaRutaHasta);
    
        if(esExplorer){
            google.maps.event.addDomListener(TextDireccion, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(TextDireccion, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(TextReferencia, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(TextReferencia, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(numero, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(numero, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(poligono, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(poligono, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(parcela, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(parcela, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(latitud, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(latitud, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(longitud, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(longitud, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(CoordenadaX, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(CoordenadaX, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(CoordenadaY, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(CoordenadaY, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(Zona, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(Zona, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(DivBusquedaRutaDesde, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(DivBusquedaRutaDesde, "keypress",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(DivBusquedaRutaHasta, "click",function(){ClickInputBuscador(this);});
            google.maps.event.addDomListener(DivBusquedaRutaHasta, "keypress",function(){ClickInputBuscador(this);});      
        }
    
    
        var dropdownTipoDeBusqueda = $("dropdownTipoDeBusqueda");  
    
        var inputTipoDeBusqueda = $new('div', {'id':'inputTipoDeBusqueda', 'name':'inputTipoDeBusqueda'});
        google.maps.event.addDomListener(inputTipoDeBusqueda, "click",function(){show_dropdownTipoDeBusqueda();});    
        dropdownTipoDeBusqueda.appendChild(inputTipoDeBusqueda);
    
        var tipoDeBusquedaListado = $new('div', {'id':'tipoDeBusquedaListado'});
        dropdownTipoDeBusqueda.appendChild(tipoDeBusquedaListado);
    
        var ulTipoDeBusquedaListado = $new('ul', {'id':'ulTipoDeBusquedaListado'});
        tipoDeBusquedaListado.appendChild(ulTipoDeBusquedaListado);
        for(var i=1;i<=7;i++){
             var li = $new('li');
             var TipoDeBusqueda = $new('div', {'id':'TipoDeBusqueda'+i, 'value':i});
             google.maps.event.addDomListener(TipoDeBusqueda, "click",function(){
                var j = parseInt(this.id.substring(this.id.length-1)); 
                _recursos(function(){CambiarTipoDeBusqueda(j);});
              }); 
             li.appendChild(TipoDeBusqueda);
             ulTipoDeBusquedaListado.appendChild(li);
        }
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function CrearMenuTop(){
        var divIconosMenuTop = $("divIconosMenuTop");
        if(countryEspana){
            CrearIcono('iconImprimir', mtext.textoSubmenuImprimirMapa, function(){_informes(function(){MostrarVentanaImprimir();})});
            divIconosMenuTop.appendChild($new('div',{'class':'separadorIconMenuTop'}));
            CrearIcono('iconoDownload', mtext.textoSUbmenuObtenerImagen, function(){_informes(function(){MostrarVentanaDescargar();})});
            divIconosMenuTop.appendChild($new('div',{'class':'separadorIconMenuTop'}));
        }
        CrearIcono('iconEnviarEmail', mtext.textoSubmenuObtenerLink, function(){_compartir(function(){PopupEnviarMapaEmail();})});
        function CrearIcono(icon, title, funcion){
            var div = $new('div',{'class':'divIconMenuTop'});
            div.setAttribute('title', title);
            div.funcion = funcion;
            google.maps.event.addDomListener(div, "click", function(evento){return this.funcion();});
            var span = $new('span',{'class':'iconMenuTop', 'id':icon});
            div.appendChild(span);
            divIconosMenuTop.appendChild(div);
        };
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    var panelLateralSelectedMenu=false;
    function CrearMenusPanelLateral(){
   
       ulPanelLateralTop = $("ulPanelLateralTop");
       CrearLi(mtext.textoMenuImprimir, "panelLateralTopMapas", function(){CrearControlGruposDeMapas()});
       CrearLi(mtext.textoMenuMedir, "panelLateralTopMedir", function(){_medir(function(){ AnadirColtrolMedirAux();})});
       if(countryEspana)CrearLi(mtext.textoMenuInmuebles, "panelLateralTopInmuebles", function(){_inmuebles(function(){MostrarBuscadorInmuebles();})});
       var li = CrearLi(mtext.TipoDeBusqueda7, "panelLateralTopRuta", function(){_ruta(function(){CrearControlRuta();})});
       if(countryEspana)li.style.display = "none";
       CrearLi(mtext.textoMenuFavoritos, "panelLateralTopFavoritos", function(){_favoritos(function(){MostrarFavoritos();})});
   
   
       function CrearLi(name, id, clickFunction){
            var li = $new('li',{'id':id});
            li.innerHTML = name;
            li.clickFunction = clickFunction;
            addClass(li, "unselected");
            google.maps.event.addDomListener(li, "click", function(evento){
                if(panelLateralSelectedMenu==this)return;
                if(panelLateralSelectedMenu){
                    removeClass(panelLateralSelectedMenu, "selected");
                    addClass(panelLateralSelectedMenu, "unselected");
                }
                removeClass(this, "unselected");
                addClass(this, "selected");
                panelLateralSelectedMenu = this;
                if(this.clickFunction)return clickFunction();
            });
            ulPanelLateralTop.appendChild(li);
            return li;
       };
       addClass(ulPanelLateralTop.childNodes[0],"ulPanelLateralTopLeft");
       addClass(ulPanelLateralTop.childNodes[ulPanelLateralTop.childNodes.length-1], "ulPanelLateralTopRight");

    }

    ////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////
    function InicializarTextos(){
	    for(var text in mtext){
		    if($(text))$(text).innerHTML = mtext[text];
	    }
	    for(var title in mtitle){
		    if($(title))$(title).setAttribute("title", mtitle[title]);
	    }
	
	    for(var value in mvalue){
		    if($(value))$(value).setAttribute("value", mvalue[value]);
	    }
    }
    ////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////
    function ObtenerLinkMapa(forzarLeerTodos){
	    var mapaAEstudiar = map;
	    var forzarLeerTodos = forzarLeerTodos || false;
	    //var forzarLeerFormatoAntiguo = forzarLeerFormatoAntiguo || false;
	    var center= mapaAEstudiar.getCenter();
	    var zoom = mapaAEstudiar.getZoom();
	    var maptype = map.getMapTypeId();
	    var ma="";
	    var idlayer="";
	    var idGrupo="";
	    var link = "";
	    var markerposition = '';
	    var openmarker  = '';
	
	
	    if(typeof markerAEstudiar != 'undefined' && markerAEstudiar){
		    markerposition = parseFloat(markerAEstudiar.getPosition().lat()).toFixed(6) +',' +  parseFloat(markerAEstudiar.getPosition().lng()).toFixed(6);
	    }
	    else{
		    if(marker==null)markerposition = '';
		    else markerposition = parseFloat(marker.getPosition().lat()).toFixed(6) +',' +  parseFloat(marker.getPosition().lng()).toFixed(6);
	    }
	    if(markerposition!=''){
		    openmarker = (infowindow!=null)?'1':'';
	    }
	
        if(gruposDeMapas && !gruposDeMapas.EstaAbiertaLaLibreria()){
            var grupoOpened = "";
            for(var i=1;i<gruposDeMapas.gruposdemapas_box.childNodes.length-1;i++){
                var grupo = gruposDeMapas.gruposdemapas_box.childNodes[i];
                if(grupo.isOpened){
                    grupoOpened = grupo; 
                    break;   
                }
            }
            if(grupoOpened!="" && grupoOpened.ulListadoGrupo.selectedLayer){
                if(grupoOpened.ulListadoGrupo.selectedLayer.mapa.idMapa ==idMapaCatastro){
                    //if(gruposDeMapas.inputTipoMapaSatelite2.checked)maptype="catastrosatelite";
                    if(gruposDeMapas.inputTipoMapaPnoa2.checked)maptype="catastropnoa";
                    else if(gruposDeMapas.inputTipoMapaSigPac2.checked)maptype="catastrosigpac";
                    //else maptype="catastro";
                }
                idlayer = grupoOpened.ulListadoGrupo.selectedLayer.layer.i;
                idGrupo =grupoOpened.ulListadoGrupo.selectedLayer.parentNode.idGrupo;
                link = "&idl="+idlayer + "&idgr="+idGrupo + "&transparent="+grupoOpened.ulListadoGrupo.selectedLayer.mapa.transparent.toLowerCase();
            
            }
        
        }
   
	    link = '&lat=' + parseFloat(center.lat()).toFixed(6) +'&lng='+parseFloat(center.lng()).toFixed(6)+'&zoom='+zoom +'&type=' + maptype + '&marker='+markerposition+'&om='+openmarker+'&fc='+fechaCartografia + link;
	    return link;

    }
    function PosicionarMapa(map, latAux, lngAux, zoomAux, maptypeAux, markerpositionAux, maAux,openmarkerAux, idlAux, idgrAux){
        lat = latAux;
        lng = lngAux;
        zoom = zoomAux;
        maptype = maptypeAux;
        markerposition = markerpositionAux;
        ma = maAux;
        openmarker = openmarkerAux;
        idl = idlAux;
        idgr = idgrAux;
    
	    BorrarMarkerEInfoWindow();
	    map.setCenter(new google.maps.LatLng(lat, lng));
	    map.setZoom(zoom);
	
	    var maptypeAux = "";
	    if(maptype!='')maptype = maptype.toLowerCase();
	
	    switch(maptype){
		    case '0' : maptype  = 'roadmap'; break;
		    case '1' : maptype  = 'satellite'; break;
		    case '2' : maptype  = 'hybrid'; break;
		    case '3' : maptype  = 'vista'; break;
		    case '4' : maptype  = 'catastro'; break;
		    case '5' : maptype  = 'catastropnoa'; break;
		    case '6' : maptype  = 'catastrosigpac'; break;
		    case '7' : maptype  = 'catastrosatelite'; break;
	    }
	
	    switch(maptype){
		    case 'roadmap'			: maptypeAux  = google.maps.MapTypeId.ROADMAP; break;
		    case 'satellite'		: maptypeAux  = google.maps.MapTypeId.SATELLITE; break;
		    case 'hybrid'			: maptypeAux  = google.maps.MapTypeId.HYBRID; break;
		    case 'terrain'			: maptypeAux  = google.maps.MapTypeId.TERRAIN; break;
		    case 'vista'			: maptypeAux  = mvar.nombreCapaVista; break;
		    case 'catastro'			: maptypeAux  = nombreCapaCatastro; break;
		    case 'catastrosatelite'	: maptypeAux  = nombreCapaCatastro; break;
		    case 'catastropnoa'		: maptypeAux  = nombreCapaCatastro; break;
		    case 'catastrosigpac'	: maptypeAux  = nombreCapaCatastro; break;
	    }
	    if(gruposDeMapas){
	        if(maptype=='roadmap' || maptype=='satellite' || maptype=='hybrid' || maptype=='terrain' || maptype=='vista'){
	            map.setMapTypeId(maptypeAux);
	        }
	        else if(maptype=='catastro' || maptype=='catastrosatelite' || maptype=='catastropnoa' || maptype=='catastrosigpac') {
	            gruposDeMapas.functionAfterOpenGrup = function(){PosicionarMapaAux();};
                if(!gruposDeMapas.AbrirPanelCatastro()){ 
                    PosicionarMapaAux();
                }
                return;
            
	        }
	        if(idgr && idl && idgr!='' && idl!=''){
	            gruposDeMapas.OpenGroupAndLayer(idgr.toLowerCase(), idl);
	        
	        }
	        else {
	            PosicionarMapaAux();
            }
	        return;
	    }
	    else{
	        if(maptypeAux!='')map.setMapTypeId(maptypeAux);	
	        if(maptype=='catastrosatelite'){
		        controlOpcionesCatastro.ActivarTipoDeMapaEspecifico(controlOpcionesCatastro.inputTipoMapaSatelite);
	        }
	        else if(maptype=='catastropnoa'){
		        controlOpcionesCatastro.ActivarTipoDeMapaEspecifico(controlOpcionesCatastro.inputTipoMapaPnoa);
	        }
	        else if(maptype=='catastrosigpac'){
		        controlOpcionesCatastro.ActivarTipoDeMapaEspecifico(controlOpcionesCatastro.inputTipoMapaSigPac);
	        }
	    }
	    PosicionarMapaAux();
	
    }

    function PosicionarMapaAux(){
    
        if(gruposDeMapas && (maptype=='catastro' || maptype=='catastrosatelite' || maptype=='catastropnoa' || maptype=='catastrosigpac')){
            gruposDeMapas.functionAfterOpenGrup = null;
            var layerAClickear='';
            if(maptype=='catastro'){
                gruposDeMapas.layerLiCatastro.layerInput.checked = true;
                google.maps.event.trigger(gruposDeMapas.layerLiCatastro, 'click');
            }else{
                if(maptype=='catastrosatelite')layerAClickear = gruposDeMapas.inputTipoMapaSatelite2;
                else if(maptype=='catastropnoa')layerAClickear = gruposDeMapas.inputTipoMapaPnoa2;
                else if(maptype=='catastrosigpac')layerAClickear = gruposDeMapas.inputTipoMapaSigPac2;
                if(layerAClickear!=''){
                    layerAClickear.checked = true;
                    google.maps.event.trigger(layerAClickear, 'click');
                }
            }
        }
    
    
        if(ma && ma!=''){
	        ma = trim(ma).split("[");	
		    if(ma.length>0){
		        if(gruposDeMapas)gruposDeMapas.MostrarMapaEspecifico(ma);
		        else LibreriaDeMapas.MostrarMapaEspecifico(ma);
            }
	    }
	    else PosicionarMarkerEInfoWindow();
    
    }

    function PosicionarMarkerEInfoWindow(){
        if(markerposition && markerposition!=''){
		    markerposition = markerposition.split(",");
		    var pointMarker = new google.maps.LatLng(markerposition[0], markerposition[1]);
		    if(openmarker=='1')AbrirInfoWindow(pointMarker);
		    else marker = new google.maps.Marker({map:map,position:pointMarker,draggable:true});
	    }
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function AjustarAlturas(){
    
	    anchoDeVentana = window.innerWidth || document.body.offsetWidth;
	    altoDeVentana = window.innerHeight || document.body.offsetHeight;
	    divBottom.style.height=(altoDeVentana-70)+"px";
	    var centerAux;
	    if(mostrandoPanelLateral){
		    centerAux = map.getCenter();
		    divMap.style.left = (anchocolumnaPanelLateral) +"px";
		    divMap.style.width = (anchoDeVentana - anchocolumnaPanelLateral) +"px";
		    map.setCenter(centerAux);
		    divDegradadoVertical.style.marginLeft = anchocolumnaPanelLateral + "px";
		    divDegradadoVertical.style.display = "block";
		
	    }
	    else if(mostrandoDual){
		    var nuevoAncho = (anchoDeVentana/2);
		    divMap.style.width = nuevoAncho + "px";
		    divMap.style.left = nuevoAncho  + "px";
		    divMapDual.style.width  = nuevoAncho -2 +"px";
		    divMapDual.style.display = '';
		    if(mapDual)google.maps.event.trigger(mapDual, 'resize');
		
	    }
	    else {
		    if(map)centerAux = map.getCenter();
		    divMap.style.width="100%";	
		    divMap.style.left = "0px";
		    divMapDual.style.display = 'none';
		    divDegradadoVertical.style.display = "none";
		
	    }
	
	    CargarAnchoYAltoDeMapa(map);
	    PosicionarVentanaPopup();
	
	    if(map){
	        google.maps.event.trigger(map, 'resize');
        }
	    if(centerAux)map.setCenter(centerAux);	
	    if(map && map.altoDeMapa){
	        columnaPanelLateral.style.height = map.altoDeMapa + "px";
	        var ajuste = -5;
	        panelLateralContent.style.height=parseInt(getStyle(columnaPanelLateral, "height"))- parseInt(getStyle(panelLateralTop, "height"))+ ajuste +"px";
	    }
	    if(ulSelectPais)ulSelectPais.style.maxHeight=(altoDeVentana-60)+"px";
	
	
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function AbrirPanelLateral(content, onClose, avoidRemovListenerClick){
        columnaPanelLateral.className = "columnaPanelLateral";
	    columnaPanelLateral.style.width = anchocolumnaPanelLateral + "px";
	    if(columnaPanelLateral.listenerClose){
	        columnaPanelLateral.listenerClose();
	        //google.maps.event.removeListener(columnaPanelLateral.listenerClose);
	        columnaPanelLateral.listenerClose = null;
	    
        }
	    if(panelLateralContent.childNodes.length>0)
	        panelLateralContent.removeChild(panelLateralContent.firstChild);
	
	    if(content){
	        //content.style.height = parseInt(getStyle(columnaPanelLateral, "height"))- parseInt(getStyle(panelLateralTop, "height")) +"px";
	        panelLateralContent.appendChild(content);
        }
  	    if(onClose && onClose!=''){
  	        columnaPanelLateral.listenerClose = onClose;
        }
	    if(!mostrandoPanelLateral)MostrarPanelLateral();
    }

    function MostrarPanelLateral(marginLeft){
        if(!marginLeft && mostrandoDual)MostrarModoNormal();	
	    marginLeft = marginLeft || -anchocolumnaPanelLateral;
	    columnaPanelLateral.style.marginLeft = marginLeft + "px";
	    marginLeft+=25;
	    if(marginLeft>=-25){
		    MostrarPanelLateralDeGolpe();
	    }
	    else setTimeout("MostrarPanelLateral("+marginLeft+")",20);
    }
    function MostrarPanelLateralDeGolpe(){
        columnaPanelLateral.className = "columnaPanelLateral";
        columnaPanelLateral.style.marginLeft = "0px";
        $("iconClosePanelLateral").className = "iconClosePanelLateralOpened";
        $("iconClosePanelLateral").title = mvar.tituloOcultarPanel;
        mostrandoPanelLateral = true;
        google.maps.event.clearListeners(columnaPanelLateral,"click");
        AjustarAlturas();
    
    }

    function CerrarPanelLateral(marginLeft){
        if(!mostrandoPanelLateral){
            MostrarPanelLateral();
               return;
        }
        marginLeft = marginLeft || 0;
    
	    columnaPanelLateral.style.marginLeft = marginLeft + "px";
	    marginLeft-=55;
	    if(marginLeft<= -anchocolumnaPanelLateral){
	        CerrarPanelLateralDeGolpe();
	    }
	    else setTimeout("CerrarPanelLateral("+marginLeft+")",20);
    }
    function CerrarPanelLateralDeGolpe(){
        columnaPanelLateral.style.marginLeft = - anchocolumnaPanelLateral + "px";
        $("iconClosePanelLateral").className = "iconClosePanelLateralClosed";
        $("iconClosePanelLateral").title = mvar.tituloMostrarPanel;
	    mostrandoPanelLateral = false;
	
	    google.maps.event.addDomListener(columnaPanelLateral, "click", function(evento){
            if(evento.target==this)MostrarPanelLateral();
        });
        AjustarAlturas();
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    function prepararMapa(){
	    var centerLatLng = new google.maps.LatLng(latitudPorDefecto, longitudPorDefecto);
	    var myOptions = {
   		    mapTypeControlOptions: {
     		    mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, mvar.nombreCapaVista, nombreCapaCatastro],
     		    style:google.maps.MapTypeControlStyle.HORIZONTAL_BAR
   		    },
   		    mapTypeId: google.maps.MapTypeId.ROADMAP,
   		    mapTypeControl: true,
   		    scaleControl:true,
   		    navigationControl:true,
   		    streetViewControl:true,
   		    center: centerLatLng,
   		    zoom:zoomPorDefecto
 	    };
	    map = new google.maps.Map($("map"), myOptions);
	    AjustarAlturas();
	
	    map.enableKeyDragZoom({
                    boxStyle: {
                      border: "2px solid black",
                      opacity: 0.7
                    },
                    paneStyle: {
                      backgroundColor: "black",
                      opacity: 0.3
                    },
                    veilStyle: {
                      backgroundColor: "black",
                      opacity: 0.25
                    },
                    visualEnabled: true
	    });

	
	    var controlCoordenadas = new ControlCoordenadas(map, mvar.coordenadasCentro +':', mvar.coordenadasMouse + ':',mvar.titleCambiarCoorCentro, mvar.titleCambiarCoorSistema);
	    controlCoordenadas.setMap(map);

	    google.maps.event.addListener(map, "idle", function() {mapTypeChanged(map);if(!yainitializedaux)InitializeAux();});
	    google.maps.event.addListener(map, "maptypeid_changed", function() {mapTypeChanged(map);});
	
	    if(countryEspana){
	        var options = {mapTypeControlOptions: {
     		        mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, mvar.nombreCapaVista, nombreCapaCatastro]
   		        }};
	        
            map.imageMapTypeSatelite = new CustomMapSatelite(nombreCapaCatastroSatelite);
 	        map.customMapCatastro = new CustomMapWms(idMapaCatastro, map, nombreCapaCatastro, false,1, 21, layersCatastro,['image/png'],'1.1.1', 'FALSE','1', 'http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx?', true);
 	        map.customMapCatastro.AddRemoveListeners(true);
	        map.imageMapTypeCatastro = new google.maps.ImageMapType(map.customMapCatastro);
		    map.mapTypes.set(nombreCapaCatastro,map.imageMapTypeCatastro);
	    }
	
	    if(mostrarControlVista){
		    var customMapVista = new CustomMapTypeEmpty(mvar.nombreCapaVista);
		    map.mapTypes.set(mvar.nombreCapaVista,customMapVista);
		    controlVista = new ControlVista(map, 'CallBackVistaPajaroFail');
	    }
	
	    AnadirControlLoadingMapa(mvar.cargando, map);
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ocultarElementosVisiblesEnMapa = function(sender){
        if(mostrandoSubmenuFechasCatastro)OcultarSubmenuFechasCatastro();	
	    if(mostrandoSubmenuOpcionesCatastro)OcultarulCapasCatastro();	
	    if(sender.target.id!="textoMenuImprimir"){
	        if(mostrandoTipoDeBusqueda)OcultarTipoDeBusqueda();
	        if(mostrandoPais)OcultarPais();
        }
    };

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function AbrirInfoWindow(point){
        var point = point || map.getCenter();
	    BorrarMarkerEInfoWindow();
	    var contentInfoWindow = $new("div");
	    mapasWMSMostrados = ObtenermapasWMSMostrados();
	    if(mapasWMSMostrados.length==0){
		    contentInfoWindow.id = "contentInfoWindowSmall";
		    geocoder.geocode({'latLng':point},function(results, status) {
			    var textoResultado = "";
			    if (!results || status != google.maps.GeocoderStatus.OK) {textoResultado = mvar.noExisteInformacion} 
			    else{textoResultado= results[0].formatted_address;}
			    contentInfoWindow.innerHTML = '<div style="font-size:17px;font-weight:bold;margin-bottom:15px;">'+textoResultado+'</div><div style="">'+mvar.seleccionaOtroMapa+'</div>';
		    });
	    }
	    else{
		
		    contentInfoWindow.id = "contentInfoWindow";
		
		    var containerTabsInfoWindow = $new("div");
		    containerTabsInfoWindow.id = "containerTabsInfoWindow";
		
		    ulTabsInfoWindos = $new("ul");
		    ulTabsInfoWindos.id = "ulTabsInfoWindos";
		
		    var containerFeatureInfo = $new("div");
		    containerFeatureInfo.id = "containerFeatureInfo";
		
		    var existeFeatureInfo = false;
		    var contieneCatastro = false;
		    for(var i=0;i<mapasWMSMostrados.length;i++){
			    var wms = mapasWMSMostrados[i];
			    if(wms.isQueryable){
				    var liTabInfoWindow = $new("li");
				    liTabInfoWindow.className = "liTabInfoWindow";
				    liTabInfoWindow.wms = wms;
				    if(wms.name.indexOf(nombreCapaCatastro)>-1 || wms.idMapa ==idMapaCatastro)contieneCatastro = true;
				    liTabInfoWindow.innerHTML = (wms.myLayers[0].t.length<=12)?wms.myLayers[0].t:wms.myLayers[0].t.substring(0,12) + " ..";
				    google.maps.event.addDomListener(liTabInfoWindow, "click", function(){
					    if(liInfoWindowSeleccionado!=this){
						    containerFeatureInfo.innerHTML = "<iframe width=100% height=100% scrolling=auto frameborder=0 marginheight=0 marginwidth=0 src="+ this.wms.getFeatureInfo(point) +"></iframe>";
						    liInfoWindowSeleccionado.className = "liTabInfoWindow";
						    this.className = "liTabInfoWindowSelected";
					    }
					    liInfoWindowSeleccionado = this;
				    });
				
				    ulTabsInfoWindos.appendChild(liTabInfoWindow);
				    existeFeatureInfo = true;
			    }
		    } 
		    if(existeFeatureInfo){
			    var anchoInfowindow = (map.anchoDeMapa * 0.45);
			    anchoInfowindow = (anchoInfowindow<350)?350:anchoInfowindow;
			    var altoInfoWIndow = (map.altoDeMapa * 0.4);
			    altoInfoWIndow = (altoInfoWIndow>450)?450:(altoInfoWIndow<150)?150:altoInfoWIndow;
			
			    contentInfoWindow.style.width = anchoInfowindow + "px";
			    contentInfoWindow.style.height = altoInfoWIndow + "px";
			    containerFeatureInfo.style.height = (altoInfoWIndow-22) +"px";
			
			    containerTabsInfoWindow.appendChild(ulTabsInfoWindos); 
			    contentInfoWindow.appendChild(containerTabsInfoWindow); 
			    contentInfoWindow.appendChild(containerFeatureInfo); 
			
			    if(countryEspana && contieneCatastro){
			        var aInformeDesdeInfoWindow = $new("a");			   
			        aInformeDesdeInfoWindow.style.textDecoration = "underline";
			    
			        var divMenuEspecialCatastro= $new("div");			   
			        divMenuEspecialCatastro.style.position = "absolute";
		            divMenuEspecialCatastro.style.right = "30px";
		            divMenuEspecialCatastro.style.top = "0px";
		            divMenuEspecialCatastro.style.display = "block";
		            containerTabsInfoWindow.appendChild(divMenuEspecialCatastro);
			    
			    
			        aInformeDesdeInfoWindow.innerHTML = "Descargar Informes";
			    
                    aInformeDesdeInfoWindow.setAttribute("href","javascript:void(0)");
	                google.maps.event.addDomListener(aInformeDesdeInfoWindow, 'click', function(){_informes(function(){MostrarVentanaGenerarInformes();});});
			        divMenuEspecialCatastro.appendChild(aInformeDesdeInfoWindow);
			    }
		    }
		    else{
			    contentInfoWindow.id = "contentInfoWindowSmall";
			    contentInfoWindow.innerHTML = '<div style="">'+mvar.ningunaCapaContieneInfo+'</div>';
		    }
	    }
	
	
	    marker = new google.maps.Marker({map:map,position:point,draggable:true});
	    infowindow = new google.maps.InfoWindow({
		    content: contentInfoWindow,
		    'maxWidth': 500
	    });
	
	    infowindow.open(map, marker);
	    google.maps.event.addListener(marker, "click", function(){BorrarMarkerEInfoWindow();});
	    google.maps.event.addListener(infowindow, "closeclick", function(){infowindow=null;});
	    if(existeFeatureInfo){
		    google.maps.event.trigger(ulTabsInfoWindos.childNodes[0], 'click'); 
	    }
    }
    function ObtenermapasWMSMostrados(){
	    var mapasWMSMostrados = new Array();
	    for(var i=0;i<mapasWMSCargados.length;i++){
		    var wms = mapasWMSCargados[i];
		    if(wms.map_ == map && wms.seEstaMostrandoElMapa(map)){
		        mapasWMSMostrados.push(wms);
		    }
	    }
	    return mapasWMSMostrados;
    }

    function UpdateInfoWindow(mapaWms){
	    if(ulTabsInfoWindos && ulTabsInfoWindos.childNodes){
		    for(var i=0;i<ulTabsInfoWindos.childNodes.length;i++){
			    var mapaCargado = ulTabsInfoWindos.childNodes[i];
			    if(mapaCargado.wms.name == mapaWms.name && mapaCargado.className == "liTabInfoWindowSelected"){
				    google.maps.event.trigger(mapaCargado, 'click'); 
			    }
		    }
	    }
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //CONTROL OPCIONES DE CATASTRO//////////////////////////////////////////////////////////////////////////////////////
    function ControlOpcionesCatastro(map) {
	    var me = this;
	    this.map_ = map;
	    this.containerOpcionesCatastro = $new("div");
	    this.containerOpcionesCatastro.id = "containerOpcionesCatastro";

	    var ulOpcionesCatastroTiposDeMapa = $new("ul");
	    ulOpcionesCatastroTiposDeMapa.id = "ulOpcionesCatastroTiposDeMapa";
	
	    var liTipoMapaSatelite = $new("li");
	    this.inputTipoMapaSatelite = $new("input");
	    this.inputTipoMapaSatelite.id = "inputTipoMapaSatelite";
	    this.inputTipoMapaSatelite.name = "inputTipoMapaSatelite";
	    this.inputTipoMapaSatelite.type = "checkbox";
	    google.maps.event.addDomListener(this.inputTipoMapaSatelite, 'click', function(){
		    me.inputTipoMapaPnoa.checked = false;
		    me.inputTipoMapaSigPac.checked = false;
		    me.map_.mapTypes.set(nombreCapaCatastro,this.checked?me.map_.imageMapTypeSatelite : me.map_.imageMapTypeCatastro);
		    me.map_.customMapCatastro.isOpaque = !this.checked;
		    me.map_.customMapCatastro.UpdateTransparent();
		    me.map_.customMapCatastro.refresh(true);
		    me.map_.customMapPnoa.setMapa(null);
		    me.map_.customMapSigPac.setMapa(null);
		
		
		
	    });
	    var labelTipoMapaSatelite = $new("label");
	    labelTipoMapaSatelite.innerHTML = "Superponer a Google";
	    labelTipoMapaSatelite.htmlFor = "inputTipoMapaSatelite";
	    liTipoMapaSatelite.appendChild(this.inputTipoMapaSatelite);
	    liTipoMapaSatelite.appendChild(labelTipoMapaSatelite);
	
	
	    var liTipoMapaPnoa = $new("li");
	    this.inputTipoMapaPnoa = $new("input");
	    this.inputTipoMapaPnoa.id = "inputTipoMapaPnoa";
	    this.inputTipoMapaPnoa.name = "inputTipoMapaPnoa";
	    this.inputTipoMapaPnoa.type = "checkbox";
	    google.maps.event.addDomListener(this.inputTipoMapaPnoa, 'click', function(){
		    me.inputTipoMapaSatelite.checked = false;
		    me.inputTipoMapaSigPac.checked = false;
		    me.map_.mapTypes.set(nombreCapaCatastro,this.checked?me.map_.imageMapTypePnoa:me.map_.imageMapTypeCatastro);
		    me.map_.customMapCatastro.isOpaque = !this.checked;
		    me.map_.customMapCatastro.UpdateTransparent();
		    me.map_.customMapCatastro.refresh(true);
		    me.map_.customMapSigPac.setMapa(null);
		    me.map_.customMapPnoa.setMapa(this.checked?me.map_:null);
	    });
	
	    var labelTipoMapaPnoa = $new("label");
	    labelTipoMapaPnoa.innerHTML = "Superponer a Pnoa";
	    labelTipoMapaPnoa.htmlFor = "inputTipoMapaPnoa";
	    liTipoMapaPnoa.appendChild(this.inputTipoMapaPnoa);
	    liTipoMapaPnoa.appendChild(labelTipoMapaPnoa);
	
	
	    var liTipoMapaSigPac = $new("li");
	    this.inputTipoMapaSigPac = $new("input");
	    this.inputTipoMapaSigPac.id = "inputTipoMapaSigPac";
	    this.inputTipoMapaSigPac.name = "inputTipoMapaSigPac";
	    this.inputTipoMapaSigPac.type = "checkbox";
	    google.maps.event.addDomListener(this.inputTipoMapaSigPac, 'click', function(){
		    me.inputTipoMapaSatelite.checked = false;
		    me.inputTipoMapaPnoa.checked = false;
		    me.map_.mapTypes.set(nombreCapaCatastro,this.checked?me.map_.imageMapTypeSigPac:me.map_.imageMapTypeCatastro);
		    me.map_.customMapCatastro.isOpaque = !this.checked;
		    me.map_.customMapCatastro.UpdateTransparent();
		    me.map_.customMapCatastro.refresh(true);
		    me.map_.customMapPnoa.setMapa(null);
		    me.map_.customMapSigPac.setMapa(this.checked?me.map_:null);
		
	    });
	
	    var labelTipoMapaSigPac = $new("label");
	    labelTipoMapaSigPac.innerHTML = "Superponer a Sigpac";
	    labelTipoMapaSigPac.htmlFor = "inputTipoMapaSigPac";
	    liTipoMapaSigPac.appendChild(this.inputTipoMapaSigPac);
	    liTipoMapaSigPac.appendChild(labelTipoMapaSigPac);
	
	
	    ulOpcionesCatastroTiposDeMapa.appendChild(liTipoMapaSatelite);
	    ulOpcionesCatastroTiposDeMapa.appendChild(liTipoMapaPnoa);
	    ulOpcionesCatastroTiposDeMapa.appendChild(liTipoMapaSigPac);

	    this.containerOpcionesCatastro.appendChild(ulOpcionesCatastroTiposDeMapa);
	    this.map_ = map;

	    var me = this;
	    me.statisticEnviado = false;
	    google.maps.event.addListener(this.map_, "maptypeid_changed", function () {
	        var mapTypeIdActual = me.map_.getMapTypeId();
	        if (mapTypeIdActual == nombreCapaCatastro || mapTypeIdActual == nombreCapaCatastroSatelite) {

	            me.containerOpcionesCatastro.style.display = "block";
	            if (me.inputTipoMapaPnoa.checked) me.map_.customMapPnoa.setMapa(me.map_);
	            if (me.inputTipoMapaSigPac.checked) me.map_.customMapSigPac.setMapa(me.map_);
	            if (!me.statisticEnviado) {
	                EnviarEstadistica("BotonCatastroPulsado");
	                me.statisticEnviado = true;
	            }
	        }
	        else {
	            me.containerOpcionesCatastro.style.display = "none";
	            me.map_.customMapPnoa.setMapa(null);
	            me.map_.customMapSigPac.setMapa(null);
	        }

	    });	
	
	    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(this.containerOpcionesCatastro);
	    //me.Capa00.checked = true;
	    //me.fechaActual.checked = true;
	    return this;
    };

    ControlOpcionesCatastro.prototype.ActivarTipoDeMapaEspecifico = function(inputTipoDeMapa){
	    if(!inputTipoDeMapa.checked){
		    inputTipoDeMapa.checked = true;
		    google.maps.event.trigger(inputTipoDeMapa, "click");
	    }
    };


    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function mapTypeChanged(map){
        if(!map || !map.getBounds())return;
	    var mapTypeActualAux = map.getMapTypeId();
	    if(mapTypeActualAux!=map.mapTypeActual){
		    map.mapTypeAnterior = map.mapTypeActual;
		    map.mapTypeActual = mapTypeActualAux;
	    }
	    map.mapBounds = map.getBounds(); 
	    map.mapSouthWest = map.mapBounds.getSouthWest();
	    map.mapNorthEast = map.mapBounds.getNorthEast();
	    map.mapCenter = map.getCenter();
	    map.mapZoom = map.getZoom();
    }




    function CallBackVistaPajaroFail(){
	    GAlert(mvar.vistaPajaroNoDisponible, function(){
		    map.mapTypeActual = map.mapTypeAnterior;
		    map.setMapTypeId(map.mapTypeAnterior);
		
	    });
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////

    var mostrandoTipoDeBusqueda= false;
    function show_dropdownTipoDeBusqueda(){
	    if(mostrandoTipoDeBusqueda ){
		    $("tipoDeBusquedaListado").style.visibility = "hidden";
	    }
	    else{
		    $("tipoDeBusquedaListado").style.visibility = "visible";
		    setTimeout('mostrandoTipoDeBusqueda=true;',20);
	    }
    }
    function OcultarTipoDeBusqueda(){
	    document.getElementById("tipoDeBusquedaListado").style.visibility="hidden";
	    mostrandoTipoDeBusqueda = false;
    }

    function SubmitBuscar(option){
	    if(option)opcionTipoDeBusqueda=option;
	    switch(opcionTipoDeBusqueda){
		    case 1:{showAddress({'address':$("TextDireccion").value});break;}
		    case 2:{_buscar(function(){buscarPorCalleYNumero();});break;}
		    case 3:{_buscar(function(){buscarPorPoligonoYParcela();});break;}
		    case 4:{_buscar(function(){BuscarPorReferencia(true);});break;}
		    case 5:{_buscar(function(){BuscarPorCoordenadasGeog();});break;}
		    case 6:{_buscar(function(){BuscarPorCoordenadasUTM();});break;}
		    case 7:{_ruta(function(){TrazarRutaDesdeHasta($("DivBusquedaRutaDesde").value,$("DivBusquedaRutaHasta").value);});break;}
	    }
    }

    function ClickInputBuscador(input, texto){
	    if(!esExplorer)return;
	    if(input.value==mvalue[input.id]){
		    input.value=''; 
		    input.style.color='#363636';
	    }
    }

    function showAddress(address) {
	    if(address.address==""){
		    GAlert(mvar.introduceDireccionBusqueda);
		    return;
	    }
	    BorrarMarkerEInfoWindow();
	    address.country = country;
	    address.language = language;
	    mostrarOutputCargando(mvar.buscando + "..");
	
	    geocoder.geocode(address,function(results, status) {
	        ocultarOutputCargando();
	        if (address.address) SetBrowserTitle(address.address);
	        else if (address.latLng) SetBrowserTitle(address.latLng.lat().toFixed(5) + "," + address.latLng.lng().toFixed(5));
		    if (!results) {GAlert(mvar.busquedaFallida);return;} 
		    if (status != google.maps.GeocoderStatus.OK) { 	GAlert(mvar.direccionNoEncontrada + ": " +  ((address.address)?address.address:address.latLng)); return; }
		    result = results[0];
		    var point = (address.latLng)? address.latLng : results[0].geometry.location;
		    var latitud = point.lat();
		    var longitud = point.lng();
		
		    if(!mostrandoEn3d){
			    map.fitBounds(result.geometry.viewport);

			    var resultFormatedAddres = result.formatted_address+"";
			
			    var texto = '<div style="">';
			    texto += '<div style="font-size:17px;font-weight:bold;margin-bottom:15px;">'+resultFormatedAddres+'</div>';
			    texto += '<span style="display:none;" id="opcionesResultadoBusquedaPinchar">'+ mvar.clickSobreElMapaParaMasInformacion +'<br/><a onClick=$("opcionesResultadoBusqueda").style.display="";$("opcionesResultadoBusquedaPinchar").style.display="none";map.setMapTypeId(google.maps.MapTypeId.HYBRID); href="javascript:void(0);" style="display:block;width:50px;color:#7777cc;font-size:11px;text-decoration:underline;margin-top:10px;">&laquo; '+mvar.atras+'</a></span>';
			    texto += '<div style="line-height:18pt;margin-bottom:10px;" id="opcionesResultadoBusqueda"><span style="display:'+(countryEspana?"":"none")+';"><a href="javascript:void(0);" style="text-decoration:underline;" onClick=javascript:MostrarElCatastro();$("opcionesResultadoBusqueda").style.display="none";$("opcionesResultadoBusquedaPinchar").style.display="block";>Mostrar el catastro</a>.<br/></span>';
			    texto += '<span style="display:'+(countryEspana?"":"none")+';"><a href="javascript:void(0);" style="text-decoration:underline;" onClick=javascript:google.maps.event.trigger($("panelLateralTopInmuebles"),"click");>Buscar inmuebles en venta</a>.<br/></span>';
			    texto += '<a style="text-decoration:underline;" href="javascript:void(0);" onClick="_ruta(function(){CrearControlRuta(\''+resultFormatedAddres+'\');});">'+mvar.comoLlegar+'</a>.<br/>';
			    texto += '<a style="text-decoration:underline;" onClick="_compartir(function(){MapLinkDirection(\''+ resultFormatedAddres +'\');});" href="javascript:void(0);">'+mvar.obtenerUnLink+'</a>.';
			    texto += '</div>';
			    texto += '</div>';
			
			    marker = new google.maps.Marker({map:map,position:point,draggable:true});
			    google.maps.event.addListener(marker, 'click',function(){BorrarMarkerEInfoWindow();});
			    infowindow = new google.maps.InfoWindow({
				    content:texto,
				    'maxWidth': 250
			    });
			
			    infowindow.open(map, marker);
			    google.maps.event.addListener(infowindow, "closeclick", function(){infowindow=null;});
		    }
		    else{_mostrar3d(function(){MostrarDireccion(point, address);});}
	    });
    }

    function MostrarElCatastro(){
        if(gruposDeMapas){
            gruposDeMapas.functionAfterOpenGrup = function(){MostrarElCatastroAux()};
            if(!gruposDeMapas.AbrirPanelCatastro()) 
	            MostrarElCatastroAux();
        }
        else{
            map.setMapTypeId(nombreCapaCatastro);
        }
    }
    function MostrarElCatastroAux(){
        gruposDeMapas.functionAfterOpenGrup = null;
        gruposDeMapas.layerLiCatastro.layerInput.checked = true;
        gruposDeMapas.ClickEnLayerLi(gruposDeMapas.layerLiCatastro);
    
    }

    // GRUPOS DE MAPAS////////////////////////////////////////////////////////////////////////////////////////	
    //////////////////////////////////////////////////////////////////////////////////////////////////////
    function GruposDeMapas(map) {
	    this.map_ = map;
	    var me = this;
	    this.mostrandoControl = false;
	    this.gruposdemapas_box = $new("div");
	    this.gruposdemapas_box.id = "gruposdemapas_box";
	
	    this.divgruposdemapas_top = $new("div");
	    this.divgruposdemapas_top.id = "divgruposdemapas_top";
	    this.gruposdemapas_box.appendChild(this.divgruposdemapas_top);
	
	    this.gruposDeMapasColores = ["#B02B2C", "#6BBA70", "#C79810", "#3F4C6B", "#D15600", "#73880A", "#D01F3C",  "#356AA0"];
	    this.gruposDeMapasColorSeleccionado = 0;	
	
	    me.idGrupoLibreria = "goolzoom_library";
	    me.idGrupoOrtofotos = "goolzoom_orthophoto";
	    for(var i=arrayGruposDeMapas.length-1;i>=0;i--){
	        CrearGrupoDeMapas(arrayGruposDeMapas[i]);
	    }

	    this.divgruposdemapas_bottom = $new("div");
	    this.divgruposdemapas_bottom.id = "divgruposdemapas_bottom";
	    this.isLoadingGroup = false;
	
	    function CrearGrupoDeMapas(grupoDeMapas){
	        var idGrupo = grupoDeMapas[0];
	        var titleText = grupoDeMapas[1];
	    
	        var divGrupoDeMapas = $new("div");
	        divGrupoDeMapas.className = "divGrupoDeMapas";
	        divGrupoDeMapas.titleText = titleText;
	        divGrupoDeMapas.divGrupoDeMapasTitle = $new("div");
	        divGrupoDeMapas.divGrupoDeMapasTitle.innerHTML = divGrupoDeMapas.titleText;
	        divGrupoDeMapas.divGrupoDeMapasTitle.className = "divGrupoDeMapasTitle";
	    
            divGrupoDeMapas.divMiniArrow = $new("div");
	        divGrupoDeMapas.divMiniArrow.style.width = divGrupoDeMapas.divMiniArrow.style.height = "6px";
	        divGrupoDeMapas.divMiniArrow.style.top = "18px";
	        divGrupoDeMapas.divMiniArrow.style.left = "10px";
	        divGrupoDeMapas.divMiniArrow.style.position = "absolute";
	        divGrupoDeMapas.divMiniArrow.style.cursor = "pointer";
	        divGrupoDeMapas.divMiniArrow.className = "divGrupoDeMapasMiniArrowClose";
	        divGrupoDeMapas.divMiniArrow.divGrupoDeMapasTitle = divGrupoDeMapas.divGrupoDeMapasTitle;
	        google.maps.event.addDomListener(divGrupoDeMapas.divMiniArrow, "click", function () {
	            google.maps.event.trigger(this.divGrupoDeMapasTitle, "click");
	        });


	        if (arrayGruposDeMapas.length != 1) {
	            divGrupoDeMapas.borderColor = me.gruposDeMapasColores[me.gruposDeMapasColorSeleccionado % me.gruposDeMapasColores.length];
	            divGrupoDeMapas.style.borderLeft = "4px solid " + divGrupoDeMapas.borderColor;
	            me.gruposDeMapasColorSeleccionado += 1;
	            divGrupoDeMapas.appendChild(divGrupoDeMapas.divGrupoDeMapasTitle);
	            divGrupoDeMapas.appendChild(divGrupoDeMapas.divMiniArrow);
	        }
	        else {
	            divGrupoDeMapas.style.marginTop = "-15px";
	        }
	    
	        divGrupoDeMapas.mapasNoEncontrados = $new("div");
	        divGrupoDeMapas.mapasNoEncontrados.className = "mapasNoEncontrados";
	        divGrupoDeMapas.mapasNoEncontrados.innerHTML = mvar.mapasNoEncontrados;
	        divGrupoDeMapas.mapasNoEncontrados.style.display = "none";	    
	    
	        divGrupoDeMapas.blockListadoGrupo = $new("ul");
	        divGrupoDeMapas.ulListadoGrupo = divGrupoDeMapas.blockListadoGrupo;
	        divGrupoDeMapas.idGrupo = divGrupoDeMapas.ulListadoGrupo.idGrupo = idGrupo;
	        divGrupoDeMapas.blockListadoGrupo.style.borderColor = divGrupoDeMapas.borderColor;
	        divGrupoDeMapas.appendChild(divGrupoDeMapas.mapasNoEncontrados);
	    
	        divGrupoDeMapas.isOpened = false;
	        divGrupoDeMapas.isLoaded = false;	    
	        divGrupoDeMapas.idGrupo = idGrupo;
	  
	        divGrupoDeMapas.divGrupoDeMapasTitle.listenerClick = google.maps.event.addDomListener(divGrupoDeMapas.divGrupoDeMapasTitle, "click", function(evento){
	           if(!evento || evento.target == this)me.OpenCloseGrupoDeMapas(divGrupoDeMapas);
            });
	    
	        me.gruposdemapas_box.appendChild(divGrupoDeMapas);
	        if(idGrupo== me.idGrupoLibreria)me.grupoDeMapasLibreria = divGrupoDeMapas;
	    
	    
	        return divGrupoDeMapas;
	    }
	    this.ReajustarTamano();
	
	    if(arrayGruposDeMapas.length==1){
	        for(var i=0;i<this.gruposdemapas_box.childNodes.length;i++){
	            if(this.gruposdemapas_box.childNodes[i].idGrupo && this.gruposdemapas_box.childNodes[i].idGrupo==this.idGrupoLibreria){
	                google.maps.event.trigger(this.gruposdemapas_box.childNodes[i].divGrupoDeMapasTitle, 'click');     
	                break;
                }
	        }
	    }
    };

    GruposDeMapas.prototype.ReajustarTamano = function(){
        if(esExplorer)CargarAnchoYAltoDeMapa(map);
        this.gruposdemapas_box.style.height = parseInt(getStyle(panelLateralContent, "height")) +"px";
    };
	
    GruposDeMapas.prototype.MostrarControl = function(){
        if(this.mostrandoControl)return;
        var me = this;
        AbrirPanelLateral(this.gruposdemapas_box, me.OcultarControl, true);
        this.listenerResize = google.maps.event.addDomListener(window, "resize", function(evento){me.ReajustarTamano();});
        this.listenerClick = new google.maps.event.addListener(me.map_, "click", function(point) {if(point.latLng){AbrirInfoWindow(point.latLng);}});
        me.ReajustarTamano();
        this.mostrandoControl = true;
    };

    GruposDeMapas.prototype.OcultarControl = function(){
        google.maps.event.removeListener( gruposDeMapas.listenerResize);
        google.maps.event.removeListener( gruposDeMapas.listenerClick);
        gruposDeMapas.mostrandoControl = false;
    };

    GruposDeMapas.prototype.EstaAbiertaLaLibreria = function(){
        return this.grupoDeMapasLibreria.isOpened;
    };




    GruposDeMapas.prototype.OpenCloseGrupoDeMapas = function(div){
        var me = this;
        if(this.isLoadingGroup)return;
        this.grupoTemporal = div;
        if(div.isOpened){
            if(div.idGrupo == this.idGrupoLibreria){
                var gruposDeMapasChilds = this.gruposdemapas_box.childNodes;
                for(var i=1;i<gruposDeMapasChilds.length-1;i++){
                    gruposDeMapasChilds[i].style.display = "block";
                }
            }
            google.maps.event.removeListener( div.listenerIdle);
            div.removeChild(div.blockListadoGrupo);
        
            div.isOpened = false;
            div.divGrupoDeMapasTitle.className = "divGrupoDeMapasTitle";
            div.divMiniArrow.className = "divGrupoDeMapasMiniArrowClose";
            div.divGrupoDeMapasTitle.style.borderColor = "#fff";
            div.mapasNoEncontrados.style.display = "none";
            if(div.selectOrtoYears)div.selectOrtoYears.style.display = "none";
            return;
        }
   
        if(div.isLoaded){
            div.listenerIdle = google.maps.event.addListener(map, "idle", function() {me.MostrarLayersQueIntersectenConMapa(div);});
            me.MostrarLayersQueIntersectenConMapa(div);
        
            div.blockListadoGrupo.style.display = "block";
            if(div.selectOrtoYears)div.selectOrtoYears.style.display = "";
            div.appendChild(div.blockListadoGrupo);
        
            div.divGrupoDeMapasTitle.className = "divGrupoDeMapasTitleSelected";
            div.divMiniArrow.className = "divGrupoDeMapasMiniArrowOpen";
            div.divGrupoDeMapasTitle.style.borderColor = div.borderColor;        
            div.isOpened = true;
        
            if(this.EstaAbiertaLaLibreria()){
                var gruposDeMapasChilds = this.gruposdemapas_box.childNodes;
                for(var i=1;i<gruposDeMapasChilds.length-1;i++){
                    var child = gruposDeMapasChilds[i];
                    if(child.idGrupo!=this.idGrupoLibreria){
                        child.style.display = "none";
                    }
                }
                if(this.mapasAMostrar)this.MostrarMapasPendientes();
            }
            if(this.functionAfterOpenGrup)return this.functionAfterOpenGrup();
        }
        else{
            div.divGrupoDeMapasTitle.innerHTML = div.divGrupoDeMapasTitle.innerHTML +"  ..";
        
            var url = rutaPrincipal + "recursos/mapas/";
            if(div == this.grupoDeMapasLibreria)
                url +=  "ObtenerMapas.aspx?";
	        else url += "ObtenerGruposDeMapas.aspx?&group="+ div.idGrupo;
	        url += "&country="+ country + "&callback=gruposDeMapas.CallBackLoad";
	        this.isLoadingGroup = true;
            cs(url);
        }
    };

    GruposDeMapas.prototype.CallBackLoad = function(json){
        var me = this;
        me.isLoadingGroup = false;
        me.grupoTemporal.divGrupoDeMapasTitle.innerHTML =  me.grupoTemporal.titleText;
        if(me.grupoTemporal == this.grupoDeMapasLibreria) 
            this.CallBackLoadLibreriaDeMapas(json);
        else this.CallBackLoadGrupoDeMapas(json); 
    
        if(me.grupoTemporal.idGrupo == this.idGrupoOrtofotos) this.CrearOpcionesEspecialesOrtofotos(me.grupoTemporal);
    
        me.grupoTemporal.isLoaded = true;
        this.OpenCloseGrupoDeMapas(me.grupoTemporal);
    
    
    };

    GruposDeMapas.prototype.CallBackLoadGrupoDeMapas = function(json){
        var me = this;
        var listadoGruposDeMapas = json;
        var ulListadoGrupo = me.grupoTemporal.ulListadoGrupo;
        for(var i=0;i<listadoGruposDeMapas.length;i++){
            var mapa = listadoGruposDeMapas[i];
            var layerLi = this.CreateMapa(mapa, mapa.l);
            ulListadoGrupo.appendChild(layerLi);
            if(countryEspana && mapa.idMapa ==idMapaCatastro && !this.opcionesCreadasCatastro){
            
                this.CrearOpcionesEspecialesCatastroEspana(ulListadoGrupo, layerLi);
                this.opcionesCreadasCatastro = true;
            }
        }
    };

    GruposDeMapas.prototype.CrearOpcionesEspecialesOrtofotos = function(grupo){
        var me = this;
        var arrayYears = new Array();
        var arrayYearsAux = new Array();
        var regexYear1 = /(19\d\d|20\d\d)/;
        var regexYear2 = /(\d\d-\d\d)/;
        var valueSinFecha = "XXXX";
    
        var layers = grupo.ulListadoGrupo.childNodes;
        for(var i=0;i<layers.length;i++){
            var layerLi = layers[i];
            var title = layerLi.t;
            var match = valueSinFecha;
        
            var matches = title.match(regexYear1);
            if(matches && matches.length>0) match = matches[0];
            else{
                matches = title.match(regexYear2);
                if(matches && matches.length>0){
                    match = matches[0].split("-")[0];
                    if(IsNumeric(match)){
                        var matchAux = parseInt(match);
                        var append = matchAux>12?"19":"20";
                        match = append+match;
                    }
                }
            }
        
            layerLi.year = match;
            if(!arrayYears[match]){
                arrayYears[match]=match;
                arrayYearsAux.push(match);
                
            }
        }
    
        if(arrayYearsAux.length>1){
            arrayYearsAux.sort(function(a,b){return b-a;});
            grupo.selectOrtoYears = $new('select',{'id':'selectOrtoYears'});
            grupo.selectOrtoYears.style.margin = "0px 10px 0px 20px";
            grupo.selectOrtoYears.style.fontSize = "14px";
        
            var optionMostrarTodas = $new('option');
            optionMostrarTodas.text = "Todas";
            grupo.selectOrtoYears.options.add(optionMostrarTodas);
        
            for(i=0;i<arrayYearsAux.length;i++){
                var year = arrayYearsAux[i];
                var option = $new('option');
                option.text = option.value = year;
                if(year==valueSinFecha)option.text = "Sin fecha";
                grupo.selectOrtoYears.options.add(option);
            }
            google.maps.event.addDomListener(grupo.selectOrtoYears, 'change', function(){
                me.MostrarLayersQueIntersectenConMapa(grupo);
            });
        
            grupo.divGrupoDeMapasTitle.appendChild(grupo.selectOrtoYears);
        
        
        }
    
    
    };

    GruposDeMapas.prototype.CrearOpcionesEspecialesCatastroEspana = function(ulListadoGrupo, layerLi){
        var me = this;
        me.CargarMapaEnLayerLi(layerLi);
        layerLi.mapa.setMapa(null);
        layerLi.mapa.isOpaque = true;
	    layerLi.mapa.UpdateTransparent();
	    this.layerLiCatastro = layerLi;
	
	
	    google.maps.event.addDomListener(layerLi, 'click', function(){
	        if(!this.layerInput.checked){
	            me.inputTipoMapaPnoa2.checked = false;
		        me.inputTipoMapaSigPac2.checked = false;
		        me.inputTipoMapaSatelite2.checked = false;
		        layerLi.mapa.isOpaque = true;
		        layerLi.mapa.UpdateTransparent();
		        me.map_.overlayMapTypes.clear();
	        }
	    });
	
        var ulGrupoMapaOpcionesCatastro2 = $new("ul",{'id':'ulGrupoMapaOpcionesCatastro2'});
        ulGrupoMapaOpcionesCatastro2.bounds = layerLi.bounds;
	
	    function CheckLayer(layerLi, input){
	        layerLi.mapa.isOpaque = !input.checked;
		    layerLi.mapa.UpdateTransparent();
		    if(!layerLi.checked && input.checked){
                layerLi.layerInput.checked = true;
                layerLi.mapa.setMapa(me.map_);
		        google.maps.event.trigger(layerLi, 'click'); 
            }
		    else layerLi.mapa.refresh(true);
	    }
	
	    var liTipoMapaSatelite = $new("li");
	    var liTipoMapaPnoa = $new("li");
	    var liTipoMapaSigPac = $new("li");	
        liTipoMapaSigPac.style.paddingBottom="15px";

	    this.inputTipoMapaSatelite2 = $new("input",{'id':'inputTipoMapaSatelite2', 'name':'inputTipoMapaSatelite2','type':'checkbox'});
	    this.inputTipoMapaPnoa2 = $new("input",{'id':'inputTipoMapaPnoa2', 'name':'inputTipoMapaPnoa2','type':'checkbox'});
	    this.inputTipoMapaSigPac2 = $new("input",{'id':'inputTipoMapaSigPac2', 'name':'inputTipoMapaSigPac2','type':'checkbox'});
	
	    google.maps.event.addDomListener(me.inputTipoMapaSatelite2, 'click', function(){
	        me.inputTipoMapaPnoa2.checked = false;
		    me.inputTipoMapaSigPac2.checked = false;
		    me.map_.overlayMapTypes.clear();
		    CheckLayer(layerLi, this);
		    if(this.checked)map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
	
	    });
	    var labelTipoMapaSatelite = $new("label");
	    labelTipoMapaSatelite.htmlFor = "inputTipoMapaSatelite2";
	    labelTipoMapaSatelite.innerHTML = "Mostrar transparente";
	    liTipoMapaSatelite.appendChild(me.inputTipoMapaSatelite2);
	    liTipoMapaSatelite.appendChild(labelTipoMapaSatelite);
	
	    google.maps.event.addDomListener(me.inputTipoMapaPnoa2, 'click', function(){
		    me.inputTipoMapaSatelite2.checked = false;
		    me.inputTipoMapaSigPac2.checked = false;
		    me.map_.overlayMapTypes.clear();
		    if(this.checked)me.map_.overlayMapTypes.push(me.map_.imageMapTypePnoa);
		    CheckLayer(layerLi, this);
	    });
	
	    var labelTipoMapaPnoa = $new("label");
	    labelTipoMapaPnoa.htmlFor = "inputTipoMapaPnoa2";
	    labelTipoMapaPnoa.innerHTML = "Superponer a Pnoa";
	    liTipoMapaPnoa.appendChild(me.inputTipoMapaPnoa2);
	    liTipoMapaPnoa.appendChild(labelTipoMapaPnoa);
	
	
	    google.maps.event.addDomListener(me.inputTipoMapaSigPac2, 'click', function(){
	        me.inputTipoMapaSatelite2.checked = false;
		    me.inputTipoMapaPnoa2.checked = false;
		    me.map_.overlayMapTypes.clear();
		    if(this.checked)me.map_.overlayMapTypes.push(me.map_.imageMapTypeSigPac);
		    CheckLayer(layerLi, this);
	    });
	
	    var labelTipoMapaSigPac = $new("label");
	    labelTipoMapaSigPac.htmlFor = "inputTipoMapaSigPac2";
	    labelTipoMapaSigPac.innerHTML = "Superponer a Sigpac";
	    liTipoMapaSigPac.appendChild(me.inputTipoMapaSigPac2);
	    liTipoMapaSigPac.appendChild(labelTipoMapaSigPac);	

        var liFechasCatastro = $new("li");	
	    var divIconCatastroHistorico = $new("div");
        divIconCatastroHistorico.style.top = "7px";
        divIconCatastroHistorico.style.left = "18px";
        divIconCatastroHistorico.style.position = "absolute";
        divIconCatastroHistorico.className = "iconoHistoric";
        liFechasCatastro.appendChild(divIconCatastroHistorico);
	
	    var aFechasCatastro =  $new("a",{'href':'javascript:void(0)'});
	    aFechasCatastro.innerHTML = "Catastro histórico";
	    aFechasCatastro.style.textDecoration = "underline";
	    aFechasCatastro.style.marginLeft = "25px";
	    aFechasCatastro.isCreated = false;
	    aFechasCatastro.showing = false;
	    liFechasCatastro.appendChild(aFechasCatastro);
	
	    var liCalendarioCatastro = $new("li");	
	    liCalendarioCatastro.style.display = "none";
	    liCalendarioCatastro.style.height = "245px";
	    liCalendarioCatastro.style.marginLeft = "6px";
	    var inputFecha = $new("input",{'type':'text','class':'w18em','value':'','maxlength':'10','id':'selectFecha'});
        //inputFecha.style.fontSize = "12px";
        inputFecha.style.display = "none";
        inputFecha.style.zIndex = -1;
        liCalendarioCatastro.appendChild(inputFecha); 
    
	
	    var statisticCatastroHistorico = false;
	    google.maps.event.addDomListener(aFechasCatastro, 'click', function(){
	        var me = this;
	        var fechaCartografia = "";
	    
	 
	        if(this.showing){
	            liCalendarioCatastro.style.display = "none";
	            aFechasCatastro.innerHTML = "Catastro histórico";
	            if(me.auxBaseUrl) layerLi.mapa.myBaseURL = me.auxBaseUrl;
	            if(layerLi.layerInput.checked)layerLi.mapa.refresh(true);
	        }
	        else{
	            liCalendarioCatastro.style.display = "";
	            aFechasCatastro.innerHTML = "Volver al catastro actual";
	        
	            if(!this.isCreated){
	                me.auxBaseUrl =  layerLi.mapa.myBaseURL;
	               _calendar(function(){
	                    var date = new Date();
	                    var month = date.getMonth();
	                    var day = date.getDate();
	                    if(month<10)month = "0"+month;
	                    if(day<10)day = "0"+day;
	                    var rangeHight = ""+date.getFullYear() + month + day;
	                    datePickerController.createDatePicker({
                            formElements:{"selectFecha":"d-sl-m-sl-Y"},
                            rangeLow:"20020101",
                            rangeHigh:rangeHight,
                            staticPos:true,
                            finalOpacity:100,
                            callbackFunctions:{"dateset":[function(argObj){
                                    fechaCartografia = argObj.yyyy + "/"+ argObj.mm + "/"+ argObj.dd;
                                
                                     FuncionParaUsuarioRegistrado("Catastro histórico solo para usuarios registrados",function(){
                                        layerLi.mapa.myBaseURL = me.auxBaseUrl + '&TIME=' + fechaCartografia;
                                        if(!layerLi.checked){
                                            layerLi.layerInput.checked = true;
                                            google.maps.event.trigger(layerLi, 'click'); 
                                        }
                                        else layerLi.mapa.refresh(true);
                                     } , "CatastroHistorico", "MostrarVentajasUsuarios5();");
                                
                                
                                    }
                                ]}
                            });
                    
                        me.isCreated = true;
                    });
	            }
	        
            }

            this.showing = !this.showing;
         
         
          
	    });

	    var liGenerateDxf = $new("li");	
	
	    var divIconDownloadDxf = $new("div");
        divIconDownloadDxf.style.top = "7px";
        divIconDownloadDxf.style.left = "18px";
        divIconDownloadDxf.style.position = "absolute";
        divIconDownloadDxf.className = "iconoDownloadArrow";
        liGenerateDxf.appendChild(divIconDownloadDxf);
	
        var aGenerateDxf =  $new("a",{'href':'javascript:void(0)'});
	    aGenerateDxf.innerHTML = "Descargar DXF/DWG";
	    aGenerateDxf.style.marginLeft = "25px";
	
	    aGenerateDxf.style.textDecoration = "underline";
	    liGenerateDxf.appendChild(aGenerateDxf);
	    google.maps.event.addDomListener(aGenerateDxf, 'click', function(){
	        FuncionParaUsuarioRegistrado("Descarga de archivos DXF y DWG de catastro solo para usuarios registrados",DescargarDxfDwgAux , "DescargarDxfDwg", "MostrarVentajasUsuarios4()");
        });
	
	    ulGrupoMapaOpcionesCatastro2.appendChild(liTipoMapaSatelite);
	    ulGrupoMapaOpcionesCatastro2.appendChild(liTipoMapaPnoa);
	    ulGrupoMapaOpcionesCatastro2.appendChild(liTipoMapaSigPac);
	
	    //ulGrupoMapaOpcionesCatastro2.appendChild(liBuscadorDeCatastro);
	    ulGrupoMapaOpcionesCatastro2.appendChild(liFechasCatastro);
	    ulGrupoMapaOpcionesCatastro2.appendChild(liCalendarioCatastro);  
	    ulGrupoMapaOpcionesCatastro2.appendChild(liGenerateDxf); 
	
	    ulListadoGrupo.appendChild(ulGrupoMapaOpcionesCatastro2 );
    };
    function DescargarDxfDwgAux(){
        _recursos(function(){DescargarDxfDwg();})
    }

    GruposDeMapas.prototype.AbrirPanelCatastro = function(){
        var me = this;
        var idGrupoCatastro = "goolzoom_cadastre";
        if(!this.grupoTemporal || this.grupoTemporal.idGrupo!= idGrupoCatastro){
            for(var i=0;i<this.gruposdemapas_box.childNodes.length;i++){
                var child = this.gruposdemapas_box.childNodes[i];
                if(child.idGrupo== idGrupoCatastro){
                    google.maps.event.trigger(child.divGrupoDeMapasTitle, 'click');     
                    return true;
                }                
            }
            return true;
        }
        return false;
 
     };


    GruposDeMapas.prototype.OpenGroupAndLayer = function(idGroup, idLayer){
        for(var i=0;i<this.gruposdemapas_box.childNodes.length;i++){   
            var child = this.gruposdemapas_box.childNodes[i];
            if(child.idGrupo && child.idGrupo.toLowerCase() == idGroup){
                if(this.grupoTemporal==null || this.grupoTemporal.idGrupo.toLowerCase()!=idGroup){
                    this.functionAfterOpenGrup = function(){this.OpenGroupAndLayerAux(idGroup, idLayer);};
                    google.maps.event.trigger(child.divGrupoDeMapasTitle, 'click');     
                }
                else this.OpenGroupAndLayerAux(idGroup, idLayer);
                return;
            }
        }
    };

    GruposDeMapas.prototype.OpenGroupAndLayerAux = function(idGroup, idLayer){
        this.functionAfterOpenGrup = null; 
    
        var childNodes = this.grupoTemporal.ulListadoGrupo.childNodes;
        for(var i=0;i<childNodes.length;i++){   
            var child = childNodes[i];
            if(child.layer && child.layer.i==idLayer){
                child.layerInput.checked = true;
                google.maps.event.trigger(child, 'click');     
                return;
            }
        }
    };

    GruposDeMapas.prototype.CallBackLoadLibreriaDeMapas = function (json) {
        var me = this;

        this.inputSearchMasMapas = $new("input");
        this.inputSearchMasMapas.className = "textbox";
        this.inputSearchMasMapas.type = "text";
        this.inputSearchMasMapas.style.width = "250px";
        this.inputSearchMasMapas.placeholder = mvar.buscaMapas;
        this.inputSearchMasMapas.value = this.inputSearchMasMapas.placeholder;
        this.grupoTemporal.filterText = this.inputSearchMasMapas.value;
        this.inputSearchMasMapas.style.color = "#979797";
        this.inputSearchMasMapas.style.margin = "0px 10px";
        this.inputSearchMasMapas.me = me;
        google.maps.event.addDomListener(this.inputSearchMasMapas, "keyup", function () {
            var texto = trim(this.value).toLowerCase();
            me.grupoDeMapasLibreria.filterText = texto;
            var timeout = texto == '' ? 0 : 400;
            setTimeout("gruposDeMapas.MostrarLayersQueIntersectenConMapa()", timeout);
        });
        google.maps.event.addDomListener(this.inputSearchMasMapas, "click", function () {
            if (this.value == mvar.buscaMapas) {
                this.value = "";
                this.style.color = "#363636";
            }
        });
        /*
        this.mas_boxlink = $new("a");
        this.mas_boxlink.href = "javascript:void(0)";
        this.mas_boxlink.innerHTML = mvar.ocultarTodo;
        this.mas_boxlink.className = "mas_boxlink";
        google.maps.event.addDomListener(this.mas_boxlink, "click", function () { me.OcultarTodosLosMapas(); });*/

        this.masmapas_content = $new("div");
        this.masmapas_content.className = "masmapas_content";
        this.masmapas_contentMenu = $new("div");
        this.masmapas_contentMenu.className = "masmapas_contentMenu";
        //this.masmapas_contentMenu.style.borderBottom = "1px solid #e2e2e2";
        this.grupoTemporal.ulListadoGrupo = $new("div");
        this.grupoTemporal.ulListadoGrupo.className = "masmapas_contentMapList";

        this.masmapas_contentMenu.appendChild(this.inputSearchMasMapas);
        //this.masmapas_contentMenu.appendChild(this.mas_boxlink );
        this.grupoTemporal.blockListadoGrupo.appendChild(this.masmapas_contentMenu);
        this.grupoTemporal.blockListadoGrupo.appendChild(this.grupoTemporal.ulListadoGrupo);
        this.grupoTemporal.blockListadoGrupo.className = "divGrupoDeMapasLibrary";
        this.masmapas_contentMenu.style.padding = "15px 5px";

        this.libreriaListadoDeMapas = json;
        var numeroDeMapas = this.libreriaListadoDeMapas.length;
        if (this.libreriaListadoDeMapas == "" || numeroDeMapas == 0) {
            return;
        }

        for (var i = 0; i < numeroDeMapas; i++) {
            var mapa = this.libreriaListadoDeMapas[i];

            var divMapa = $new("div");
            divMapa.className = "divMapa";
            divMapa.divTituloMapa = $new("div");
            divMapa.divTituloMapa.className = "divTituloMapa";
            var imgTree = $new("img");
            imgTree.src = directorioImagenes + "treeplus.png";
            imgTree.className = "imgTree";
            divMapa.nombre = mapa.n;
            divMapa.nombreLower = divMapa.nombre.toLowerCase();
            divMapa.divTituloMapa.innerHTML = divMapa.nombre;
            divMapa.imgTree = imgTree;
            divMapa.url = mapa.u;
            divMapa.idMapa = mapa.i;
            divMapa.id = divMapa.idMapa;
            divMapa.v = mapa.v;
            divMapa.p = mapa.p;
            divMapa.j = mapa.j;

            divMapa.formato = [];
            if (mapa.p) divMapa.formato.push("image/png");
            if (mapa.j) divMapa.formato.push("image/jpeg");

            divMapa.nombreGrupo = mapa.groupt;
            divMapa.tiled = false;
            divMapa.filtered = true;

            if (mapa.mny != "0" && mapa.mnx != "0" && mapa.mxy != "0" && mapa.mxx != "0") {
                divMapa.sw = new google.maps.LatLng(parseFloat(mapa.mny), parseFloat(mapa.mnx));
                divMapa.ne = new google.maps.LatLng(parseFloat(mapa.mxy), parseFloat(mapa.mxx));
                divMapa.bounds = new google.maps.LatLngBounds(divMapa.sw, divMapa.ne);
            }

            divMapa.ar = mapa.ar;
            divMapa.appendChild(imgTree);
            divMapa.appendChild(divMapa.divTituloMapa);

            this.grupoTemporal.ulListadoGrupo.appendChild(divMapa);

            me.grupoTemporal.ulListadoGrupo.imgTree = imgTree;
            me.grupoTemporal.ulListadoGrupo.divTituloMapa = divMapa.divTituloMapa;
            //divMapa.divTituloMapa = divTituloMapa;

            google.maps.event.addDomListener(divMapa.divTituloMapa, "click", function () { me.layersAMostrar = ''; me.ClickEnMapaDeLibreria(this.parentNode, false); });
            google.maps.event.addDomListener(me.grupoTemporal.ulListadoGrupo.imgTree, "click", function () { me.layersAMostrar = ''; me.ClickEnMapaDeLibreria(this.parentNode, false); });

        }

        this.grupoTemporal.divListadoLayersEnLibreria = $new("div", { 'id': 'divListadoLayersEnLibreria' });
        this.grupoTemporal.ulListadoLayersEnLibreria = $new("ul", { 'id': 'ulListadoLayersEnLibreria', 'style': 'display:block;' });
        this.grupoTemporal.divListadoLayersEnLibreria.appendChild(this.grupoTemporal.ulListadoLayersEnLibreria);
        this.grupoTemporal.blockListadoGrupo.appendChild(this.grupoTemporal.divListadoLayersEnLibreria);
    };

    GruposDeMapas.prototype.CargarMapaEnLayerLi = function (layerLi) {
        layerLi.mapa = new CustomMapWms(layerLi.parent.idMapa, this.map_, layerLi.parent.title, layerLi.parent.tiled, 1, 21, layerLi.layer, layerLi.parent.formato, layerLi.parent.version, layerLi.parent.transparent, '1', layerLi.parent.url);
        layerLi.cargado = true;
    };

    GruposDeMapas.prototype.CreateMapa = function (parent, layer) {
        var me = this;

        parent.idMapa = parent.i;
        parent.url = parent.u;
        parent.title = parent.n;
        parent.tiled = false;
        parent.version = parent.v;
        parent.transparent = "FALSE";
        parent.formato = [];
        if (parent.p) parent.formato.push("image/png");
        if (parent.j) parent.formato.push("image/jpeg");

        var layerLi = $new("li");
        layerLi.layer = layer;
        layerLi.cargado = false;

        var layerInput = $new("input");
        layerInput.type = "checkbox";
        layerInput.value = layerLi.layer.n;
        layerInput.name = "mark";
        layerInput.layerLi = layerLi;
        layerInput.layerLi.showingBounding = false;
        layerLi.layerInput = layerInput;
        layerInput.parent = layerLi.parent = parent;


        layerLi.listenerClik = google.maps.event.addDomListener(layerLi, "click", function (evento) {
            if (evento) {
                if (evento.target == this) this.layerInput.checked = !this.layerInput.checked;
                else if (layerLi.legend && evento.target == layerLi.legend) return;
                else if (layerLi.options && evento.target == layerLi.options) return;
                else if (evento.target == me.ulGrupoMapaOpcionesCatastro2) return;
                else if (evento.target.id != '') return;
            }
            return me.ClickEnLayerLi(this);
        });

        if (layer.Maxx != '' && layer.Maxy != '' && layer.Minx != '' && layer.Miny != '') {
            var sw = new google.maps.LatLng(parseFloat(layer.Miny), parseFloat(layer.Minx));
            var ne = new google.maps.LatLng(parseFloat(layer.Maxy), parseFloat(layer.Maxx));
            layerLi.bounds = new google.maps.LatLngBounds(sw, ne);
        }


        var layerTitle = $new("div");
        layerTitle.className = "layerTitle";

        google.maps.event.addDomListener(layerTitle, "click", function () {
            this.previousSibling.checked = !this.previousSibling.checked;
            google.maps.event.trigger(layerInput, 'click');
        });

        var maxCaracters = 65;
        layerTitle.innerHTML = layer.t.length > maxCaracters ? layer.t.substring(0, maxCaracters) + " .." : layer.t;
        layerLi.title = (layer.a != '') ? layer.a : layer.t;
        layerLi.t = layer.t;

        layerLi.appendChild(layerInput);
        layerLi.appendChild(layerTitle);

        var layerSubmenu = $new("div");
        layerSubmenu.className = "layerSubmenu";

        layerLi.options = $new("div");
        layerLi.options.layerLi = layerLi;
        layerLi.options.className = "layerOptions";
        layerLi.options.title = "Opciones";
        layerLi.options.layer = layer;
        layerLi.options.layerSubmenu = layerSubmenu;
        google.maps.event.addDomListener(layerLi.options, "click", function () { me.ClickEnLayerOptions(this); });
        layerSubmenu.appendChild(layerLi.options);

        layerLi.appendChild(layerSubmenu);
        return layerLi;
    };

    GruposDeMapas.prototype.ClickEnLayerLi = function(layerLi){
        var me = this;
        if(layerLi.layerInput.checked) {
            if (layerLi.parentNode.selectedLayer && layerLi.parentNode.selectedLayer != layerLi)
            {
                layerLi.parentNode.selectedLayer.layerInput.checked = false;
                google.maps.event.trigger(layerLi.parentNode.selectedLayer, 'click'); 
            }
        
            layerLi.parentNode.selectedLayer = layerLi;        
            layerLi.layerInput.layerLi.style.fontWeight = "bolder";
            if (!layerLi.cargado)
            {
	           me.CargarMapaEnLayerLi(layerLi);
	        }
	        layerLi.mapa.setMapa(me.map_);
	        if(layerLi.bounds){
                if( layerLi.LatLonBoundingBox) layerLi.LatLonBoundingBox.setMap(me.map_);
                else{
                    layerLi.LatLonBoundingBox = new google.maps.Rectangle({
	                    bounds: layerLi.bounds,
	                    strokeColor: "#151B8D",
	                    strokeWeight: 3,
	                    strokeOpacity: 1,
	                    fillOpacity:0,
	                    clickable:false,
	                    map:me.map_
                    });
                }
                layerLi.showingBounding = true;
            }
    	
        }
        else {
        
            layerLi.layerInput.layerLi.style.fontWeight = "normal";
	        if(layerLi.showingBounding){
		        layerLi.LatLonBoundingBox.setMap(null);
		        layerLi.showingBounding = false;
	        }
	        if(layerLi.cargado)layerLi.mapa.setMapa(null);
	        layerLi.parentNode.selectedLayer = false;
	        return;
        }
    
        layerLi.mapa.refresh(true);
    };


    GruposDeMapas.prototype.ClickEnLayerOptions = function (options) {
        var me = this;
        if (this.optionsSubmenu && this.optionsSubmenu.isOpened) {
            this.CloseLayerOptions();
            if (this.targetOptionsSubmenu == options)
                return;
        }

        this.targetOptionsSubmenu = options;
        this.targetOptionsSubmenu.layerSubmenu.className = "layerSubmenuBlocked";
        this.targetOptionsSubmenu.layerLi.className = "divGrupoDeMapasLiBlocked";

        var layer = options.layer;
        this.optionsSubmenu = $new("ul");
        this.optionsSubmenu.className = "optionsSubmenu";
        this.optionsSubmenu.layer = layer;
        var offset = findTotalOffset(options);
        this.optionsSubmenu.style.top = (offset.top + 16 - this.gruposdemapas_box.scrollTop) + "px";
        this.optionsSubmenu.style.left = (offset.left + 4) + "px";
        document.body.appendChild(this.optionsSubmenu);


        if (SupportInputType("range") && me.targetOptionsSubmenu.layerLi.layerInput.checked) {
            var liSlider = $new("li");
            var inputSlider = $new("input", { 'type': 'range', 'min': '0', 'max': '100' });
            inputSlider.value = me.targetOptionsSubmenu.layerLi.mapa.opacity * 100;
            inputSlider.style.height = "10px";
            inputSlider.style.width = "130px";
            inputSlider.onchange = function (event) {
                me.targetOptionsSubmenu.layerLi.mapa.updateImageOpacity(this.value / 100);
            };
            liSlider.appendChild(inputSlider);
            this.optionsSubmenu.appendChild(liSlider);
        }

        if (me.targetOptionsSubmenu.layerLi.layerInput.checked) {
            var liDescargarImagenDeMapa = $new("li");
            liDescargarImagenDeMapa.innerHTML = "Descargar esta imagen";
            var mapa = me.targetOptionsSubmenu.layerLi.mapa;
            google.maps.event.addDomListenerOnce(liDescargarImagenDeMapa, "click", function (event) {
                if (countryEspana) {
                    FuncionParaUsuarioRegistrado("Descarga de imágenes sólo para usuarios registrados", function () {
                        window.open(mapa.img_.src);
                    }, "descargarImagenDeMapa", "MostrarVentajasUsuarios2()");
                }
                else window.open(mapa.img_.src);
            });
            if (languageEspanol) this.optionsSubmenu.appendChild(liDescargarImagenDeMapa);
        }

        var liInformacionDelMapa = $new("li");
        liInformacionDelMapa.innerHTML = "Información del mapa";
        var idLayer = me.optionsSubmenu.layer.i;
        google.maps.event.addDomListenerOnce(liInformacionDelMapa, "click", function (event) { _mapinfo(function () { mapInfo = new MapInfo(idLayer); }); });
        if (languageEspanol) this.optionsSubmenu.appendChild(liInformacionDelMapa);

        if (options.layer.l != '') {
            var liMostrarLeyenda = $new("li");
            liMostrarLeyenda.innerHTML = mvar.leyenda;
            google.maps.event.addDomListenerOnce(liMostrarLeyenda, "click", function (event) { CrearVentanaPoput(400, 350, mvar.leyenda, '<img src="' + options.layer.l + '" />'); });
            this.optionsSubmenu.appendChild(liMostrarLeyenda);
        }

        if (!this.EstaAbiertaLaLibreria()) {
            var liAbrirMapaEnLibreria = $new("li");
            liAbrirMapaEnLibreria.innerHTML = "Mostrar en la librería";
            google.maps.event.addDomListenerOnce(liAbrirMapaEnLibreria, "click", function (event) {
                if (me.targetOptionsSubmenu.layerLi.layerInput.checked) {
                    me.targetOptionsSubmenu.layerLi.layerInput.checked = false;
                    google.maps.event.trigger(me.targetOptionsSubmenu.layerLi, "click");
                }
                me.MostrarMapaEspecifico([me.targetOptionsSubmenu.layerLi.parent.url + "$" + me.targetOptionsSubmenu.layerLi.layer.n]);
            });
            this.optionsSubmenu.appendChild(liAbrirMapaEnLibreria);
        }



        this.optionsSubmenu.isOpened = false;
        this.optionsSubmenu.bodyListener = google.maps.event.addDomListener(document.body, "click", function (event) { me.CloseLayerOptions(event); });
        setTimeout("gruposDeMapas.optionsSubmenu.isOpened=true", 200);
    };


    GruposDeMapas.prototype.CloseLayerOptions = function(event){
        if(event && (event.target == this.optionsSubmenu || event.target.type=="range"))return;
        if(this.optionsSubmenu.isOpened){
            this.targetOptionsSubmenu.layerSubmenu.className = "layerSubmenu";
            this.targetOptionsSubmenu.layerLi.className = "";
            google.maps.event.removeListener(this.optionsSubmenu.bodyListener);
            document.body.removeChild(this.optionsSubmenu);
            this.optionsSubmenu = null;
        }
    
    };
    GruposDeMapas.prototype.ClickEnMapaDeLibreria = function (layer, forzarActivado) {
        var me = this;
        if (layer.layerUl) 
        {
            this.layerUlTemporal = layer.layerUl;
            if (this.layersAMostrar != '') this.MostrarOcultarMapaDeLibreria();
            else this.MostrarOcultarMapaDeLibreria(layer);
        }
        else if (!this.mapaTemporal || !this.mapaTemporal.cargando) 
        {
            this.spanTemporal = layer.childNodes[1];
            if (this.mapaTemporal) this.MostrarOcultarMapaDeLibreria();
            this.mapaTemporal = layer;
            this.mapaTemporal.divTituloMapa.innerHTML = this.mapaTemporal.divTituloMapa.innerHTML + " ..";
            this.mapaTemporal.className = "highlight";
            var aux = "";
            cs(rutaPrincipal + "recursos/mapas/GetLayers.aspx?&idMapa=" + this.mapaTemporal.idMapa + "&country=" + country + "&callback=gruposDeMapas.CallBackMostrarLayersDeLibreria");
        }
    };

    GruposDeMapas.prototype.CallBackMostrarLayersDeLibreria = function (layers) 
    {
        this.mapaTemporal.cargando = false;
        this.mapaTemporal.divTituloMapa.innerHTML = this.mapaTemporal.nombre;
        this.mapaTemporal.divTituloMapa.className = "divTituloMapaSelected";
        if (!layers || layers == '') {
            GAlert(mvar.fallowms);
            this.mapaTemporal.className = "divMapa";
            this.mapaTemporal.divTituloMapa.className = "divTituloMapa";
            this.mapaTemporal = "";
            return;
        }

        var layerUl = $new("ul");
        layerUl.style.display = "none";
        this.mapaTemporal.layerUl = layerUl;
        this.mapaTemporal.appendChild(layerUl);

        layerUl.v = this.mapaTemporal.v;
        layerUl.u = this.mapaTemporal.url;
        layerUl.p = this.mapaTemporal.p;
        layerUl.j = this.mapaTemporal.j;
        layerUl.tiled = this.mapaTemporal.tiled;
        layerUl.nombre = this.mapaTemporal.nombre;
        layerUl.formato = this.mapaTemporal.formato;
        layerUl.cargado = false;
        layerUl.idMapa = this.mapaTemporal.idMapa;
        layerUl.map_ = this.map_;

        for (var i = 0; i < layers.length; i++) {
            this.mapaTemporal.layerUl.appendChild(this.CreateMapa(layerUl, layers[i]));
        }
        this.MostrarOcultarMapaDeLibreria();
        if (this.layersAMostrar != '') this.MostrarLayersPendientes();
    };


    GruposDeMapas.prototype.MostrarOcultarMapaDeLibreria = function(mapa){
	    mapa = mapa || this.mapaTemporal;
	    if(mapa.layerUl && mapa.layerUl.style.display=="none"){
	        if(this.mapaTemporal){
			    this.mapaTemporal.layerUl.style.display ="none";
			    this.mapaTemporal.imgTree.src =directorioImagenes + "treeplus.png";
			    this.mapaTemporal.className ="divMapa";
			    this.mapaTemporal.divTituloMapa.className ="divTituloMapa";
			    this.mapaTemporal = "";
		    }
		    mapa.layerUl.style.display ="block";
		    mapa.className ="highlight";
		    mapa.divTituloMapa.className ="divTituloMapaSelected";
		    this.mapaTemporal = mapa;
		    mapa.imgTree.src = directorioImagenes + "treeminus.png";
		
		    //var aux = parseInt(getStyle(this.divgruposdemapas_top,"height"));
		    //this.gruposdemapas_box.scrollTop = (mapa.layerUl.offsetTop - 10 + aux);
	    }
	    else{
		    mapa.layerUl.style.display ="none";
		    mapa.className ="divMapa";
		    mapa.divTituloMapa.className ="divTituloMapa";
		    mapa.imgTree.src = directorioImagenes + "treeplus.png";
		    this.mapaTemporal = "";
		    this.layerUlTemporal = "";
		
	    }
    };


    GruposDeMapas.prototype.MostrarLayersQueIntersectenConMapa = function (div) 
    {
        var div = div || this.grupoTemporal;
        var childNodes = div.ulListadoGrupo.childNodes;
        var numeroDeChildNodes = childNodes.length;
        var mostrando = 0;
        var filtroOrfotofos = false;
        var filterText = (this.EstaAbiertaLaLibreria() && div.filterText != "" && div.filterText.length<30 && div.filterText.toLowerCase() != mvar.buscaMapas.toLowerCase()) ? div.filterText : "";

        if (filterText != '' && filterText.length>1) {
            if (this.filterText != filterText) {
                this.filterText = filterText;
                var url = rutaPrincipal + 'recursos/mapas/SearchMaps.aspx?&callback=gruposDeMapas.CallBackSearchMapas&country=' + country + '&query=' + escape(this.filterText);
                cs(url);
            }
            else {
                this.LayersEnLibreriaQueIntersectan();
            }

            for (var i = 0; i < numeroDeChildNodes; i++) {
                var child = childNodes[i];
                if (child.bounds && (child.bounds.intersects(this.map_.mapBounds)) && (child.nombreLower.indexOf(filterText) > -1)) {
                    child.style.display = "";
                    mostrando += 1;
                }
                else child.style.display = "none";
            }
            if (this.mapaTemporal) {
                var numeroDeLi = this.mapaTemporal.layerUl.childNodes.length;
                for (var i = 0; i < numeroDeLi; i++) {
                    var layerLi = this.mapaTemporal.layerUl.childNodes[i];
                    if (layerLi.bounds.intersects(this.map_.mapBounds)) {
                        layerLi.style.display = "";
                    }
                    else {
                        layerLi.style.display = "none";
                    }
                }
            }

      
        }
        else if (filterText==''){
            filtroOrfotofos = (div.idGrupo == this.idGrupoOrtofotos && div.selectOrtoYears && div.selectOrtoYears.selectedIndex != 0) ? div.selectOrtoYears.value : false;
            var arrayFechasOrtofotosAMostrar = new Array();

            for (var i = 0; i < numeroDeChildNodes; i++) {
                var layerLi = childNodes[i];

                if (layerLi.bounds && layerLi.bounds.intersects(this.map_.mapBounds)) {
                    if (layerLi.year) arrayFechasOrtofotosAMostrar[layerLi.year] = true;
                    if (filtroOrfotofos == false || layerLi.year == filtroOrfotofos) {
                        layerLi.style.display = "";
                        mostrando += 1;
                    }
                    else layerLi.style.display = "none";
                }
                else layerLi.style.display = "none";
            }
            if (div.selectOrtoYears) {
                for (var i = 1; i < div.selectOrtoYears.options.length; i++) {
                    div.selectOrtoYears.options[i].style.display = arrayFechasOrtofotosAMostrar[div.selectOrtoYears.options[i].value] == true ? "block" : "none";
                }
            }
            this.ClearLayersEnLibreria();
        }

        //div.mapasNoEncontrados.style.display = (mostrando == 0) ? "" : "none";
    };
    GruposDeMapas.prototype.LayersEnLibreriaQueIntersectan = function () {
        if (this.grupoTemporal.ulListadoLayersEnLibreria.innerHTML != '') {
            var numeroDeLi = this.grupoTemporal.ulListadoLayersEnLibreria.childNodes.length;
            for (var i = 0; i < numeroDeLi; i++) {
                var layerLi = this.grupoTemporal.ulListadoLayersEnLibreria.childNodes[i];
                if (layerLi.bounds.intersects(this.map_.mapBounds)) {
                    layerLi.style.display = "";
                }
                else {
                    layerLi.style.display = "none";
                }
            }
        }
    };

    GruposDeMapas.prototype.ClearLayersEnLibreria = function () {
        if (this.grupoTemporal.ulListadoLayersEnLibreria) {
            this.grupoTemporal.ulListadoLayersEnLibreria.innerHTML = "";
        }
    };

    GruposDeMapas.prototype.CallBackSearchMapas = function (json, filterText) {
        if (this.filterText != unescape(filterText)) return;
        var listadoGruposDeMapas = json;
        var ulListadoGrupo = this.grupoTemporal.ulListadoLayersEnLibreria;
        this.ClearLayersEnLibreria();
        for (var i = 0; i < listadoGruposDeMapas.length; i++) {
            var mapa = listadoGruposDeMapas[i];
            var layerLi = this.CreateMapa(mapa, mapa.l);
            ulListadoGrupo.appendChild(layerLi);
        }
        this.LayersEnLibreriaQueIntersectan();
    };

    GruposDeMapas.prototype.MostrarMapaEspecifico = function(mapasAMostrarAux){
	    this.mapasAMostrar = mapasAMostrarAux || '';	
	    if(!this.EstaAbiertaLaLibreria()) google.maps.event.trigger(this.grupoDeMapasLibreria.divGrupoDeMapasTitle, "click");
        else this.MostrarMapasPendientes();
    };

    GruposDeMapas.prototype.MostrarMapasPendientes = function(){    
	    if(this.mapasAMostrar.length>0){
		    var mapaAMostrar = this.mapasAMostrar.pop();
		    if(mapaAMostrar=='')this.MostrarMapasPendientes();
		    else{
			    mapaAMostrar = mapaAMostrar.split("$");
			    var url = mapaAMostrar[0];
			    url = url.replace("?","");
			    this.layersAMostrar = unescape(mapaAMostrar[1]).split(',');
			    var childs = this.grupoTemporal.ulListadoGrupo.childNodes;
			    for(var i=0;i<childs.length;i++){
				    var child = childs[i];
				    if(child.url.toString().replace("?","") == url){
					    this.ClickEnMapaDeLibreria(child);
				    };
			    }
		    }
	    }
	    else PosicionarMarkerEInfoWindow();
    };


    GruposDeMapas.prototype.MostrarLayersPendientes = function(){
	    var layers = this.mapaTemporal.layerUl.childNodes;
	    for(i=0;i<layers.length;i++){
		    var layer = layers[i].childNodes[0].value;
		    for(j=0;j<this.layersAMostrar.length;j++){
			    var layerAMostrar = this.layersAMostrar[j];
			    if(layer ==layerAMostrar){
				    if(!layers[i].childNodes[0].checked){
				        layers[i].childNodes[0].checked = true;
					    google.maps.event.trigger(layers[i], "click");
                    }
			    }
		    }
	    }

    };

    ///VENTANA DE POPUP ////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////
    var divPoput;
    function CrearVentanaPoput(ancho, alto, titulo, html, onClose, nomostrarPreventLayer, forzarAmpliarVerticalmente){
	    var onClose = onClose || false;
	    var maximoAltoPopup = altoDeVentana-40;
	    var maximoAnchoPopup = anchoDeVentana-40;
	    if(alto>maximoAltoPopup)alto = maximoAltoPopup;
	    if(ancho>maximoAnchoPopup)ancho = maximoAnchoPopup;
	
	    //divPoput = $new("div");
	    //divPoput.id ="divPoput";
	    //document.getElementsByTagName("BODY")[0].appendChild(divPoput);	
	
	    divPoput = $("divPoput");
	    divPoput.style.width= ancho+"px";
	
	
	    divPoputTopLeft = $new("div");
	    divPoputTopLeft.className = "divPoputTopLeft";
	    divPoput.appendChild(divPoputTopLeft);
	
	    divPoputTopRight = $new("div");
	    divPoputTopRight.className = "divPoputTopRight";
	    divPoputTopLeft.appendChild(divPoputTopRight);
	
	    divPoputContentLeft = $new("div");
	    divPoputContentLeft.className = "divPoputContentLeft";
	    divPoput.appendChild(divPoputContentLeft);
	
	    divPoputContentRight = $new("div");
	    divPoputContentRight.className = "divPoputContentRight";
	    divPoputContentLeft.appendChild(divPoputContentRight);
	
	
	    divPoputContent = $new("div");
	    divPoputContent.className = "divPoputContent";
	    divPoput.appendChild(divPoputContent);
	
	    divInteriorPoput  = $new("div");
	    divInteriorPoput.className ="divInteriorPoput";
	
	    if(html.childNodes)divInteriorPoput.appendChild(html);
	    else divInteriorPoput.innerHTML = html;
	    divPoputContent.appendChild(divInteriorPoput);
	
	    ///////////
	
	    ///////////
	
	    divPoputBottom = $new("div");
	    divPoputBottom.className = "divPoputBottom";
	    divPoput.appendChild(divPoputBottom);
	
	    divPoputBottomRight = $new("div");
	    divPoputBottomRight.className = "divPoputBottomRight";
	    divPoputBottom.appendChild(divPoputBottomRight);
	
	
	    divTituloPoput = $new("div");
	    divTituloPoput.id = "divTituloPoput";
	    divPoputContent.appendChild(divTituloPoput);
	
	    divTituloContainer = $new("div");
	    divTituloContainer.id = "spanTituloPoput";
	    divTituloContainer.className = "divTituloContainer";
	    divTituloContainer.style.width = (ancho - 20)+ "px";
	    divTituloContainer.innerHTML = titulo;
	
	    divTituloLeft = $new("div");
	    divTituloLeft.className = "divTituloLeft";
	
	    divTituloRight = $new("div");
	    divTituloRight.className = "divTituloRight";
	
	    divTituloPoput.appendChild(divTituloLeft);
	    divTituloPoput.appendChild(divTituloContainer);
	    divTituloPoput.appendChild(divTituloRight);
	
	
	    closebutton = $new("div", {'id':'closeVentanaPopup'});
	    closebutton.className = "closebuttonpopup";
	    closebutton.title = mvar.cerrarVentana;
	    google.maps.event.addDomListener(closebutton, "click", function(){CerrarVentanaPopup();});
	    divPoput.onClose = onClose;
	
	    //google.maps.event.addDomListener(closebutton, "click", onClose);	
	
	
	    divTituloPoput.appendChild(closebutton);
	
	    if(esExplorer){
		    divPoputTopRight.style.filter = divPoputBottomRight.style.filter = divPoputContentRight.style.filter = "alpha(opacity=50)";
	    }
	    $("preventLayer").className="preventLayer";
	
	
	
	    divPoput.style.opacity= "1";
	    divPoput.style.display = "";
	
	    if(forzarAmpliarVerticalmente){
		    alto = divInteriorPoput.offsetHeight + 26;
		    //if(esNetscape)alto += 18;
	    }
	    else divInteriorPoput.style.height =(alto-46)+"px";
	
	    divPoput.style.height= alto+"px";	
	    PosicionarVentanaPopup();
	
	    divPoputContent.style.width = (ancho - 4) +"px";
	    divPoputContent.style.height = (alto - 9) +"px";	
	    divPoputContentLeft.style.height = (alto - 11) +"px";
	    divPoputContentRight.style.height = (alto - 11) +"px";
	
	
        return divPoput;
    }

    function CerrarVentanaPopup(avoidFadeOut){
	    if(esExplorer || avoidFadeOut)PoputFadeOutEnd();
	    else PoputFadeOut(divPoput,0.8)
    }

    function PoputFadeOut(div, opacity){
        if(opacity<=0.2)PoputFadeOutEnd();    
        else {
            SetStyleOpacity(div, opacity);
            setTimeout(function(){PoputFadeOut(div, opacity-=0.2);},8);
        }
    }
    function PoputFadeOutEnd(){
        $('preventLayer').className='';
        if(divPoput && divPoput.parentNode){
            if(divPoput.onClose) divPoput.onClose();
            divPoput.innerHTML = "";
            divPoput.style.display = "none";
            divPoput.className = "";
        }
    }

    function PosicionarVentanaPopup(){
        if(divPoput){
            divPoput.style.left = (anchoDeVentana)?(anchoDeVentana/2 - parseInt(divPoput.style.width)/2)+"px" :"20px";
	        divPoput.style.top = (altoDeVentana)?(altoDeVentana/2 - parseInt(divPoput.style.height)/2)-10+"px":"20px";
	    }
    }


    ////////////////////////////////////////////////////////////////////////////////
    var funcionCloseAux;
    function GAlert(texto, funcionClose){
	    funcionCloseAux = funcionClose?function(){return funcionClose();}:function(){};
	    texto = '<div id="alerta"><div id="textoAlerta">'+texto+'</div><div id="botonAlerta"><form><input id="submitAlert" type="button" class="button" value="'+mvar.aceptar+'" onClick="CerrarVentanaPopup();funcionCloseAux();"></form></div></div>';
	    CrearVentanaPoput(400, 100, mvar.alerta, texto, funcionCloseAux, true, true);	
	    $("submitAlert").focus();	
    }
    function GConfirm(texto, funcionClose){
	    funcionCloseAux = funcionClose?function(){return funcionClose();}:function(){};
	    texto = '<div id="alerta"><div id="textoAlerta">'+texto+'</div><div id="botonAlerta"><form><input id="submitAlert" type="button" class="button" value="'+mvar.aceptar+'" onClick="CerrarVentanaPopup();funcionCloseAux();"><input id="submitAlertCancelar" style="margin-left:10px;" type="button" class="button" value="'+mvar.cancelar+'" onClick="CerrarVentanaPopup();"></form></div></div>';
	    CrearVentanaPoput(400, 100, mvar.alerta, texto, function(){}, true, true);	
	    $("submitAlert").focus();	
    }

    function GInfo(texto, funcionClose){
	    funcionCloseAux = funcionClose?function(){return funcionClose();}:function(){};
	    texto = '<div id="alerta"><div id="textoAlerta">'+texto+'</div></div>';
	    CrearVentanaPoput(400, 100, "", texto, funcionCloseAux, true, true);	
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    function EnviarEstadistica(accion){
        var url = rutaPrincipal+ 'recursos/varios/Estadisticas.aspx?accion='+ accion;
        cs(url);
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    var opcion; 
    var usuario;
    var anchoVentanaUsuario = 600;
    var altoVentanaUsuario = 395;
    var funcionCorrectoUsuarioRegistrado = false;
    var funcionInCorrectoUsuarioRegistrado = false;

    function LoginUsuario(){
        //FuncionParaUsuarioRegistrado("Acceso para usuarios registrados", false, "LoginUsuario", "MostrarVentanaLoginUsuario()");
        _pagar(function(){MostrarVentanaPagar("Acceso para usuarios registrados", "LoginUsuario", false);MostrarVentanaLoginUsuario(); });
    }

    function LogoutUsuario(){
        CerrarVentanaPopup();
        usuario = false;
        eraseCookie("goolzoom");
        if($("linkusuarios") && $("textoUsuarioRegistrado")){
            $("linkusuarios").style.display="inline";
	        $("textoUsuarioRegistrado").style.display="none";	
	        $("textoUsuarioRegistrado").innerHTML = "";	    
        }    
    }

    function FuncionParaUsuarioRegistrado(titulo, funcionCorrecto, estadistica, funcionPrevia){
        funcionCorrectoUsuarioRegistrado = funcionCorrecto || false;
        var estadistica = estadistica || '';
        var funcionPrevia = funcionPrevia || false;
        if(!usuario)_pagar(function(){MostrarVentanaPagar(titulo, estadistica, funcionPrevia);});
        else if(!usuario.suscripcionActiva) _pagar(function(){MostrarVentanaRenovarSuscripcion();});
        else return funcionCorrectoUsuarioRegistrado();
    }


    function ValidarUsuario(emailSuscrito,constrasenaSuscrito, accion, callback){
        var accion = accion || "";
	    var urlConsulta =rutaPrincipal+'recursos/usuarios/ObtenerDatosUsuario.aspx?email='+emailSuscrito+'&contrasena='+constrasenaSuscrito+'&callback='+ callback +'&accion='+ accion +'&d='+GetDateString();
	    cs(urlConsulta);
    }

    function ValidarUsuarioPorCookie(funcionCorrecto, funcionIncorrecto){
        funcionCorrectoUsuarioRegistrado = funcionCorrecto || function(){return false};
        funcionInCorrectoUsuarioRegistrado = funcionIncorrecto || function(){return false};
	    var cookie = readCookie("goolzoom");
	    if(cookie!=null && cookie.indexOf(":")>-1){
		    cookie = cookie.split(":")[0];
		    if(cookie!='')
		        ValidarUsuario(cookie,"","loginignorepass", "CallBackValidarUsuarioPorCookie");
	    }
	    else return funcionInCorrectoUsuarioRegistrado();
    }

    function CallBackValidarUsuarioPorCookie(usuarioAux){
        if(usuarioAux){
            usuario = usuarioAux;
            MostrarMenuUsuario();
            if(usuario.suscripcionActiva)return funcionCorrectoUsuarioRegistrado();
            else return funcionInCorrectoUsuarioRegistrado();
        }
        else return funcionInCorrectoUsuarioRegistrado();
    }


    function MostrarMenuUsuario(){
        if(usuario && $("linkusuarios") && $("textoUsuarioRegistrado")){
            $("linkusuarios").style.display="none";
	        $("textoUsuarioRegistrado").style.display="inline";	
	        var emailUsuarioAux = usuario.emailUsuario; 
	        if(emailUsuarioAux.indexOf("@")>-1)emailUsuarioAux = emailUsuarioAux.substring(0,emailUsuarioAux.indexOf("@"));
	        var maximoTamano = 12;
	        emailUsuarioAux =  emailUsuarioAux.length>maximoTamano? emailUsuarioAux.substring(0,maximoTamano) +".." : emailUsuarioAux;
	        $("textoUsuarioRegistrado").innerHTML = emailUsuarioAux;	    
        }
        createCookie("goolzoom",usuario.emailUsuario+":",1);
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    var cookieAccessControl = "goolzoom_ac";
    var daysAccesControlCookieDuration = 5;
    var cookieNodedad = "goolzoom_nov";
    function AccessControl(){
        var idAccessControlAux = readCookie(cookieAccessControl);
        var idAccessControl = idAccessControlAux==null?'':idAccessControlAux;
        var urlReferrerAux = urlReferrer || '';
        var idUsuario = (usuario && usuario.idUsuario)?usuario.idUsuario:'';
        var url =rutaPrincipal+'recursos/varios/AccessControl.aspx?idAccessControl='+idAccessControl+'&idUsuario='+idUsuario+'&urlReferrer='+ urlReferrerAux +'&callback=AccesControlCallBack&d='+GetDateString();
        cs(url);
    }

    function AccesControlCallBack(json){
        var idAccessControl = json.idAccessControl;
        var counter = json.counter;
        createCookie(cookieAccessControl,idAccessControl,daysAccesControlCookieDuration);
    
        if(!usuario && counter>=2)_pagar(function(){ InfoUsuariosHabituales(counter);});
        /*else if(!usuario){
            var cookieNovedad = readCookie(cookieNodedad);
            if(cookieNovedad==null){
                _pagar(function(){ MostrarVentanaPagar("Novedad para usuarios registrados", "novedadDescargaXls", "MostrarVentajasUsuarios3b()"); });
                createCookie(cookieNodedad,true,3);
            }
        }*/
        // esto es para controla navegadores que se han quedado abiertos
        setTimeout("window.location.reload()",6*60*60*1000);
    }
