﻿var _map;
var _ei;

var control;
var _tipoRota; 
var _origemRota, _destinoRota;
var _markers = new Array();
var _estabs = new Array();
arrMarker = new Array();
arrayMarker = new Array();
arrayDados = new Array();

_map = _ei = control = _origemRota = _destinoRota = _tipoRota = null;

function initialize()
{
    if(typeof MaplinkAPI == 'undefined') return;   
    control = new MaplinkAPI();
    if(!control) return;
	control.setAutoShowErrors(false);
	control.setDivWait("divLoading");
	
    var zoom = QueryString("zoom");
    if(!objValido(zoom)) 
        zoom = 16;
    else
        zoom = parseInt(zoom, 10);  
     
    if(objValido($("hiddenAddLoc").value) && objValido($("hiddenRouteType").value))
    {
         _tipoRota = parseInt($("hiddenRouteType").value, 10);
         var addLocOrigem = eval("(" + $("hiddenAddLoc").value + ")"); 
         _ei = eval("(" + eiObjJSON + ")");
         mostrarRota(addLocOrigem, _ei);
    }
    else      
        showMap(eval("(" + eiObjJSON + ")"), zoom);
}

function showMap(ei, zoom)
{
    if(!objValido(ei)) return;
    _ei = ei; 
    
	var addLoc = new MAddressLocation();
	addLoc.point = new MPoint();
	addLoc.point.x = ei.Point.x;
	addLoc.point.y = ei.Point.y;
	
	arrayMarker.push(addLoc.point);
	arrayDados.push(ei.Icon);
	
    _map = new MMap2($('divMap'));
    criaMarcaCentral() 
    _map.addInternalPOIHandler();
    
    if(!_ei.AllowRoute) zoom = 11;
     
    _map.showAddressLocation(addLoc, zoom); 
    _map.addControl(new MMapControls());	   
    _map.addControl(new GLargeMapControl()); 
    
    GEvent.addListener(_map.currentMarker, "mouseover", function() {
        _map.currentMarker.openInfoWindowHtml(montaToolTipEI(ei));
    });
    
    if(objValido(ei.Icon.Link)) {
        GEvent.addListener(_map.currentMarker, "click", function() {
            window.open(ei.Icon.Link);
        });  
    }
    
    GEvent.addListener(_map, "moveend", function() {
         showEstabsCurrExtent();
    }); 

    lgEstab(); 
}

function montaToolTipEI(ei, titulo)
{
    if(!objValido(ei.Icon.ToolTip)) {
        ei.Icon.ToolTip = ei.Address.Street + (objValido(ei.Address.Number)? ", " + ei.Address.Number: "") + "<br />" +
                               ei.Address.City + ', ' + ei.Address.State + "<br />"
    }
    
    var htmlIconeToolTip = "<table class='txt_balloon' style='background-color: White'>" +
                                        (typeof(titulo) != "undefined" && objValido(titulo)? "<tr><td style='text-align: center' colspan='2'><b>" + titulo + "</b></td></tr>": "") + 
                                        "<tr>" +
                                            (ei.Icon.URL.indexOf("ic_endereco.gif") == -1?
                                            "<td style='margin-left: 5px; margin-right: 5px; vertical-align: middle'>"  + 
                                                "<img src='" + ei.Icon.URL + "' />" +
                                            "</td>": "") +
                                            "<td style='margin-left: 5px'>" + ei.Icon.ToolTip + 
                                                (ei.Icon.Link? "<br /><br /><a href='" + ei.Icon.Link + "' target='_blank'>Mais Informações</a>": "") + 
                                            "</td>" +
                                       "</tr>" +
                                   "</table>"; 
                           
   return htmlIconeToolTip;
}

function montaToolTipAdd(add, titulo)
{
    if(typeof(titulo) == "undefined" && !objValido(titulo))
        var titulo = 'Endereço Pesquisado';
    
    return "<div class='txt_balloon' style='background-color: White'> <b>" + titulo + "</b><br /><br />" +
                 add.street.toUpperCase() + (objValido(add.houseNumber)? ", " + add.houseNumber: "") + "<br />" +
                 (objValido(add.district)? add.district + ", ": "") + add.city.name + ", " + add.city.state + (objValido(add.zip)? "<br /><b>CEP:&nbsp;</b>" + add.zip: "") + "<br />" +
             "</div>";
}

function criaMarcaCentral()
{
    var icon = new GIcon(_map.iconDefault);
    icon.shadow = "";
    icon.shadowSize = null;
	icon.image = _ei.Icon.URL;
    icon.infoWindowAnchor = new GPoint(_ei.Icon.Width/2, 2);
	icon.iconSize = new GSize(_ei.Icon.Width, _ei.Icon.Height);
	icon.iconAnchor = new GPoint(_ei.Icon.Width/2, _ei.Icon.Height/2);
	_map.setCentralIcon(icon);
}


function procuraOrigem(tipoRota)
{         
     if($("txtStreet").value.length < 3) {
         alert("A rua do endereço deve ter no mínimo três caracteres.");
         return;
     }
    
     _tipoRota = tipoRota;
    
     var cidadesGrandeSaoPaulo = new Array("ARUJA", "BARUERI", "CARAPICUIBA", "COTIA", "DIADEMA", "EMBU", "FERRAZ DE VASCONCELOS", "GUARULHOS", "ITAPECERICA DA SERRA", "ITAPEVI", "ITAQUAQUECETUBA", "JANDIRA", "MAUA", "OSASCO", "POA", "RIBEIRAO PIRES", "RIO GRANDE DA SERRA", "SANTANA DE PARNAIBA", "SANTO ANDRE", "SAO BERNARDO DO CAMPO", "SAO CAETANO DO SUL", "SAO PAULO", "SUZANO", "TABOAO DA SERRA");
     
     var achou;
     for(var i = 0; i < cidadesGrandeSaoPaulo.length; i++) {
        if(cidadesGrandeSaoPaulo[i] == removeAcentos(_ei.Address.City).toUpperCase()) {
            achou = true;
            break;
        }
     }
     var cidadePesquisa;
     if(achou)
        cidadePesquisa = "Grande São Paulo";
     else
        cidadePesquisa = _ei.Address.City;

     var add = new MAddress();
     add.street = $("txtStreet").value;
     add.houseNumber = $("txtNumber").value;
     add.city = new MCity();
     add.city.name = cidadePesquisa;
     add.city.state = _ei.Address.State;
     
     var mPagAdd = montaMPagAdd("divPagAddInt", cidadePesquisa, "ver rota");
     mPagAdd.onShow = function () {
               //$("divPagAddInt").getElementsByTagName("TABLE")[0].style.align="center";
               MElement.hide("tblMap");
               MElement.show("divPagAddExt");
               MElement.hide("divDescCaminhoExt");
               MElement.hide("divServicesListExt");   
     };
      
     var mGeo = new MGeocoderMannager(mPagAdd);
     mGeo.findAddress(add,
            function(addLocOrigem) {
                if(!objValido(addLocOrigem))
                {
                    alert("O endereço não foi encontrado.");
                    return;
                }
               
                MElement.hide("divPagAddExt"); 
                mostrarRota(addLocOrigem, _ei);  
            }); 
}

function printMap()
{
    var winHeight = 470;
    var winWidth = 550;
    
    var winLeft = screen.width/2 - winWidth/2;
    var winTop = screen.height/2 - winHeight/2;
    
    window.open('mapa_impressao.aspx', 'MapaImpressao' ,'top=yes,toolbar=no,resizable=no,scrollbars=no,width='+winWidth+',height='+winHeight+',left='+winLeft+',top='+winTop);
}

function printPath()
{
    var winHeight = 470;
    var winWidth = 600;
    
    var winLeft = screen.width/2 - winWidth/2;
    var winTop = screen.height/2 - winHeight/2;
    
    window.open('rota_impressao.aspx', 'RotaImpressao' ,'top=yes,toolbar=no,resizable=no,scrollbars=yes,width='+winWidth+',height='+winHeight+',left='+winLeft+',top='+winTop);
}

function sendMapToEmail()
{
    var winHeight = 270;
    var winWidth = 600;
    
    var winLeft = screen.width/2 - winWidth/2;
    var winTop = screen.height/2 - winHeight/2;
    
    window.open('mapa_email.aspx', 'MapaEmail' ,'top=yes,toolbar=no,resizable=no,scrollbars=no,width='+winWidth+',height='+winHeight+',left='+winLeft+',top='+winTop);
}

function reversePath()
{
    MElement.hide("divDescCaminhoInt"); 
   
    var temp = _origemRota;
   _origemRota = _destinoRota;
   _destinoRota = temp;
   
   mostrarRota(_origemRota, _destinoRota); 
}

function limparDesenhoRota() {
    if(_rMann) {
        if (_rMann.rControl.markers)
            for(var i = 0; i < _rMann.rControl.markers.length; i++) {
                if(_map) _map.removeOverlay(_rMann.rControl.markers[i]);
            }
                
        _rMann.destroy();
    }
    $("divDescCaminhoInt").innerHTML = "";
}
  
var _rMann = null;
function mostrarRota(origem, destino)
{ 
        limparDesenhoRota();
        
        _origemRota = origem;
        _destinoRota = destino;  
        arrayMarker = null;
        if(objValido(origem.Name))  
        {
            arrMarker.push(origem.Point);
        }
        else
            arrMarker.push(origem.point);
        
        if(objValido(destino.Name))  
        {
            arrMarker.push(destino.Point);
        }
        else
            arrMarker.push(destino.point);
       
        if($("divRouteToolsProximity")) $("divRouteToolsProximity").style.display = "block";
        if($("divRouteToolsLightServices")) $("divRouteToolsLightServices").style.display = "block";
        if($("divToolsProximity")) $("divToolsProximity").style.display = "none";
        if($("divToolsLightServices")) $("divToolsLightServices").style.display = "none"; 
       
        var mPag = new MPaginationControl(['',''],'','',10);
        var mapCfg = new MMapConfig('divMap', new MMapSize(505,330));
       
        mapCfg.startRouteIcon=new GIcon(MGetBaseIcon());
        if(objValido(origem.Name))  
        {
            mapCfg.startRouteIcon.image = origem.Icon.URL;   
            mapCfg.startRouteIcon.iconSize = new GSize(origem.Icon.Width, origem.Icon.Height);
            mapCfg.startRouteIcon.iconAnchor = new GPoint(origem.Icon.Width/2, origem.Icon.Height/2);
            mapCfg.startRouteIcon.infoWindowAnchor = new GPoint(origem.Icon.Width/2, 2);  
        }
        else
        {
            mapCfg.startRouteIcon.image = _urlImages + "Includes/Images/ic_origem.gif";
            mapCfg.startRouteIcon.iconSize = new GSize(34, 13);
            mapCfg.startRouteIcon.iconAnchor = new GPoint(17, 7) ;
            mapCfg.startRouteIcon.infoWindowAnchor = new GPoint(17, 2);
        }    
        mapCfg.startRouteIcon.shadow = "";
        mapCfg.startRouteIcon.shadowSize = null;
        mapCfg.startRouteIcon.infoShadowAnchor = null;

        mapCfg.endRouteIcon=new GIcon(MGetBaseIcon());
        if(objValido(destino.Name))  
        {
            mapCfg.endRouteIcon.image = destino.Icon.URL;   
            mapCfg.endRouteIcon.iconSize = new GSize(destino.Icon.Width, destino.Icon.Height);
            mapCfg.endRouteIcon.iconAnchor = new GPoint(destino.Icon.Width/2, destino.Icon.Height/2); 
            mapCfg.endRouteIcon.infoWindowAnchor = new GPoint(destino.Icon.Width/2, 2);  
        }
        else
        {
            mapCfg.endRouteIcon.image = _urlImages + "Includes/Images/ic_destino.gif";
            mapCfg.endRouteIcon.iconSize = new GSize(34, 13);
            mapCfg.endRouteIcon.iconAnchor = new GPoint(17, 7) ;
            mapCfg.endRouteIcon.infoWindowAnchor = new GPoint(17, 2);
        }    
        mapCfg.endRouteIcon.shadow = "";
        mapCfg.endRouteIcon.shadowSize = null;
        mapCfg.endRouteIcon.infoShadowAnchor = null;
        
        var routeOpts = montaMRouteOptions();
        
//        if(!_rMann) {
            _rMann = new MRouteMannager(mPag, mapCfg, routeOpts, "divDescCaminhoInt");
            _rMann.descrOptions = montaOpcoesDescrRota(); 
//        }
//        else {
//            _rMann.routeCfg = mapCfg;
//            _rMann.ro = routeOpts;
//        }
       
        var origemRota, destinoRota;
       
        if(objValido(origem.Name))
        {
            origemRota = new MPOILocation();
            origemRota.name = origem.Name;   
            origemRota.point = new MPoint();
            origemRota.point.x = origem.Point.x;
            origemRota.point.y = origem.Point.y; 
            origemRota.city = new MCity(); 
        }
        else
        {
            origemRota = origem; 
        }   
          
        if(objValido(destino.Name)) 
        {
            destinoRota = new MPOILocation();
            destinoRota.name = destino.Name;   
            destinoRota.point = new MPoint();
            destinoRota.point.x = destino.Point.x;
            destinoRota.point.y = destino.Point.y; 
            destinoRota.city = new MCity();
        } 
        else
        {
             destinoRota = destino;
        }     
        
        MElement.show("tblMap");  
        _rMann.createRoute([origemRota, destinoRota],
            function(estagioRota)
            {
                if(estagioRota == M_STAT_ROUTE) {
                    var dTotal = _rMann.routeInfo.routeTotals.totalDistance;
                    var sDistancia = "";
                    if(dTotal < 1)
                        sDistancia = String(parseInt(dTotal * 1000)) + " metros";
                    else
                        sDistancia = String(dTotal).replace(/\./g,",") + " Km";
                    $("spanDistancia").innerHTML = sDistancia;
                    
                    if(objValido(origem.Name)) 
                    {
                        GEvent.addListener(control.currentMap.routeStartMarker, "mouseover", function() {
			                control.currentMap.routeStartMarker.openInfoWindowHtml(montaToolTipEI(origem, "Ponto de Origem"));
		                });
		                
		                $("spanOrigem").innerHTML = origem.Name;
		                
		                lgRoute("ROUTE_FROM", destino, dTotal);     // estabelecimento -> endereco (rota inversa)
		            }
		            else
		            {
		               GEvent.addListener(control.currentMap.routeStartMarker, "mouseover", function() {
			                control.currentMap.routeStartMarker.openInfoWindowHtml(montaToolTipAdd(origem.address, "Ponto de Origem"));
		                });
		                
		                $("spanOrigem").innerHTML = origem.address.street + (objValido(origem.address.houseNumber)? ", " + origem.address.houseNumber: "");
		                
		                lgRoute("ROUTE_TO", origem, dTotal); // endereco -> estabelecimento 
		            }
                    
                    if(objValido(destino.Name))
                    {
                        GEvent.addListener(control.currentMap.routeEndMarker, "mouseover", function() {
			                    control.currentMap.routeEndMarker.openInfoWindowHtml(montaToolTipEI(destino, "Ponto de Destino"));
		                });
		                
		                $("spanDestino").innerHTML = destino.Name;
                    }
                    else
                    {
                        GEvent.addListener(control.currentMap.routeEndMarker, "mouseover", function() {
			                    control.currentMap.routeEndMarker.openInfoWindowHtml(montaToolTipAdd(destino.address, "Ponto de Destino"));
		                });
		                
		                $("spanDestino").innerHTML = destino.address.street + (objValido(destino.address.houseNumber)? ", " + destino.address.houseNumber: "")
                    }
		            
		            _map = getMaplinkAPI().currentMap;
                    _map.addInternalPOIHandler(); 
		            _map.addControl(new MMapControls());	
                    _map.addControl(new GLargeMapControl()); 
		            
		            MElement.show("divOrigemDestino");
		            MElement.show("divDescCaminhoExt");
		            
		            clearServices();
                }
            });    
}

function showObjectPropertiesGLog(obj) {
        GLog.write("Object Properties:");
        try {
                for(prop in obj) {
                        try {
                                if (prop.substr(0, 3) == "get") {
                                        GLog.write("  " + prop + " = " + obj[prop]());
                                } else {
                                        GLog.write("  " + prop + " = " + obj[prop]);
                                }
                        } catch (err) {
                                GLog.write("  " + prop);
                        }
                }
        } catch (err) {
                alert(err.name + ": " + err.message);
        }

} 

function callFindOriginFunction(ev)
{
    var e;
    if(ev)
        e = ev;
    else
        e = window.event;
     
    if(e.keyCode == 13) {
        procuraOrigem(0);
    }
}

function montaTDescrRota()
{
    var tDescRota = new MTable(520);
    tDescRota.setLineStyle('height: 11px; background-color: #F4F4F4;'); 
    tDescRota.setLineAlterStyle('height: 11px; background-color: #FFFFFF;');
    tDescRota.noHeader = true;
    tDescRota.insertLine('<tr><td colspan="5" style="text-align: left"><strong>Manobra</strong></td></tr>');
                
    return tDescRota;
}

function montaOpcoesDescrRota()
{
    var opcoesDescrRota = {
        "imgDir":M_IMG_API+"/route",
        "imgInitRoute":"ico_mapa_origem.gif",
        "imgEndRoute":"ico_mapa_destino.gif",
        "imgContinue":"ico_mapa_up.gif",
        "imgLeft":"ico_mapa_left.gif",
        "imgRight":"ico_mapa_right.gif",
        "imgFind":"img_map_lupa.gif",
        "tableDescr": montaTDescrRota()
    };
   
    return opcoesDescrRota;
}

function montaMRouteOptions()
{    
    var ro = new MRouteOptions();
    var rd = new MRouteDetails();
    rd.routeType = _tipoRota;
  
    var ve = new MVehicle();
    ve.tankCapacity = 60;
    ve.averageConsumption = 12;
    ve.fuelPrice = 2.5;
    ve.averageSpeed = 80;
    ve.tollFeeCat = 0;
    ro.language = "portugues";
    ro.vehicle = ve;
    ro.routeDetails = rd;
    
    return ro;
}

function voltarPagAdd()
{
    MElement.show("tblMap");
    if($("divDescCaminhoInt").innerHTML.indexOf("table") != -1) 
        MElement.show("divDescCaminhoExt");
    if($("divServicesListInt").innerHTML.indexOf("table") != -1)
        MElement.show("divServicesListExt");
    MElement.hide("divPagAddExt"); 
}

function lgEstab()
{
    var strData = "tipo_sl=" + tipo_sl;
    strData += "&id_cliente=" + id_cliente;
    strData += "&id_subcliente=" + id_subcliente;
    strData += "&operacao=MAPA";
    strData += "&cidade=" + _ei.Address.City; 
    strData += "&estado=" + _ei.Address.State; 
    strData += "&GUID=" + GUID;
    
    var ajaxUtil = new AJAXUtil(AJAX_UTIL_POST, $("hiddenURLAJAXPages").value + "ajaxL.aspx", function() { showEstabsCurrExtent(); });
    ajaxUtil.setResponseType(AJAX_UTIL_PLAIN_TEXT);
    ajaxUtil.setParamsPost(strData);
    ajaxUtil.getData(); 
}

function lgRoute(operacao, addLoc, kms)
{ 
    var strData = "tipo_sl=" + tipo_sl;
    strData += "&id_cliente=" + id_cliente;
    strData += "&id_subcliente=" + id_subcliente;
    strData += "&operacao=" + operacao; 
    strData += "&cidade=" + _ei.Address.City; 
    strData += "&estado=" + _ei.Address.State;  
    strData += "&rua_pesquisa=" + addLoc.address.street;
    strData += "&numero_pesquisa=" + addLoc.address.houseNumber;
    strData += "&cidade_pesquisa=" + addLoc.address.city.name;
    strData += "&estado_pesquisa=" + addLoc.address.city.state;
    strData += "&X_pesquisa=" + addLoc.point.x;
    strData += "&Y_pesquisa=" + addLoc.point.y; 
    strData += "&kms_rota=" + kms;  
    strData += "&GUID=" + GUID;
    
    var ajaxUtil = new AJAXUtil(AJAX_UTIL_POST, $("hiddenURLAJAXPages").value + "ajaxL.aspx", function() { showEstabsCurrExtent(); });
    ajaxUtil.setResponseType(AJAX_UTIL_PLAIN_TEXT);
    ajaxUtil.setParamsPost(strData);
    ajaxUtil.getData(); 
}

function showServices()
{
    var sp = 0; 
    if(QueryString("sp") != "") 
        sp = parseInt(QueryString("sp"), 10);
         
    var strData = "sp=" + sp;
    strData += "&categoria=" + $("cboServices").value;
    strData += "&X=" + _ei.Point.x;
    strData += "&Y=" + _ei.Point.y; 
    strData += "&cidade=" + _ei.Address.City;
    strData += "&uf=" + _ei.Address.State;
    
    var ajaxUtil = new AJAXUtil(AJAX_UTIL_POST, $("hiddenURLAJAXPages").value + "ajaxServices.aspx", showServicesCallBack);
    ajaxUtil.setResponseType(AJAX_UTIL_PLAIN_TEXT);
    ajaxUtil.setParamsPost(strData);
    ajaxUtil.getData(); 
   
    MElement.show("divLoading"); 
}

function showServicesCallBack(data)
{  
    MElement.hide("divLoading");  
    
    clearServices();
          
    var estabs = eval("(" + data + ")"); 
    if(estabs.length > 0)
    {
        var htmlEstabs = "<table style='width: 97%'>"
        for(var i = 0; i < estabs.length; i++)
        {
             if(i % 2 == 0)
                htmlEstabs += "<tr style='background-color: #FFFFFF'>";
             else
                htmlEstabs += "<tr style='background-color: #F4F4F4'>";
                
             htmlEstabs += "<td><b>" + (i + 1) + "<b></td>";
             htmlEstabs += "<td>" + estabs[i].Name + "</td>";
             htmlEstabs += "<td>" + estabs[i].Address + "</td>";
             htmlEstabs += "</tr>";
             
             var baseIcon = new GIcon();
             baseIcon.shadow = "";
             baseIcon.shadowSize = null;
             baseIcon.iconAnchor = new GPoint(estabs[i].Icon.Width/2, estabs[i].Icon.Height/2);
             baseIcon.infoWindowAnchor = new GPoint(estabs[i].Icon.Width/2, 2);  
             baseIcon.infoShadowAnchor = null;    
             baseIcon.iconSize = new GSize(estabs[i].Icon.Width, estabs[i].Icon.Height);
             baseIcon.image = estabs[i].Icon.URL;
             var markPoint = new MPoint(parseFloat(estabs[i].Point.x), parseFloat(estabs[i].Point.y));
             var mark = new GMarker(markPoint, baseIcon);
             _markers[_markers.length] = mark;
             adicionaToolTipListenerService(mark, baseIcon.image, estabs[i].Icon.ToolTip);
             _map.addOverlay(mark);
        }  
        htmlEstabs += "</table>"; 
       
        dist = calculaDistancia(_ei.Point, estabs[0].Point) * 1.1;

        var zoomLevel;
        if (dist < 0.24)
             zoomLevel = 17;
        else if (dist < 0.47)
             zoomLevel = 16;
        else if (dist < 0.94)
             zoomLevel = 15;
        else if ( dist < 1.88)
             zoomLevel = 14;
        else if (dist < 3.76)
             zoomLevel = 13;
        else if (dist < 7.52)
             zoomLevel = 12;
        else if (dist < 15.02)
            zoomLevel = 11; 
        else if (dist < 30.05)
            zoomLevel = 10; 
        else if (dist < 60.13)
            zoomLevel = 9; 
        else if (dist < 120.27)
            zoomLevel = 8;
        else if (dist < 240.59)
            zoomLevel = 7;
        else if (dist < 481.19)
            zoomLevel = 6;
        else if (dist < 962.38)
            zoomLevel = 5;
        else
            zoomLevel = 4; 
           
        _map.setZoom(zoomLevel);
        _map.setCenter(new GPoint(_ei.Point.x, _ei.Point.y));   
    }

    $("divServicesListInt").innerHTML = htmlEstabs;
    MElement.show("divServicesListExt");
}

function calculaDistancia(point1, point2)
{
    return 102.960 * Math.sqrt(Math.pow((point1.x - point2.x), 2) + Math.pow((point1.y - point2.y), 2));
}

function adicionaToolTipListenerService(mark, image, toolTip)
{
     GEvent.addListener(mark, "mouseover", 
        function()
        {
               mark.openInfoWindowHtml(montaToolTipService(image, toolTip));                         
        });   
}

function montaToolTipService(image, toolTip)
{               
      return "<table class='txt_balloon' style='background-color: White'>" +
                    "<tr>" +
                        "<td style='margin-left: 5px; margin-right: 5px; vertical-align: middle'>"  + 
                            "<img src='" + image + "' />" +
                        "</td>" +
                        "<td style='margin-left: 5px'>" +
                            toolTip + 
                        "</td>" +
                   "</tr>" +
               "</table>";   
}

function clearServices()
{
    for(var i = 0; i < _markers.length; i++) 
       _map.removeOverlay(_markers[i]);
       
    _markers = new Array(); 
     
    $("divServicesListInt").innerHTML = "";   
    MElement.hide("divServicesListExt");
}

function showEstabsCurrExtent(data)
{  
    if(!mostrarEstabsExtent)
        return;
    
    if(_map.getZoom() >= zoomExtent) {
        var strData = "SLTypeN=" + n_tipo_sl;
        strData += "&clientCode=" + id_cliente;
        strData += "&tabela=" + tabela;
        strData += "&XMin=" + _map.getBounds().getSouthWest().lng();
        strData += "&YMin=" + _map.getBounds().getSouthWest().lat(); 
        strData += "&XMax=" + _map.getBounds().getNorthEast().lng(); 
        strData += "&YMax=" + _map.getBounds().getNorthEast().lat();

        var ajaxUtil = new AJAXUtil(AJAX_UTIL_POST, $("hiddenURLAJAXPages").value + "ajaxExtent.aspx", showEstabsCurrExtentCallBack);
        ajaxUtil.setResponseType(AJAX_UTIL_PLAIN_TEXT);
        ajaxUtil.setParamsPost(strData);
        ajaxUtil.getData(); 
    }
    else {
        for(var i = 0; i < _estabs.length; i++)
            _map.removeOverlay(_estabs[i]);
    }
}

function showEstabsCurrExtentCallBack(data)
{
    for(var i = 0; i < _estabs.length; i++)
        _map.removeOverlay(_estabs[i]);
    _estabs = new Array();
    
    var estabs = eval("(" + data + ")");
    for(var i = 0; i < estabs.length; i++) {
        var baseIcon = new GIcon();
        baseIcon.shadow = "";
        baseIcon.shadowSize = null;
        baseIcon.iconAnchor = new GPoint(estabs[i].Icon.Width/2, estabs[i].Icon.Height/2);
        baseIcon.infoWindowAnchor = new GPoint(estabs[i].Icon.Width/2, 2);  
        baseIcon.infoShadowAnchor = null;    
        baseIcon.iconSize = new GSize(estabs[i].Icon.Width, estabs[i].Icon.Height);
        baseIcon.image = estabs[i].Icon.URL;
        var markPoint = new MPoint(parseFloat(estabs[i].Point.x), parseFloat(estabs[i].Point.y));
        var mark = new GMarker(markPoint, baseIcon);
        adicionaToolTipListenerEstab(mark, estabs[i]);
        _map.addOverlay(mark);
        _estabs[_estabs.length] = mark;
    }
}

function adicionaToolTipListenerEstab(mark, ei)
{
    GEvent.addListener(mark, "click", 
        function()
        {
               mark.openInfoWindowHtml(montaToolTipEI(ei));                         
        });   
}


