﻿//***********************Municipalidad de San Isidro************************//
// MapTools
//***********************Municipalidad de San Isidro************************//

var browserName = navigator.appName.substring(0,8); //nombre corto del browser
  var objMapa;
  var BrowserId = 0;

  /* reconoce el browser */

  if (browserName=='Netscape') browserId=1;
  else if (browserName=='Microsof'){
    browserId=2;
  }

//************************************************************************************************//

//INICIO***************************************function getMyMap(cuantas)***************************************INICIO//
//*** funcion que recibe un parametro (cuantas), el cual indica a cuantas ventanas, enlaces o frames esta el mapa  ***//
//*** para poder seleccionar un objeto dentro de el.                                                               ***//
//*** validaa con que tipo de browser se esta visualizando la informacion (NetScape o microsoft).                  ***// //*****************************Elaborado por Dany Gil Cuzco -  DANYGILC@HOTMAIL.COM***********************************//
function getMyMap(cuantas){
    if ( browserId==1)
        objMapa = top.frames['ifGIS'].document.map;
     else{
        objMapa = top.frames['ifGIS'].document.map;
		//objMapa.focus();
     }
	return objMapa;
}
//********************************************************************************************************************//
function ObtenerCodigo(){
   var map = getMyMap(1);
   var selected = map.getSelection();
   var numSelectedObjects = selected.getNumObjects();
   var mapObjects = selected.getMapObjectsEx(null);
   if(mapObjects.size()==1){
    if((mapObjects.item(0).getMapLayer().getName()=="lay_lotes") ||
        (mapObjects.item(0).getMapLayer().getName()=="lay_Busqueda")){
            var key = mapObjects.item(0).getKey();
            return key;
    }else{
        alert("Debe seleccionar un Lote");
    }
   }else{
    alert("Debe seleccionar solo un Lote");
   }
   /*
   for (var i = 0; i < mapObjects.size(); i++){
        var layerName = mapObjects.item(i).getMapLayer().getName();
        var key = mapObjects.item(i).getKey()
        return key;
   }
   */
}

//*************************************************************************************************//
function navegacion(comando)
{   
	if ( comando == 'copyMap')               getMyMap(1).copyMap();
	if ( comando == 'selectMode')            getMyMap(1).selectMode();
    if ( comando == 'panMode')               getMyMap(1).panMode();
    if ( comando == 'zoomInMode')            getMyMap(1).zoomInMode();
    if ( comando == 'zoomOutMode')           getMyMap(1).zoomOutMode();
    if ( comando == 'zoomPrevious')          getMyMap(1).zoomPrevious();	
    if ( comando == 'zoomSelected')          getMyMap(1).zoomSelected();
	if ( comando == 'zoomOut')               {
	                                          //getMyMap(1).zoomOut();
	                                          var g = getMyMap(1).zoomWidth(-12.095915,-77.034809, 4,'MI');
	                                          //alert(g);
	                                         }

	if ( comando == 'viewDistance')          getMyMap(1).viewDistance("KM") ;
	if ( comando == 'viewReport')            getMyMap(1).viewReportsDlg();
	if ( comando == 'pageSetupDlg')          getMyMap(1).pageSetupDlg();
	if ( comando == 'stop')                  getMyMap(1).stop();
	if ( comando == 'enviarCodigo')
	{
        var CodLote=ObtenerCodigo();
        
        if(CodLote!=null)
        {
            var features = 
            "height=600,"
            +"left=0,"
            +"resizable=yes,"
            +"scrollbars=yes,"
            +"status=yes,"
            +"titlebar=no,"
            +"toolbar=no,"
            +"top=0,"
            +"width=800";
            var oNewWindow = window.open( "../DetalleGIS/frmParametroUrbanistico.aspx?codlote=" + ObtenerCodigo(),"frmParametroUrbanistico",features)
            oNewWindow.focus();
        }

        /*var CodLote=ObtenerCodigo();
        
        if(CodLote!=null)
        {   
            var features = 
            "height=600,"
            +"left=0,"
            +"resizable=no,"
            +"scrollbars=no,"
            +"status=yes,"
            +"titlebar=no,"
            +"toolbar=no,"
            +"top=0,"
            +"width=750";
            var oNewWindow = window.open( "../Informacion/frmLote.aspx?CodLote=" + CodLote,"frmLote",features)
            oNewWindow.focus();
        }*/
	}

	if ( comando == 'ayuda') {
	    var features = 
   		       "height=465,"
   		       +"left=0,"
   		       +"resizable=no,"
   		       +"scrollbars=no,"
   		       +"status=no,"
   		       +"titlebar=no,"
   		       +"toolbar=no,"
   		       +"top=0,"
   		       +"width=600";
               var oWindowHelp = window.open( "../GIS/frmGISHelp.aspx","frmGISHelp",features)
               oWindowHelp.focus();
	}             	

    //if ( comando == 'digitizePoint')         getMyMap(1).digitizePoint();
    if ( comando == 'Clear')                 getMyMap(1).getSelection().clear();
    //if ( comando == 'selectRadiusMode')      getMyMap(1).selectRadiusMode();
    //if ( comando == 'selectPolygonMode')     getMyMap(1).selectPolygonMode();
	//if ( comando == 'selectMapObjectsDlg')   getMyMap(1).selectMapObjectsDlg();
   // if ( comando == 'printDlg')              getMyMap(1).printDlg();
  
    if ( comando == 'Acercar')
    { var ancho = getMyMap(1).getWidth('KM');
       if (ancho > 0.01) getMyMap(1).setWidth(ancho/1.5,'KM');
    }
    if ( comando == 'Alejar')
    { var ancho = getMyMap(1).getWidth('KM');
       if (ancho < 170) getMyMap(1).setWidth(ancho*1.5,'KM');
    }
    
    if ( comando == 'Imprimir Reporte')
    {  
        /*
        var url = "imprimir.asp?OBJ_KEYS=";
        if (getMyMap(1).Selection.NumObjects == 1)
        {  url += getMyMap(1).Selection.getMapObjects("Distritos").item(0).Key;
           url += "&URL=\"" + getMyMap(1).Url + "\"";
           url += "&Scale=" + getMyMap(1).getScale();
           url += "&Lat=" + getMyMap(1).Lat;
           url += "&Lon=" + getMyMap(1).Lon;
           window.open(url,"imprimir","location,width=480,height=542,left=20,top=0");
	    }
	    else alert ('Seleccione un predio.');
	    */
    }
    
    if ( comando == 'Ver Informacion')
    {    
        /*
       if (getMyMap(1).Selection.NumObjects == 1) parent.frames['principal'].onDoubleClickObject (getMyMap(1).Selection.getMapObjects("Distritos").item(0));
	   else
	   { if (getMyMap(1).Selection.NumObjects > 1)
	     { var url = "reportePredios.asp?IDS=";
           var i = getMyMap(1).Selection.NumObjects - 1;
	       var k = 0;
	       for (k=0;k<=i;k++)
	       { url = url + "'" + getMyMap(1).Selection.getMapObjects("Predios").item(k).Key + "'";
	         if (k<i) url = url + ",";
		   }
           window.open(url,"reportes","scrollbars=yes,width=750,height=342,left=20,top=170");
	     }
	     else alert ("Debe hacer una selección.")
	   }
	   */	 
	}
}
//**************************************************************************///
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  Function: 	GoToOrigAncho(lat, lon, ancho)
+  Description:	Zooms to the lat lon specified with a width of 280 ft	+
+  Arguments:	lat, lon												+
+  Ruturn:	none													+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
function GoToOrigAncho(lat, lon, ancho, unidades)
{
    var objMapa = getMyMap(1);
	if (objMapa.isBusy() == false) objMapa.zoomWidth(lat, lon, ancho, 100);
	else mensajeOcupado();
}

//*****************************************************************************//
function ver(comando)
{   if (comando == 'Consultas') parent.frames['iniciomenu'].location='iniciomenu.asp?ACC=consultas';
    if (comando == 'Reportes')  parent.frames['iniciomenu'].location='iniciomenu.asp?ACC=reportes';
    if (comando == 'Opciones')  parent.frames['iniciomenu'].location='iniciomenu.asp?ACC=opciones';
}
//**********************************************************//
function mostrar(Opcion)
{
   var objMapa = getMyMap(1);
   if (Opcion == 'StatusBar')
   { if (objMapa.StatusBar == 'On') objMapa.StatusBar = 'Off';
     else objMapa.StatusBar = 'On';
   }
   if (Opcion == 'ToolBar')
   { if (objMapa.ToolBar == 'On') objMapa.ToolBar = 'Off';
     else objMapa.ToolBar = 'On';
   }
   if (Opcion == 'Leyenda')
   { 
     if (objMapa.LayersViewWidth <= 1) objMapa.LayersViewWidth = 180;
     else objMapa.LayersViewWidth = 0;
   }
}
//***************************************************************************//
//*********************************************************************************************
function onBusyStateChanged (map, busyState){
  if (busyState == true ){ 
  
  window.status = "Cargando mapa... (Presione Detener para interrumpir la carga)";}
  else window.status = "Listo.";
}


//INICIO***************************************onViewChanging(map)************************************INICIO//
//*** funcion que recibe como parametro el mapa desde el archivo "mapa_si.asp", verifica si los grupos de las capas***//
//*** estan habilitados o en ejecucion , si es asi los expande , sino los colapsa(los deja agrupados en la capa    ***//
//*** grupo a la que pertennece, esto se ejecuta cada vez que la vista del mapa cambia                             ***//
//********************************************************************************************************************//
function onViewChanging(map){

		var layergrupo = map.getMapLayerGroups();//inicializa la variable con la coleccion de grupos de layers
		var objgrupo;
		var nombrelayergrupo;
		for(i=0;i<layergrupo.size();i++) {
			objgrupo = layergrupo.item(i);//consigue el objeto(grupo) con el indice especificado 
			nombrelayergrupo = objgrupo.getName();//consigue el nombre del grupo
			if(objgrupo.getShowInLegend()) {// verifica si ese grupo esta siedo mostrado a ese nivel en el mapa
				if(!objgrupo.Visibility){//verifica si el grupo esta habilitado o activado(siendo utilizado)
					objgrupo.collapse()//si el grupo no esta siendo utilizado, es colapsado
        		}else{objgrupo.expand()}//si el grupo esta siendo utilizado, se expande
			}
		}
}
//********************************************************************************************************************//
//FIN***********************************************onViewChanging(map)********************************************FIN//




//////////DGC///////DGC//////DGC//////DGC////////DGC//////////DGC//////////DGC/////////////
//////////DGC///////DGC//////DGC//////DGC////////DGC//////////DGC//////////DGC/////////////
//CLICK DERECHO DEL MOUSE
/*var mensaje="Municipalidad de San Isidro";
function Toussaint(A) {
if (document.all) {
if (event.button == 2) {
alert(mensaje);
return false;
}
}
if (document.layers) {
if (A.which == 3) {
alert(mensaje);
return false;
}
}
}*/
//***************************


//INICIO*************************************function buscar_lote(lote,unidad)**********************************INICIO//
//*** funcion que recibe dos parametros (lote, unidad) busca uno o varios objetos(lotes) que tengan el mismo       ***//
//*** codigo los selecciona y les hace un acercamiento a una escala segun su dimension, sino envia mensaje de error***//
//*** Si la cantidad de digitos entre lote y unidad es 14 se llamama a la funcion abrir reporte.                   ***// //*****************************Elaborado por Dany Gil Cuzco -  DANYGILC@HOTMAIL.COM***********************************//
//********************************************************************************************************************//
//FIN****************************************function buscar_lote(lote,unidad)*************************************FIN//

//INICIO**********************************************acercamiento()********************************************INICIO//
//***  funcion que efectua el acercamiento a los objetos seleccionados a un factor de escala, si el objeto es      ***//
//***  demasiado pequeño se le da un ancho a la pantalla de 250, si esta en un rango de 200 a 600 se le da un      ***//
//***  ancho de 350, si la escal es mayor a 4600 se selcciona el objeto abarcando todo su contorno en la pantalla  ***// //********************************************************************************************************************//
function Acercamiento(){
		var map = getMyMap(1);
		if (!map.isBusy()){//si el mapa no está ocupado ejecuta la sentecia
		var ScalaAct = map.getScale();//consigue la escala actual del mapa
						//var NewScale = ScalaAct + (ScalaAct * 1.80); //genera una nueva escala
						var NewScale = ScalaAct * 5.50; 
						map.setscale(NewScale);	//estable la nueva escala en el mapa
						//si la escala es pequeña para el lote se establece un ancho
						if (map.getScale()<340)map.setscale(ScalaAct * 6.00);
//						if (map.getScale()>10000)map.setscale(ScalaAct * 1.10);
//						if (map.getScale()<200)map.setWidth(250,"M");
//						if (map.getScale()>200 & map.getScale()<600 )map.setWidth(350,"M");
//						if (map.getScale()>4600)map.zoomSelected();
						map.setAutoRefresh(true);//se establece el auto refresh
 						map.refresh();//se refresca el mapa y muestra todos los cambios
		}
}
//********************************************************************************************************************//
//FIN*************************************************acercamiento()***********************************************FIN//


//*************************************///
function borra_buffer(){
  var map = getMyMap(1);
  map.removeMapLayer("Buffer");
}

//*************************************///
//deshabilita las teclas esc, f1,f2,....f12
function deshabilitar() { 
// puede llamar a ejecutar un programa con location.href = "ejemplo.asp"; 
    switch(window.event.keyCode) { 
        case  27 : event.keyCode = 0; return false; // Esc 
        case 113 : event.keyCode = 0; return false; // F2 
        case 114 : event.keyCode = 0; return false; // F3 
        case 115 : event.keyCode = 0; return false; // F4 
        case 116 : event.keyCode = 0; return true;  // F5 
        case 117 : event.keyCode = 0; return false; // F6 
        case 118 : event.keyCode = 0; return false; // F7 
        case 119 : event.keyCode = 0; return false; // F8 
        case 120 : event.keyCode = 0; return false; // F9 
        case 121 : event.keyCode = 0; return false; // F10 
        case 122 : event.keyCode = 0; return false; // F11 
        case 123 : event.keyCode = 0; return false; // F12 
        default : 
        break; 
    } 
} 

//*************************************///
//evita que aparesca la x al no mostrar una imagen(el recuadro de la imagen sale en blanco)
function Error_Cargar() {
window.event.srcElement.style.display = "none";
}

function layerOnOff(name)
{
    var map = getMyMap(1);
    var layer = map.getMapLayer(name);
    
    if (layer == null)
        alert("layer not found.");
    else
        layer.setVisibility(!layer.getVisibility());
        
    map.refresh();
}

//************************************************************************
//Ubicar Via, Sub Sector Vecinal y Lote
function UbicarVia(codvia){
	var map = getMyMap(1);
	var sel = map.getSelection();//almacena todos los objetos seleccionados
	var objeto = map.getMapLayer("lay_vias").getMapObject(codvia); //almacena las vias de la capa  lay_vias_busqueda
		if(objeto != null){ // pregunta si la variable objeto esta llena, si es asi ejecuta la sentencia, sino envia mensaje
    		 		map.setAutoRefresh(false);//previene el estado ocupado
					if (!map.isBusy()){//si el mapa no esta ocupado ejecuta la sentecia
 						sel.clear();// Limpia la seleccion existente(si existe alguna)
 						sel.addObject(objeto, false);//adiciona los elementos obtenidos de la variable objeto a la seleccion
						//map.zoomSelected();
						setTimeout("getMyMap(1).zoomSelected()",100);// hace Zoom a elementos selccionados despues de cierto tiempo
						map.refresh();//se refresca el mapa y muestra todos los cambios
						setTimeout("Acercamiento()",200);	// llamada ala funcion acercamiento() despues de cierto tiempo
					}
		}else alert ("La Vía tal vez este en proceso de un \ncambio de nomenclatura ");  //mensaje de error
}

function UbicarSubSectorVecinal(CodSubSectorVecinal)
{
	var map = getMyMap(1);
	
	var sel = map.getSelection();//almacena todos los objetos seleccionados
	var objeto = map.getMapLayer("lay_SubSectorVecinalBusq").getMapObject(CodSubSectorVecinal); //almacena las vias de la capa  lay_vias_busqueda
		if(objeto != null){ // pregunta si la variable objeto esta llena, si es asi ejecuta la sentencia, sino envia mensaje
    		 		map.setAutoRefresh(false);//previene el estado ocupado
					if (!map.isBusy()){//si el mapa no esta ocupado ejecuta la sentecia
 						sel.clear();// Limpia la seleccion existente(si existe alguna)
 						sel.addObject(objeto, false);//adiciona los elementos obtenidos de la variable objeto a la seleccion
						//map.zoomSelected();
						setTimeout("getMyMap(1).zoomSelected()",100);// hace Zoom a elementos selccionados despues de cierto tiempo
						//map.refresh();//se refresca el mapa y muestra todos los cambios
						setTimeout("AcercamientoSubSectorVecinal()",200);	// llamada a la funcion AcercamientoSubSectorVecinal() despues de cierto tiempo
					}
		}else alert ("Sub Sector Vecinal no Existe");  //mensaje de error
}

function UbicarLote(CodLote)
{
	var map = getMyMap(1);
	var sel = map.getSelection();//almacena todos los objetos seleccionados
	var objeto = map.getMapLayer("lay_Busqueda").getMapObject(CodLote); //almacena las vias de la capa  lay_vias_busqueda
		if(objeto != null){ // pregunta si la variable objeto esta llena, si es asi ejecuta la sentencia, sino envia mensaje
    		 		map.setAutoRefresh(false);//previene el estado ocupado
					if (!map.isBusy()){//si el mapa no esta ocupado ejecuta la sentecia
 						sel.clear();// Limpia la seleccion existente(si existe alguna)
 						sel.addObject(objeto, false);//adiciona los elementos obtenidos de la variable objeto a la seleccion
						//map.zoomSelected();
						setTimeout("getMyMap(1).zoomSelected()",100);// hace Zoom a elementos selccionados despues de cierto tiempo
						//map.refresh();//se refresca el mapa y muestra todos los cambios
						setTimeout("Acercamiento()",200);	// llamada ala funcion acercamiento() despues de cierto tiempo
					}
		}else alert ("Lote no Existe");  //mensaje de error
}

function getLotes(obj)
{
    var codigos = "";
    var map = getMyMap(1);
    var sel = map.getSelection();
    if (map.getSelection().getNumObjects() == 0)
    {
        //alert ("Seleccione un elemento");
        return "Seleccione al Menos un Lote";
    }
    var sel = map.getSelection();
    var objs = sel.getMapObjectsEx(null);
    var cntObjects = objs.size();
    //var msg = "Codigos de Elementos seleccionados son:\n";
    for (i=0;i<cntObjects;i++)
    {
        var obj=objs.item(i);
        var key=obj.getKey();
        if(obj.getMapLayer().getName()=="lay_lotesBusq"){
            codigos = codigos + key+","
        }
        //msg=msg + obj.getMapLayer().getName() + " " + key + "\n";
    }
    //alert(codigos);
    return codigos;
    
}

