// Utilidades para MapBuilder

function localizar(coords){
	document.getElementById("ventana_popup").style.display="none";
				
	if (coords == ",")
	{
		alert("Calle sin referencia geométrica");
	}
	else{
		var coord = coords.split(",");
		var x = parseFloat(coord[0]);
    	var y = parseFloat(coord[1]);
    	var ul = new Array();// x, y
		var br = new Array();// x, y
		var z;
		ul[0] = parseFloat(x)-200;
		ul[1] = parseFloat(y)+200;
		br[0] = parseFloat(x)+200;
		br[1] = parseFloat(y)-200;
	
 		puntoX=coord[0];
 		puntoY=coord[1];
 		
 		
		drawmultipoint(coords); //jenriquesoriano - para incluir archivo de utilidades de mapbuilder

		// DLR_PATCH_LOCALIZACION_IE window.config.objects.mainMap.extent.zoomToBox(ul, br);
		var boundsglobal = new OpenLayers.Bounds(ul[0], br[1], br[0], ul[1]);
		window.config.objects.mainMap.map.zoomToExtent(boundsglobal);

		window.config.objects.mainMap.map.numZoomLevels = 12;
		z=window.config.objects.mainMap.map.getZoom();
		aumentaImagen(Math.round(z)+1);
	}
}

//localizar con informacion
function localizarConInformacion(coords,nombre,localidad,direccion,telefono){
	document.getElementById("ventana_popup").style.display="none";
				
	if (coords == ",")
	{
		alert("Calle sin referencia geométrica");
	}
	else{
		var coord = coords.split(",");
		var x = parseFloat(coord[0]);
    	var y = parseFloat(coord[1]);
    	var ul = new Array();// x, y
		var br = new Array();// x, y
		var z;
		ul[0] = parseFloat(x)-150;
		ul[1] = parseFloat(y)+150;
		br[0] = parseFloat(x)+150;
		br[1] = parseFloat(y)-150;
	
 		puntoX=coord[0];
 		puntoY=coord[1];
 		
		drawmultipoint(coords,nombre,localidad,direccion,telefono); //jenriquesoriano - para incluir archivo de utilidades de mapbuilder
		
		//DLR_PATCH_LOCALIZA_IE window.config.objects.mainMap.extent.zoomToBox(ul, br);
		config.objects.mainMap.map.setCenter(new OpenLayers.LonLat(puntoX, puntoY), 0);//MDRC_PATCH_PINTADO_FIREFOX 
		var boundsglobal = new OpenLayers.Bounds(ul[0], br[1], br[0], ul[1]);
		window.config.objects.mainMap.map.zoomToExtent(boundsglobal);
		
		window.config.objects.mainMap.map.numZoomLevels = 12;
		z=window.config.objects.mainMap.map.getZoom();
		aumentaImagen(Math.round(z)+1);
	
	}
}


//localizarInicial para x e y
function localizarInicial(coords){
	if (coords == ",")
	{
		alert("Calle sin referencia geométrica");
	}
	else{
		var coord = coords.split(",");
		if(!(coord[0] == "null"))
    	{
    	if(!(coord[1] == "null"))
    	{
    	//Hay x e y como parametros iniciales
    	var x = parseFloat(coord[0]);
    	var y = parseFloat(coord[1]);
    	var ul = new Array();// x, y
		var br = new Array();// x, y
		var z;
		ul[0] = parseFloat(x)-200;
		ul[1] = parseFloat(y)+200;
		br[0] = parseFloat(x)+200;
		br[1] = parseFloat(y)-200;
	
 		puntoX=coord[0];
 		puntoY=coord[1];
 		
		window.config.objects.mainMap.extent.zoomToBox(ul, br);

		var punto = coord[0] + "," + coord[1];
		drawmultipoint(punto); //jenriquesoriano - para incluir archivo de utilidades de mapbuilder


		window.config.objects.mainMap.map.numZoomLevels = 12;
		z=window.config.objects.mainMap.map.getZoom();
		aumentaImagen(Math.round(z));
		}
		}
		
		if(!(coord[2] == "null"))
		{
		if(!(coord[3] == "null"))
		{
		
			//Hay bbox y location como parametros iniciales
			  var xMin = parseFloat(coord[4]);
                    var yMax = parseFloat(coord[7]);
                    var xMax = parseFloat(coord[5]);
                    var yMin = parseFloat(coord[6]); 
    	
    	var ul = new Array();// x, y
		var br = new Array();// x, y
		var z;
		ul[0] = parseFloat(xMin);
		ul[1] = parseFloat(yMax);
		br[0] = parseFloat(xMax);
		br[1] = parseFloat(yMin);
	
 		puntoX=coord[2];
 		puntoY=coord[3]; 		
 		
		window.config.objects.mainMap.extent.zoomToBox(ul, br);

		var punto = coord[2] + "," + coord[3];
		drawmultipoint(punto); //jenriquesoriano - para incluir archivo de utilidades de mapbuilder


		window.config.objects.mainMap.map.numZoomLevels = 12;
		z=window.config.objects.mainMap.map.getZoom();
		aumentaImagen(Math.round(z));
		}
		}
		
		if((coord[2] == "null"))
		{
		if(!(coord[3] == "null"))
		{
			//caso en que no hay location pero si bbox, como bbox lo hace solo mapbuilder, solo actualizamos la imagen de escalas
			window.config.objects.mainMap.map.numZoomLevels = 12;
			z=window.config.objects.mainMap.map.getZoom();
			aumentaImagen(Math.round(z));
		}
		}
	}
}

//localizarInicial para x e y
function localizarInicialConInformacion(coords){
	if (coords == ",")
	{
		alert("Calle sin referencia geométrica");
	}
	else{		
		var coord = coords.split(",");
		
		if(!(coord[0] == "null"))
    	{
    	   	if(!(coord[1] == "null"))
	    	{
		    	//Hay x e y como parametros iniciales
		    	var x = parseFloat(coord[0]);
		    	var y = parseFloat(coord[1]);
		    	var ul = new Array();// x, y
				var br = new Array();// x, y
				var z;
				ul[0] = parseFloat(x)-200;
				ul[1] = parseFloat(y)+200;
				br[0] = parseFloat(x)+200;
				br[1] = parseFloat(y)-200;
			
		 		puntoX=coord[0];
		 		puntoY=coord[1];
		 		
				window.config.objects.mainMap.extent.zoomToBox(ul, br);
		
				var punto = coord[0] + "," + coord[1];
				drawmultipoint(punto); //jenriquesoriano - para incluir archivo de utilidades de mapbuilder
				
				window.config.objects.mainMap.map.numZoomLevels = 12;
				z=window.config.objects.mainMap.map.getZoom();
				aumentaImagen(Math.round(z));
			}
		}		
		
		if(!(coord[2] == "null"))				//location
		{			
			if(!(coord[3] == "null"))			//bbox x
			{
				if(!(coord[4] == "null"))		//bbox x
				{
					if(!(coord[5] == "null"))	//bbox y
					{
						if(!(coord[6] == "null"))	//bbox y
						{
							if(!(coord[7] == "null")) 
							{
		
								//Hay bbox y location como parametros iniciales
								var valor1 = parseFloat(coord[4]);
								var valor2 = parseFloat(coord[5]);
								var valor3 = parseFloat(coord[6]);
								var valor4 = parseFloat(coord[7]);
								
								var tmp = [valor1,valor2,valor3,valor4];//[5,9,12,18,56,1,10,42,30,7,97,53,33,35,27];
								tmp=tmp.sortNum(); // devuelve 1,5,7,9,10,12,18,27,30,33,35,42,53,56,97 
											
								var xMin = parseFloat(tmp[0]);
					    		var yMax = parseFloat(tmp[3]);
					    		var xMax = parseFloat(tmp[1]);
					    		var yMin = parseFloat(tmp[2]);
								
								//var xMin = parseFloat(coord[4]);
					    		//var yMax = parseFloat(coord[7]);
					    		//var xMax = parseFloat(coord[5]);
					    		//var yMin = parseFloat(coord[6]);
					    	
						    	var ul = new Array();// x, y
								var br = new Array();// x, y
								var z;
								ul[0] = parseFloat(xMin);
								ul[1] = parseFloat(yMax);
								br[0] = parseFloat(xMax);
								br[1] = parseFloat(yMin);
							
						 		puntoX=coord[2];
						 		puntoY=coord[3]; 		
						 		
								window.config.objects.mainMap.extent.zoomToBox(ul, br);
						
								var punto = coord[2] + "," + coord[3];
								if(coord[8] == "null")
									drawmultipoint(punto); //jenriquesoriano - para incluir archivo de utilidades de mapbuilder
								else
									drawmultipoint(punto,coord[8],coord[9],coord[10],coord[11]);
						
						
								window.config.objects.mainMap.map.numZoomLevels = 12;
								z=window.config.objects.mainMap.map.getZoom();
								aumentaImagen(Math.round(z));
							}
						}
					}
				}
			}
		}
		
		if((coord[2] == "null"))
		{		
			if(!(coord[3] == "null"))
			{
				if(!(coord[4] == "null"))
				{
					if(!(coord[5] == "null"))
					{
						if(!(coord[6] == "null"))
						{
							//caso en que no hay location pero si bbox, como bbox lo hace solo mapbuilder, solo actualizamos la imagen de escalas
							var valor1 = parseFloat(coord[3]);
							var valor2 = parseFloat(coord[4]);
							var valor3 = parseFloat(coord[5]);
							var valor4 = parseFloat(coord[6]);
							
							var tmp = [valor1,valor2,valor3,valor4];//[5,9,12,18,56,1,10,42,30,7,97,53,33,35,27];
							tmp=tmp.sortNum(); // devuelve 1,5,7,9,10,12,18,27,30,33,35,42,53,56,97 
										
							var xMin = parseFloat(tmp[0]);
				    		var yMax = parseFloat(tmp[3]);
				    		var xMax = parseFloat(tmp[1]);
				    		var yMin = parseFloat(tmp[2]);
				    		
				    		var ul = new Array();// x, y
							var br = new Array();// x, y
							var z;
							ul[0] = parseFloat(xMin);
							ul[1] = parseFloat(yMax);
							br[0] = parseFloat(xMax);
							br[1] = parseFloat(yMin);
						
				    		window.config.objects.mainMap.extent.zoomToBox(ul, br);
				    					
							window.config.objects.mainMap.map.numZoomLevels = 12;
							z=window.config.objects.mainMap.map.getZoom();
							aumentaImagen(Math.round(z));	
						}
					}
				}
			}
		}
		
	}
}

Array.prototype.sortNum = function() {
return this.sort( function (a,b) { return a-b; } );
} 
		
function localizarExtension(minx, miny, maxx, maxy ){
	document.getElementById("ventana_popup").style.display="none";
		
	var ul = new Array();// x, y
	var br = new Array();// x, y
	var z;
				
	ul[0] = minx;
	ul[1] = maxy;
	br[0] = maxx;
	br[1] = miny;
	
	window.config.objects.mainMap.extent.zoomToBox(ul, br);
	window.config.objects.mainMap.map.numZoomLevels = 12;
	z=window.config.objects.mainMap.map.getZoom();
	
	if(Math.round(z)==5){
	aumentaImagen(6);}
	else if(Math.round(z)==7){
	aumentaImagen(8);}
	else{
	aumentaImagen(Math.round(z)+1);
	
	}
	
}

function irPoblacionA(pagina)
{
	document.getElementById("paginaPoblaciones").value=pagina;
}

function totalPoblacion(numero)
{
	document.getElementById("totalPoblaciones").value=numero;
}

function irOrganismoA(pagina)
{
	document.getElementById("paginaOrganismos").value=pagina;
}

function totalOrganismo(numero)
{
	document.getElementById("totalOrganismos").value=numero;
}

function irServicioA(pagina)
{
	document.getElementById("paginaServicios").value=pagina;
}

function totalServicio(numero)
{
	document.getElementById("totalServicios").value=numero;
}

function irCarreteraA(pagina)
{
	document.getElementById("paginaCarreteras").value=pagina;
}

function totalCarretera(numero)
{
	document.getElementById("totalCarreteras").value=numero;
}


/*
var vectorlayer_style = null;
var vectorLayerGlobal = null;
var style_blue = null;
var style_green = null;


function inicializar(){
	if(vectorlayer_style == null){
		vectorlayer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
	    vectorlayer_style.fillOpacity = 0.2;
	    vectorlayer_style.graphicOpacity = 1;
	}
	
	if(style_blue == null){
		style_blue = OpenLayers.Util.extend({}, vectorlayer_style);
	    style_blue.strokeColor = "blue";
	    style_blue.fillColor = "blue";
	}
	
	if(style_green == null){
		style_green = OpenLayers.Util.extend({}, vectorlayer_style);
        style_green.strokeColor = "#00FF00";
        style_green.strokeWidth = 3;
		style_green.pointRadius = 6;
	}
	
	if(vectorLayerGlobal == null){
		vectorLayerGlobal =  new OpenLayers.Layer.Vector("Simple Geometry", {style: vectorlayer_style});
		config.objects.mainMap.map.addLayer(vectorLayerGlobal);
	}

}
function drawmultipoint(strmultipoint){
	inicializar();
	
	var pointlist = [];
	var arraypoint = strmultipoint.split(" ");
	var coord = null;
	var newpoint = null;
	var multipoint = null;
	var multipointfeature = null;
	
//	initolvars();
	
	for(var p = 0; p < arraypoint.length; p++) {
		coord = arraypoint[p].split(",");
		newpoint = new OpenLayers.Geometry.Point(coord[0], coord[1]);
		pointlist.push(newpoint);
 	}
	multipoint = new OpenLayers.Geometry.MultiPoint(pointlist);
	multipointfeature = new OpenLayers.Feature.Vector(multipoint,null,style_blue);
	
	vectorLayerGlobal.addFeatures([multipointfeature]);
}
	
	
	function drawmultiline(){
            // we want opaque external graphics and non-opaque internal graphics
            var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            layer_style.fillOpacity = 0.2;
            layer_style.graphicOpacity = 1;

            var style_green_line = {
                strokeColor: "#00FF00",
                strokeWidth: 3,
                pointRadius: 6,
                pointerEvents: "visiblePainted"
            };
            

            // create a point feature
            var point = new OpenLayers.Geometry.Point(270000, 4150000);
            // create a line feature from a list of points
            var pointList = [];
            var newPoint = point;
		
            for(var p=0; p<5; ++p) {
			var a = p * (2 * Math.PI) / 7;
                var r = 50000*(Math.random(1) + 1);
                var newPoint = new OpenLayers.Geometry.Point(point.x + (r * Math.cos(a)),
                                                             point.y + (r * Math.sin(a)));
                pointList.push(newPoint);
            }
            var lineFeature = new OpenLayers.Feature.Vector(
                new OpenLayers.Geometry.LineString(pointList),null,style_green_line);

            config.objects.mainMap.map.addLayer(vectorLayerGlobal);
//		config.objects.mainMap.map.setCenter(new OpenLayers.LonLat(point.x, point.y), 5);
            vectorLayerGlobal.addFeatures([lineFeature]);
	}


	function drawmultipolygon(){
            
            // create a point feature
            var point = new OpenLayers.Geometry.Point(370000,4150000);
            
		// create a polygon feature from a linear ring of points
            var pointList = [];
            for(var p=0; p<6; ++p) {
                var a = p * (2 * Math.PI) / 7;
                var r = 100000*(Math.random(1) + 1);
                var newPoint = new OpenLayers.Geometry.Point(point.x + (r * Math.cos(a)),
                                                             point.y + (r * Math.sin(a)));
                pointList.push(newPoint);
            }
            pointList.push(pointList[0]);

            var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
            var polygonFeature = new OpenLayers.Feature.Vector(
                new OpenLayers.Geometry.Polygon([linearRing]));



            config.objects.mainMap.map.addLayer(vectorLayerGlobal);
//            map.setCenter(new OpenLayers.LonLat(point.x, point.y), 5);
            vectorLayerGlobal.addFeatures([polygonFeature]);
	}

function eraselayer(){
	if(vectorLayerGlobal != null)
		vectorLayerGlobal.destroyFeatures();
//	config.objects.mainMap.map.removeLayer(vectorLayerGlobal);
}

*/
