﻿//var prm;
//var FlotanteHeight, FlotanteWidth;
var jg;
function cargado()
{
alert("cargado");
    //objCoordenadas = $get("CoordenadasCuerpo");
    objCoordenadas = GE("divCoordenadas");

    LtnWebViewer1.AttachMouseMove(mouseMove);
    LtnWebViewer1.AttachChangeScale(changeScale);

    prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);

    //alert("cargado");    
    //initAutoComplete(GE("busqAuto"));
    
    FlotanteHeight = parseInt(document.documentElement.clientHeight * 0.8, 10);
    FlotanteWidth = parseInt(screen.width - 75, 10);

	jg = new jsGraphics("divPizarra");
	jg.setColor("red");
	jg.setStroke(2);
		
	window.setInterval(callVisitas, 2*60000);
	callVisitas();
}

function callVisitas(x,y)
{
    var ret = WebService.GetVisitas(OnCompleteVisitas, OnTimeOut, OnError, null);
    return true;
}

function OnCompleteVisitas(arg)
{
    if(arg!="")
    {
        var o = arg.split('#');
		GE("usuariosTotal").innerHTML = o[0];
		GE("visitasTotal").innerHTML = o[1];
    }
}

function CancelAsyncPostBack() {
    if (prm.get_isInAsyncPostBack()) {
      prm.abortPostBack();
    }
}
var postBackElement;
function InitializeRequest(sender, args) {
    /*if (prm.get_isInAsyncPostBack()) {
        args.set_cancel(true);
    }
    postBackElement = args.get_postBackElement();
    if (postBackElement.id == 'Panel1Trigger') {
        SetCargando(true);
    }*/
    //alert("InitializeRequest "+sender._postBackSettings.sourceElement.id);
    //SetCargando(true);
}
function EndRequest(sender, args) {
    /*if (postBackElement.id == 'Panel1Trigger') {
            SetCargando(false);
    }*/
    //alert(sender._postBackSettings.panelID);
    //alert(sender._postBackSettings.sourceElement.id);
    var llamada = sender._postBackSettings.sourceElement.id;
    //alert("EndRequest "+llamada);
    if(llamada.indexOf("Button1")>=0)
    {
        LtnWebViewer1.refresh();               
    }

   if (args.get_error() != undefined)
   {
       var errorMessage = args.get_error().message;
       alert(errorMessage);
   }

}

//function abrirHerramientaClick(visor, cursor, clickHandler)
//{
//    visor.ReleaseService();
//    visor.AttachLeftClick(clickHandler);
//    visor.UIVisible(false);
//    visor.SetCursor(cursor);
//    visor.PanEnabled = false;
//    visor.ZoomWinEnabled = false;
//}
function abrirHerramientaClick2(visor, clickHandler)
{
    visor.ReleaseService();
    visor.AttachLeftClick(clickHandler);
    var imgNavigator=document.getElementById(visor.getBaseID() + visor.getGUID() + "_imgNavigator");
    if (imgNavigator!=null)
         visor.UIVisible(false);
    visor.PanEnabled = false;
    visor.ZoomWinEnabled = false;

    bot = document.getElementById("contenedorBotonera"); 
    bot.style.display = 'none';
}


function cerrarHerramientaClick(visor, clickHandler)
{
    visor.DetachLeftClick(clickHandler);
    var imgNavigator=document.getElementById(visor.getBaseID() + visor.getGUID() + "_imgNavigator");
    if (imgNavigator!=null)
        visor.UIVisible(true);
    visor.ReleaseService();
    visor.PanEnabled = false;
    visor.ZoomWinEnabled = true;

    bot = document.getElementById("contenedorBotonera");
    bot.style.display = '';
}

function imprimir()
{
    var titulo = prompt('Escribe un título','Mapa');

    var h = LtnWebViewer1.Height();
    var w = LtnWebViewer1.Width();
    var minx = LtnWebViewer1.MinUtmX();
    var miny = LtnWebViewer1.MinUtmY();
    var maxx = LtnWebViewer1.MaxUtmX();
    var maxy = LtnWebViewer1.MaxUtmY();
    var scale = LtnWebViewer1.GetScale();
    var url = "imprimir.aspx?h="+h+"&w="+w+"&minx="+minx+"&miny="+miny+"&maxx="+maxx+"&maxy="+maxy+"&scale="+scale+"&titulo="+titulo;
    //alert(url);
    abrirVentanaFlotante(url, true);
}

function clickInfo(visor, x, y) 
{ 
    //clickTack(visor, x, y);
    //imprimir()
    callIDFicha(x,y)
    cerrarHerramientaClick(visor, clickInfo);
}

function callIDFicha(x,y)
{
    SetCargando(true);
    var ret = WebService.GetIDFicha(x, y, OnCompleteIDFicha, OnError, null);
    return true;
}

function OnCompleteIDFicha(arg)
{
    if(arg!="")
    {
        //LtnWebViewer1.RefreshView();
        LtnWebViewer1.refreshSystemLayer(WVLayerType.VECTOR);
        //abrirFicha(arg);
    }
    //else
    //    alert("No se ha encontrado ningún elemento cercano.");
    SetCargando(false);
    //q(arg);
}
function OnTimeOut(arg)
{
    alert("Tiempo agotado");//arg.get_message());
    SetCargando(false);
    //q(arg);
}
function OnError(arg)
{
    alert("Error: "+arg.get_message());
    SetCargando(false);
    //alert(arg.get_stackTrace());
    //alert(arg.get_exceptionType());
}

function getInfo()
{
    abrirHerramientaClick(LtnWebViewer1, "help", clickInfo);
}

var escala = 0;
var objCoordenadas;
var cont=0;
function mouseMove(visor, x, y)
{   
//    if(objCoordenadas.style.display=="none")
//        return;

    cont++;
    if( (cont%5) == 0 )
    {
	    var geo=utm2geo(30,Math.round(x/1000),Math.round(y/1000))
	    var utm=geo2utm(geo[0],geo[1])
	    var huso=utm[0]
	    var UTMx=Math.round(utm[1])
	    var UTMy=Math.round(utm[2])

	    var aux='<table cellspacing=0 cellpadding=1 align=center><tr align=right><td align=left>LAT</td>'+desgloseGeo(geo[0])+((geo[0]>0)?'N':'S')+'</td></tr>';
	    aux += '<tr align=right><td align=left>LON</td>'+desgloseGeo(geo[1])+((geo[1]>0)?'E':'W')+'</td></tr>';
        aux += '<tr align=right><td align=left>UTM</td><td>X</td><td colspan=2>'+UTMx+'</td><td>m</td></tr>';
        aux += '<tr align=right><td align=left>H-'+huso+'</td><td>Y</td><td colspan=2>'+UTMy+'</td><td>m</td></tr></table>'
        //objCoordenadas.innerHTML =  x+","+y;//+" "+escala;
	    objCoordenadas.innerHTML = aux;
	}
}

function changeScale(visor)
{
    //visor = LtnWebViewer1;
    var escala = ((visor && visor.GetScale) ? visor.GetScale() : 0);//mm por cada pixel
    GE("textoESCALA").innerHTML = (escala * GE("tablaESCALA").offsetWidth / 1000) + " metros";
}

function go(x,y,id)
{
    if(id==undefined || id==null || id=="")
        gotoXY(x,y);
    else
        callID(id);
}

function goXYID(x,y,id)
{
    if(id!=undefined && id!=null && id!="")
        seleccionar(id);
    gotoXY(x,y);
}

function callID(id)
{
    SetCargando(true);
    var ret = WebService.GetXYofID(id, OnCompleteID, OnTimeOut, OnError, null);
    return true;
}

function OnCompleteID(arg)
{
    if(arg!="")
    {
        var coord = arg.split(",");
        //var ulr = LtnWebViewer1.GetMapScale(coord[0],coord[1],coord[2],coord[3],200);
        //alert(url);
        gotoXY(coord[0],coord[1],coord[2],coord[3]);
    }
    else
        alert("No se ha podido localizar ese elemento.");
    SetCargando(false);
}

function gotoXY(x,y,ancho,alto)
{
    if(ancho==undefined)
    {
        var escala = 1000000;
        var mescala = escala>>1;
        LtnWebViewer1.ZoomWin(x-mescala, y-mescala, escala, escala);
    }
    else
    {
        //alert(parseFloat(x,10)+","+ parseFloat(y,10)+","+ ancho+","+ alto);
        LtnWebViewer1.ZoomWin(parseFloat(x,10), parseFloat(y,10), ancho, alto);//parseInt(ancho,10), parseInt(alto,10));
    }

    //LtnWebViewer1.RefreshIcons();
    //LtnWebViewer1.SetIconMode(-1);
    //LtnWebViewer1.SetIconMode(-1);
}

function cambiarServicios(obj)
{
    callFiltro(obj.checked, obj.value);
}

function cambiarProveedor(obj)
{
    callProveedor(obj.checked, obj.value);
}

var src="";
function cambiarLeyenda(obj)
{   
    /*if(src==obj.value)
    {
        obj.checked = false;
        src = "";
    }
    else*/
        src = obj.value;
    if(src!="")
    {
        GE("imgLeyenda").src = "images/leyendas/" + src;}
        /*SetVisible("LeyendaContenedor", obj.checked);
    }
    else
        SetVisible("LeyendaContenedor", false);
        */
    SetVisible("LeyendaContenedor", obj.checked);
}

function cerrarLeyenda()
{
    for (i=0; rad = document.getElementsByName('rLeyenda')[i]; i++)
    {
    	if (rad.checked)
    	{
            rad.checked = false;
            cambiarLeyenda(rad);
            break;
        }
    }
}

function callProveedor(active,proveedor)
{
    SetCargando(true);
    var ret = WebService.SetProveedor(active, proveedor, OnCompleteProveedor, OnError, null);
    return true;
}

function OnCompleteProveedor(arg)
{
    if(arg!="")
        LtnWebViewer1.RefreshView();
    else
        alert("No se ha podido cargar el proveedor.");
    SetCargando(false);
}

function callFiltro(active,layer)
{
    SetCargando(true);
    var ret = WebService.SetFiltro(active, layer, OnCompleteFiltro, OnError, null);
    return true;
}

function OnCompleteFiltro(arg)
{
    if(arg!="")
        LtnWebViewer1.RefreshView();
    else
        alert("No se ha podido realizar el filtro.");
    SetCargando(false);
}

function SetActivo(obj, value)
{
    obj.style.border = value?"solid 1px red":"solid 1px white";
}

function SetCargando(activo)
{
    SetVisible("UpdateProgressPral", activo);
}

function SetVisible(id, visible)
{
    var o = GE(id);
    o.style.display = visible?"block":"none";
    o.style.visibility = visible?"visible":"hidden";
}

function clickTack(visor, x, y) 
{ 
    //alert("Coordenadas al hacer Data: " + x + " , " + y+" "+visor.GetScale());
    visor.PutTack(x, y, "X="+x+" Y="+y);
    //visor.RefreshTacks();
    visor.ClearDrawingArea();
    visor.SetColorDrawing("yellow");
    visor.DrawLine(x, y, x+300000, y+200000);
    visor.DrawLine(x, y, x+100000, y-100000);
    alert('0');
    //visor.DrawLine(750016, 4274123, 747838, 4275364);
    var lx = new Array();
    lx.push(x);
    lx.push(x+300000);
    lx.push(x+100000);
    lx.push(x);
    var ly = new Array();
    ly.push(y);
    ly.push(y+200000);
    ly.push(y+300000);
    ly.push(y);
    //visor.DrawPolygon(lx, ly);

    //visor.ClearDrawingArea();
}

var lstX,lstY,lstUTMX,lstUTMY;
function nuevoPunto(tx, ty, cerrar)
{
	if (lstX==null || lstX.length==0)
	{ 
		lstX = new Array();
		lstY = new Array();
	}
	lstX.push(tx);
	lstY.push(ty);
	
	var visor = LtnWebViewer1;

	var pos = lstX.length-1;
	//jg.drawOval(lstX[pos]-3, lstY[pos]-3, 4, 4);
	if(pos>0)
	{
		if(!cerrar)
		{
			jg.drawLine(lstX[pos-1], lstY[pos-1], lstX[pos], lstY[pos]);
			//visor.ClearDrawingArea();
			//visor.SetColorDrawing("#FF0000");
			//visor.SetStroke(2);
			//visor.DrawLine(lstUTMX[pos-1], lstUTMY[pos-1], lstUTMX[pos], lstUTMY[pos]);
		}
		else
		{
            //visor.ClearDrawingArea();
            //visor.SetColorDrawing("yellow");
			jg.clear();
			jg.drawPolygon(lstX, lstY);
		}
	}
	jg.paint();
}
var distAcumulada = 0;
function medirDistancias()
{
	var pos = lstUTMX.length-1;
	var dist = 0;
	if(pos>0)
		dist = calcularDistancia(lstUTMX[pos-1]/1000, lstUTMY[pos-1]/1000, lstUTMX[pos]/1000, lstUTMY[pos]/1000);

	distAcumulada += dist;
	distAcumulada = devolverDecimales(distAcumulada, 2);
	
	dist = devolverDecimales(dist, 2);
	GE("PerfilDistancia").innerHTML = ""+distAcumulada;//"Distancia parcial: "+dist+" m.<br>Distancia total: "+distAcumulada+" m.";
	GE("PerfilPuntos").innerHTML = ""+lstUTMX.length;
}

function reiniciarMediciones()
{
	jg.clear();

	distAcumulada = 0;
	lstX = null;
	lstUTMX = null;
	
	GE("PerfilDistancia").innerHTML = ""+distAcumulada;
	GE("PerfilPuntos").innerHTML = "0";
}

function calcularDistancia(fx, fy, tx, ty)
{
	var c1 = Math.pow(Math.abs(fx-tx), 2);
	var c2 = Math.pow(Math.abs(fy-ty), 2);
	var dist = Math.sqrt(c1+c2);
	return dist;
}

function getPerfil()
{
    abrirHerramientaClick(LtnWebViewer1, "cross", clickPerfil);
    reiniciarMediciones();
    SetVisible("PerfilContenedor", true);
}

function showVisor()
{
    var id = "VisorGeneralContenedor";
    var o = GE(id);
    if(o.style.display=="none" || o.style.visibility=="hidden")
        SetVisible(id, true);
    else
        SetVisible(id, false);
}

function showEntrada()
{
    SetVisible("EntradaContenedor", true);
}

function cancelar(id)
{
    SetVisible(id, false);
}

function setEntrada()
{
    var x = parseInt(GE("UTMX").value,10) * 1000;
    var y = parseInt(GE("UTMY").value,10) * 1000;
    if(!isNaN(x) && !isNaN(y))
        LtnWebViewer1.Locate(x, y);
    else
       alert("Las coordenadas deben ser números positivos y estar expresadas en metros.");
}

function clickPerfil(visor, x, y) 
{ 
	if (lstUTMX==null || lstUTMX.length==0)
	{ 
		lstUTMX = new Array();
		lstUTMY = new Array();
	}

	lstUTMX.push(x);
	lstUTMY.push(y);
    localX = visor.worldToLocalCoordX(x);
    localY = visor.worldToLocalCoordY(y);
    nuevoPunto(localX-3, localY);
    medirDistancias()
}
function mostrarPerfil()
{
/*lstUTMX = new Array();
lstUTMY = new Array();
lstUTMX.push(750016890)
lstUTMY.push(4274123476);
lstUTMX.push(747838000)
lstUTMY.push(4275364476);
*/    callPerfil(lstUTMX,lstUTMY)
}
function cancelarPerfil()
{
    SetVisible("PerfilContenedor", false);
    reiniciarMediciones();
    cerrarHerramientaClick(LtnWebViewer1, clickPerfil);
}
function callPerfil(listaX,listaY)
{
    SetCargando(true);
    var ret = WebService.GetPerfil(listaX, listaY, FlotanteWidth-35, FlotanteHeight-45, OnCompletePerfil, OnError, null);
    return true;
}

function OnCompletePerfil(arg)
{
    //alert("OnComplete arg="+arg);
    if(arg!="")
    {
        if(arg!="-1")
            abrirVentanaFlotante("Perfil.aspx?" + arg, true);
        else
            alert("No es posible sacar el perfil. La ruta se ha salido de los límites de la cartografía.");
    }
    SetCargando(false);
}

function goMinMax(minmax, id)
{
    if(id!=undefined && id!=null && id!="")
        seleccionar(id);

    if(minmax!=null && minmax!="")
    {
        var o = minmax.split('#');
        var ancho = parseFloat(o[2],10) - parseFloat(o[0],10)
        var alto = parseFloat(o[3],10) - parseFloat(o[1],10);
        //var ancho = o[2] - o[0];
        //var alto = o[3] - o[1];
        gotoXY(o[0], o[1], ancho, alto);
        //alert(o[0]+","+o[1]+","+o[2]+","+o[3]+","+ancho+","+alto);
    }
}

function gotoMinMax(val)
{
    var obj = GE(val);
    var cad = obj.value;
    if(cad!=null && cad!="")
    {
        var o = cad.split('#');
        var ancho = parseInt(o[3],10) - parseInt(o[1],10);
        var alto = parseInt(o[4],10) - parseInt(o[2],10);
        gotoXY(o[1], o[2], ancho, alto);
    }
}

function itemSelected(evt,elem) {
    //alert(elem._text+" --> "+elem._value);
    var trozo = elem._value.split('|');
    var id = trozo[0];
    var x = trozo[1];
    var y = trozo[2];
    go(x,y,id);
}

function populating(evt,cancel)
{
    evt._element.style.backgroundColor = 'silver';
    GE("imgBuscando").style.display = "block";
}

function showing(evt,cancel)
{
    evt._element.style.backgroundColor = 'white';
    GE("imgBuscando").style.display = "none";
}


//para mostrar ocultar capas
function cambiarProveedor(obj)
{
    //buscamos la posicion que ocupa la capa
    var caps = document.getElementsByName("capas");
    for( i= 0; i< caps.length; i++)
        if(caps[i].getAttribute('value') ==  obj.value)
        {
           posicion = i; break;
        }
    callProveedor(obj.checked, i);
}


function callProveedor(active,proveedor)
{
    //SetCargando(true);
    var ret = WebService.SetProveedor(active, proveedor, OnCompleteProveedor, OnError, null);
    return true;
}


function OnCompleteProveedor(arg)
{
    if(arg!="")
    {
        var o = arg.split('|');
        if(o.length>1 && parseInt(o[1])==0)
            LtnWebViewer1.refreshSystemLayer(WVLayerType.RASTER);
        else
            LtnWebViewer1.refreshSystemLayer(WVLayerType.VECTOR);
    }
    else
        alert("No se ha podido cargar el proveedor.");
   // SetCargando(false);
}
