Drawer = new Object();


Drawer.layers = new Array();// capa
Drawer.marker = null; // objeto actual
Drawer.mapa = null; // objeto mapa
Drawer.interval = null;
Drawer.baseLayer = null; // base layer
Drawer.CLASS_NAME="DRAWER";




Drawer.initMap = function (lon, lat, zoom, baseTitle, layersTitle){

	var center = new MapManager.GeographicPoint(lat, lon);
	Drawer.mapa = new MapManager.GenericMap('map',null,null,null);
		     
		   
		     

 	
	for( var i =0; i<maps.length;i++){
		
		var layer = Drawer.mapa.setProvider(maps[i].type,maps[i].options);
		maps[i].olId = layer.id;
	}
	Drawer.mapa.setCenter(center,zoom);
	  			
 		       	//control.maximizeControl(); 
	
	
	
	layers = [];

	/**
	 * 
	 * 
	 * 
	
	var polilinea = Drawer.mapa.getObject("LINE1",nc2.id);
	if (polilinea==null)
	{
		//alert("add polilinea");
		polilinea = Drawer.mapa.addPolyline(nc2);
		polilinea.setId("LINE"+nc2.id);
		
		polilinea.setBorder(true);
		
	}
	//TODO añadir el evento para que desaparecan las polilineas al ocultar la capa
	polilinea.setColor("#FF0000");
	var newObjs=new Array();
	var points = new Array();
	points.push(new MapManager.GeographicPoint(40.52215098562377,-3.672351837158203));
	points.push(new MapManager.GeographicPoint(40.512885610453,-3.643684387207));
	
	polilinea.setPoints(points);
	
	polilinea.show(true);
	newObjs.push(polilinea);
	var numIdLayer = Drawer.mapa.getLayerIndexObject(nc2.id);
	Drawer.mapa.mapObjects[numIdLayer].arr = newObjs;
	
	 */
	////////
	
	
	//var nc = Drawer.mapa.addLayer(nsName,"POLYLINE","ns"+);
	for(var i = 0; i<items.length;i++){
		layers.push(Drawer.mapa.addLayer(items[i].name,"MARKER",items[i].type));
	}
	var inc = Drawer.mapa.addLayer(incName,"MARKER",-2);
	inc.id = "LAYER_INCIDENCE";

	layers.push(inc);
	

	
	for(var i = 0; i<NSlayers.length;i++){
		var layerAct  = Drawer.mapa.addLayer(NSlayers[i].name,"POLYLINE","NS_"+NSlayers[i].type);
	//	nc.id = "LAYER_NS"+NSlayers[i].type;
		layers.push(layerAct);
	}
	
	
	
	Drawer.recargar();
	
	Drawer.mapa.removeListener("moveend", Drawer.mapa, Drawer.mapa.showVisibleObjects, Drawer.mapa.getNativeObject());
	
	Drawer.mapa.addListener("moveend", Drawer.mapa, Drawer.recargar, Drawer.mapa.getNativeObject());

   /*
   //TODO TEST PARA PROBAR EL PUNTO CON PARPADEO Y LINEA A PTO REAL
	var pto = Drawer.mapa.addMarker(layers[2].id)
	pto.setRealPoint(new MapManager.GeographicPoint(40.41092797298941,-3.5563873291015625));
	
	pto.setDrawPoint(new MapManager.GeographicPoint(40.51092797298941,-3.6563873291015625));
	var arrHTMLs = [];
	for( var i = 0; i<16;i++){
		arrHTMLs.push(new MapManager.CHTMLCode(["AAAAAAAAAAAAA","BBBBBB"],2));
	}
	pto.setHTMLList(new MapManager.CHTMLViewList(arrHTMLs));
	//pto.setHTML("AAAAA");
	
	pto.setMinZoom(1);
	pto.setMaxZoom(100);
	pto.show(true);
	*/
	
	Drawer.interval = setTimeout(Drawer.recargar,props.reLoadMapTime*1000);
}

Drawer.recargar= function (){
	
	// Verificar si ha cambiado el mapa base
	var mapId = Drawer.mapa.mapObj.baseLayer.id;
	for (i = 0; i < maps.length; i++) {
		if (maps[i].olId == mapId) {
			if (maps[i].id != Drawer.baseLayer) {
				Drawer.baseLayer = maps[i].id;
				break;
			}
		}
	}
	
	
	for( var i = 0; i<items.length;i++){
		var actLayer = Drawer.mapa.mapObj.getLayer("layerId_"+items[i].type);
		
		if (actLayer.getVisibility())
			Drawer.request(path,'equ',items[i].type, 'N',i);
	}
	for( var i = 0; i<NSlayers.length;i++){
		var actlayerNS = Drawer.mapa.mapObj.getLayer("layerId_NS_"+NSlayers[i].type);
		
		if (actlayerNS.getVisibility()){
			Drawer.request(path, 'sele', NSlayers[i].type, 'N',items.length+i+1);
		}
	}
	
	var inciLayer = Drawer.mapa.mapObj.getLayer("LAYER_INCIDENCE");
	if (inciLayer.getVisibility())
		Drawer.request(path, 'inc', "LAYER_INCIDENCE", 'N', items.length);
	

	clearTimeout(Drawer.interval);
	Drawer.interval = setTimeout(Drawer.recargar,props.reLoadMapTime*1000);
}

Drawer.request= function (path, ele, type, adm,numLayer) {
	// limites
	var lim = Drawer.mapa.getNativeObject().calculateBounds();
	var url = path+"/DataServer?ele="+ele+"&type="+type+"&li="+lim.left+"&ld="+lim.right+"&ln="+lim.top+"&ls="+lim.bottom+"&zoom="+Drawer.mapa.getZoom()+"&adm="+adm+"&mapId="+Drawer.baseLayer+"&lang="+lang;
	
	var capaAct = layers[numLayer];
	if (ele == 'sele'){
		var capa = Drawer.mapa.fillLayer(capaAct.id,"JSON_POLYLINES",url);
	}else{
		var capa = Drawer.mapa.fillLayer(capaAct.id,"JSON",url);
	}
	
}


Drawer.changelayerVisivility = function(){
	
	for(var i = 0; i<layers.length;i++){
		if(layers[i].getVisibility()){
			
		}else{
		
		
		}
		
	}
	
  
  }

Drawer.historicPopUp = function(id, paId) {
	w = window.open(path+"/Control?act=hi&id="+id+"&paId="+paId,'w','width=660,height=430,resizable=0,scrollbars=auto,toolbar=0,menubar=0');
}

Drawer.moreDataPopUp = function(id, ele) {
	if (ele == "equ")
		w = window.open(path+"/Control?act=moDaE&id="+id,'w','width=250,height=430,resizable=0,scrollbars=auto,toolbar=0,menubar=0,location=no');
	else if (ele == "inc")
		w = window.open(path+"/Control?act=moDaI&id="+id,'w','width=250,height=430,resizable=0,scrollbars=auto,toolbar=0,menubar=0,location=no');	
}

//TEST 
/*
function destruirYCrear(){
Drawer.mapa.destroy();
initMap(-3.6563873291015625, 40.51092797298941,13 ,'Proveedor', 'Capas');
}*/

/////////////////////////PARA LOS INTERVALOS EN LOS PANELES;
	
	
	
function panel(){
	this.id
	this.leftImg1;
	this.leftImg2;
	this.rightImg1;
	this.rightImg2;
	this.text1;
	this.text2;
}



//Estado en el que se encuentra el panel
Drawer.estadoB=1;
Drawer.paneles = [];
Drawer.panelInterval = null;
Drawer.startBlink = function(id,data){

	
	var objPanel = null;
	
	for (i = 0 ; i < data.length; i++) {
		if (data[i].length > 1 && data[i][1] != "") { // entonces hay alternancia
	
			objPanel = new panel(); // partimos de que es nuevo
			bNew = true;
			for (var i = 0; i < Drawer.paneles.length; i++) {
				if (Drawer.paneles[i].id==id){
					objPanel = Drawer.paneles[i];
					bNew = false;
					break;
				}
			}
	
			objPanel.id = id;
			
			objPanel.leftImg1 = data[0][0];
			objPanel.leftImg2 = data[0][1];
			
			if (data.length > 1) {
				objPanel.text1 = data[1][0];  
				objPanel.text2 = data[1][1];
			}
			
			if (data.length > 2) {
				objPanel.rightImg1 = data[2][0];
				objPanel.rightImg2 = data[2][1];
			}

			if (bNew)
				Drawer.paneles.push(objPanel);
		

			if (Drawer.panelInterval == null) {
				Drawer.estadoB = 1;
				Drawer.panelInterval = setInterval("Drawer.cambiaPanelesPop()", props.panelBlinkinterval); 
			}	
	
			break;		
		} else { // eliminar el objeto si está alternando ahora
			for (var i = 0; i < Drawer.paneles.length; i++) {
				if (Drawer.paneles[i].id==id) {
					Drawer.paneles.pop(Drawer.paneles[i]);
					break;
				}
			}
			break;
		}

	}

}


Drawer.cambiaPanelesPop= function() {
//TODO borra del array los paneles cerrados

	for (var i=0;i<Drawer.paneles.length;i++){
		var objPanel = Drawer.paneles[i];
		var pin ='panel_p_I_'+objPanel.id+'';
		var pdn ='panel_p_D_'+objPanel.id+'';
		var txtn='cmsText_'+objPanel.id+''
		try{
		
			if (document.getElementById(pin))
				document.getElementById(pin).src =  eval("objPanel.leftImg"+Drawer.estadoB);
			if (document.getElementById(pdn))
				document.getElementById(pdn).src =  eval("objPanel.rightImg"+Drawer.estadoB);
			if (document.getElementById(txtn))
		    	document.getElementById(txtn).innerHTML =  eval("objPanel.text"+Drawer.estadoB);
	    
		}catch(e){
			//TODO borrar el panel del array 
			Drawer.paneles.splice(i,1);
			if (Drawer.paneles.length<=0){ //Si no hay 
				clearInterval(Drawer.panelInterval);
			}
		}
		
		// Comprobar si el panel está abierto y si no, apagar interval
//		var oPanel = Drawer.mapa.getObject(objPanel.id);
		
//alert(!oPanel.balloonFeature.getNativeObject().popup.visible());
/*		if ((oPanel.balloonFeature != null) &&
			(oPanel.balloonFeature.popup != null) &&
			(!oPanel.balloonFeature.popup.visible())) {
				clearInterval(Drawer.panelInterval);
		}*/
	}		
	
	(Drawer.estadoB==1)?Drawer.estadoB=2:Drawer.estadoB=1;
	
	
}
