﻿var layerMarker2;
var layerLoc;
var lastPoint;
var SemiRota;
var left;
var right;
var linhaOriginal;
var bbounds;

function DisplayCheckCategoria(IdChkItem) {
    var itens = document.getElementById("rpb_i0_i0_GridPOI").children[0].children;
    for (var i = 0; i < itens.length; i++) {
        var chk = itens[i].innerHTML;
        chk = chk.substring(chk.toLowerCase().indexOf("<input id="));
        chk = chk.substring(0, chk.indexOf("_chk") + 4).replace('"', '');
        chk = chk.substring(chk.indexOf("=") + 1)
        chk = document.getElementById(chk);
        if (chk == null) continue;
        chk.disabled = true;
    }
}

function OnSucceededCheck(result, userContext, methodName) {
    if (result != null) { }
    __doPostBack('UpdatePanel1', '');
}

function atualizaLista(xmax, xmin, ymax, ymin) {
    //multiMapa.Event.onRemovePopupPoi();
    //PageMethods.CarregaCaterorias(xmax, xmin, ymax, ymin, OnSuccessXml, OnFailedXml);
}

function OnSuccessXml(result, userContext, methodName) {
    getPOI = false;
    __doPostBack('UpdatePanel1', '');
}

function OnSuccessGeneric(result, userContext, methodName) {
    getPOI = false;
    if (methodName == "getPoisClient") { getPoisClientInProcess = false; }
    __doPostBack('UpdatePanel1', '');
}

function OnFailedXml(error, userContext, methodName) {
    getPOI = false;
    if (methodName == "getPoisClient") { getPoisClientInProcess = false; }
    var msg = "Ocorreu um erro inesperado no método '" + methodName + "' Server-Side \n";
    msg += error.get_message();
    var GridCateg = document.getElementById("rpb_i0_i0_GridPOI");
    alert(msg);
}

function setLayersVisibleInternal(e) {
    multispectral.prototype.Utility.setLayerVisibility(true);
    lastPositionMap();
    //getConditionTraffic();
    getPoisClient();
    atualizaBotoes();
    zoomEnd();
    if (e) {
        OpenLayers.Event.stop(e);
    }
}

function getZoom() {
    var zoom = 0;
    try {
        zoom = multiMapa.Client.getZoom();
    }
    catch (e) {
        alert("Houve um erro no método getZoom: " + e.Message);
    }
    return zoom;
}

function getbbox() {
    var bbox = multiMapa.Utility.getExtent();
    var jsonbbox = { "bottom": bottom, "left": left, "right": right, "top": top }
    return jsonbbox;
}

var getPoisClientInProcess = false;
var usuarioLogado = false;
function getPoisClient() {
    try {
        if (!usuarioLogado) { return; }
        if (getPoisClientInProcess) { return; }
        var zoom = multiMapa.Client.getZoom();
        if (zoom < 9) {
            try {
                multiMapa.Utility.removePoisClient();
            }
            catch (e) {
                alert("erro no metodo removePoisClient: " + e.Message);
            }
            return;
        }
        getPoisClientInProcess = true;
        var extent = multiMapa.Utility.getExtent();
        var xmin = extent.left;
        var xmax = extent.right;
        var ymin = extent.bottom;
        var ymax = extent.top;
        PageMethods.getPoisClient(xmax, xmin, ymax, ymin, 1, OnSuccessGeneric, OnFailedXml);
    }
    catch (e) {
        //if (e.Message == undefined) return;
        //alert("Houve um erro no método getPoisClient: " + e.Message);
    }
}

function zoomToExtent(x1, y1, x2, y2) {
    bbounds = x1 + "," + y1 + "," + x2 + "," + y2;
    setTimeout(zoomOut, 1000);
    //multispectral.prototype.Client.setZoom_Points(pontos);
}

function zoomOut() {
    try {
        var mapObject = multiMapa.Mapa.mapObject;
        if (!mapObject) throw "Mapa não disponível";
        if (bbounds != undefined) multiMapa.Client.setZoom_Points("" + bbounds);
        mapObject.zoomOut();
        bbounds = undefined;
    }
    catch (e) {
        alert("Houve um erro no método zoomOut: " + e.message);
    }
}

function atualizaBotoes() { }

function lastPositionMap() {
    //if (!mapObject) return;
    //var extent = mapObject.getExtent();
    //var xmin = extent.left;
    //var xmax = extent.right;
    //var ymin = extent.bottom;
    //var ymax = extent.top;
    //var zoomAtual = mapObject.getZoom();
    //var coordenadas = xmax + "," + ymax + "," + xmin + "," + ymin;
    //var coord = getMapBounds().getCenterLonLat();
    //var value = coord.lon + "|" + coord.lat + "|" + zoomAtual;
    //gravaCookie("lastPositionMap", value, 10)
}

function gravaCookie(c_name, value, expiredays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toUTCString());
}

function buscaCookie(CookieName) {
    var CookieVal = null;
    if (document.cookie)//only if exists
    {
        var arr = document.cookie.split((escape(CookieName) + '='));
        if (arr.length >= 2) {
            var arr2 = arr[1].split(';');
            CookieVal = unescape(arr2[0]); //unescape() : Decodes the String
        }
    }
    return CookieVal;
}

function apagaCookie(name) {
    gravaCookie(name, "", -1);
}

function limpaTodosCookie() {
    var CookieVal = null;
    if (document.cookie)//only if exists
    {
        var arr = document.cookie.split(';');
        for (var i = 0; i < arr.length; i++) {
            var CookieName = arr[i].split('=')[0].replace(/^\s+|\s+$/g, '');
            apagaCookie(CookieName);
        }
    }
}

function carregaTodosPois() {
    multiMapa.Event.onRemovePopupPoi();
    var extent = multiMapa.Utility.getExtent();
    var xmin = extent.left;
    var xmax = extent.right;
    var ymin = extent.bottom;
    var ymax = extent.top;
    PageMethods.CarregaTodosPontos(xmax, xmin, ymax, ymin, carregaTodosPoisSuccess, OnFailedXml);
}

function carregaTodosPoisSuccess(result, userContext, methodName) {
    try {
        var json = eval(result);
        for (var i = 0; i < json.length; i++) {
            var item = json[i];
            addPoi_luballon(item.lon, item.lat, i, item.categ, item.nome, item.endereco, item.cor);
        }
    } catch (e) {
        alert(e.message);
    }
}

function clearMarkers() {
    //Removendo Pontos
    //for (var i = 0; i < markersList.length; i++) {
    //    layerMarker.removeMarker(markersList[i]);
    //}
    //layerMarker2.clearMarkers();
    //markersList = new Array();
    //featureList = new Array();
}

function removeMarker(Idnome) {
    multiMapa.Client.removePoints(Idnome);
}

function removeMarkersPOI() {
    //Removendo Pontos
    var layerMarker = multispectral.prototype.Mapa.mapaLayers.layerMarker;
    for (u = layerMarker.markers.length; u > 0; u--) {
        var item = layerMarker.markers[u - 1];
        var nomePonto = item.id;
        if (nomePonto.indexOf("POIMultispectral_") > -1) {
            layerMarker.removeMarker(item);
        }
    }
    multispectral.prototype.Mapa.mapaLayers.layerMarker = layerMarker;
}

function removeSemiRota() {
    try {
        //Removendo Linha de 'LineSemiRotaMulstispectral'
        var layerVector = multispectral.prototype.Mapa.mapaLayers.layerVector;
        for (u = layerVector.features.length; u > 0; u--) {
            var item = layerVector.features[u - 1];
            var nomeVetor = item.id;
            if (nomeVetor.indexOf("LineSemiRotaMulstispectral") > -1) {
                item.destroy();
            }
        }

        var mapObject = multispectral.prototype.Utility.getInstanciaMap();
        for (var i = 0; i < mapObject.layers.length; i++) {
            var layer = mapObject.layers[i];
            if (layer.name == "Layer Origem / Destino") {
                for (y = layer.markers.length; y > 0; y--) {
                    var item = layer.markers[y - 1];
                    if (String(item.id).toUpperCase() == "SEMIROTA") {
                        layer.removeMarker(item);
                    }
                }
                break;
            }
        }

        multispectral.prototype.Mapa.mapaLayers.layerVector = layerVector;
    }
    catch (e) {
        alert("Houve um erro no método removeSemiRota: " + e.Message);
    }
}

function tracaCoordenadas(coordenadas) {
    removeSemiRota();
    var dados;
    var line = new Array();
    if (coordenadas.indexOf(",") > -1) {
        dados = coordenadas.split(',');
        for (var i = 0; i < dados.length; i++) {
            var tmp = dados[i].split(' ');
            if (tmp.length != 2) continue;
            var lon = isNaN(tmp[0]) ? "" : tmp[0];
            var lat = isNaN(tmp[1]) ? "" : tmp[1];
            if (lon == "" || lat == "") continue;
            endereco = lon + " " + lat + "<br>";
            line.push(new OpenLayers.Geometry.Point(lon, lat));
            addPoiballon(lon, lat, '', '', 'SemiRota', '', endereco, '', '', 220, 300);
        }
    }
    else {
        dados = coordenadas.split(';');
        for (i = 0; i < dados.length; i++) {
            if (i % 2 == 0) {
                var lon = parseFloat(dados[i]);
            }
            else {
                var lat = parseFloat(dados[i]);
                endereco = lon + " " + lat + "<br>";
                line.push(new OpenLayers.Geometry.Point(lon, lat));
                addPoiballon(lon, lat, '', '', 'SemiRota', '', endereco, '', '', 220, 300);
            }
        }
    }

    var layerVector = multispectral.prototype.Mapa.mapaLayers.layerVector;
    var style = { strokeColor: "#CD00CD", fillColor: "#CD00CD", strokeOpacity: 0.9, fillOpacity: 0.9, strokeWidth: 8, pointRadius: 8, pointerEvents: "visiblePainted" };
    var lineTmp = new OpenLayers.Geometry.LineString(line);
    var lineFeature = new OpenLayers.Feature.Vector(lineTmp, null, style);
    lineFeature.id = "LineSemiRotaMulstispectral";
    if (layerVector.getZIndex() < 300) {
        var mapObject = multispectral.prototype.Utility.getInstanciaMap();
        mapObject.setLayerZIndex(layerVector, 1000);
    }
    layerVector.addFeatures([lineFeature]);
    multispectral.prototype.Mapa.mapaLayers.layerVector = layerVector;
    while (coordenadas.indexOf(' ') > -1) {
        coordenadas = coordenadas.replace(' ', ',');
    }
    while (coordenadas.indexOf(';') > -1) {
        coordenadas = coordenadas.replace(';', ',');
    }
    multiMapa.Client.setZoom_Points("" + coordenadas);
}

function semiRota(lon, lat, coordenadas, descricaoRota, icon) {
    try {
        removeSemiRota();
        removeMarker("SemiRota");
        $get("FlagRadPanelBar").value = "1";
        //Adicionando Linha de 'LineSemiRotaMulstispectral'
        var layerVector = multispectral.prototype.Mapa.mapaLayers.layerVector;
        var style = { strokeColor: "#CD00CD", fillColor: "#CD00CD", strokeOpacity: 0.9, fillOpacity: 0.9, strokeWidth: 8, pointRadius: 8, pointerEvents: "visiblePainted" };
        var lineTmp = new OpenLayers.Geometry.LineString(coordenadas);
        var lineFeature = new OpenLayers.Feature.Vector(lineTmp, null, style);
        lineFeature.id = "LineSemiRotaMulstispectral";
        if (layerVector.getZIndex() < 300) {
            var mapObject = multispectral.prototype.Utility.getInstanciaMap();
            mapObject.setLayerZIndex(layerVector, 1000);
        }
        layerVector.addFeatures([lineFeature]);
        multispectral.prototype.Mapa.mapaLayers.layerVector = layerVector;
        /*
        if (lon != undefined || lat != undefined) {
        addPoiballon(lon, lat, "", "SemiRota", "SemiRota", "", descricaoRota, "", icon, 220, 300);
        }
        */
        //setCenter(lon, lat);
    }
    catch (e) {
        alert("Houve um erro no método semiRota: " + e.Message);
    }
}

function set3d() {
    setCenter(-51.07020, -22.655000); multiMapa.Client.setFoto(13);
}

function removeItemLayerVector(prename) {
    var layerVector = multispectral.prototype.Mapa.mapaLayers.layerVector;
    for (u = layerVector.features.length; u > 0; u--) {
        var item = layerVector.features[u - 1];
        var nomeVetor = item.id;
        if (nomeVetor.indexOf(prename + "_") > -1) {
            item.destroy();
        }
    }
    multispectral.prototype.Mapa.mapaLayers.layerVector = layerVector;
}

function addPoi_luballon(lon, lat, number, title, nome, endereco, roundColor, icon) {
    var rt;
    var altura;
    var largura;
    nome = unescape(nome);
    endereco = unescape(endereco);
    endereco = "<b>" + nome + "</b><br>" + endereco;
    multiMapa.Draw.addPoiBallon(lon, lat, number, title, nome, rt, endereco, roundColor, icon, 200, 300);
}

function showPoiClientSide(nome, numero) {
    /*
    for (var i = 0; i < featureList.length; i++) {
    var contentHtml = featureList[i].data['popupContentHTML'].toUpperCase();
    if (contentHtml.indexOf(nome.toUpperCase()) > -1 && numero.indexOf(featureList[i].data.icon.content) > -1) {
    fixPopup(featureList[i]);
    mapObject.setCenter(featureList[i].lonlat, mapObject.getZoom());
    }
    }
    var Div_shadow = OpenLayers.Util.createDiv("Div_shadow", null, null, null, null, null, "hidden");
    if (popupPoi == null) return;
    Div_shadow.appendChild(popupPoi.cshadowDiv);
    Div_shadow.style.left = popupPoi.div.style.left;
    Div_shadow.style.top = popupPoi.div.style.top;
    var wDiv = "" + Div_shadow.childNodes[0].childNodes[0].style.width;
    wDiv = wDiv.substr(0, wDiv.length - 2);
    wDiv = "" + (parseInt(wDiv) + 5) + "px";
    Div_shadow.style.width = wDiv;
    Div_shadow.childNodes[0].style.width = wDiv;
    Div_shadow.style.height = Div_shadow.childNodes[0].childNodes[0].style.height;
    if (navigator.appName == "Microsoft Internet Explorer") {
    Div_shadow.childNodes[0].childNodes[0].childNodes[1].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.geoportal.com.br/ajax_api/img/br_dr2.png', sizingMethod='scale')";
    } else {
    var w_Div = Div_shadow.childNodes[0].childNodes[0].childNodes[1].childNodes[0].width;
    var h_Div = Div_shadow.childNodes[0].childNodes[0].childNodes[1].childNodes[0].height;
    var img_s = document.createElement("img");
    img_s.setAttribute('src', 'http://www.geoportal.com.br/ajax_api/img/br_dr2.png');
    img_s.setAttribute('width', '' + w_Div);
    img_s.setAttribute('height', '' + h_Div);
    img_s.setAttribute('id', 'sombra_img');
    Div_shadow.childNodes[0].childNodes[0].childNodes[1].removeChild(Div_shadow.childNodes[0].childNodes[0].childNodes[1].childNodes[0]);
    Div_shadow.childNodes[0].childNodes[0].childNodes[1].appendChild(img_s);
    }
    layerPopUp.div.style.zIndex = parseInt(popupPoi.div.style.zIndex) - 1;
    layerPopUp.div.appendChild(Div_shadow);
    */
}

function highlightPoiClientSide(nome, numero) {
    //
    /*
    for (var i = 0; i < featureList.length; i++) {
    var contentHtml = featureList[i].data['popupContentHTML'].toUpperCase();
    if (contentHtml.indexOf(nome.toUpperCase()) > -1 && numero.indexOf(featureList[i].data.icon.content) > -1) {
    addPopupPoiFromAccordion(featureList[i]);
    var Div_shadow = OpenLayers.Util.createDiv("Div_shadow", null, null, null, null, null, "hidden");
    if (popupPoi == null) return;
    Div_shadow.appendChild(popupPoi.cshadowDiv);
    Div_shadow.style.left = popupPoi.div.style.left;
    Div_shadow.style.top = popupPoi.div.style.top;
    var wDiv = "" + Div_shadow.childNodes[0].childNodes[0].style.width;
    wDiv = wDiv.substr(0, wDiv.length - 2);
    wDiv = "" + (parseInt(wDiv) + 5) + "px";
    Div_shadow.style.width = wDiv;
    Div_shadow.childNodes[0].style.width = wDiv;
    Div_shadow.style.height = Div_shadow.childNodes[0].childNodes[0].style.height;
    if (navigator.appName == "Microsoft Internet Explorer") {
    Div_shadow.childNodes[0].childNodes[0].childNodes[1].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.geoportal.com.br/ajax_api/img/br_dr2.png', sizingMethod='scale')";
    } else {
    var w_Div = Div_shadow.childNodes[0].childNodes[0].childNodes[1].childNodes[0].width;

    var h_Div = Div_shadow.childNodes[0].childNodes[0].childNodes[1].childNodes[0].height;
    var img_s = document.createElement("img");
    img_s.setAttribute('src', 'http://www.geoportal.com.br/ajax_api/img/br_dr2.png');
    img_s.setAttribute('width', '' + w_Div);
    img_s.setAttribute('height', '' + h_Div);
    img_s.setAttribute('id', 'sombra_img');
    Div_shadow.childNodes[0].childNodes[0].childNodes[1].removeChild(Div_shadow.childNodes[0].childNodes[0].childNodes[1].childNodes[0]);
    Div_shadow.childNodes[0].childNodes[0].childNodes[1].appendChild(img_s);
    }
    layerPopUp.div.style.zIndex = parseInt(popupPoi.div.style.zIndex) - 1;
    layerPopUp.div.appendChild(Div_shadow);
    }
    }
    */
}

function distanciaParcial(x1, y1, x2, y2) {
    var valor = multiMapa.Property.GRAUS_METROS * Math.sqrt(Math.pow(x1 - x2, 2.0) + Math.pow(y1 - y2, 2.0))
    return valor;
}

function addPoiballon(lon, lat, number, title, nome, rt, endereco, roundColor, icon, altura, largura) {
    var imgurl = (icon == undefined || icon == "") ? undefined : icon.url;
    var hicon = (icon == undefined || icon == "") ? undefined : icon.size.h;
    var wicon = (icon == undefined || icon == "") ? undefined : icon.size.w;
    var logr = "";
    var cidade = "";
    var end;
    try {
        endereco = endereco == undefined ? "" : endereco;
        if (endereco != "") {
            endereco = unescape(endereco);
            end = endereco.split("<br>");
            if (end.length == 2) {
                logr = end[0].indexOf("Endereço:") > -1 ? end[0].replace("<b>Endereço:</b> ", "") : "";
                cidade = end[1].indexOf("Cidade:") > -1 ? end[1].replace("<b>Cidade:</b> ", "").replace(" - ", ", ") : "";
            }
        }
        endereco += '<a href=\'javascript:preparaRota("' + logr + '","' + cidade + '",' + lon + ',' + lat + ',true);\'>Chegar até aqui</a> - ';
        endereco += '<a href=\'javascript:preparaRota("' + logr + '","' + cidade + '",' + lon + ',' + lat + ',false);\'>Chegar a partir daqui</a><br>';
    }
    catch (e) { }
    endereco = "<font size='2'>" + endereco + "</font>";
    largura += 60;
    altura += 20;
    multiMapa.Draw.addPoiBallon(lon, lat, '', title, nome, rt, endereco, '', icon, altura, largura);
}


function simplify(coordenadas) {
    var coords = [];
    var DELTA_ANGULO_MAX = 5;
    var mapObject = multispectral.prototype.Utility.getInstanciaMap();
    var z = mapObject.getResolution();
    if (mapObject.getZoom() < 4) {
        z *= 32;
    }
    else if (mapObject.getZoom() < 7) {
        z *= 24;
    }
    else if (mapObject.getZoom() < 10) {
        z *= 16;
    }
    for (var i = 0; i < coordenadas.length - 2; i += 2) {
        var lonlat = new OpenLayers.Geometry.Point(coordenadas[i].lon, coordenadas[i].lat);
        var lonlat2 = new OpenLayers.Geometry.Point(coordenadas[i + 1].lon, coordenadas[i + 1].lat);
        var lonlat3 = new OpenLayers.Geometry.Point(coordenadas[i + 2].lon, coordenadas[i + 2].lat);
        if (lonlat.distanceTo(lonlat2) < z && lonlat2.distanceTo(lonlat3) < z && mapObject.getZoom() < 10) {
            coords.push(lonlat);
        }
        else {
            coords.push(lonlat);
            coords.push(lonlat2);
        }
    }
    if (coordenadas.length == 0) { return coords; }
    coords.push(new OpenLayers.Geometry.Point(coordenadas[coordenadas.length - 2].lon, coordenadas[coordenadas.length - 2].lat));
    coords.push(new OpenLayers.Geometry.Point(coordenadas[coordenadas.length - 1].lon, coordenadas[coordenadas.length - 1].lat));
    return coords;
}

function showOnlyExtent(coordenadas) {
    var coordsDentro = [];
    var mapObject = multiMapa.Utility.getInstanciaMap();
    var bounds = mapObject.getExtent();
    var lastPoint = false;
    var firstPoint = false;
    for (var i = 0; i < coordenadas.length; i++) {
        if (bounds.containsLonLat(coordenadas[i])) {
            if (i > 0 && firstPoint == false) {
                coordsDentro.push(coordenadas[i - 1]);
            }
            coordsDentro.push(coordenadas[i]);
            lastPoint = true;
            firstPoint = true;
        } else if (lastPoint == true) {
            coordsDentro.push(coordenadas[i]);
            lastPoint = false;
        }
    }
    return coordsDentro;
}

function limpaMapa(x, y, zoom) {
    getPOI = true;
    removeDadosRota();
    removeSemiRota();
    multiMapa.Client.mapClear(x, y, zoom);
    PageMethods.LimpaRota();
    PageMethods.LimpaListaCategorias(OnSuccessGeneric);
    multispectral.prototype.Utility.removeProcess(true);

    /*
    var LblDescRota = $("rpb_i1_i0_LblDescRota");
    var LblMetragem = $("rpb_i1_i0_LblMetragem");
    var ImgImpressora = $("rpb_i1_i0_ImgImpressora");
    var GridRota = $("rpb_i1_i0_GridRota");
    if (LblDescRota) LblDescRota.style.display = "block";
    if (LblMetragem) LblMetragem.style.display = "none";
    if (ImgImpressora) ImgImpressora.style.display = "none";
    if (GridRota) GridRota.style.display = "none";
    */

    /*
    var GridRota = document.getElementById("rpb_i1_i0_GridRota")
    var PanelLoad = document.getElementById("rpb_i0_i0_PainelLoadingCateg");
    var LblDescPOI = document.getElementById("rpb_i0_i0_LblDescPOI");

    PanelLoad.style.display = "none";
    GridCateg.style.display = "none";
    LblDescPOI.style.display = "block";
    */
}

function removeGeometrias() {
    limpaMapa();
}

function removePoint(nome) {
    multiMapa.Client.removePoints(nome);
}

function removeDadosRota() {
    removeSemiRota();
    removeMarkersPOI();
    removePoint("PontoLocalizacao");
    multiMapa.Client.removeRoute();
}

function setCenter(x, y) {
    //multiMapa.Client.setCenter(x, y);
    multiMapa.Client.setZoom_Points(x + "," + y);
}

function addPolyLine(preName, insertArrows, coordenadas, color, interseccoes) {
    var pontoVirgula = coordenadas.substr(coordenadas.length - 1, 1);
    if (pontoVirgula == ";") {
        coordenadas = coordenadas.substr(0, coordenadas.length - 1);
    }
    var coordenadasSplit = coordenadas.split(";");
    var cx1 = coordenadasSplit[0];
    var cy1 = coordenadasSplit[1];
    var cx2 = coordenadasSplit[coordenadasSplit.length - 2];
    var cy2 = coordenadasSplit[coordenadasSplit.length - 1];

    //Removendo as Coordenadas Origem e Destino das Coordenadas FULL
    var newCoordenadas = "";
    for (var i = 2; i < coordenadasSplit.length - 2; i++) {
        var item = coordenadasSplit[i];
        newCoordenadas += item + ";";
    }
    newCoordenadas = newCoordenadas.substr(0, newCoordenadas.length - 1);
    if (isNaN(cx1) || isNaN(cy1) || isNaN(cx2) || isNaN(cy2)) return;
    document.getElementById('FlagRadPanelBar').value = 1;
    var nomeRota = "GeoPortal";
    var ativaZoom = false;
    var flag = true;
    multiMapa.Utility.addRouteLineProcess('GeoPortal', false, newCoordenadas, cx1, cy1, cx2, cy2, null, interseccoes);
    //multiMapa.Client.zoomOut();
    setTimeout(function () {
        multiMapa.Client.setZoom_Points(cx1 + "," + cy1 + "," + cx2 + "," + cy2);
    }, 2000);
    multiMapa.Client.allowSetPointRightClick(true);
}

function popUpInterseccao(lon, lat, descricaoRota, imgPlaca) {
    if (imgPlaca.indexOf("number1.png") > -1 || imgPlaca.indexOf("number2.png") > -1) {
        removeAllpopUp();
        return; 
    }
    descricaoRota = unescape(descricaoRota);
    var lonlat = new OpenLayers.LonLat(lon, lat);
    var index = descricaoRota.indexOf("<b>");
    if (index > -1) {
        var tmp = descricaoRota.substring(index + 3, descricaoRota.length);
        index = tmp.indexOf("</b>");
        if (index > -1) {
            tmp = tmp.substring(0, index);
        }
        descricaoRota = tmp;
    }
    var html = "<table cellpadding='0' cellspacing='0' border='0'>";
    html += "<td style='width: 20px' align='center' valign='middle'>"
    html += "<img src='" + imgPlaca + "' border='0' width='20px' height='20px'>";
    html += "</td><td align='center' valign='middle'><font size='2'>"
    html += descricaoRota + "</font>";
    html += "</td></table>"
    var size = new OpenLayers.Size(125 + (3 * descricaoRota.length), 35);
    var popup = new OpenLayers.Popup("popUpInterseccao", lonlat, size, html, false);
    var mapObject = multispectral.prototype.Utility.getInstanciaMap();
    mapObject.addPopup(popup, true);
    popup.div.style.zIndex = 9999;
    popup.div.style.border = "1px solid #CCCCCC";
}

function removeAllpopUp() {
    var mapObject = multispectral.prototype.Utility.getInstanciaMap();
    for (var i = mapObject.popups.length - 1; i >= 0; --i) {
        mapObject.removePopup(mapObject.popups[i]);
    }
}

function zoomEnd() {
    multispectral.prototype.Utility.zoomEnd();
}

function CarregaRota(xOrigem, yOrigem, xDestino, yDestino, numOrigem, numDestino, imgClientId, tipo) {
    $get("hdFlagRotaClique").value = "true";
    var crtl = $get("FlagCarregaRota");
    var img = $get(imgClientId);
    if (img != null) { img.style.display = "block"; }
    if (xDestino == null) {
        //Localizacao
        var chkExibePOI = document.getElementById("rpb_i0_i0_chkExibePOI");
        $get("FlagRadPanelBar").value = (chkExibePOI != null) ? (chkExibePOI.checked ? "0" : "") : "";
        crtl.value = xOrigem + "|" + yOrigem + "|" + numOrigem + "|" + imgClientId + "|" + tipo;
        var bt = $get("BtAuxiliarCarregaRota");
        bt.click();
    }
    else {
        //Rota
        $get("FlagRadPanelBar").value = "1";
        crtl.value = xOrigem + "|" + yOrigem + "|" + xDestino + "|" + yDestino + "|" + numOrigem + "|" + numDestino + "|" + imgClientId + "|" + tipo;
        var porTempo = $get("rbTempo").checked;
        routeGen(xOrigem, yOrigem, xDestino, yDestino, porTempo);
    }
}

function routeGen(cx1, cy1, cx2, cy2, porTempo) {
    $get("FlagRadPanelBar").value = "1";
    multispectral.prototype.Property.nomePontoOrigemTmp = "GeoPortal_CONCLUIDO";
    multispectral.prototype.Client.routeGen(cx1, cy1, cx2, cy2, false, 'routeGenCallback', porTempo, true, 'GeoPortal', false);
}

function routeGenCallback(valid, args) {
    args = unescape(args);
    if (valid == "false" || valid == false) {
        ErroCallback(valid, args);
    }
    else {
        if (args != "Procedimento solicitado executado com sucesso!") {
            //var respXml = eval(args);
            //respXml = respXml[0];
            document.getElementById("routeJsonString").value = escape(args);
            var bt = document.getElementById("BtAuxiliarRota");
            bt.click();
        }
    }
}
