﻿// JScript File
var _markers = [];

Number.prototype.formatKm = function(c, d, t)
{
    //debugger;
    var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, i = parseInt(n = (+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0; return " " + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};

function PreparaTela()
{
    document.getElementById('hdnPontoOrigem').value = document.getElementById('acCidadeEstado_hdnSelectedValue').value;

    if(document.getElementById('acCidadeEstado_hdnSelectedValue').value != '')
    {
        var city = eval('(' + document.getElementById('acCidadeEstado_hdnSelectedValue').value + ')');
        if(city.addressesAvailable && document.getElementById('hdnTipoRota').value == '2')
        {
            document.getElementById('NumeroPasso').innerHTML = '3';
            document.getElementById('tdEndereco').className = 'view';            
        }
        else
        {
            document.getElementById('NumeroPasso').innerHTML = '2';
            document.getElementById('tdEndereco').className = 'none';            
        }
    }  
}

function SomenteNumeros(evt)
{
    var e;
    if(evt)
        e = evt;
    else
        e = window.event;

    var charCode = (e.which) ? e.which : e.keyCode
   
    //alert(charCode);
    
    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 44)
       return false;
    return true;
}

function ValidaTela()
{
    //debugger;
    if(document.getElementById('acCidadeEstado_hdnSelectedValue').value == "" || document.getElementById('txtCombustivel').value == "" || document.getElementById('txtConsumoMedio').value == "" || document.getElementById('txtConsumoTanque').value == "")
    {
        alert('Todos os campos com asterisco devem ser preenchidos.');
    } 
    else
    {
        //debugger;   
        if(document.getElementById('acEndereco_hdnSelectedValue').value != "")
            document.getElementById('hdnPontoOrigem').value = document.getElementById('acEndereco_hdnSelectedValue').value;
        if(document.getElementById('chbTR').checked)
            document.getElementById('hdnTR').value = '0';
        else
            document.getElementById('hdnTR').value = '1';
                
        document.form1.action = "rota.aspx";
        document.form1.submit();
    }
}

var _routeStops = new Array();

function MontaRota()
{
    //debugger;
    var tA1 = eval('(' + $('hdnPontoOrigem').value + ');');

    var tempAddress1 = new MAddressLocation();
   
    if(tA1.address == null)
    { 
        tempAddress1.address = new MAddress();
        tempAddress1.address = tA1;
        tempAddress1.point = tA1.point;
    }
    else
        tempAddress1 = tA1; 

    
    var tA2 = eval('(' + $('hdnPontoDestino').value + ');');

    tempAddress2 = tA2; 

    mapa = new MMap2($('divMapa'));
    var routeStop;
    
    control = new MaplinkAPI();
    if(!control)
        return;
        
    // Origem

    //debugger;

    routeStop = new MAddressLocation();
    routeStop.address = new MAddress();

    routeStop.address.street = tempAddress1.address.street;
    routeStop.address.houseNumber = tempAddress1.address.houseNumber;
    routeStop.address.district = tempAddress1.address.district;
    routeStop.address.zip = tempAddress1.address.zip;
   
    routeStop.address.city = new MCity(); 
    routeStop.address.city.name = tempAddress1.address.city.name;
    routeStop.address.city.state = tempAddress1.address.city.state;

    routeStop.point = new MPoint();
    routeStop.point.x = tempAddress1.point.x;
    routeStop.point.y = tempAddress1.point.y;

    _routeStops[0] = routeStop;  


    if(typeof(tempAddress1.address.street) != "undefined" && tempAddress1.address.street)
        $('lblOrigem').value += tempAddress1.address.street + (tempAddress1.address.houseNumber? ', ' + tempAddress1.address.houseNumber: '') + '<br/>';
                 
    $('lblOrigem').innerHTML += (tempAddress1.address.district? tempAddress1.address.district + " ( ": "") + tempAddress1.address.city.name + " - " + tempAddress1.address.city.state + (tempAddress1.address.district? " ) ": "");

    // Destino

    //debugger;
    routeStop = new MAddressLocation();
    routeStop.address = new MAddress();

    routeStop.address.street = tempAddress2.address.street;
    routeStop.address.houseNumber = tempAddress2.address.houseNumber;
    routeStop.address.district = tempAddress2.address.district;
    routeStop.address.zip = tempAddress2.address.zip;
   
    routeStop.address.city = new MCity(); 
    routeStop.address.city.name = tempAddress2.address.city.name;
    routeStop.address.city.state = tempAddress2.address.city.state;

    routeStop.point = new MPoint();
    routeStop.point.x = tempAddress2.point.x;
    routeStop.point.y = tempAddress2.point.y;
    
    _routeStops[1] = routeStop;   

    MostraRota();
   
    mapa.checkResize();
    mapa.enableDoubleClickZoom();
}

function MostraRota()
{
    var mPag = new MPaginationControl('divRodapeDetalhesRota','table','',10);
    var mapCfg = new MMapConfig('divMapa',new MMapSize(593,366));

    _routeOpts = montaMRouteOptions();
    rMann = new MRouteMannager(mPag, mapCfg, _routeOpts);
    rMann.descrOptions = montaOpcoesDescrRota();
    rMann.createRoute(_routeStops,
        function(estagioRota)
        {
            if(estagioRota == M_STAT_ROUTE)
            {

                //debugger;
                var ri = rMann.routeInfo;
                
                //_segsDesc = ri.segDescription;
               
                $('lblDistanciaRed').innerHTML = ri.routeTotals.totalDistance.formatKm() + ' Km';
                $('lblDistancia').innerHTML = ri.routeTotals.totalDistance.formatKm() + ' Km'; 
                $('lblTempoViagem').innerHTML = ri.routeTotals.totalTime.toString().replace(/PT/,'').replace(/P/,'').replace(/DT/,(' dia(s) ')).replace(/H/, (' hora(s) ')).replace(/M/, (' minuto(s)'));
                $('lblCustoPedagio').innerHTML = 'R$ ' + ri.routeTotals.totaltollFeeCost.formatKm();
                $('lblTotalCombustivel').innerHTML = ri.routeTotals.totalFuelUsed.toString().replace('.',',') + ' litro(s)';
                $('lblCustoCombustivel').innerHTML = 'R$ ' + ri.routeTotals.totalfuelCost.formatKm();
                $('lblCustoTotal').innerHTML = 'R$ ' + ri.routeTotals.totalCost.formatKm();
                

                cidRota = _routeStops[0].address.city.name;
                estRota = _routeStops[0].address.city.state;

                mapa = getMaplinkAPI().currentMap;
                mapa.addControl(new MMapControls());
                mapa.addControl(new GLargeMapControl()); 

                if(objValido(_routeStops[0].address)) { // endereco de origem
	                GEvent.addListener(control.currentMap.routeStartMarker, "click", function() {
                        control.currentMap.routeStartMarker.openInfoWindowHtml(montaToolTip('Ponto de Origem', _routeStops[0].address));
                    });
                }

    		    if(objValido(_routeStops[1].address)) { // endereco de destino
                    GEvent.addListener(control.currentMap.routeEndMarker, "click", function() {
                        control.currentMap.routeEndMarker.openInfoWindowHtml(montaToolTip('Ponto de Destino', _routeStops[1].address)); 
                    });
                }
            }
        
            
            if(estagioRota == M_STAT_ROUTE)
            {
                //debugger; 
                map=getMaplinkAPI().currentMap;
                var ri = this.routeInfo;
    //            $('distPer').innerHTML=ri.routeTotals.totalDistance.formatKm()+' Km';
    //            $('totTime').innerHTML=ri.routeTotals.totalTime.toString().replace(/PT/,'').replace(/P/,'').replace(/DT/,(' dias ')).replace(/H/, (' horas ')).replace(/M/, (' minutos'));
    //            $('custPed').innerHTML='R$ '+ri.routeTotals.totaltollFeeCost.formatKm();
    //            $('gasNed').innerHTML=ri.routeTotals.totalFuelUsed.toString().replace('.',',')+' litro(s)';
    //            $('gasTCost').innerHTML='R$ '+ri.routeTotals.totalfuelCost.formatKm();
    //            $('totCost').innerHTML='R$ '+ri.routeTotals.totalCost.formatKm();
    //            $('pistaD').innerHTML=ri.roadType.twoLaneHighway.formatKm()+' Km';
    //            $('pistaE').innerHTML=ri.roadType.secondLaneUnderConstruction.formatKm()+' Km';
    //            $('pistaS').innerHTML=ri.roadType.oneLaneRoadway.formatKm()+' Km';
    //            $('pistaP').innerHTML=ri.roadType.pavingWorkInProgress.formatKm()+' Km';
    //            $('pistaB').innerHTML=ri.roadType.dirtRoad.formatKm()+' Km';
    //            $('pistaM').innerHTML=ri.roadType.roadwayInPoorConditions.formatKm()+' Km';
    //            $('pistaF').innerHTML=ri.roadType.ferry.formatKm()+' Km';

                sd = ri.segDescription;
                var par=false;
                var parEstrada=false;
                var parPedagio=false;
                
                var rodovia='';
                var pRoadType='p';
                var cidades=[];
                cidades.push(_routeStops[0].address.city.name+'/'+_routeStops[0].address.city.state);
                cidades.push(_routeStops[_routeStops.length - 1].address.city.name+'/'+_routeStops[_routeStops.length - 1].address.city.state);
                
                var html=new Array();
                html.push('<table cellpadding="0" cellspacing="0" style="text-align:left" class="tblRota" width="100%" style="width: 100%">' +
                    '<tr style="background-color: gainsboro;"><td colspan="4" style="height: 15px" height="15px"><b>Descrição da Rota</b></td></tr>' +
                    '<tr class="faixaTom2"><td style="width: 32; height: 15px" height="15px"></td><td style="width: 12%; height: 15px" height="15px"><b>Km</b></td><td><b>Rodovia / Local</b></td><td style="height: 15px" height="15px" align="center"><b/></td></tr>');

                var inicioRota = '';;
                if(typeof(_routeStops[0].address.street) != "undefined" && _routeStops[0].address.street)
                    inicioRota = _routeStops[0].address.street + (_routeStops[0].address.houseNumber? ', ' + _routeStops[0].address.houseNumber + ' - ': '');
                inicioRota += _routeStops[0].address.city.name + ' - ' + _routeStops[0].address.city.state;
                
                html.push('<tr><td style="width: 32px" width="32" background="image/pista/P_P.gif"><img src="image/pista/sorigem.gif" style="float: left"/></td><td style="width: 12%"></td><td><b>' + inicioRota + '</b></td><td align="right"><a href="javascript:_MHandlerClickMiniMap(%27' +_routeStops[0].point.x+'%27,%27'+_routeStops[0].point.y+'%27);"><img src="image/ico_lupa.gif" border="0"/></a></td></tr>');

                var htmlEstrada=new Array();
                htmlEstrada.push('<table cellpadding="0" cellspacing="0" class="tblInfo" style="width: 100%">');
                
//                var htmlPedagio=new Array();
//                htmlPedagio.push('<table cellpadding="0" cellspacing="0"><tr style="height:1px;background-color:#cccccc"><td colspan="2" /></tr><tr><td colspan="2" class="tLaranja">Resumo dos Pedágios:</td></tr>');
                var lim=0;
                if(sd.length>2)
                for(var kk=1; kk < (sd.length-1);kk++)
                {
                    //debugger;
                    var flag=[];
                    var comeco=true;
                    var print = false;
                    flag.push(cidades.indexOf(sd[kk].city.name+'/'+sd[kk].city.state)!=-1);/*0=cidade*/
                    flag.push(sd[kk].poiRoute==null);/*1=posto*/
                    flag.push(sd[kk].tollFee==null);/*2=pedagio*/
                    flag.push(rodovia==sd[kk].description);/*3=rodovia*/
                    flag.push(flag.indexOf(true)!=-1||sd[kk].roadType==pRoadType);/*mudança de pista*/
                    
                    
                    while(flag.length>0)
                    {
                        if(flag.pop())
                            continue;
                           
                        print = false; 

                        switch(flag.length)
                        {
                            case 3:/*rodovia*/
                                //debugger;
                                if($('hdnTipoRota').value == 2)
                                {
                                    html.push('<tr');
                                    if(!par)
                                        html.push(' class="faixaTom2"');

                                    html.push('><td valign="bottom" width="32" style="vertical-align: bottom; width: 32px; background:url(image/pista/'+pRoadType+'_'+sd[kk].roadType+'.gif)">');
                                    if(pRoadType != sd[kk].roadType)
                                        html.push('<img src="image/pista/' + sd[kk].roadType + '_' + sd[kk].roadType + '.gif" />');
                                    html.push('</td><td class="km">');
                                    pRoadType=sd[kk].roadType;
                                    if(comeco)
                                        html.push(sd[kk-1].cumulativeDistance.formatKm());
                                    html.push('&nbsp</td><td>');                                
                        

                                    if(!isRotaRodoviaria(sd[kk]))
                                        html.push('<img src="' + tratarImagem(sd[kk].command) + '" /> ' + sd[kk].command + '<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
                                    else
                                        html.push('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
                                    html.push('<b><font color="#215D94">'+sd[kk].description+' - ');
                                    print = true;
                                }
                                else
                                {
                                    if(isRotaRodoviaria(sd[kk]))
                                    {
                                    
                                        html.push('<tr');
                                        if(!par)
                                            html.push(' class="faixaTom2"');

                                        html.push('><td valign="bottom" width="32" style="vertical-align: bottom; width: 32px; background:url(image/pista/'+pRoadType+'_'+sd[kk].roadType+'.gif)">');
                                        if(pRoadType != sd[kk].roadType)
                                            html.push('<img src="image/pista/' + sd[kk].roadType + '_' + sd[kk].roadType + '.gif" />');
                                        html.push('</td><td class="km">');
                                        pRoadType=sd[kk].roadType;
                                        if(comeco)
                                            html.push(sd[kk-1].cumulativeDistance.formatKm());
                                        html.push('&nbsp</td><td>');
                                        

                                        html.push('<b><font color="#215D94">'+sd[kk].description+' - ');
                                        print = true; 
                                    }
                                }
                                
                                if(print)
                                {
                                    var total=0;
                                    for(var jj=kk;sd[jj].description==sd[kk].description;jj++)
                                        total+=sd[jj].distance;

                                    var str3=(Math.round(total*100)/100).toString().replace('.',',')+' Km';
                                    html.push(str3+'&nbsp</font></b>');
                                }
                                
                                if(kk > lim)
                                {
                                    if(isRotaRodoviaria(sd[kk]))
                                    {
                                        var total=0;
                                        for(var jj=kk;jj < sd.length-1 ;jj++)
                                        {
                                            if(sd[jj].description==sd[kk].description)
                                                total+=sd[jj].distance;
                                            else
                                            {
                                                if(isRotaRodoviaria(sd[jj]))
                                                {
                                                    lim = jj-1;
                                                    break;
                                                }
                                            }
                                            if(jj == sd.length-2)
                                                lim = sd.length;
                                        } 

                                        var str32=(Math.round(total*100)/100).toString().replace('.',',')+' Km';
                                    
                                        if(!parEstrada)
                                            htmlEstrada.push('<tr class="faixaTom2">');
                                        else
                                            htmlEstrada.push('<tr>');
                                            
                                        htmlEstrada.push('<td style="width: 70%">'+sd[kk].description+'</td><td align="right" style="width: 30%"><b>'+str32+'</b></td></tr>');
                                        parEstrada=!parEstrada;
                                    }
                                }
                                rodovia=sd[kk].description;
                                break;
                            case 2:/*pedagio*/
                                html.push('<tr');
                                if(!par)
                                    html.push(' class="faixaTom2"');

                                html.push('><td valign="bottom" width="32" style="vertical-align: bottom; width: 32px; background:url(image/pista/'+pRoadType+'_'+sd[kk].roadType+'.gif)">');
                                if(pRoadType != sd[kk].roadType)
                                    html.push('<img src="image/pista/' + sd[kk].roadType + '_' + sd[kk].roadType + '.gif" />');
                                html.push('</td><td class="km">');
                                pRoadType=sd[kk].roadType;
                                if(comeco)
                                    html.push(sd[kk-1].cumulativeDistance.formatKm());
                                html.push('&nbsp</td><td>');
                
                
                                            
                                html.push('<b>$ '+sd[kk].tollFeeDetails.name+'</b>&nbsp;<b><a href="javascript:lf_Info('+adicionaMarker(kk,0)+')">info</a></b>');

                                print = true;
    //                                if(parPedagio)
    //                                    htmlPedagio.push('<tr class="faixaTom2">');
    //                                else
    //                                    htmlPedagio.push('<tr>');
    //
    //                                htmlPedagio.push('<td>'+sd[kk].tollFeeDetails.name+'</td><td width="20%" align="right"><b>R$ '+sd[kk].tollFeeDetails.price.formatKm()+'</b></td></tr>');
                                parPedagio=!parPedagio;
                                break;
                            case 1:/*posto*/
                                //html.push('<img src="image/ic_ipiranga_ctf.gif"><b><font style="color:#215D94;">&nbsp;'+sd[kk].poiRouteDetails[0].name+'<b>&nbsp;<a href="javascript:lf_Info('+adicionaMarker(kk,1)+')">info</a></b></font></b>');
                                break;
                            case 0:/*cidade*/
                            
                                html.push('<tr');
                                if(!par)
                                    html.push(' class="faixaTom2"');

                                html.push('><td valign="bottom" width="32" style="vertical-align: bottom; width: 32px; background:url(image/pista/'+pRoadType+'_'+sd[kk].roadType+'.gif)">');
                                if(pRoadType != sd[kk].roadType)
                                    html.push('<img src="image/pista/' + sd[kk].roadType + '_' + sd[kk].roadType + '.gif" />');
                                html.push('</td><td class="km">');
                                pRoadType=sd[kk].roadType;
                                if(comeco)
                                    html.push(sd[kk-1].cumulativeDistance.formatKm());
                                html.push('&nbsp</td><td>');                           

                            
                                cidades.push(sd[kk].city.name+'/'+sd[kk].city.state);
                                if($('hdnTipoRota').value == 2)
                                    html.push('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + sd[kk].city.name+' - '+sd[kk].city.state);
                                else
                                    html.push(sd[kk].city.name+' - '+sd[kk].city.state);
                                   
                                print = true;
                                break;
                        }
                        if(print)
                        {
                            if(comeco)
                                html.push('</td><td align="right"><a href="javascript:_MHandlerClickMiniMap(%27' +sd[kk].point.x+'%27,%27'+sd[kk].point.y+'%27);"><img border="0" src="image/ico_lupa.gif"/></a></td></tr>');
                            else
                                html.push('</td><td/></tr>');
                           comeco=false;
                       }
                    }
                    if(!comeco)
                        par=!par;
                    print = false;

                }
                if(isRotaRodoviaria(sd[kk]))
                {
                    if(parEstrada)
                        htmlEstrada.push('<tr class="faixaTom2">');
                    else
                        htmlEstrada.push('<tr>');
                }
                
                //htmlEstrada.push('<td><b>TOTAL:</b></td><td align="right"><b>'+ri.routeTotals.totalDistance.formatKm()+' Km</b></td></tr></table>');
                $('tdResumoRota').innerHTML = htmlEstrada.join('');
                
//                if(parPedagio)
//                    htmlPedagio.push('<tr class="faixaTom2">');
//                else
//                    htmlPedagio.push('<tr>');
                
                $('lblValorPedagios').innerHTML = 'R$ ' + ri.routeTotals.totaltollFeeCost.formatKm();
                //$('totalPedagio').innerHTML=htmlPedagio.join('');
                var fimRota = $('lblDestino').innerHTML + '<br />';
                if(typeof(_routeStops[_routeStops.length - 1].address.street) != "undefined" && _routeStops[_routeStops.length - 1].address.street)
                    fimRota = _routeStops[_routeStops.length - 1].address.street + (_routeStops[_routeStops.length - 1].address.houseNumber? ', ' + _routeStops[_routeStops.length - 1].address.houseNumber + ' - ': '');
                fimRota += _routeStops[_routeStops.length - 1].address.city.name + ' - ' + _routeStops[_routeStops.length - 1].address.city.state;
                
                html.push('<tr><td background="image/pista/P_P.gif"><img src="image/pista/'+pRoadType+'_chegada.gif"/></td><td class="km">'+ri.routeTotals.totalDistance.formatKm()+'</td><td><b>' + fimRota + '</b></td><td align="right"><a class="textos" href="javascript:_MHandlerClickMiniMap(%27' +_routeStops[_routeStops.length - 1].point.x+'%27,%27'+_routeStops[_routeStops.length - 1].point.y+'%27);"><img border="0" src="image/ico_lupa.gif"/></a></td></tr></table>');
                
                $('divDescRota').innerHTML=html.join('');
                map.addControl(new MMapControls());
                map.addControl(new GLargeMapControl());
               
               $('divLoad').style.display = 'none';
            }
        
        });
        //Element.hide('divCarregando');
}

function montaMRouteOptions()
{
    var ro = new MRouteOptions();
    var rd = new MRouteDetails();

    rd.routeType = parseInt($('hdnTR').value);

    rd.optimizeRoute = true;

    var ve= new MVehicle();
    ve.tankCapacity = parseFloat($('hdnLitros').value.replace(',', '.'));
    ve.averageConsumption = parseFloat($('hdnConsumoMedio').value.replace(',', '.'));
    ve.fuelPrice = parseFloat($('hdnValorCombustivel').value.replace(',', '.'));
    ve.averageSpeed = 80;
    ve.tollFeeCat = 2;
    ro.language = "portugues";
    ro.vehicle = ve;
    ro.routeDetails = rd;

    return ro;
}

function montaOpcoesDescrRota()
{
    //debugger;
    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 montaTDescrRota()
{
    var tDescRota = new MTable(480);
    tDescRota.setLineClass('line1');
    tDescRota.setLineAlterClass('line2'); 
//    tDescRota.noHeader = true;
//    tDescRota.insertLine('<tr class="titulo"><td style="text-align: center" style="width: 185px;"><img src="img/txt_manobra.gif" alt="Manobra" title="Manobra" /></td><td style="width: 140px;"><img src="img/txt_logradouro.gif" alt="Logradouro" title="Logradouro" /></td><td style="width: 85px;"><img src="img/txt_distancia.gif" alt="Distância" title="Distância" /></td><td style="width: 55px;"><img src="img/txt_zoom.gif" alt="Zoom" title="Zoom" /></td></tr>');
                
    return tDescRota;
}

function montaToolTip(titulo, add)
{
    //debugger; <div style='BACKGROUND-COLOR: white; width:150px;height:50px'></div>
    tooltip =  "<table><tr><td>" + (objValido(titulo)? "<b>" + titulo + "</b><br /><br />":"");
    
    if(typeof(add.street) != "undefined" && add.street)
        tooltip += add.street.toUpperCase() + (add.houseNumber? ', ' + add.houseNumber: '') + '<br/>';
                 
    tooltip += (add.district? add.district + " ( ": "") + add.city.name + " - " + add.city.state + (add.district? " ) ": "") + "<br/><br/>"
                 + "</td></tr></table>";

    return tooltip;
}

function objValido(obj)
{
    if(typeof obj == 'undefined')
        return false;
    else if(!obj)
        return false;
    else
        return true;
}

//function lf_Centra(kk){
//    map.setCenter(sd[kk].point,11);
//    $('divMapa').scrollTo();
//}

//function lf_Info(markerIndex)
//{
//    $('divMapa').scrollTo();
//    GEvent.trigger(_markers[markerIndex-1],'click');
//}

function adicionaMarker(kk,tipo)
{
    var str=''; var ponto=null; var icone=false;
    if(tipo==0){
        icone=true;
        ponto=sd[kk].tollFeeDetails.point;
        str=sd[kk].tollFeeDetails.name+' - '+sd[kk].tollFeeDetails.concession+'<br/>'+sd[kk].tollFeeDetails.address+'<br/>'+sd[kk].tollFeeDetails.phone+'<br/>Preço: R$ '+sd[kk].tollFeeDetails.price.formatKm();
    }
    else{
        ponto=sd[kk].poiRouteDetails[0].point;
        str='Posto '+sd[kk].poiRouteDetails[0].source+' '+sd[kk].poiRouteDetails[0].name+'<br/>'+sd[kk].poiRouteDetails[0].addressInfo;
    }
    var marker=new GMarker(ponto,geraIcone(icone));//G_DEFAULT_ICON);//
    marker.bindInfoWindowHtml('<div style="width:280px;text-align:center;background-color:#FFF">'+str+'</div>');
    map.addOverlay(marker);
    _markers.push(marker);
    return _markers.length;
}

function geraIcone(alt)
{
    var hIcon = new GIcon();
    if(alt){
        hIcon.image='image/pista/pedagio.gif';
        hIcon.infoWindowAnchor=new GPoint(4, 14);
        hIcon.iconSize=new GSize(7,14);
    }else{
        hIcon.image='image/ic_ipiranga_ctf.gif';
        hIcon.infoWindowAnchor=new GPoint(5, 13);
        hIcon.iconSize=new GSize(11,13);
    }
    hIcon.iconAnchor=hIcon.infoWindowAnchor;
    hIcon.printImage=hIcon.image;
    return hIcon;
}

function isRotaRodoviaria(addressLocation)
{
    if (addressLocation != null)
    {
        if (addressLocation.city != null)
        {
            // Verifica se as cidades foram quebradas
            if (addressLocation.city.name.indexOf('|') != -1)
                return true;
            else
            {
                var desc = addressLocation.description;
                
                if (desc.substring(7, 8) == '-')
                    return true;
                else
                    return false;
            //    return false;
            }
        }
        else
        {
            var desc = addressLocation.description;
            
            if (desc.substring(7, 8) == '-')
                return true;
            else
                return false;
        }
    }
    else
        return false;
}

//function tratarImagemTipoPiso(piso, pisoAnterior)
//{
//    if (pisoAnterior != null)
//    {
//        if (pisoAnterior == "PD" && piso == "P") return 'image/pista/pista_final_dupla.gif'
//        if (pisoAnterior == "P" && piso == "PD") return 'image/pista/pista_inicio_dupla.gif';
//    }

//    switch(piso)
//    {
//        case "PD": return 'image/pista/pista_dupla.gif'; break;
//        case "ED": return 'image/pista/pista_obras_dupla.gif'; break;
//        case "P": return 'image/pista/pista_simples.gif'; break;
//        case "EP": return 'image/pista/pista_obras_simples.gif'; break;
//        case "T": return 'image/pista/pista_malestado_simples.gif'; break;
//        case "CP": return 'image/pista/pista_malestado_simples.gif'; break;
//        case "BA": return 'image/pista/pd_ba.gif'; break;
//        default: return 'image/pista/pista_simples.gif'; break;
//    }
//}

function tratarImagem(command)
{
    var r="",s="";			
	var c=command.toLowerCase();
	
	//debugger;
	var d=rMann.descrOptions;

	d.imgDir=M_IMG_API+"/route";
	if(!d.imgInitRoute && d.imgInitRoute!="")d.imgInitRoute="ico_mapa_origem.gif";
	if(!d.imgEndRoute && d.imgEndRoute!="")d.imgEndRoute="ico_mapa_destino.gif";		
	d.imgContinue="newicons/em_frente.jpg";
	d.imgKeepLeft="newicons/perma_esquerda.jpg";
	d.imgKeepRight="newicons/perma_direita.jpg";
	d.imgSharpTurnLeft="newicons/acentu_esquerda.jpg";
	d.imgSharpTurnRight="newicons/acentu_direita.jpg";
	d.imgTurnLeft="newicons/curva_esquerda.jpg";
	d.imgTurnRight="newicons/curva_direita.jpg";
	d.imgReturn="newicons/retorno.jpg";
	d.imgLeft="ico_mapa_left.gif";
	d.imgRight="ico_mapa_right.gif";
	
	if(/^in.cio/.test(c)) //"In?cio da rota"
		r+=""+d.imgDir+"/"+d.imgInitRoute+"";
	else if(/permane.a.*esquerda/.test(c))		//permaneça a esquerda?
		r+=""+d.imgDir+"/"+d.imgKeepLeft+"";
	else if(/permane.a.*direita/.test(c))		//permaneça a direita?
		r+=""+d.imgDir+"/"+d.imgKeepRight+"";
	else if(/vire.*esquerda/.test(c))				//vire a esquerda?
		r+=""+d.imgDir+"/"+d.imgTurnLeft+"";
	else if(/vire.*direita/.test(c))				//vire a direita?
		r+=""+d.imgDir+"/"+d.imgTurnRight+"";				
	else if(/curva.*acentuada.*esquerda/.test(c))	//curva acentuada a esquerda?
		r+=""+d.imgDir+"/"+d.imgSharpTurnLeft+"";
	else if(/curva.*acentuada.*direita/.test(c))	//curva acentuada a esquerda?
		r+=""+d.imgDir+"/"+d.imgSharpTurnRight+"";		
	else if(/retorno/.test(c))	//curva acentuada a esquerda?
		r+=""+d.imgDir+"/"+d.imgReturn+"";		
	else if(/fim da rota/.test(c))
		r+=""+d.imgDir+"/"+d.imgEndRoute+"";
    else if (/parada/.test(c)) // Parada
        r+=""+d.imgDir+"/RedCircle" + new RegExp("[0-9].*$").exec(c) + ".gif";
	else
		r+=""+d.imgDir+"/"+d.imgContinue+"";
	
	return r;
}

function initializePrintRoute()
{
    //debugger;
    document.title = window.opener.document.title;

    document.getElementById('tdHeader').innerHTML = window.opener.document.getElementById('tdHeader').innerHTML;
   
    document.getElementById('tdPrint1').innerHTML = window.opener.document.getElementById('tdPrint1').innerHTML; 
   
    document.getElementById('tdPrint2').innerHTML = window.opener.document.getElementById('tdPrint2').innerHTML;
   
    document.getElementById('tdPrint3').innerHTML = window.opener.document.getElementById('tdPrint3').innerHTML;

    document.getElementById('tdPrint4').innerHTML = window.opener.document.getElementById('tdPrint4').innerHTML;
   
    var html = window.opener.document.getElementById('divDescRota').innerHTML;
    if (navigator.appName == "Microsoft Internet Explorer")
    {
        html = html.replace(/<TABLE width=473/g,'/<TABLE width=502');
    }
    else
    {
        html = html.replace(473,'502');
    }
    if (navigator.appName == "Microsoft Internet Explorer")
    {
        html = html.replace(/<IMG.*ico_lupa.gif.*border=0>/g,'');
        //html = html.replace('Zoom','');
    }
    else
    {
        html = html.replace(/<a.*<img.*ico_lupa.gif\D\sborder=\D\d\D\D/g,'');
        //html = html.replace('Zoom','');
    }
    document.getElementById('tdPrint5').innerHTML = html;
}

function initializePrintMap()
{
    document.title = window.opener.document.title;

    $('tdHeader').innerHTML = window.opener.document.getElementById('tdHeader').innerHTML;

    var mapa = new MMap2($('divMapa'));
    var MapaMLAPIOpener = window.opener.getMaplinkAPI().currentMap;
    mapa.setCenter(MapaMLAPIOpener.getCenter());
    mapa.setZoom(MapaMLAPIOpener.getZoom());
    if(navigator.appName=="Microsoft Internet Explorer" && navigator.appVersion.indexOf("MSIE 6.0")>0)
        mapa.setMapType(G_NORMAL_MAP);
    mapa.disableDragging();
    if(MapaMLAPIOpener.routeId)
    {
        mapa.addOverlay(MapaMLAPIOpener.routeStartMarker.copy());
        mapa.addOverlay(MapaMLAPIOpener.routeEndMarker.copy());
        var pl = window.opener._MPolyline;
        var gpoints = new Array();
        for (var i = 0,  length = pl.points.length ; i< length; i++)
            gpoints[gpoints.length] = new GLatLng(pl.points[i].y, pl.points[i].x);
        var gpolyline = new GPolyline(gpoints, "#3366CC", 6, 0.8);
        mapa.addOverlay(gpolyline);
    }
    else
    {
        mapa.addOverlay(MapaMLAPIOpener.currentMarker.copy());
    }    
}

function initializeEmail()
{
    //debugger;
    document.title = window.opener.document.title; 
    document.getElementById('tdPrint1').innerHTML = window.opener.document.getElementById('tdPrint1').innerHTML; 
    document.getElementById('hdnIdCliente').value = window.opener.document.getElementById('hdnIdCliente').value;  
    Voltar(); 
}

function Voltar()
{
    //debugger;
    document.getElementById('tblEmail').style.display = "";
    document.getElementById('tblOK').style.display = "none";
    document.getElementById('tblErro').style.display = "none";
    document.getElementById('tdPrint1').style.display = "";
}

function AbrirPopUp(page, width, height)
{
    window.open(page, '', 'toolbar=no,location=no,scrollbars=no,status=no,scrollbars=yes,menubar=no,resizable=no, left=0, top=0,width=' + width + ',height=' + height + ', left=' + ((screen.width/2) - (width/2)) +', top=' + ((screen.height/2) - (height/2)));
}

function ShowRotaDetalhada()
{
    $('tdPrint5').style.display = "";  
}

Array.prototype.indexOf=function(item, i){i||(i=0);var length=this.length;if(i<0)i=length+i;for(;i<length;i++)if(this[i]===item)return i;return -1;};