var maps; 
var icoCamar;
var icoPanel;
var icoPanelon;
var icoSensMeteo;
var icoSensTraf;
var icoCamarOff;
var icoPanelOff;
var icoPanelonOff;
var icoSensMeteoOff;
var icoSensTrafOff;
var icoIndicencia;
var icoNivelVerde;
var tipoInfo = "Incidencia";
var txt;
var icon;
var numMarca= 0;
//var marcas = new Array();
var marcas = [];
var marcas4mapa = new Array();
var marcaClik= -1
var tooltip;
var arrayTooltips = new Array();
var cargado=false;
var estadoB= 2;
var cbf2;
var panel_;
var desdeBuscador = 0;
	 // desdeBuscador = 0: es MisConsultas
	 // desdeBuscador = 1: es buscador
	 // desdeBuscador = 2: Tiempos de Recorrido
var noQuitarNiveles=false;
var agent;

function panel(){
	this.id
	this.imaIz1;
	this.imaIz2;
	this.imaDe1;
	this.imaDe2;
	this.men1;
	this.men2;
	this.imaAltTxtIz1;
	this.imaAltTxtIz2;
	this.imaAltTxtDe1;
	this.imaAltTxtDe2;
	
}

function cambiaPanelesPop(panel){
		//document.getElementById('panel_d_I'+n).src = pathIcoPane+paneles[n].eval("imaIz"+estadoA);
			document.getElementById('panel_p_I').src = pathIcoPane+ eval("panel_.imaIz"+estadoB);
			document.getElementById('panel_p_D').src = pathIcoPane+ eval("panel_.imaDe"+estadoB);
		    document.getElementById('cmsText').innerHTML =  eval("panel_.men"+estadoB);
		    
		    //Pongo los textos alternativos y titulo
			document.getElementById('panel_p_I').title = eval("panel_.imaAltTxtIz"+estadoB);
			document.getElementById('panel_p_D').title = eval("panel_.imaAltTxtDe"+estadoB);
			document.getElementById('panel_p_I').alt =  eval("panel_.imaAltTxtIz"+estadoB);
			document.getElementById('panel_p_D').alt =  eval("panel_.imaAltTxtDe"+estadoB);
			
	(estadoB==1)?estadoB=2:estadoB=1;

}



 function showTooltip(marker,alias, indice) {
    //tooltip.innerHTML = marker.tooltip;    
    tooltip.innerHTML = '<div class="tooltip">'+"<b>"+alias+"</b>"+'</div>';
    var point=maps[indice].getCurrentMapType().getProjection().fromLatLngToPixel(maps[indice].getBounds().getSouthWest(),maps[indice].getZoom());
    var offset=maps[indice].getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),maps[indice].getZoom());
    var anchor=marker.getIcon().iconAnchor;
    var width=marker.getIcon().iconSize.width - 50; //TODO ÑAPA PARA QUE QUEDE ENCIMA DEL ICONO
    var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(offset.x - point.x - anchor.x + width,- offset.y + point.y +anchor.y)); 
    pos.apply(tooltip);
    tooltip.style.visibility="visible";
    arrayTooltips[arrayTooltips.length] = tooltip;
}


      // ===== This function is invoked when the mouse leaves an entry in the side_bar =====
      // It hides the tooltip      
function quitTooltips() {
	var i =0;
	for (i=0;i<arrayTooltips.length;i++){
		arrayTooltips[i].style.visibility="hidden";
	}
}
    
function initIconos()
{
	icoCamar = new GIcon();
	icoPanel = new GIcon();
	icoSensMeteo = new GIcon();
	icoSensTraf = new GIcon();
	icoPanelon = new GIcon();
	//Icos inaactivos 
	icoCamarOff = new GIcon();
	icoPanelOff = new GIcon();
	icoSensMeteoOff = new GIcon();
	icoSensTrafOff = new GIcon();
	icoPanelonOff = new GIcon();
	
	icoPanelApagado = new GIcon();
	
	icoIncidencia = new GIcon();
	icoNivelVerde = new GIcon();
	
	
	icoNivelVerde.image="http://infocar.dgt.es/etraffic/img/ICONenMAPA/NIVmapVERD.png";
	//icoNivelVerde.shadow ="data/imagenes/mapa/INCIDmapSOMB.png";
	// var tam =12 - ((17 - map.getZoom())*2);
	var tam = 12;
	icoNivelVerde.iconSize = new GSize(tam,tam);
	//icoNivelVerde.shadowSize = new GSize(35, 29);
	icoNivelVerde.iconAnchor = new GPoint(tam/2,tam/2);
//	icoNivelVerde.infoWindowAnchor = new GPoint(5, 1);
	
	icoIncidencia.image="http://infocar.dgt.es/etraffic/img/ICONenMAPA/INCIDmapRETEroj.png";
	//icoIncidencia.shadow ="img/ICONenMAPA/INCIDmapSOMB.png";
	icoIncidencia.iconSize = new GSize(35, 29);
	icoIncidencia.shadowSize = new GSize(35, 29);
	icoIncidencia.iconAnchor = new GPoint(6, 20);
	icoIncidencia.infoWindowAnchor = new GPoint(5, 1);
	
	
	icoCamar.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapCAMA.png";
	//icoCamar.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoCamar.iconSize = new GSize(35, 38);
	icoCamar.shadowSize = new GSize(35, 38);
 	icoCamar.iconAnchor = new GPoint(8, 36);
	icoCamar.infoWindowAnchor = new GPoint(7, 1);
	
	
	icoPanelApagado.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapPANEApagado.png";
	//icoPanelApagado.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoPanelApagado.iconSize = new GSize(35, 38);
	icoPanelApagado.shadowSize = new GSize(35, 38);
	icoPanelApagado.iconAnchor = new GPoint(8, 36);
	icoPanelApagado.infoWindowAnchor = new GPoint(7, 1);
	
	icoPanel.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapPANE.png";
	//icoPanel.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoPanel.iconSize = new GSize(35, 38);
	icoPanel.shadowSize = new GSize(35, 38);
	icoPanel.iconAnchor = new GPoint(8, 36);
	icoPanel.infoWindowAnchor = new GPoint(7, 1);
	
	icoPanelon.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapPANE.png";
	//icoPanelon.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoPanelon.iconSize = new GSize(35, 38);
	icoPanelon.shadowSize = new GSize(35, 38);
	icoPanelon.iconAnchor = new GPoint(8, 36);
	icoPanelon.infoWindowAnchor = new GPoint(7, 1);
	
	
	icoSensMeteo.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPMETE.png";
	//icoSensMeteo.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoSensMeteo.iconSize = new GSize(35, 38);
	icoSensMeteo.shadowSize = new GSize(35, 38);
	icoSensMeteo.iconAnchor = new GPoint(8, 36);
	icoSensMeteo.infoWindowAnchor = new GPoint(7, 1);
	
	
	icoSensTraf.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapSENS.png";
	//icoSensTraf.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoSensTraf.iconSize = new GSize(35, 38);
	icoSensTraf.shadowSize = new GSize(35, 38);
	icoSensTraf.iconAnchor = new GPoint(8, 36);
	icoSensTraf.infoWindowAnchor = new GPoint(7, 1);
	
	
	////////////ICONOS DE EQUIPAMEINTO INACTIVO 
	
	
	icoCamarOff.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapCAMAoff.png";
	//icoCamarOff.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoCamarOff.iconSize = new GSize(35, 38);
	icoCamarOff.shadowSize = new GSize(35, 38);
 	icoCamarOff.iconAnchor = new GPoint(8, 36);
	icoCamarOff.infoWindowAnchor = new GPoint(7, 1);
	
	
	icoPanelOff.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapPANEoff.png";
	//icoPanelOff.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoPanelOff.iconSize = new GSize(35, 38);
	icoPanelOff.shadowSize = new GSize(35, 38);
	icoPanelOff.iconAnchor = new GPoint(8, 36);
	icoPanelOff.infoWindowAnchor = new GPoint(7, 1);
	
	icoPanelonOff.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapPANEoff.png";
	//icoPanelonOff.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoPanelonOff.iconSize = new GSize(35, 38);
	icoPanelonOff.shadowSize = new GSize(35, 38);
	icoPanelonOff.iconAnchor = new GPoint(8, 36);
	icoPanelonOff.infoWindowAnchor = new GPoint(7, 1);
	
	
	icoSensMeteoOff.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPMETEoff.png";
	//icoSensMeteoOff.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoSensMeteoOff.iconSize = new GSize(35, 38);
	icoSensMeteoOff.shadowSize = new GSize(35, 38);
	icoSensMeteoOff.iconAnchor = new GPoint(8, 36);
	icoSensMeteoOff.infoWindowAnchor = new GPoint(7, 1);
	
	
	icoSensTrafOff.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/EQUIPmapSENSoff.png";
	//icoSensTrafOff.shadow = "img/ICONenMAPA/EQUIPmapSOMB.png";
	icoSensTrafOff.iconSize = new GSize(35, 38);
	icoSensTrafOff.shadowSize = new GSize(35, 38);
	icoSensTrafOff.iconAnchor = new GPoint(8, 36);
	icoSensTrafOff.infoWindowAnchor = new GPoint(7, 1);
}



function parseJsonElementos(response, index, map) {
	objptos =  eval("(" + response + ")");
	if (hayPanelIzquierdo()) {	//RELLENO LOS DATOS DEL PANEL IZQUIERDO
		//alert("pinto izq");
		rellenaDatos(tipoInfo,'',objptos);
	}
	//map.clearOverlays();
  numMarca = 0;
  marcas=new Array();
  var niveles = new Array();
  var numNiveles= 0;
  for(var i =0;i < objptos.length; i++) {
    if ( objptos[i].tipo !='nivelServicio'){
  	////CREO LOS PUNTOS 
		//map.addOverlay(createMarker2(new GLatLng(objptos[i].lat,objptos[i].lng), i));				
    map.addOverlay(crearMarcas(new GLatLng(objptos[i].lat,objptos[i].lng),
    									objptos[i].tipo,
    									objptos[i].codEle,
    									objptos[i].alias,
    									objptos[i].icono,
    									objptos[i].estado,
    									index))    ;
            numMarca++;
   	 }else{
   	 //////NIVELES DE SERVICO
    	 niveles[numNiveles] =  objptos[i];
    	 numNiveles++;
     }
  }
 	crearNivelServ(niveles,index);
 	//////////////////////////	
 	var recorrido =false;
 	//pintamos la ruta : si hay 
 	if (recorrido){  
 		calcularAnchoTR(map);
   	for (var i = 0; i < recorrido.length ; i++){
   		if(recorrido[i].polilinea && recorrido[i].polilineaZoom){		
		  var encodedPolyline = new GPolyline.fromEncoded({
		    color: colorTR,
		    weight: anchoTR,
		    //  weight: anchoNSColor,
		    points: recorrido[i].polilinea,
		    levels: recorrido[i].polilineaZoom,
		    zoomFactor: 32,
		    numLevels: 4
		    });
		    map.addOverlay(encodedPolyline);
		  }
		}
	}
}


 
 function crearMarcas(punto,tipo,codEle,alias,icono,estadoEquipo,indice){
	//TODO evento cuando se hace clik sobre algun equipamiento

	if (tipo != "coordTramoServicio"){
	 	initIconos();
	 	//estadoEquipo:
		 	//0 Inactivo
			//1 Activo
			//2 Panel Apagado
	 	//tooltip = document.createElement("div");
	    //document.getElementById("map").appendChild(tooltip);
	    //tooltip.style.visibility="hidden";


		var marca= new GMarker(punto);
		if (tipo == "Panel_CMS"){
			if (estadoEquipo==1){
		 		marca= new GMarker(punto,{icon:icoPanel});
		 	}else if  (estadoEquipo==2){
		 		  marca= new GMarker(punto,{icon:icoPanelApagado,title:"Pinche para ver informacion"});				 
		 	}else{
		 			marca= new GMarker(punto,{icon:icoPanelOff,title:"Pinche para ver informacion"});
		 	}	
		}else if (tipo == "Panel_PSG"){
			if (estadoEquipo==1)
			 	marca= new GMarker(punto,{icon:icoPanelon,title:"Pinche para ver informacion"});
			 else
			 	marca= new GMarker(punto,{icon:icoPanelonOff,title:"Pinche para ver informacion"});
		}else if (tipo == "Camara"){
			if (estadoEquipo==1)
		 		marca= new GMarker(punto,{icon:icoCamar,title:"Pinche para ver informacion"});
		 	else
		 		marca= new GMarker(punto,{icon:icoCamarOff,title:"Pinche para ver informacion"});
		}else if (tipo == "SensorMeteorologico"){
		 	if (estadoEquipo==1)
		 		marca= new GMarker(punto,{icon:icoSensMeteo,title:"Pinche para ver informacion"});
		 	else
		 		marca= new GMarker(punto,{icon:icoSensMeteoOff,title:"Pinche para ver informacion"});
		}else if (tipo == "SensorTrafico"){
			if (estadoEquipo==1)
				marca= new GMarker(punto,{icon:icoSensTraf,title:"Pinche para ver informacion"});
			else
				marca= new GMarker(punto,{icon:icoSensTrafOff,title:"Pinche para ver informacion"});
		}else if (tipo == "Incidencia"){
			icoIncidencia.image = "http://infocar.dgt.es/etraffic/img/ICONenMAPA/"+icono;
			marca= new GMarker(punto,{icon:icoIncidencia,title:"Pinche para ver informacion"});
		}else{
			marca= new GMarker(punto);
		}

		marca.id = marcas.length;
		marca.codEle = codEle;
		marca.alias= alias;
//		alert("Marca.... "+ marca.id+marca.codEle+marca.alias);	
		marcas.push([marca.id,marca.codEle,marca.alias]);
//		alert("Marcasss.... "+ marcas[marca.id][0]+marcas[marca.id][1]+marcas[marca.id][2]);

		if (estadoEquipo==1 ||estadoEquipo==2 ){
			var msg="";
			 GEvent.addListener(marca, 'click', function() {
		   		// provReq=objAjaxConIndice.crear("http://infocar.dgt.es/etraffic/BuscarElementosServlet?accion=getDetalles&codEle="+codEle+"&tipo="+tipo+"&indiceMapa="+indice,"setMSG")

				_IG_FetchContent('http://infocar.dgt.es/etraffic/BuscarElementosServlet?accion=getDetalles&codEle='+codEle+'&tipo='+tipo+'&indiceMapa='+indice, function (responseText)  {
					//alert(responseText.substr(0,1000));
					msg=setMSG(responseText, marca.id);
	 				 marca.openInfoWindowHtml(msg);
				});

				 //marca.openInfoWindowHtml(msg);
		   		//tooltip.style.visibility="hidden";
			  });
			  
			  GEvent.addListener(marca,"infowindowclose", function() {	
					clearInterval(cbf2);
		       });
		}
		  

		GEvent.addListener(marca,"mouseover", function() {
			if(cargado){
         	 showTooltip(marca,alias,indice);
         	}
        });        
        GEvent.addListener(marca,"mouseout", function() {
			//tooltip.style.visibility="hidden";
			quitTooltips();
        });         
	  }
	return marca;
	}
 
 
 function limpiar(elem) { 
   document.getElementById(elem).innerHTML=""; 
} 
 
 function confirmarRecarga(){ 
   if (confirm('Si no se han guardado los cambios y continúas los perderás. ¿Deseas continuar?')){ 
      document.getElementById("formConsultas").submit();
      // o llamar a cambiarVisible()
   } 
 }
 
 
 /////////////////////////////////////////////
function setMSG(request, id_marca){
	if (request!=null && request!=""){
	  var ele= eval("(" + request + ")");
    //	  marcas=marcas4mapa[ele.indiceMapa];
	  var msg ="";
	  numMarca = id_marca;
	 
	 //alert(ele.tipo);
	  if (ele.tipo =="Camara"){
      if(ele.urlBaja && ele.urlBaja != ""){
        msg += "<div id='popE' style='background:url(http://infocar.dgt.es/etraffic/img/fndPopUpCamara.gif) no-repeat;width:300px;'>&nbsp;";
        msg +="<p class='iconTb_cam'><span class='tipo'>Camara..</span><br><b>"+marcas[numMarca][2]+"</b>"	     	  
        msg +="<object width='194px' height='144px' type='application/x-mplayer2'> ";	
        msg +="<param name='src' value="+ele.urlBaja+">";
        msg +="<param name='ShowControls' value='0'>";
        msg +="</object></p>";
        if (ele.urlAlta){
          msg +="<a href='"+ele.urlAlta+"'>"+verReprExternoAlta+"</a>";					   
        } else {
          msg +="<a href='"+ele.urlBaja+"'>"+verReprExterno+"</a>";				   	   
        }
		  }else{
        //Pintar solo la imagen
        msg += "<div id='popE' style='background:url(http://infocar.dgt.es/etraffic/img/fndPopUpCamara.gif) no-repeat;width:300px;'>&nbsp;";
        msg +="<p class='iconTb_cam'><span class='tipo'>Camara</span><br><b>"+marcas[numMarca][2]+"</b>"
        msg += "<img width='235' height='180' id='camara' src='"+pathImgCamaras+ele.imagen+"'></p>";
		  }
      if (!desdeBuscador){
         	cadenab ="MisConsultas?recargar=true&accion=&accesoLogin=addEquipConsulta&tipEquip=34&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";				
      } else {
         	cadenab ="MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=34&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
      }	
		
      //    	cadenab ="MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=34&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
      msg += "<div id='piePop'><p class='misconsultas'><a href='#' onClick=\"window.open('"+cadenab+"','','width=550,height=250');return false;\">..</a></p></div>";
      msg +="</div>";		
      //marcas[numMarca].openInfoWindowHtml(msg);
      return msg;	

   		// "<BR><img border='0 alt='NO HAY DATOS' src='data/camaras/"+ ele[i].imagen+"'>";
	   }else if (ele.tipo =="SensorTrafico"){
	   	    msg += "vv<div id='popE'>&nbsp;";
	   		msg += "<ul class='iconTb_sensor'><li><span class='tipo'>"+sensor+"</span><br><b>"+marcas[numMarca][2]+"</b></li>";
	   		if (ele.noDatos)
	   		{
	   				msg += "<br/><li><span class='popEcab'><b>"+noDatosActualizados+"</b></li> <br/>";	
	   		}else{
		    	msg += "<li><span class='popEcab'>" +txtIntensidad +"</span> : "+ele.intensidad +" Veh/h</li>";
		    	msg += "<li class='pijama1'><span class='popEcab'>" +txtVmedia+"</span> : "+ele.velocidad +" km/h</li>";
		    	msg += "<li><span class='popEcab'>" +txtOcupacion +"</span>  : "+ele.ocupacion +" %</li>";
		    	msg += "<li class='pijama1'><span class='popEcab'>" +txtComposicion +"</span> : "+ele.composicion +" %</li>";
		    }
	   		msg += "<li class='ultimo'><a href='#' onClick=\"window.open('jsp/muestraGraficos.jsp?codigo="+marcas[numMarca][1]+"&tipoSensor=trafico','' , 'width=680,height=480'); return false;\">..."+infoHistorica+"</a>"+"</li></ul><br>";	    		
			if (!desdeBuscador){
				cadenab = "MisConsultas?recargar=true&accion=&accesoLogin=addEquipConsulta&tipEquip=4&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";				
			} else {
				cadenab = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=4&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";
			}	
	   
	    	msg += "<br><div id='piePop'><p class='misconsultas'><a href='#' onClick=\"window.open('"+cadenab+"','','width=550,height=250');return false;\">..</a></p></div>";
	    	
	      	msg +="</div>";
	    	//marcas[numMarca].openInfoWindowHtml(msg);
			return msg;	
	    }else if ((ele.tipo =="Panel_CMS")) {
	    	  msg += "cc<div id='popE'>&nbsp;";
	    	  panel_= new panel();

	    	  ( ele.drawIz1.length != 0)?  panel_.imaIz1 = ele.drawIz1 : panel_.imaIz1 = "apagado.gif";
			  ( ele.drawIz2.length != 0)?  panel_.imaIz2 = ele.drawIz2 : panel_.imaIz2 = "apagado.gif";
				
			  ( ele.drawDer1.length != 0)?  panel_.imaDe1 = ele.drawDer1 : panel_.imaDe1 = "apagado.gif";
			  ( ele.drawDer2.length != 0)?  panel_.imaDe2 = ele.drawDer2 : panel_.imaDe2 = "apagado.gif";
			
			   panel_.imaAltTxtIz1=panel_.imgTxtIzq1;
			   panel_.imaAltTxtIz1=panel_.imgTxtIzq2;
			   panel_.imaAltTxtDe1=panel_.imgTxtDer1;
			   panel_.imaAltTxtDe1=panel_.imgTxtDer2;
			   
			  if(ele.mensaje1!=null && ele.mensaje1!="")
			   panel_.men1 = ele.mensaje1;
			  else
			    panel_.men1 = "";
			  if(ele.mensaje2!=null && ele.mensaje2!="")
			     panel_.men2 = ele.mensaje2;
			  else
			     panel_.men2 = "";

	    	  
	    	  msg += "<p class='iconTb_cms'><span class='tipo'>panelTrafico</span><br><b>"+marcas[numMarca][2]+"</b><br></p>";
	    	  msg += "<div class='fondo_cms'>";
	    	  msg += "<div id='cms_d1' class='ftl'><img border='0' id='panel_p_I' src='"+pathIcoPane+ panel_.imaIz1+"'></div>";
	    	
	    	  var msgT = ""
	    	   	if(panel_.men1 != null && panel_.men1 != "")
	    	   	{
	    	   	 	if(panel_.men1!=null && panel_.men1!="")
	    	   	 	{
			  	 		for (j = 0; j< panel_.men1.split("\\n").length;j++){
			  		 		msgT += panel_.men1.split("\\n")[j] + "<br>";
			  	 		}
			  	 	}
	  	 		}
	    	  msg += "<div id='cmsText'class='ftl'>"+ msgT +"</div>";
	   	      msg += "<div id='cms_d2' class='ftl'><img border='0' id='panel_p_D' src='"+pathIcoPane + panel_.imaDe1+"'></div>";
	   	      msg += "</div>";
	   	      
			if (!desdeBuscador){
				cadena = "MisConsultas?recargar=true&accion=&accesoLogin=addEquipConsulta&tipEquip=40&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";
			} else {
				cadena = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=40&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";
			}		   	      
			  msg += "<br><div id='piePop'><p class='misconsultas'><a href='#' onClick=\"window.open('"+cadena+"','','width=550,height=250');return false;\">addEquipMisCons</a></p></div>";	  	         	   	      
	   		if(ele.NumAlternancias >=2){
	   		  if(cbf2!=undefined){
					clearInterval(cbf2);
				};
			  cbf2 = setInterval("cambiaPanelesPop()", 5000); 
	   		}
	   		msg +="</div>";
//		   	marcas[numMarca].openInfoWindowHtml(msg);
			return msg;	
	   	}else if (ele.tipo =="Panel_PSG"){
	   		msg += "ll<div id='popE'>&nbsp;";
	   		msg += "<p class='iconTb_cms'><span class='tipo'>"+panelTrafico+"</span><br><b>"+marcas[numMarca][2]+"</b><br></p>";
	    	  msg += "<div class='fondo_psg'>";
	    	  msg += "<div id='cms_d3' class='ftl'><img border='0' src='ImagenPanelon?cod="+marcas[numMarca][1]+"&lado=izq1'></div>";
	    	 	var j = 0;
	  	 		var msgT = ""
	  	 		if ( ele.mensaje1!=null && ele.mensaje1!=""){
		  	 		for (j = 0; j< ele.mensaje1.split("\\n").length;j++){
		  		 		msgT += ele.mensaje1.split("\\n")[j] + "<br>";
		  	 		}
	  	 		}
	    	  msg += "<div id='psgText'class='ftl'>"+ msgT.toUpperCase() +"</div>";
	   	     
	   	      msg += "</div>";
			if (!desdeBuscador){
				cadena = "MisConsultas?recargar=true&accion=&accesoLogin=addEquipConsulta&tipEquip=41&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";
			} else {
				cadena = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=41&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";
			}	
	   	      
	   	      
 			  msg += "<br><div id='piePop'><p class='misconsultas'><a href='#' onClick=\"window.open('"+cadena+"','','width=550,height=250');return false;\">..</a></p></div>";	  	         
 	          msg +="</div>";
//	   		marcas[numMarca].openInfoWindowHtml(msg);
			return msg;	
	    } else if (ele.tipo =="SensorMeteorologico"){
	    	msg += "<div id='popE'>&nbsp;";
	     	msg +="<ul class='iconTb_meteo'><li><span class='tipo'>"+meteo+"</span><br><b>"+marcas[numMarca][2]+"</span><br></li>";
	          if (ele.noDatos)
	   		{
	   				msg += "<br/><li><span class='popEcab'><b>"+noDatosActualizados+"</b></li>";	

					msg += "<li class='ultimo'><br><a href='#' onClick=\"window.open('jsp/muestraGraficos.jsp?codigo="+marcas[numMarca][1]+"&tipoSensor=meteo','' , 'width=680,height=480'); return false;\">"+infoHistorica+"</a>"+"</li></ul> <BR>";	    		
					if (!desdeBuscador){
						cadenab = "MisConsultas?recargar=true&accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";
					} else {
						cadenab = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca][1]+"&alias="+marcas[numMarca][2]+"&misConsultas=0";
					}	
					
		//	    	cadenab = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
			    	msg += "<br><div id='piePop'><p class='misconsultas'><a href='#' onClick=\"window.open('"+cadenab+"','','width=550,height=250');return false;\">"+txtAddMisConsultas+"</a></p></div>";
					msg +="</div>";
//		    			marcas[numMarca].openInfoWindowHtml(msg);
	   		}else{
		        
		        msg += "<li><span class='popEcab'> "+txtTemperatura+"</span>: "+ele.temperatura +" ºC<BR></li>";
		    	msg += "<li class='pijama1'><span class='popEcab'> "+txtHumedad+"</span>: "+ele.humedad +" %<BR></li>";
		    	msg += "<li><span class='popEcab'> "+txtVisibilidad+"</span>:"+ele.visibilidad +" m<BR></li>";
		    	msg += "<li class='pijama1'><span class='popEcab'> "+txtPrecipitaciones+"</span>: "+ele.i_Precipitaciones +" ml/h <BR></li>";
		    	msg += "<li><span class='popEcab'> "+ txtNPrecipitacion + "</span>:"+ele.n_Precipitacion +"</li>";	
				msg += "<li class='pijama1'><span class='popEcab'> "+txtViento+"</span>: "+ele.tipo_viento +"</li>";
		    	msg += "<li><span class='popEcab'> "+ txtVelViento + "</span> : "+ele.vel_viento +" Km/h</li>";			
				msg += "<li class='pijama1'><span class='popEcab'> "+ txtPresionA + "</span>:"+ele.presion_A +" hPa</li>";	    	
		    	msg += "<li><span class='popEcab'> "+ txtTiempoPresente +"</span>: "+ele.tiempo_Presente +"</li>";			
				msg += "<li class='ultimo'><br><a href='#' onClick=\"window.open('jsp/muestraGraficos.jsp?codigo="+marcas[numMarca].codEle+"&tipoSensor=meteo','' , 'width=680,height=480'); return false;\">"+infoHistorica+"</a>"+"</li></ul> <BR>";	    		
				if (!desdeBuscador){
					cadenab = "MisConsultas?recargar=true&accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
				} else {
					cadenab = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
				}	
				
	//	    	cadenab = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
		    	msg += "<br><div id='piePop'><p class='misconsultas'><a href='#' onClick=\"window.open('"+cadenab+"','','width=550,height=250');return false;\">"+txtAddMisConsultas+"</a></p></div>";
				msg +="</div>";
		    	 
		    	var  msg2 = "<div id='popE'><br>";
				
		 		msg2 += "<ul class='iconTb_meteo'><li><b>"+meteo+"<br>"+marcas[numMarca].alias+"</b><br></li>";
		    	msg2 += "<li><span class='popEcab'> "+ txtCPrecipitaciones + "</span>:"+ele.c_Precipitaciones +" l/m2</li>";
		    	msg2 += "<li class='pijama1'><span class='popEcab'> "+ txtAltAgua + "</span> : "+ele.alt_agua +" mm</li>";
		    	msg2 += "<li><span class='popEcab'> "+ txtDirViento + "</span> : "+ele.dir_viento +" º</li>";
		    	msg2 += "<li class='pijama1'><span class='popEcab'> "+ txtEstSuper+ "</span> : "+ele.est_super +" </li>";
		    	msg2 += "<li><span class='popEcab'> "+ txtTsuper+ "</span> : "+ele.t_super +" ºC</li>";
		    	msg2 += "<li class='pijama1'><span class='popEcab'> "+ txtTempRocio +"</span> : "+ele.temp_rocio +" ºC</li>";
				msg2 += "<li><span class='popEcab'> "+ txtTcongel+ "</span> : "+ele.t_congel +" ºC</li>";
				msg2 += "<li class='pijama1'><span class='popEcab'> "+ txtTsubsuelo +"</span> : "+ele.t_subsuelo +" ºC</li>";	    	
		    	msg2 += "<li><span class='popEcab'> "+ txtSalinidad +"</span> : "+ele.salinidad +" %</li>";
		    	msg2 += "<li class='pijama1'><span class='popEcab'> "+ txtRadiacionGlobal +"</span>: "+ele.radiacion_global +" w/m2</li>";
		  		msg2 += "<li class='ultimo'><br><a href='#' onClick=\"window.open('jsp/muestraGraficos.jsp?codigo="+marcas[numMarca].codEle+"&tipoSensor=meteo','' , 'width=680,height=480'); return false;\">"+infoHistorica+"</a>"+"</ul> <BR>";	    		
				if (!desdeBuscador){
					cadenab = "MisConsultas?recargar=true&accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
				} else {
			    	cadenab = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
				}	
		  		
	//	    	cadenab = "MisConsultas?accion=&accesoLogin=addEquipConsulta&tipEquip=31&eleCod="+marcas[numMarca].codEle+"&alias="+marcas[numMarca].alias+"&misConsultas=0";
		    	msg2 += "<div id='piePop'><p class='misconsultas'><a href='#' onClick=\"window.open('"+cadenab+"','','width=550,height=250');return false;\">"+txtAddMisConsultas+"</a></p></div>";
		    	msg2 +="</div>";
	
	   	
		    	
				    	// Our info window content
				var infoTabs = [
				  new GInfoWindowTab("Info", msg),
				  new GInfoWindowTab("Más Datos", msg2)
				];
//					marcas[numMarca].openInfoWindowTabsHtml(infoTabs);
			}
		return msg;

		} else if (ele.tipo =="Incidencia"){
			msg += "<div id='popE'>&nbsp;";
			//msg += "<div id='popE'><br>";
			if (ele.estado=="obsoleto"){
				alert(txtInciCaducada);
			} else {
				if (ele.tipoInci=="OBRAS"){
					msg += "<ul class='iconTb_InciObras'>";			
				} else if (ele.tipoInci=="PUERTOS DE MONTAÑA"){
					msg += "<ul class='iconTb_InciPuerto'>";						
				} else if (ele.tipoInci=="METEOROLOGICA"){
					msg += "<ul class='iconTb_InciMeteo'>";						
				} else if (ele.tipoInci=="CONO"){
					msg += "<ul class='iconTb_InciConos'>";									
				} else if (ele.tipoInci=="RETENCION"){
					msg += "<ul class='iconTb_InciRetencion'>";												
				}
				
				if(ele.nivel == "NEGRO") imgNivel="http://infocar.dgt.es/etraffic/img/ICONenTABLAS/NIVtablNEGR.gif";ley="Nivel Negro";
				if(ele.nivel == "ROJO") imgNivel="http://infocar.dgt.es/etraffic/img/ICONenTABLAS/NIVtablROJ.gif";ley="Nivel Rojo";
				if(ele.nivel == "AMARILLO")imgNivel="http://infocar.dgt.es/etraffic/img/ICONenTABLAS/NIVtablAMA.gif";ley="Nivel Amarillo";
				if(ele.nivel == "VERDE")imgNivel="http://infocar.dgt.es/etraffic/img/ICONenTABLAS/NIVtablVERD.gif";ley="Nivel Verde";
				msg +="<li><img src="+imgNivel+">&nbsp&nbsp<b>"+marcas[numMarca][2]+"</b></li></br>"
			 	msg += "<li><span class='popEcab'>Tipo</span>: "+ele.tipoInci +" </li>";
		    	msg += "<li class='pijama1'><span class='popEcab'>Lugar:</span> "+ele.carretera + " desde el km "+ele.pkIni+" hasta el "+ele.pkFinal+" </li>";
		    	msg += "<li><span class='popEcab'>Causa:</span> "+ele.causa +"</li>";
		    	msg += "<li class='pijama1'><span class='popEcab'>Poblacion:</span> "+ele.poblacion +" / "+ele.provincia+" </li>";
		    	msg += "<li><span class='popEcab'>Nivel:</span> "+ele.nivel +"</li>";
		    	msg += "<li class='pijama1'><span class='popEcab'>Sentido:</span> "+ele.sentido +" </li><br>";
		    	if (ele.descripcion!="" && ele.descripcion!=null) {
					msg += "<li><span class='popEcab' style='color:red'>a</span> </li>";	    	
		    	} 
		    	
		    	msg += "</ul>";//</div>";
//		    	marcas[numMarca].openInfoWindowHtml(msg);
				return msg;	
			}
	    }
	  } //else {
	  //	alert(txtInciCaducada);
	 // }  
 }


function marcarPuntos(lat,lng){

	punto = new GPoint(lng,lat);
	marca = new GMarker(punto);
	map.addOverlay(marca);
}
function getCentroPoblacion(provincia,poblacion){
  var url = "BuscarElementosServlet?accion=centrar4poblacion&provincia="+provincia+"&poblacion="+poblacion;
  objAjaxConIndice.crear(url,"setCentro", 0);

}

function getCentroProvincia(provincia){
  var url = "BuscarElementosServlet?accion=centrar4provincia&provincia="+provincia;
  objAjaxConIndice.crear(url,"setCentro", 0);

}

function getCentroPKexterior(codCarretera,PK){
    
    var url = "BuscarElementosServlet?accion=centrar&codCarretera="+codCarretera+"&PK="+PK;
	objAjaxConIndice.crear(url,"setCentro", 0);
	
}
function getCentroPK(){
    
 	var selectcarretera = (document.getElementById("carretera"));
	
	var codCarretera = selectcarretera.options[selectcarretera.selectedIndex].value;
	var PK= (document.getElementById("PK")).value ;
	if (codCarretera && PK){
	    var url = "BuscarElementosServlet?accion=centrar&codCarretera="+codCarretera+"&PK="+PK;
		objAjaxConIndice.crear(url,"setCentro", 0);
	}
}
function setCentro(response, indice){
	objCentro = eval("("+ response +")");
	// map.clearOverlays();
	// alert(objCentro.lat+" "+ objCentro.lng);
	var zoom = zoomBusquedas;
	if (objCentro.zoom!=null){
		zoom=objCentro.zoom;
	}
	if( (objCentro.lat!= null) && (objCentro.lng!=null) && maps[indice] ) 
	 {
        maps[indice].setCenter(new GLatLng( objCentro.lat, objCentro.lng),zoom);
     }else {
    	alert(noInfoLocalizacion);
     }
      
}



 //////////////DSJ NIVELES DE SERVICO
function crearNivelServ(niveles,numMapa){
	//CALCULO LOS ANCHOS DE EL PLYLINE 
	calcularAnchoNS(map);
	//Pinto primero todos los blancos
	var pun = [];
	for(var  i= 0;i<niveles.length;i++) {
		//alert( niveles[i].encodedPoints);
		pun = decode(niveles[i].encodedPoints);
		var encodedPolyline = new GPolyline(pun, colorNSBorde,anchoNSBlanco, 1);
		map.addOverlay(encodedPolyline);
		//color: "#5c909d", verde oscuro 
		//	if ( niveles[i].nivel=='Amarillo'){	
		//	}
    }

    //Pinto luego las lienas de colores
    for(var  i= 0;i<niveles.length;i++)
    {
		var colorNS = calcularColorNS(niveles[i].nivel);
		pun = decode(niveles[i].encodedPoints);
		var encodedPolyline = new GPolyline(pun, colorNS,anchoNSColor, 1);
		map.addOverlay(encodedPolyline);
	}
 }
 
 ///PARA CENTRAR Y MOSTRAR EL POPAP CUANDO SALAE PINCHAS DESDE EL PANEL IZQUIERDO 
 function mostrarDetallesElemento(lng,lat,tipo,codEle,icono,alias,estadoEquipo)
 {
 	
 	var punto = new GLatLng(lat,lng);

	numMarca = marcas4mapa[0].length;
	if (estadoEquipo==1 || estadoEquipo ==2){
		marcaClik= 1;
	 	provReq=objAjaxConIndice.crear("BuscarElementosServlet?accion=getDetalles&codEle="+codEle+"&tipo="+tipo+"&indiceMapa=0","setMSG");
	
 		map.addOverlay(crearMarcas(punto,tipo,codEle,alias,icono,estadoEquipo, 0))
	}else{
		 map.panTo(new GLatLng( lat, lng));
	}
 
 }

//metodo que valida si estras en una pagin con panel izquierdo y por lo tanto si hay que cargar o no dicho panel;
function hayPanelIzquierdo(){
		if (desdeBuscador && tipoInfo != "TiemposDeRecorido"){
		  return true;
		}else{
		  return false;
		}
}

//funcion para mostrar o no por defecto los niveles de Servicio
function mostrarNS(bool){
	//alert(bool);
	noQuitarNiveles=bool;
	
	document.getElementById('NivelesServicio_0').checked = !bool;
}

function verMapa(k)
{
		maps[k].setMapType(G_MAP_TYPE); 
		document.getElementById('vistaSatelite_'+k).className=document.getElementById('vistaSatelite_'+k).className.replace('seleccionada','pestanya');
		document.getElementById('vistaMapa_'+k).className=document.getElementById('vistaMapa_'+k).className.replace('pestanya','seleccionada');
}
function verSatelite(k)
{
	 maps[k].setMapType(G_HYBRID_TYPE); 
	 document.getElementById('vistaMapa_'+k).className=document.getElementById('vistaSatelite_'+k).className.replace('seleccionada','pestanya');
	 document.getElementById('vistaSatelite_'+k).className=document.getElementById('vistaSatelite_'+k).className.replace('pestanya','seleccionada');
}



/****************** Parametros.js ***************/
 var zoomBusquedas =14 ;
 var admin_centro_lng =-3.6563873291015625 ;
 var admin_centro_lat =40.51092797298941 ;
 var admin_zoom =14; ;

//		PARAMETROS POR DEFECTO EN EL MAPA  
		var mapa_centro_lng = -4.680176 ;

		var mapa_centro_lat = 40.262761 ;

		var mapa_zoom =6 ;
//		PAHTS 	
		var pathIcoMapa='http://infocar.dgt.es/etraffic/img/ICONenMAPA/';
		var pathIcoPane='http://infocar.dgt.es/etraffic/img/ICONOenPANELES/';
		var pathIcotabl='http://infocar.dgt.es/etraffic/img/ICONenTABLAS/';
		var pathImgCamaras='http://infocar.dgt.es/etraffic/data/camaras/';
//		Parametros de los Niveles de Servico
		var anchoNSBlanco=0;
		var anchoNSColor=0;
		function calcularAnchoNS(map){

			map.getZoomAsync(function(zoom) {	

				switch ( zoom)
				{	case 19:
					case 18:
					case 17: 
						anchoNSBlanco =  30;
						anchoNSColor = 25;
						break;
					case 16: 
						anchoNSBlanco =  21;
						anchoNSColor = 16;
						break;
					case 15: 
						anchoNSBlanco =  15;
						anchoNSColor = 10 ;
						break;
					case 14: 
						anchoNSBlanco =  10;
						anchoNSColor = 6 ;
						break;
					case 13:
 						anchoNSBlanco =  7;
						anchoNSColor = 4;
						break;
					case 12: 
						anchoNSBlanco =  6;
						anchoNSColor = 3;
						break;
					case 11: 
						anchoNSBlanco =  4;
						anchoNSColor = 2;
						break;
 					default: 
 						anchoNSBlanco =  3;
						anchoNSColor = 1;
						break;
					}
			});
		}

		var colorNSBorde= '#0261b0';	//color del borde 
//		Calcula el color del nivel de servico segun el nivel 
		function calcularColorNS(nivel){
				var color= '#CCFFFF';//color por defecto
				if (nivel=='Rojo')
 					color= '#FF0000';
				else if (nivel=='Amarillo')
					color= '#FFFF00';
				else if (nivel=='Verde')
					color= '#66FF00';
				else if (nivel=='Blanco')
					color= '#CCFFFF';
				else if (nivel=='Negro')
					color= '#000000';
			return color;
			}

////		PARAMETROS PARA LOS TIEMPOS DE RECORRIDO 
		var recorrido = new Array();
		var colorTR='#0000ff';
		var zoomTR=13;
		var anchoTR=0;
		function calcularAnchoTR(map){
				switch ( map.getZoom())
				{	case 19:
					case 18: 
					case 17: 
						anchoTR = 35;
						break;
					case 16:
 						anchoTR = 25;
						break;
					case 15:
 						anchoTR = 15 ;
						break;
					case 14:
 						anchoTR = 10;
						break;
					case 13:
 						anchoTR = 7;
						break;
					case 12: 
						anchoTR = 7;
						break;
					case 11:
 						anchoTR = 5;
						break;
					default:  
						anchoTR = 4;
						break;
					}
		}


/************** DEcoder. js *****************/
// These functions decode a polyline pointstring.
// The first is mine and simply links the second function to the form.
function decode (pCodec) {
  var instring;
  var outstring;
  var points = [];
  
  instring = pCodec;
  instring = instring.replace(/\\\\/g, "\\");
  points = decodeLine(instring);
  outstring = "";
  for(i=0; i < points.length; i++) {
    outstring = outstring + points[i][0] + ", " + points[i][1] + "\n";
	//outstring.push = (points[i][0] ,points[i][1]);
  }
	return points;
}

// This function is from Google's polyline utility.
function decodeLine (encoded) {
  var len = encoded.length;
  var index = 0;
  var array = [];
  var lat = 0;
  var lng = 0;

  while (index < len) {
    var b;
    var shift = 0;
    var result = 0;
    do {
      b = encoded.charCodeAt(index++) - 63;
      result |= (b & 0x1f) << shift;
      shift += 5;
    } while (b >= 0x20);
    var dlat = ((result & 1) ? ~(result >> 1) : (result >> 1));
    lat += dlat;

    shift = 0;
    result = 0;
    do {
      b = encoded.charCodeAt(index++) - 63;
      result |= (b & 0x1f) << shift;
      shift += 5;
    } while (b >= 0x20);
    var dlng = ((result & 1) ? ~(result >> 1) : (result >> 1));
    lng += dlng;

    array.push(new GLatLng(lat * 1e-5, lng * 1e-5));
  }

  return array;
}

