var modoMarcado = 0;
var xmin=0;
var ymin=0;
var xmax=0;
var ymax=0;
var modo="zoomin";
var pixelIzqda;
var pixelArriba;
var xcoor;
var ycoor;
var listaPuntosX = new Array();
var listaPuntosY = new Array();
var listaPuntosUTMX = new Array();
var listaPuntosUTMY = new Array();
var listaPuntosLineaX = new Array();
var listaPuntosLineaY = new Array();
var listaPuntosLineaUTMX = new Array();
var listaPuntosLineaUTMY = new Array();
var numPuntos = 0;
var numPuntosLineas = 0;
var pulsando = false;
var ruta = "";

//Detectar el navegador
var esIE = false;
var esNetscape = (navigator.appName.indexOf("Netscape")>=0);
var esNetscape4 = false;
var esIE4 = false;
var es5osuperior = false;

if (esNetscape) 
{
        if (parseFloat(navigator.appVersion)<5) 
        {
                esNetscape4=true;
        } 
        else 
        {
                es5osuperior = true;
        }
} 
else 
{
        esIE4=false;
        esIE=true;
        es5osuperior=true;
        
        if (navigator.appVersion.indexOf("MSIE 4.")>0) 
        {
                esIE4 = true;
        }
}

function muestraCoordenadas(pixelX,pixelY)
{
        var ancho = parseFloat(parent.visor.ancho);
        var alto = parseFloat(parent.visor.alto);
        
        window.status = "UTM X: " +  pixelXtoWorld(pixelX) + " - UTM Y: " + pixelYtoWorld(pixelY) + " | Ancho del mapa: " + Math.round(ancho) +" m." + " - Alto del mapa: " + Math.round(alto) + " m.";
}

function pixelYtoWorld(pixelY)
{
        var alto = parseFloat(parent.visor.alto);
        
        yIncrement = alto / parseFloat(parent.visor.altoVentana);
        imagey = parseInt(parent.visor.altoVentana) - pixelY;
        mapaY = (Math.round((imagey * yIncrement + parseFloat(parent.visor.yMin))*100))/100;
        
        return mapaY;
}

function pixelXtoWorld(pixelX)
{
        var ancho = parseFloat(parent.visor.ancho);
        
        xIncrement = ancho / parseFloat(parent.visor.anchoVentana);
        mapaX = (Math.round((pixelX * xIncrement + parseFloat(parent.visor.xMin))*100))/100;
        
        return mapaX;
}

function worldXtoPixel(x)
{
        var ancho = parseFloat(parent.visor.ancho);
        xIncrement = ancho / parseFloat(parent.visor.anchoVentana);
        var pixelX = parseInt((x - parent.visor.xMin)/xIncrement);
        return pixelX;
}

function worldYtoPixel(y)
{
        var alto = parseFloat(parent.visor.alto);
        yIncrement = alto / parseFloat(parent.visor.altoVentana);
        var pixelY = parseInt((parent.visor.yMax - y)/yIncrement);
        return pixelY;
}

function getArea()
{
        var area = 0;
              
        if (numPuntos >= 3)
        {
                for (var i=0;i<numPuntos;i++) 
                {
                        var j = (i + 1) % numPuntos;
                        area += listaPuntosUTMX[i] * listaPuntosUTMY[j];
                        area -= listaPuntosUTMY[i] * listaPuntosUTMX[j];
                }
                
                area /=  2.0;
                area = Math.abs((Math.round(area*100))/100);
        }
        
        return area;
}

function getPerimetro()
{
        var resultado = 0;
        
         for (var i=0; i<numPuntos-1;i++)
         {
                        resultado += distancia(listaPuntosUTMX[i],listaPuntosUTMY[i],listaPuntosUTMX[i+1],listaPuntosUTMY[i+1]);
         }
         if (numPuntos >= 3)
         {
                         resultado += distancia(listaPuntosUTMX[numPuntos-1],listaPuntosUTMY[numPuntos-1],listaPuntosUTMX[0],listaPuntosUTMY[0]);
         }
         if (numPuntos > 1) 
         {
                resultado = (Math.round(resultado*100))/100;
         }
        
        return resultado;
}

function distancia(x1, y1, x2, y2)
{
        return Math.sqrt( Math.pow(Math.abs(x1 - x2),2) + Math.pow(Math.abs(y1 - y2),2));
}

function agregaPunto(x,y) 
{
    listaPuntosX[numPuntos] = x;
    listaPuntosY[numPuntos] = y;
    listaPuntosUTMX[numPuntos] = pixelXtoWorld(x);
    listaPuntosUTMY[numPuntos] = pixelYtoWorld(y);
    
    numPuntos ++;
}

function limpiaPuntos()
{
    numPuntos = 0;
}

function agregaPuntoEnLinea(x,y)
{
    listaPuntosLineaX[numPuntosLineas] = x;
    listaPuntosLineaY[numPuntosLineas] = y;
    listaPuntosLineaUTMX[numPuntosLineas] = pixelXtoWorld(x);
    listaPuntosLineaUTMY[numPuntosLineas] = pixelYtoWorld(y);
    
    numPuntosLineas ++;
    
}

function medirDistanciaLineas()
{
        var resultado = 0;
        
        for (var i=0; i<numPuntosLineas-1;i++)
        {
                resultado += distancia(listaPuntosLineaUTMX[i],listaPuntosLineaUTMY[i],listaPuntosLineaUTMX[i+1],listaPuntosLineaUTMY[i+1]);
        }
        
        resultado = (Math.round(resultado*100))/100;
        
        return resultado;
}

function limpiaPuntosLineas()
{
        numPuntosLineas = 0;
}
