var map;var timer;var chosen=[];var GDir1;var layers;var exml;var noOrigem=null;var noDestino=null;var alertIcon=null;var selectShim=null;function initialize(a){layers={areas_servico:{url:KMLHandler+"?action=listaASs&listaFacilidades=-1&menuid="+getQueryString("menuid")},areas_repouso:{url:KMLHandler+"?action=listaARs"},camaras:{url:KMLHandler+"?action=listacamaras&idRegiao=-1&idAe=-1"},incidencias:{url:KMLHandler+"?action=listaincidencias&idAe=-1&idSentido=-1"},paineis:{url:KMLHandler+"?action=listapaineis"}};if(GBrowserIsCompatible()){map=new GMap2(document.getElementById(a));map.setCenter(new GLatLng(40.203655,-7.635498),6);map.addControl(new GLargeMapControl());map.addControl(new GMenuMapTypeControl());map.enableDoubleClickZoom();map.enableScrollWheelZoom();map.enableContinuousZoom();map.removeMapType(G_SATELLITE_3D_MAP);map.addControl(new MoreControl());map.addControl(new BoxControl());(function(){$("box").setStyle("display","none")}).delay(3000)}}function initEvents(){var h=$("btnFacilities");var i=$("txtOrigem");var d=$("txtDestino");var c=$("btnSubmit");var k=$("lnkEscolhaSaida");var f=$("lnkViagem");var e=$("lnkPercurso");var b=$("viagensToggle");if(h){h.addEvent("click",function(){toggleFacilities()})}if(i){var j=$("ulOrigem");i.addEvent("blur",function(){origemBlur()});var a=new Autocompleter.Request.JSON(i,JSONHandler+"?action=autocomplete",{indicatorClass:"autocompleter-loading",relative:true,selectMode:"type-ahead",delay:5,cache:true});a.addEvent("onSelection",function(){origemBlur()});i.addEvent("keydown",function(l){noOrigem=null;return ProcessKey(l,"origem")})}if(d){var g=$("ulDestino");d.addEvent("blur",function(){destinoBlur()});var a=new Autocompleter.Request.JSON(d,JSONHandler+"?action=autocomplete",{indicatorClass:"autocompleter-loading",relative:true,selectMode:"type-ahead",delay:5,cache:true});a.addEvent("onSelection",function(){destinoBlur()});d.addEvent("keydown",function(l){noDestino=null;return ProcessKey(l,"destino")})}if(c){c.addEvent("click",function(){GetRoute()})}if(k){k.addEvent("click",function(){destinoBlur();ShowLayer()})}if(f){f.addEvent("click",function(){ToggleViagem()})}if(e){e.addEvent("click",function(){TogglePercurso()})}if(b){b.addEvent("click",function(){TogglePanel()})}}function initControls(){InitEmViagem();LoadClasses()}function toggleAreasServico(a){var b=$("facilitiesPanel").getElements("input[name=facilityOption]");b.each(function(d,c){d.checked=a.checked});if(a.checked){layers.areas_servico.url2=null}toggleGeoXML("areas_servico",false)}function toggleFacilities(){var b=$("facilitiesPanel");var a=$("btnFacilities");var d=$("ulFacilities");if(b.getStyle("display")=="none"){b.setStyle("display","block");a.set("html",ResourceLang.Fechar);var c=new Request.JSON({url:JSONHandler,onComplete:LoadFacilitiesPanel});c.get({action:"listaFacilidades"})}else{if(d){d.dispose()}b.setStyle("display","none");a.set("html",ResourceLang.Abrir)}}function LoadFacilitiesPanel(a){var b=$("areas_servico");var c=new Element("ul",{id:"ulFacilities"});a.each(function(g,e){var h=new Element("li");var d=new Element("input",{id:"facility"+e,name:"facilityOption",type:"checkbox",checked:b.checked,value:g.idFacilidade,events:{click:function(){showFacilities(this)}}});var f=new Element("span",{html:g.descritivoFacilidade});h.grab(d);h.grab(f);c.grab(h)});$("facilitiesPanel").grab(c)}function showFacilities(c){var b=$("facilitiesPanel").getElements("input[name=facilityOption][checked]");var d="";b.each(function(f,e){if(e==0){d+=f.value}else{d+=","+f.value}});if(d.length>0){var a=KMLHandler+"?action=listaASs&listaFacilidades="+d;layers.areas_servico.url2=a;$("areas_servico").checked=true;toggleGeoXML("areas_servico",false);toggleGeoXML("areas_servico",true)}else{toggleGeoXML("areas_servico",false)}}function MoreControl(){}MoreControl.prototype=new GControl();MoreControl.prototype.initialize=function(d){var a=new Element("div",{id:"more_button",title:ResourceLang.Servicos,events:{mouseover:function(f){showBox()},mouseout:function(f){setClose(f)}}});var c=new Element("span",{html:ResourceLang.Servicos});var b=new Element("img",{src:imgPath+"brisa_button.jpg"});a.grab(c);a.grab(b);d.getContainer().appendChild(a);initLayers();return a};MoreControl.prototype.assignClickEvent_=function(a){GEvent.addDomListener(a,"click",function(){if(chosen.length>0){var d=chosen.slice();for(var c=0;c<d.length;c++){var b=parseInt(d[c]);document.getElementsByName("mark")[b].checked=true}}else{hideAll()}})};MoreControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(285,7))};function BoxControl(){}BoxControl.prototype=new GControl();BoxControl.prototype.initialize=function(b){var a=$("box");a.onmouseout=setClose;b.getContainer().appendChild(a);return a};BoxControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(206,25))};function hideAll(){var b=document.getElementsByName("mark");var c=document.getElementsByName("facilityOption");for(var a=0;a<b.length;a++){if(b[a].checked){b[a].checked=false;toggleGeoXML(b[a].id,false);chosen.push(a)}}for(var a=0;a<c.length;a++){if(c[a].checked){c[a].checked=false;toggleGeoXML("areas_servico",false)}}map.clearOverlays()}function checkChecked(){var b=document.getElementsByName("mark");for(var a=0;a<b.length;a++){if(b[a].checked){return true}}return false}function showBox(){if(window.timer){clearTimeout(timer)}$("box").setStyle("display","block")}function hideBox(a){$("box").setStyle("display","none")}function setClose(b){if(!b){b=window.event}var a=$("box");if(checkMouseLeave(a,b)){timer=setTimeout("hideBox(document.getElementById('box') )",400)}}function containsDOM(a,c){var b=false;do{if((b=a==c)){break}c=c.parentNode}while(c!=null);return b}function checkMouseLeave(b,a){if(b.contains&&a.toElement){return !b.contains(a.toElement)}else{if(a.relatedTarget){return !containsDOM(b,a.relatedTarget)}}}function initLayers(){for(var a in layers){$(a).addEvent("click",function(){if(this.id=="areas_servico"){toggleAreasServico(this)}toggleGeoXML(this.id,this.checked)})}}function toggleGeoXML(f,e){var d=$("box");var c=$("boxlink");var b=$("more_button");var a;if(e){a=(layers[f].url2!=null)?layers[f].url2:layers[f].url;exml=new GeoXml("exml",map,a,{nozoom:true,iwwidth:300,preloadHTML:false,messagestyle:{backgroundColor:"#fff",borderStyle:"solid",opacity:1,borderWidth:"1px",borderColor:"#000"},titlestyle:'class = "infoWindowTitle"',descstyle:'class = "infoWindowDesc"'});layers[f].exml=exml;chosen.length=0;c.className="highlight";d.className="highlight";b.className="highlight";exml.parse("Brisa")}else{if(layers[f].exml){layers[f].exml.toggleContents(1);if(!checkChecked()){c.blur();c.className="";d.className="";b.className=""}}}}function loadWaypoints(d){var c=sliceArray(d,10);var a=new Array();var b=0;map.clearOverlays();if(c.length>1){c.each(function(f,e){a.push(new GDirections(map));GEvent.addListener(a[e],"load",function(){if(b<a.length){a[b].loadFromWaypoints(c[b++],{preserveViewport:true})}});GEvent.addListener(a[e],"addoverlay",function(){if(e<a.length){for(var g=0;g<a[e].getNumGeocodes();g++){if((e==0)&&(g==0)){a[e].getMarker(g).setImage(imgPath+"emviagem/pinA.png")}else{if((e==a.length-1)&&(g==a[e].getNumGeocodes()-1)){a[e].getMarker(g).setImage(imgPath+"emviagem/pinB.png")}else{map.removeOverlay(a[e].getMarker(g))}}}}})});a[b].loadFromWaypoints(c[b++],{preserveViewport:false})}else{GDir1=new GDirections(map);GEvent.addListener(GDir1,"addoverlay",function(){for(var e=0;e<GDir1.getNumGeocodes();e++){if(e==0){GDir1.getMarker(e).setImage(imgPath+"emviagem/pinA.png")}else{if(e==GDir1.getNumGeocodes()-1){GDir1.getMarker(e).setImage(imgPath+"emviagem/pinB.png")}else{map.removeOverlay(GDir1.getMarker(e))}}}});GDir1.loadFromWaypoints(c[0],{preserveViewport:false})}}function sliceArray(e,c){var d=new Array();var b=-c;while((b+=c)<e.length){var a=e.slice((b==0?b:b-1),b+c);d.push(a)}return d}function origemBlur(){var d=new Request.JSON({url:JSONHandler,onComplete:LoadNosOrigem});var c=$("txtOrigem");var b=$("divOrigemError");var a=$("divNosOrigem");if(c.value.length>0){d.get({action:"listaNos",destino:c.value})}else{b.set("html",ResourceLang.OrigemObrigatoria);b.setStyle("display","block");if(a){noOrigem=null;a.dispose()}}return d}function destinoBlur(){var d=new Request.JSON({url:JSONHandler,onComplete:LoadNosDestino});var b=$("txtDestino");var c=$("divDestinoError");var a=$("divNosDestino");if(b.value.length>0){d.get({action:"listaNos",destino:b.value})}else{c.set("html",ResourceLang.DestinoObrigatorio);c.setStyle("display","block");if(a){noDestino=null;a.dispose()}}return d}function LoadNosOrigem(b){var c=$("divNosOrigem");var e=$("divOrigem");var d=$("divOrigemError");if(c){c.dispose()}if(b.length>1){var c=new Element("div",{id:"divNosOrigem","class":"divSelectNodes"});var a=new Element("select",{id:"selectOrigem",events:{change:function(){var f=this[this.selectedIndex].value;noOrigem=(f==-1)?null:f}}});a.grab(new Element("option",{value:"-1",html:ResourceLang.EscolhaOrigem}));b.each(function(h,f){var g=new Element("option",{value:h.idNo,html:h.descricaoNo});a.grab(g)});c.grab(a);e.grab(c);d.setStyle("display","none");e.setStyle("display","block");ResizeDetalhePercurso()}else{if(b.length==1){noOrigem=b[0].idNo;d.setStyle("display","none")}else{d.set("html",ResourceLang.OrigemInvalida);d.setStyle("display","block")}}}function LoadNosDestino(c){var d=$("divNosDestino");var b=$("divDestino");var e=$("divDestinoError");if(d){d.dispose()}if(c.length>1){var d=new Element("div",{id:"divNosDestino","class":"divSelectNodes"});var a=new Element("select",{id:"selectDestino",events:{change:function(){var f=this[this.selectedIndex].value;noDestino=(f==-1)?null:f}}});a.grab(new Element("option",{value:"-1",html:ResourceLang.EscolhaDestino}));c.each(function(h,f){var g=new Element("option",{value:h.idNo,html:h.descricaoNo});a.grab(g)});d.grab(a);b.grab(d);e.setStyle("display","none");b.setStyle("display","block");ResizeDetalhePercurso()}else{if(c.length==1){noDestino=c[0].idNo;e.setStyle("display","none")}else{e.set("html",ResourceLang.OrigemInvalida);e.setStyle("display","block")}}}function LoadClasses(){if($("selClasse")){var a=new Request.JSON({url:JSONHandler,onComplete:LoadClassesHandler});a.get({action:"listaclasses",dropdownid:"selClasse"})}}function LoadClassesHandler(b){if($(b.DropDownId)){var a=$(b.DropDownId);a.options.length=0;b.ListaValores.each(function(e,c){var d=new Element("option",{value:e.Valor,html:e.Titulo});a.grab(d)})}}function GetRoute(){var d=$("btnSubmit");var i=$("selClasse");var b=$("detalhePercurso");var f=$("divNosOrigem");var e=$("divNosDestino");var l=$("divOrigemError");var a=$("divDestinoError");var k=$("txtOrigem");var g=$("txtDestino");var j=$("divMsgIntro");if(noOrigem!=null&&noDestino!=null){l.set("html","");l.setStyle("display","none");a.set("html","");a.setStyle("display","none");d.set("disabled","true");b.setStyle("display","none");var h=new Request.JSON({url:JSONHandler,onRequest:GetRouteLoading,onComplete:GetRouteHandler});h.get({action:"getRouteNodes",origem:noOrigem,origemNome:k.value,destino:noDestino,destinoNome:g.value,classe:i.value});var c=new Request.JSON({url:JSONHandler,onComplete:GetAlertsHandler});c.get({action:"listaincidenciasnos",idNo1:noOrigem,idNo2:noDestino})}else{if(k.value.length==0){l.set("html",ResourceLang.OrigemObrigatoria);l.setStyle("display","block")}else{if(noOrigem==null){l.set("html",((f&&f.getStyle("display")=="none")?ResourceLang.OrigemInvalida:ResourceLang.NoOrigemInvalido));l.setStyle("display","block")}else{l.setStyle("display","none")}}if(g.value.length==0){a.set("html",ResourceLang.DestinoObrigatorio);a.setStyle("display","block")}else{if(noDestino==null){a.set("html",((e&&e.getStyle("display")=="none")?ResourceLang.DestinoInvalido:ResourceLang.NoDestinoInvalido));a.setStyle("display","block")}else{a.setStyle("display","none")}}}}function GetRouteLoading(){var a=$("imgLoading");selectShim=new IframeShim("selClasse",{display:false,id:"selectShimId",browsers:(Browser.Engine.trident4)});selectShim.show();if(a){a.toggleClass("LoadingAcordionBlock")}}function GetRouteHandler(d){var f=$("percurso_accordion");var a;var h;var g=new Array();var k=$("imgLoading");var c=$("btnSubmit");var b=$("detalhePercurso");var j=0;ClearRouteInfo();try{d.each(function(t,p){var l="";var e="";if(t.Type!=3&&t.Type!=2&&t.Type!=1&&t.Latitude!=0&&t.Longitude!=0){g.include(new GLatLng(t.Latitude,t.Longitude))}if(t.Type!=0){if(t.Type==4){l="A - "}if(t.Type==5){l="B - "}if(t.KM>0){e=" | "+t.KM+" Km"}var n;switch(t.Type){case 0:n="icon_ae.gif";break;case 1:n=t.AreaServico+".gif";break;case 2:n="icon_info.gif";break;default:n="icon_ae.gif";break}var r=new Element("img",{src:imgPath+"emviagem/"+n,"class":"iconspan",alt:""});var o=new Element("h3",{"class":"toggler toggler_E",html:l+t.Title+e+" | "});o.grab(r);var s=new Element("div",{"class":"element element_E cleanTexto cleanStyle"});var q=new Element("div",{"class":"noimage",html:t.Text});s.grab(q);if(t.Exits!=null&&t.Exits.length>0){var m=new Element("div",{"class":"noimage",html:ResourceLang.Saidas+t.Exits});s.grab(m)}f.grab(o);f.grab(s)}if(p==d.length-1){a=t.KM;h=t.Taxes;$("lblLog").set("html",t.Log)}});if($("percurso_accordion")){accordion("percurso_accordion","h3.toggler_E","div.element_E",-1)}loadWaypoints(g);LoadRouteInfo(a,h);selectShim.hide();k.toggleClass("LoadingAcordionBlock");c.removeProperty("disabled");b.setStyle("display","block");ResizeDetalhePercurso()}catch(i){alert(i)}}function GetAlertsHandler(a){var d=$("divAlertas");if($("ulAlerts")){$("ulAlerts").dispose()}try{if(a.ListaValores.length>0){var b=new Element("ul",{id:"ulAlerts","class":"alertas"});a.ListaValores.each(function(g,e){var h=new Element("li");if(e==0){h.set("class","first")}var f=new Element("span",{html:g.Titulo,"class":g.Valor});h.grab(f);b.grab(h)});d.grab(b);d.setStyle("display","block")}else{d.setStyle("display","none")}}catch(c){alert(c)}}function LoadRouteInfo(a,h){var i=$("lblDuracao");var f=$("lblDistancia");var c=$("lblNumParagens");var b=$("lblCustoTotal");var j;var d;if(Math.round((a*60/100))<60){d=Math.round((a*60/100))+" Min."}else{d=pad(Math.floor((a*60/100)/60),2,"0","left")+":"+pad(Math.round((a*60/100))%60,2,"0","left")+" h"}if(a){i.set("html",d);f.set("html",a+" Km");c.set("html",Math.floor((a*60/100)/120));var e=h+"";if(e.indexOf(".")!=-1){var g=e.split(".",2);var e=g[0]+","+pad(g[1],2,"0")}b.set("html",(isNaN(h)||h==0?" 0 ":e)+ResourceLang.Euro)}}function ClearRouteInfo(){var b=$("lblDuracao");var c=$("lblDistancia");var e=$("lblNumParagens");var a=$("lblCustoTotal");var d=$("percurso_accordion");b.set("html","");c.set("html","");e.set("html","");a.set("html","");d.set("html","")}function InitEmViagem(){var e=$("txtOrigem");var c=$("txtDestino");var b;var a;var d;alertIcon={green:{image:imgPath+"alert_green.gif",tooltip:ResourceLang.TooltipVerde},yellow:{image:imgPath+"alert_yellow.gif",tooltip:ResourceLang.TooltipAmarela},red:{image:imgPath+"alert_red.gif",tooltip:ResourceLang.TooltipVermelha}};if(qsOrigem.length>0){e.value=qsOrigem;b=origemBlur()}if(qsOrigem.length>0){c.value=qsDestino;a=destinoBlur()}if(qsOrigem.length>0&&qsOrigem.length>0){d=new Group(b,a);d.addEvent("complete",function(){GetRoute()})}}function InitHelpOrigem(){var a=new Request.JSON({url:JSONHandler,onRequest:GetRouteLoading,onComplete:InitHelpOrigemHandler});a.get({action:"listadestinos"})}function InitHelpDestino(){var a=new Request.JSON({url:JSONHandler,onRequest:GetRouteLoading,onComplete:InitHelpDestinoHandler});a.get({action:"listadestinos"})}function InitHelpOrigemHandler(b){var a=new Element("select",{"class":"selectHelp",size:"7"});b.each(function(g,e){var f=new Element("option",{value:g.descritivoDestino,html:g.descritivoDestino});a.grab(f)});var d=new Element("div",{"class":"divButtonHelp"});var c=new Element("input",{id:"btnHelpOk",type:"button",value:"OK",events:{click:function(){OrigemSelected(a)}}});d.grab(c);$("helpLayer").set("html","");$("helpLayer").grab(a);$("helpLayer").grab(d);$("imgLoading").toggleClass("LoadingAcordionBlock")}function InitHelpDestinoHandler(b){var a=new Element("select",{"class":"selectHelp",size:"7"});b.each(function(g,e){var f=new Element("option",{value:g.descritivoDestino,html:g.descritivoDestino});a.grab(f)});var d=new Element("div",{"class":"divButtonHelp"});var c=new Element("input",{id:"btnHelpOk",type:"button",value:"OK",events:{click:function(){DestinoSelected(a)}}});d.grab(c);$("helpLayer").set("html","");$("helpLayer").grab(a);$("helpLayer").grab(d);$("imgLoading").toggleClass("LoadingAcordionBlock")}function OrigemSelected(a){var b=$("txtOrigem");var c=$("helpLayer");if(a.selectedIndex!=-1){b.value=a[a.selectedIndex].value}selectShim.hide();c.set("html","");c.setStyle("display","none");noOrigem=null;origemBlur()}function DestinoSelected(a){var b=$("txtDestino");var c=$("helpLayer");if(a.selectedIndex!=-1){b.value=a[a.selectedIndex].value}selectShim.hide();c.set("html","");c.setStyle("display","none");noDestino=null;destinoBlur()}function ShowLayer(b){var a=$("selectLayer");selectShim=new IframeShim("selClasse",{display:false,id:"selectShimId",browsers:(Browser.Engine.trident4)});selectShim.show();a.setStyle("display","block")}function ProcessKey(b,a){if(null==b){b=window.event}if(b.event.keyCode==13){if(a){switch(a){case"origem":origemBlur();break;case"destino":destinoBlur();break}}return false}}function ToggleViagem(){var b=$("divViagemContainer");var a=$("lnkViagem");if(b.getStyle("display")=="none"){b.setStyle("display","block");a.removeClass("closed")}else{b.setStyle("display","none");a.addClass("closed")}ResizeDetalhePercurso()}function TogglePercurso(){var a=$("divPercursoContainer");var b=$("lnkPercurso");if(a.getStyle("display")=="none"){a.setStyle("display","block");b.removeClass("closed")}else{a.setStyle("display","none");b.addClass("closed")}}function TogglePanel(){var a=$("right");var c=$("left");var b=$("mapa");var d=$("viagensToggle");if(a.getStyle("display")=="none"){a.setStyle("display","block");c.setStyle("width","500px");b.setStyle("width","500px");d.removeClass("Closed");d.set("title",ResourceLang.MaximizarMapa)}else{a.setStyle("display","none");c.setStyle("width","760px");b.setStyle("width","760px");d.addClass("Closed");d.set("title",ResourceLang.MinimizarMapa)}}function ResizeDetalhePercurso(){var b=map.getSize().height;var a=$("lnkViagem").getSize().y+$("divViagemContainer").getSize().y;$("detalhePercurso").setStyle("height",b-a);$("divPercursoContainer").setStyle("height",(b-a)-$("lnkPercurso").getSize().y)}window.addEvent("domready",function(){initialize("mapa");initEvents();initControls()});window.addEvent("unload",function(){GUnload()});
