﻿var _addLocEnd = null;
var _servidor = Path(window.location.href);
var _urlImages = 'Imagens/';
var icone = 'totem_imobiliarias.gif';
var _zoomLevel = 16;
var _routeStops = new Array();
var _qtdePontos = 2;
var _tipoRota = 0;
var _ordem = "sequencial";
var mapa = null;
var control = getMaplinkAPI();
var _rMarkers = [];
var _paradas = [];
var ew;

function Path(endereco)
{
	var x;
	for(x = endereco.length -1; x>=0; x--)
	{
		if(endereco.substring(x,x+1) == "/")
		{
			break;
		}
	}
	return endereco.substring(0,x+1);
}
function Initialize()
{
	if(!$("ctl00_cphConteudo_hdnTipoRota").value)
	{
		InitializeMapa("Map");
	}
	else
	{
		MElement.hide("divComoChegar");
		MElement.show("ctl00_cphConteudo_divPontos");
		MElement.show("divImprimirRota");
		InitializeRota();
	}
}
function InitializeMapa(div)
{
	mapa = new MMap2($(div));

	_addLocEnd = new MAddressLocation();
	_addLocEnd.address = new MAddress();
	_addLocEnd.address.street = $('ctl00_cphConteudo_hdnDestinoRua').value;
	_addLocEnd.address.houseNumber = $('ctl00_cphConteudo_hdnDestinoNumero').value;
	_addLocEnd.address.district = $('ctl00_cphConteudo_hdnDestinoBairro').value;
	_addLocEnd.address.zip = $('ctl00_cphConteudo_hdnDestinoCEP').value;

	_addLocEnd.address.city = new MCity(); 
	_addLocEnd.address.city.name = $('ctl00_cphConteudo_hdnDestinoCidade').value;
	_addLocEnd.address.city.state = $('ctl00_cphConteudo_hdnDestinoUF').value;

	_addLocEnd.point = new MPoint();
	_addLocEnd.point.x = parseFloat($('ctl00_cphConteudo_hdnDestinoX').value.replace(',', '.'));
	_addLocEnd.point.y = parseFloat($('ctl00_cphConteudo_hdnDestinoY').value.replace(',', '.'));

	var icon = new GIcon(mapa.iconDefault);
	
	if($get("ctl00_cphConteudo_hdnIcone").value)
	{
		var dadosIcone = $get("ctl00_cphConteudo_hdnIcone").value.split('|');
		icon.image = _servidor + _urlImages + dadosIcone[0];
		icon.iconSize = new GSize(dadosIcone[1],dadosIcone[2]);
		icon.iconAnchor = new GPoint(parseInt(dadosIcone[1] /2), dadosIcone[2]);
	}
	else
	{
		icon.image = _servidor + _urlImages + icone;
		icon.iconSize = new GSize(25,40);
		icon.iconAnchor = new GPoint(12,40);
	}
	icon.shadow = "";
	icon.shadowSize = null;
	
	if(GetQS("estabelecimento") == "imobiliaria" && GetQS("id") == 83) _zoomLevel = 10;
	
	mapa.setCentralIcon(icon);
	mapa.showAddressLocation(_addLocEnd, _zoomLevel);
	mapa.addControl(new MMapControls());	   
	mapa.addControl(new GLargeMapControl());
	
	if($get("ctl00_cphConteudo_hdnTipoEstabelecimento").value == "imovel")
	{
		mapa.disableInfoWindow();
		
		icon.infoWindowAnchor = new GPoint(parseInt((parseInt((335-20)/2, 10) + icon.iconSize.width /2),10),parseInt(icon.iconSize.height /2, 10));
		
		var marcador = new GMarker(new GLatLng(_addLocEnd.point.y, _addLocEnd.point.x), {icon: icon});
		mapa.addOverlay(marcador);
		
		// Create an EWindow
		ew = new EWindow(mapa, E_STYLE_7);      
		mapa.addOverlay(ew);
		
		GEvent.addListener(mapa, "click", function(marker,point) {
			if (point) {
				ew.hide();
			}
		});
		
		var info = $get('ctl00_cphConteudo_hdnDestinoTooltip').value.split('|');

		GEvent.addListener(marcador, "click", 
			function(){	
				ew.openOnMarker(marcador, MontaTooltipPlaca(info[0],info[1], info[2],info[3]));
			}
		);
		
		GEvent.addListener(marcador, "mouseover", 
			function(){	
				ew.openOnMarker(marcador, MontaTooltipPlaca(info[0],info[1], info[2],info[3]));
			}
		);
	}
	else
	{	
		GEvent.addListener(mapa.currentMarker, "mouseover", function() {
			mapa.currentMarker.openInfoWindowHtml(montaToolTipAdd());
		});
		GEvent.addListener(mapa.currentMarker, "click", function() {
			mapa.currentMarker.openInfoWindowHtml(montaToolTipAdd());
		});
	}
}

function MontaTooltipPlaca(titulo, imagem, texto, link)
{
			var html = '<table width="335" border="0" cellpadding="0" cellspacing="0">'+
				'  <tr>'+
				'    <td width="335" background="imagens/top2.gif" height="33" align="right"><span><a href="javascript:void(0);" class="tit">[X]</a></span></td>'+
				'  </tr>'+
				'  <tr>'+
				'    <td><table width="335" border="0" cellspacing="0" cellpadding="0">'+
				'      <tr>'+
				'        <td background="imagens/bg2.jpg"><table width="335"  height="45"border="0" cellpadding="0" cellspacing="0">'+
				'            <tr>'+
				'              <td width="136" height="45"><div align="center"><img src="imagens/vende-se.jpg" width="120" height="43" /></div></td>'+
				'              <td width="198"><table width="185" border="0" align="center" cellpadding="0" cellspacing="0">'+
				'                <tr>'+
				'                  <td width="100%" class="tit" style="wrap: hard;"><center>' + (titulo ? titulo : "") + '</center></td>'+
				'                </tr>'+
				'              </table></td>'+
				'            </tr>'+
				'        </table></td>'+
				'      </tr>'+
				'      <tr>'+
				'        <td height="113" background="imagens/bg.jpg"><table width="100%" border="0" cellspacing="0" cellpadding="0">'+
				'          <tr>'+
				'            <td width="136" height="123" valign="top"><div align="center"><img src="' + imagem + '" width="99" height="123" /></div></td>'+
				'            <td width="198" valign="top"><table width="185" border="0" align="center" cellpadding="0" cellspacing="0">'+
				'  '+
				'  <tr>'+
				'    <td height="103" colspan="2" class="texto"><center>' + (texto ? texto : "") +
				'</center></td>'+
				'    </tr>'+
				'</table>'+
				''+
				'  '+
				'           </td>'+
				'          </tr>'+
				'        </table></td>'+
				'      </tr>'+
				'    </table></td>'+
				'  </tr>'+
				'  <tr>'+
				'    <td><span class="conteudo"><img src="imagens/bottom2.gif" width="335" height="85" /></span></td>'+
				'  </tr>'+
				'</table>';
				return html;
}

function montaToolTipAdd()
{
	return "<div class='textoNormal' style='background-color: #FFFFFF;'>" +	document.getElementById("ctl00_cphConteudo_hdnDestinoTooltip").value + "</div>";
}
function InitializeRota()
{
	try
	{
		_routeStops.clear();
	}
	catch(ex) { }
	var routeStop;    

	routeStop = new MAddressLocation();
	routeStop.address = new MAddress();
	routeStop.address.street = $('ctl00_cphConteudo_hdnOrigemRua').value;
	routeStop.address.houseNumber = $('ctl00_cphConteudo_hdnOrigemNumero').value;
	routeStop.address.district = $('ctl00_cphConteudo_hdnOrigemBairro').value;
	routeStop.address.zip = $('ctl00_cphConteudo_hdnOrigemCEP').value;
	routeStop.address.city = new MCity(); 
	routeStop.address.city.name = $('ctl00_cphConteudo_hdnOrigemCidade').value;
	routeStop.address.city.state = $('ctl00_cphConteudo_hdnOrigemUF').value;
	routeStop.point = new MPoint();
	routeStop.point.x = parseFloat($('ctl00_cphConteudo_hdnOrigemX').value.replace(',', '.'));
	routeStop.point.y = parseFloat($('ctl00_cphConteudo_hdnOrigemY').value.replace(',', '.'));
	_routeStops[0] = routeStop;

	routeStop = new MAddressLocation();
	routeStop.address = new MAddress();
	routeStop.address.street = $('ctl00_cphConteudo_hdnDestinoRua').value;
	routeStop.address.houseNumber = $('ctl00_cphConteudo_hdnDestinoNumero').value;
	routeStop.address.district = $('ctl00_cphConteudo_hdnDestinoBairro').value;
	routeStop.address.zip = $('ctl00_cphConteudo_hdnDestinoCEP').value;
	routeStop.address.city = new MCity(); 
	routeStop.address.city.name = $('ctl00_cphConteudo_hdnDestinoCidade').value;
	routeStop.address.city.state = $('ctl00_cphConteudo_hdnDestinoUF').value;
	routeStop.point = new MPoint();
	routeStop.point.x = parseFloat($('ctl00_cphConteudo_hdnDestinoX').value.replace(',', '.'));
	routeStop.point.y = parseFloat($('ctl00_cphConteudo_hdnDestinoY').value.replace(',', '.'));
	_routeStops[_routeStops.length] = routeStop;

	mostraRota();
}
function mostraRota()
{
	var mapCfg = new MMapConfig('Map',new MMapSize(468,330));

	mapCfg.startRouteIcon=new GIcon(MGetBaseIcon());
	mapCfg.startRouteIcon.image = M_IMG_API+ "/route/ic_origem.gif"
	mapCfg.startRouteIcon.iconSize = new GSize(32,13);
	mapCfg.startRouteIcon.iconAnchor = new GPoint(16,13);
	mapCfg.startRouteIcon.shadow = "";
	mapCfg.startRouteIcon.shadowSize = null;  

	mapCfg.endRouteIcon=new GIcon(MGetBaseIcon());
	if(!$get("ctl00_cphConteudo_hdnIcone"))
	{
		mapCfg.endRouteIcon.image = M_IMG_API+ "/route/ic_destino.gif"
		mapCfg.endRouteIcon.iconSize = new GSize(32,13);
		mapCfg.endRouteIcon.iconAnchor = new GPoint(16,13);
	}
	else if($get("ctl00_cphConteudo_hdnIcone").value)
	{
		var dadosIcone = $get("ctl00_cphConteudo_hdnIcone").value.split('|');
		mapCfg.endRouteIcon.image = _servidor + _urlImages + dadosIcone[0];
		mapCfg.endRouteIcon.iconSize = new GSize(dadosIcone[1],dadosIcone[2]);
		mapCfg.endRouteIcon.iconAnchor = new GPoint(parseInt(dadosIcone[1] /2), dadosIcone[2]);
	}
	else
	{
		mapCfg.endRouteIcon.image = _servidor + _urlImages + icone;
		mapCfg.endRouteIcon.iconSize = new GSize(25,40);
		mapCfg.endRouteIcon.iconAnchor = new GPoint(12,40);
	}	
	mapCfg.endRouteIcon.shadow = "";
	mapCfg.endRouteIcon.shadowSize = null;

	_routeOpts = montaMRouteOptions();
	var rMann = new MRouteMannager(null, mapCfg, _routeOpts, 'divDescRota');
	rMann.descrOptions = montaOpcoesDescrRota();

	MElement.show('divRota');

	if(getMaplinkAPI().currentMap== null){
		getMaplinkAPI().currentMap= new MMap2($('Map')); 
	}
	mapa=getMaplinkAPI().currentMap;
	mapa.addControl(new MMapControls());
	mapa.addControl(new GLargeMapControl());
	
	// Create an EWindow
	ew = new EWindow(mapa, E_STYLE_7);      
	mapa.addOverlay(ew);
    
	var _segDesc;

	rMann.createRoute(_routeStops, function(estagioRota)
	{
		if(estagioRota == M_STAT_ROUTE)
		{
			_segsDesc = rMann.routeInfo.segDescription;

			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 = '(distância total percorrida: ' + sDistancia + ')<br />';

			if(objValido(_routeStops[0].address))
			{
				cidRota = _routeStops[0].address.city.name;
				estRota = _routeStops[0].address.city.state;
			}
			if(objValido(_routeStops[0].address)) {
				var start = control.currentMap.routeStartMarker;
				GEvent.addListener(start, "mouseover", function() {
					control.currentMap.routeStartMarker.openInfoWindowHtml("<div class='textoNormal' style='background-color:#FFFFFF;'><b>Ponto de Origem</b><br /> " 
						+ _routeStops[0].address.street.toUpperCase() + ',' + _routeStops[0].address.houseNumber + '<br />' 
						+ _routeStops[0].address.city.name + ', ' + _routeStops[0].address.city.state + (_routeStops[0].address.zip? '<br /><b>CEP:&nbsp;</b>' + _routeStops[0].address.zip: '') + "</div>");
				});
			}
			
			_rMarkers = rMann.getRouteMarkers();
			_paradas =  rMann.getLocations();
			
			var tempo = (dTotal / 40) + (_paradas.length -2);
			var minutos = Math.floor((tempo % 1) * 60);
			if(minutos < 10)
				minutos = "0" + minutos;
			$('spanDistancia').innerHTML += 'Tempo total: ' + Math.floor(tempo) + 'h' + minutos + 'min.<br /><span style="font-weight: normal">* As informações de tempo são calculadas com base em uma velocidade média de 40km/h e tempo de parada de 1h por empreendimento.</span>';

			// Create an EWindow
			ew = new EWindow(mapa, E_STYLE_7);      
			mapa.addOverlay(ew);

			GEvent.addListener(mapa, "click", function(marker,point) {
				if (point) {
					ew.hide();
				}
			});
			
//			_paradas = OrdenarParadas(_rMarkers, _paradas);
			for(var p=1; p<_rMarkers.length -1;p++)
			{
				AdicionarTooltipPOI(_rMarkers[p], _paradas[p]);
			}
			
			if(objValido(_routeStops[_routeStops.length - 1].address)) {
				var	end = control.currentMap.routeEndMarker;
				GEvent.addListener(end, "mouseover", function() {
					if($("ctl00_cphConteudo_hdnDestinoTooltip"))
					{
						if($get("ctl00_cphConteudo_hdnTipoEstabelecimento").value == "imovel")
						{
							var info = $get('ctl00_cphConteudo_hdnDestinoTooltip').value.split('|');
							control.currentMap.routeEndMarker.openInfoWindowHtml("<div class='texto' style='background-color:#FFFFFF;'>" +
							"<span class='tit' style='wrap: hard; font-weight: bold;'>" + info[0] + "</span><br /><br />" +
							"<img src='" + info[1] + "' width='99' height='123' align='left' />" +
							info[2] + "<br /><br />" +
							"<a target='_top' href='" + info[3] + "'>Mais informações</a>"
							+ "</div>");
						}
						else
						{						
							control.currentMap.routeEndMarker.openInfoWindowHtml("<div class='textoNormal' style='background-color:#FFFFFF;'>" +
								$("ctl00_cphConteudo_hdnDestinoTooltip").value + "</div>");
						}
					}
					else
					{
						control.currentMap.routeEndMarker.openInfoWindowHtml("<div class='textoNormal' style='background-color:#FFFFFF;'><b>" + $("ctl00_cphConteudo_lblNome").innerHTML + "</b><br /> " 
							+ _routeStops[_routeStops.length - 1].address.street.toUpperCase() + ',' + _routeStops[_routeStops.length - 1].address.houseNumber + '<br />' 
							+ _routeStops[_routeStops.length - 1].address.city.name + ', ' + _routeStops[_routeStops.length - 1].address.city.state + (_routeStops[_routeStops.length - 1].address.zip? '<br /><b>CEP:&nbsp;</b>' + _routeStops[_routeStops.length - 1].address.zip: '') + "</div>");
					}
				});
			}
		}
	});
}
function OrdenarParadas(markers, locations)
{
	var locationsOrdenadas = new Array();
	for(var m = 0; m < markers.length; m++)
	{
		for(var l = 0; l<locations.length; l++)
		{
			if(locations[l].point.x == markers[m].R.x && locations[l].point.y == markers[m].R.y)
			{
				locationsOrdenadas[locationsOrdenadas.length] = locations[l];
				break;
			}
		}
	}
	return locationsOrdenadas;
}
function AdicionarTooltipPOI(marker, POI)
{
	var dadosTooltip = POI.tooltip.split("__");
	
	mapa.removeOverlay(marker);
	
	var iconParada = new GIcon(G_DEFAULT_ICON);
	iconParada.image = _servidor + _urlImages + dadosTooltip[4];
	iconParada.iconSize = new GSize(dadosTooltip[5],dadosTooltip[6]);
	iconParada.iconAnchor = new GPoint(parseInt(dadosTooltip[5] /2), dadosTooltip[6]);
	iconParada.infoWindowAnchor = new GPoint(132 + parseInt(iconParada.iconSize.width),parseInt(iconParada.iconSize.height)/2);
	
	var marcador = new GMarker(new GLatLng(POI.point.y, POI.point.x),{"icon":iconParada});
	mapa.addOverlay(marcador);
		
	GEvent.addListener(marcador, "mouseover", 
		function(){
			ew.openOnMarker(marcador, MontaTooltipPlaca(dadosTooltip[0],dadosTooltip[1],dadosTooltip[2],dadosTooltip[3]));
		}
	);
}
function montaMRouteOptions()
{
	var ro = new MRouteOptions();
	var rd = new MRouteDetails();

	rd.routeType = $("ctl00_cphConteudo_hdnTipoRota").value;
	rd.optimizeRoute = true;
	try
	{
		if($("ctl00_cphConteudo_hdnTipoSequencia").value)
		{
			if($("ctl00_cphConteudo_hdnTipoSequencia").value == "sequencial")
			{
				rd.optimizeRoute = false;
			}
		}
	}
	catch(exc) { }

	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 montaOpcoesDescrRota(print)
{
	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(print)
	};    
	return opcoesDescrRota;
}
function montaTDescrRota(print)
{
	var tDescRota;
	tDescRota = new MTable(500, 'cellspacing="0" cellspacing="0" cellpadding="4"');
	tDescRota.noHeader = true;
	tDescRota.insertLine('<tr class="textoNormal"><td colspan="5">' 
				+ '<table style="width:495px;"><TR>'
				+ '<TD style="text-align:left;"><div class="subTitulo seta" style="text-align:left;"><strong>Descrição do Caminho</strong> <span id="spanDistancia"></span></div></TD>'
				+ '<TD style="text-align:right;">'
				+ '</TD></TR></table></TD></tr>');
	tDescRota.setLineClass('textoNormal');
	tDescRota.setLineStyle('background-color: #edecee;padding-top: 1px;padding-bottom: 1px;');   
	tDescRota.setLineAlterStyle('background-color: #ffffff;padding-top: 1px;padding-bottom: 1px;');
	tDescRota.setLineAlterClass('textoNormal');     

	return tDescRota;
}
function objValido(obj)
{
	if(typeof obj == 'undefined')
		return false;
	else if(!obj)
		return false;
	else
		return true;
}
function InicializaRotaMultiPonto()
{
	try
	{
		_routeStops.clear();
	}
	catch(ex) { }
	var routeStop;    

	routeStop = new MAddressLocation();
	routeStop.address = new MAddress();
	routeStop.address.street = $('ctl00_cphConteudo_hdnOrigemRua').value;
	routeStop.address.houseNumber = $('ctl00_cphConteudo_hdnOrigemNumero').value;
	routeStop.address.district = $('ctl00_cphConteudo_hdnOrigemBairro').value;
	routeStop.address.zip = $('ctl00_cphConteudo_hdnOrigemCEP').value;
	routeStop.address.city = new MCity(); 
	routeStop.address.city.name = $('ctl00_cphConteudo_hdnCidade').value;
	routeStop.address.city.state = $('ctl00_cphConteudo_hdnUF').value;
	routeStop.point = new MPoint();
	routeStop.point.x = parseFloat($('ctl00_cphConteudo_hdnOrigemX').value.replace(',', '.'));
	routeStop.point.y = parseFloat($('ctl00_cphConteudo_hdnOrigemY').value.replace(',', '.'));
	_routeStops[0] = routeStop;
	
	var paradasNomes = $("ctl00_cphConteudo_hdnParadasNomes").value.split('|');
	var paradasX = $("ctl00_cphConteudo_hdnParadasX").value.split('|');
	var paradasY = $("ctl00_cphConteudo_hdnParadasY").value.split('|');
	var paradasTooltips = $("ctl00_cphConteudo_hdnParadasTooltips").value.split('|');
	for(var i=0; i<paradasNomes.length; i++)
	{
		if(paradasNomes[i])
		{
			routeStop = new MPOILocation();
			routeStop.name = paradasNomes[i];
			routeStop.city = new MCity();
			routeStop.city.name = $('ctl00_cphConteudo_hdnCidade').value;
			routeStop.city.state = $('ctl00_cphConteudo_hdnUF').value;
			routeStop.point = new MPoint();
			routeStop.point.x = parseFloat(paradasX[i].replace(',', '.'));
			routeStop.point.y = parseFloat(paradasY[i].replace(',', '.'));
			routeStop.tooltip = paradasTooltips[i];
			_routeStops[_routeStops.length] = routeStop;
		}
	}

	routeStop = new MAddressLocation();
	routeStop.address = new MAddress();
	routeStop.address.street = $('ctl00_cphConteudo_hdnDestinoRua').value;
	routeStop.address.houseNumber = $('ctl00_cphConteudo_hdnDestinoNumero').value;
	routeStop.address.district = $('ctl00_cphConteudo_hdnDestinoBairro').value;
	routeStop.address.zip = $('ctl00_cphConteudo_hdnDestinoCEP').value;
	routeStop.address.city = new MCity(); 
	routeStop.address.city.name = $('ctl00_cphConteudo_hdnCidade').value;
	routeStop.address.city.state = $('ctl00_cphConteudo_hdnUF').value;
	routeStop.point = new MPoint();
	routeStop.point.x = parseFloat($('ctl00_cphConteudo_hdnDestinoX').value.replace(',', '.'));
	routeStop.point.y = parseFloat($('ctl00_cphConteudo_hdnDestinoY').value.replace(',', '.'));
	_routeStops[_routeStops.length] = routeStop;
	
	mostraRota();
}

function GetQS(paramName)
{
	var url = window.location.href.toLowerCase();
	var r = new RegExp("(\\?|&)" + paramName.toLowerCase() + "=(.+?)(&|$)");
	var m = r.exec(url);
	if(m)
	{
		if(m[2]) return m[2];
	}
	else return null;
}