var route="";var routeNum;var startpt="";var endpt="";var passval="";var urlHost="";var map=null;var glb_busSearchType=null;var glb_busno=null;var glb_direction=null;var glb_startpt=null;var glb_endpt=null;var glb_interchangept=null;var glb_isStartptPin=false;var glb_isEndptPin=false;var tmp_activeRequestCount_forBusRouteSearch=0;function setUrlHost(a){urlHost=a}function init(a){d.getElementById("cusNotice").style.visibility="visible";setInputOver();if(d.getElementById("passenger")){d.getElementById("passenger").style.visibility="visible";randomMessage("passenger")}setFieldFocus();passval=a;if(d.getElementById("routeNav")){setSearchBar.init("routeNav","searchBarContainer","infoBorder","routeInfoContainer")}genBreadcrumbs("");passval="";if(d.getElementById("noticeList")){listScroll.init("noticeList","Scrollbar-Container",true)}}function changeTable(e,c,a){var b="";if(a==1){b="&fr="+startpt+"&to="+endpt+"&interchange="+glb_interchangept}loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".p2presult.php?num="+route+"&bound="+e+b,c);routeNum=e}function changeSign(b,a){var e=new Date().getTime();var c=e;if(a==undefined){loadXML("/ajax/p2psign.php?num="+route+"&bound="+glb_direction+"&fr="+startpt+"&lang="+getCurLang(),b)}else{if(glb_interchangept==null){loadXML("/ajax/p2psign.php?num="+route+"&bound="+glb_direction+"&fr="+startpt+"&to="+endpt+"&lang="+getCurLang(),b)}else{loadXML("/ajax/p2psign.php?num="+route+"&bound="+glb_direction+"&fr="+startpt+"&to="+endpt+"&interchange="+glb_interchangept+"&lang="+getCurLang(),b)}}while(c-e<1000){c=new Date().getTime()}if(a==undefined){changeTable(glb_direction,"infoContentContainer",1)}else{changeTable(glb_direction,"infoContentContainer",1)}}function loadXML(g,f,h,c){var b=d.getElementById(f);if(b!=null){b.innerHTML=""}var a;if(window.XMLHttpRequest){a=new XMLHttpRequest();if(a.overrideMimeType){a.overrideMimeType("text/xml")}}else{if(window.ActiveXObject){try{a=new ActiveXObject("Msxml2.XMLHTTP")}catch(i){try{a=new ActiveXObject("Microsoft.XMLHTTP")}catch(i){}}}}if(a){a.onreadystatechange=function(){if(a.readyState==4&&a.status==200){genTables(a,f,h,c)}};a.open("GET",g,true);a.send(null)}}function genTables(a,e,f,c){var g=a.responseText;var b=d.getElementById(e);if(b!=null){b.innerHTML=g}if(f==true||f==undefined){setInfoNav.init("infoNav",e)}if(c&&c==true){setInfoNav.init("interchg_infoNav1","interchg_infoContentContainer1")}genRowOver("detailTable");genRowOver("busStopTable")}function setInputOver(){var a=d.getElementsByTagName("input");for(var b=0;b<a.length;b++){if(a[b].className.indexOf("searchBarBtn")<0){continue}if(a[b].className.indexOf("Over")>=0){a[b].clicked=true}a[b].onmouseover=function(){if(this.clicked){return}var c=this.className.substring(this.className.length-4,this.className.length);this.className=this.className.replace(c,c+"Over")};a[b].onmouseout=function(){if(this.clicked){return}var c=this.className.substring(this.className.length-4,this.className.length);this.className=this.className.replace("Over","")}}}var setSearchBar={init:function(e,c,a,b){this.nav=d.getElementById(e);this.obj=d.getElementById(c);if(a){this.txt=d.getElementById(a)}if(b){this.index=b}if(this.nav!=null){this.setA(this.nav)}},setA:function(e){var b=e.getElementsByTagName("a");for(var c=0;c<b.length;c++){b[c].num=c;b[c].parent=this;b[c].className=b[c].className.replace("active","");b[c].onclick=function(){if(this.className.indexOf("active")>=0){return}this.parent.changeA(this,true)}}if(b.length>=1){this.highlightA=b[0];this.changeA(b[0],false)}},changeA:function(e,a){var b=this.highlightA;b.className=b.className.replace("active","");e.className+=" active";if(this.index){showHideDiv(this.index,0)}var f=setChildNodes(this.obj,"DIV");f[this.highlightA.num].style.display="none";f[e.num].style.display="block";if(this.txt){var c=setChildNodes(this.txt,"DIV");c[this.highlightA.num].style.display="none";c[e.num].style.display="block"}this.highlightA=e;genBreadcrumbs(e.className)},changeA2:function(a){this.changeA(this.nav.getElementsByTagName("a")[a],true)}};var setInfoNav={init:function(c,b,a){this.id=null;this.nav=d.getElementById(c);this.obj=d.getElementById(b);if(a){this.txt=d.getElementById(a)}if(this.nav!=null&&this.obj!=null){this.setA(this.nav)}},setA:function(e){var b=e.getElementsByTagName("a");for(var c=0;c<b.length;c++){b[c].num=c;b[c].parent=this;b[c].className=b[c].className.replace("active","");b[c].onclick=function(){if(this.className.indexOf("active")>=0){return}this.parent.changeA(this.num,true)}}var f=setChildNodes(this.obj,"DIV");for(var c=0;c<f.length;c++){f[c].style.display="none"}if(!this.id){this.highlightA=b[0];this.changeA(0,false)}else{this.highlightA=b[this.id];this.changeA(this.id,false)}},changeA:function(e){var a=this.highlightA;if(a){a.className=a.className.replace("active","");if(this.nav){if(e==1){morebtn_toggleLayer_show(1)}var b=this.nav.getElementsByTagName("a")[e];b.className+=" active";var c=setChildNodes(this.obj,"DIV");if(c[this.highlightA.num]){c[this.highlightA.num].style.display="none"}if(c[b.num]){c[b.num].style.display="block"}this.id=b.num;this.highlightA=b}}}};var setInfo={init:function(c,b,a){this.nav=d.getElementById(c);this.navBack=d.getElementById(b);this.obj=d.getElementById(a);this.clicked=true;this.setA()},setA:function(){this.nav.onclick=function(){setInfo.changeA()};this.navBack.onclick=function(){setInfo.changeA()};setInfo.changeA()},changeA:function(){var a=setChildNodes(this.obj,"DIV");if(!this.clicked){a[0].style.display="none";a[1].style.display="block";this.clicked=true}else{a[0].style.display="block";a[1].style.display="none";this.clicked=false}}};function MM_findObj(f,e){var c,b,a;if(!e){e=document}if((c=f.indexOf("?"))>0&&parent.frames.length){e=parent.frames[f.substring(c+1)].document;f=f.substring(0,c)}if(!(a=e[f])&&e.all){a=e.all[f]}for(b=0;!a&&b<e.forms.length;b++){a=e.forms[b][f]}for(b=0;!a&&e.layers&&b<e.layers.length;b++){a=MM_findObj(f,e.layers[b].document)}if(!a&&e.getElementById){a=e.getElementById(f)}return a}function MM_showHideLayers(){var c,f,a,e,b=MM_showHideLayers.arguments;for(c=0;c<(b.length-2);c+=3){if((e=MM_findObj(b[c]))!=null){a=b[c+2];if(e.style){e=e.style;a=(a=="show")?"visible":(a=="hide")?"hidden":a}e.visibility=a}}}function setBtnClick(f,g,c){var b=f.parentNode.getElementsByTagName("a");var k=setChildNodes(d.getElementById("routeContainer"),"DIV");for(var e=0;e<b.length;e++){b[e].num=e;b[e].className=b[e].className.replace("active","")}if(f.className.indexOf("active")>=0){return}f.className+="active";var j=new Date().getTime();var h=j;while(h-j<500){h=new Date().getTime()}changeTable(f.num+1,g,c)}function setRadioBtnClick(b,a,c,e){if(c=="2"){d.getElementById(b).className="";d.getElementById(a).className="active"}else{d.getElementById(b).className="active";d.getElementById(a).className=""}var g=new Date().getTime();var f=g;while(f-g<500){f=new Date().getTime()}changeTable(c,e)}function showHideDiv(c,a){var e=setChildNodes(d.getElementById(c),"DIV");for(var b=0;b<e.length;b++){if(e[b].style.display=="block"){$("hidden_curtab").value=b}e[b].style.display="none"}if(a<e.length){e[a].style.display="block";if(c=="routeInfoContainer"){toggleMapArrow(false)}}}function getElementsByClassName(e,g){var f=new Array();var a=e.getElementsByTagName("*");for(var b=0;b<a.length;b++){if(!a[b].className){continue}if(a[b].className==g){f.push(a[b])}}return f}function showHideBusRoute(g,h,f,b){var a=getElementsByClassName(g,h);var f=getElementsByClassName(g,f);for(var e=0;e<a.length;e++){a[e].style.display="none"}a[b].style.display="block";for(var e=0;e<f.length;e++){f[e].parentNode.className=f[e].parentNode.className.replace(/active/,"")}f[b].parentNode.className+=" active"}function genBreadcrumbs(g){String.prototype.trim=function(){return this.replace(/^\s*/,"").replace(/\s*$/,"")};var c=g.replace("active","");var h=new Array("路線搜尋","Route Number Search","點對點路線搜尋","Pt-to-Pt Search","巴士站搜尋","Bus Stop Search","主頁","Home","路線與服務","Routes & Services","/tc/","/en/");var b=0;if(getLang()=="en"){b=1}if(passval!="header"){switch(c.trim()){case"route":endMapSelectDistrictArea();c=h[0+b];document.form3_no.reset();document.form4_no.reset();$("p2pstart_2").hide();$("p2pstart_1").show();$("p2pend_2").hide();$("p2pend_1").show();$("startpt_busstop").hide();$("startpt").show();$("endpt_busstop").hide();$("endpt").show();clearContainerValue();clearMap();resetMapVal();break;case"p2p":endMapSelectDistrictArea();c=h[2+b];document.form2_no.reset();document.form4_no.reset();clearContainerValue();clearMap();resetMapVal();break;case"stop":endMapSelectDistrictArea();c=h[4+b];document.form2_no.reset();document.form3_no.reset();$("p2pstart_2").hide();$("p2pstart_1").show();$("p2pend_2").hide();$("p2pend_1").show();$("startpt_busstop").hide();$("startpt").show();$("endpt_busstop").hide();$("endpt").show();clearContainerValue();clearMap();resetMapVal();break;default:c=h[0+b];break}}if(!d.getElementById("breadcrumb")){return}var f=d.getElementById("breadcrumb").getElementsByTagName("span")[0];f.innerHTML="";var e=createA(h[10+b],"_self",h[6+b]);f.appendChild(e);f.innerHTML+=" > ";e=createA(h[10+b]+"services/search.html","_self",h[8+b]);f.appendChild(e);f.innerHTML+=" > ";f.innerHTML+=c}function showBusyLoading(){if(!$("busy").visible()){$("busy").show()}}function hideBusyLoading(){if($("busy").visible()){$("busy").hide()}}function preloadImageForMap(e){if(document.images){e="chi";var b="/"+e+"/";var f=[];var h=["images/map/inter.png","images/map/off.png","images/map/on.png","images/map/start_1bus.png","images/map/nearby.png"];for(var g=0;g<h.length;g++){f[g]=new Image();f[g].src=b+h[g]}var c=[];for(var g=1;g<=80;g++){c[g]=new Image();c[g].src=b+"images/map/stop/"+p2pBuubleColor[0]+"/"+g+".png";c[g].src=b+"images/map/stop/"+p2pBuubleColor[1]+"/"+g+".png"}var a=[];for(var g=1;g<=80;g++){a[g]=new Image();a[g].src=b+"images/map/orange/orange_"+g+".png"}}}function gmap_initialize(){if(GBrowserIsCompatible()){map=new GMap2(document.getElementById("gmap"));mapControlObj=new mapControl();mapControlObj.gmap=map;map.enableScrollWheelZoom();new GKeyboardHandler(map);map.addControl(new GOverviewMapControl(),new GControlPosition(G_ANCHOR_BOTTOM_LEFT,new GSize(0,0)));map.addControl(new GLargeMapControl3D());var e=new GMenuMapTypeControl(true);mapControlObj.icontrols.maptype=e;map.addMapType(G_PHYSICAL_MAP);map.addControl(e);var f=new MoreControl();mapControlObj.icontrols.mapMore=f;map.addControl(f);var c=minResolutionOfMap;var b=maxResolutionOfMap;G_PHYSICAL_MAP.getMinimumResolution=function(){return c};G_NORMAL_MAP.getMinimumResolution=function(){return c};G_SATELLITE_MAP.getMinimumResolution=function(){return c};G_HYBRID_MAP.getMinimumResolution=function(){return c};G_PHYSICAL_MAP.getMaximumResolution=function(){return b};G_NORMAL_MAP.getMaximumResolution=function(){return b};G_SATELLITE_MAP.getMaximumResolution=function(){return b};G_HYBRID_MAP.getMaximumResolution=function(){return b};var a=new GLatLng(22.300770315924513,114.17301177978516);map.setCenter(a,11);tooltip=document.createElement("div");document.getElementById("gmap").appendChild(tooltip);tooltip.style.visibility="hidden";reloadContainer();reloadMap();resetHistoryOfBusNoList("history_busnolist");hideBusyLoading()}else{alert("Sorry, the Google Maps API is not compatible with this browser")}}function toggleContainer(){if($("gmap").className=="gmap_normal"){showHideDiv("routeInfoContainer",999);toggleMapArrow(true)}else{var a=0;if($F("hidden_curtab")!=""){a=$F("hidden_curtab")}showHideDiv("routeInfoContainer",a)}}function toggleMapArrow(a){if(a){$("gmap").className="gmap_max";$("enlargeArrow").className="enlargeArrow_max";$("enlargeArrow").src="/chi/images/services/arrow_map_enlarge.gif";$("enlargeArrow").alt=(getCurLang()=="chi"?"收縮地圖":"Narrow Map")}else{$("gmap").className="gmap_normal";$("enlargeArrow").className="enlargeArrow_normal";$("enlargeArrow").src="/chi/images/services/arrow_map_narrow.gif";$("enlargeArrow").alt=(getCurLang()=="chi"?"擴展地圖":"Enlarge Map")}if(mapControlObj!=null){if(mapControlObj.gmap!=null){resizeMap(mapControlObj.gmap)}}}function clearContainerValue(){startpt="";endpt=""}function updatebsContainer(c,a,e){if(c==""){var b=(getCurLang()=="chi"?"請輸入巴士路線號碼":"Please input Bus no.");alert(b);return false}else{if(e){startpt=e;endpt="bs"}else{startpt="bs"}glb_busno=c.toUpperCase();glb_direction=a;reloadContainer()}}function updateContainer(c,a){if(c==""){var b=(getCurLang()=="chi"?"請輸入巴士路線號碼":"Please input Bus no.");alert(b);return false}else{setSearchBar.changeA2(0);glb_busno=c.toUpperCase();glb_direction=a;reloadContainer()}}function updatep2pwithInterchangeContainer(e,a,f,c,b){glb_busno=e.toUpperCase();glb_direction=a;glb_interchangept=b.toUpperCase();setInfoNav.changeA(0);showHideDiv("routeInfoContainer",1);route=glb_busno;startpt=f;endpt=c;changeSign("routeResultcontainer",1)}function updatep2pContainer(e,a,f,b){if(e==""){var c=(getCurLang()=="chi"?"請輸入巴士路線號碼":"Please input Bus no.");alert(c);return false}else{glb_busno=e.toUpperCase();glb_direction=a;setInfoNav.changeA(0);showHideDiv("routeInfoContainer",1);route=glb_busno;startpt=f;endpt=b;changeSign("routeResultcontainer",1)}}function p2pInterchgContainer(c,b,a){if(route!=""){setInfoNav.changeA(0)}startpt=c;endpt=b;loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".p2pinterchg.php?fr="+startpt+"&to="+endpt+"&chgat="+a,"p2pResultList")}function updatep2pTableContainer(c,b,a){loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".p2pinterchg.php?fr="+c+"&to="+b+"&chgat="+a,"p2pTableContainer")}function updateinterchangeRoute(i,f,b,a,h,e,g,c){showHideDiv("routeInfoContainer",3);loadXML("/ajax/interchange.php?fr="+i+"&to="+f+"&chgat1="+b+"&chgat2="+a+"&busno_1="+h+"&busbound_1="+e+"&busno_2="+g+"&busbound_2="+c+"&lang="+(getCurLang()=="chi"?"tc":"en"),"twoRouteChange",false,true)}function BusstopContainer(b){if(b==""){var c=(getCurLang()=="chi"?"請選擇適當巴士站":"Please select suitable bus stop");alert(c);return false}else{showHideDiv("routeInfoContainer",4);var a=b.replace("&","aaaa");loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".bsresultlist.php?stop="+a,"busStopResult",false);return true}}function BusTypeContainer(a){var c=a.replace(/null/g,"");if(c=="null"){var b=(getCurLang()=="chi"?"巴士搜尋路線類型":"Type of Bus route search");alert(b);return false}else{showBusyLoading();if(route!=""){setInfoNav.changeA(0)}showHideDiv("routeInfoContainer",4);loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".bustyperesultlist.php?type="+c,"busStopResult",false);if(c=="A"){setTimeout("hideBusyLoading();",22000)}else{setTimeout("hideBusyLoading();",3000)}return true}}function p2pInterchgCache(){if(route!=""){setInfoNav.changeA(0)}showHideDiv("routeInfoContainer",2);loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".p2pinterchg_cache.php","p2pResultList")}function BusstopCache(){if(route!=""){setInfoNav.changeA(0)}showHideDiv("routeInfoContainer",2);loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".bsresultlist_cache.php","p2pResultList")}function reloadContainer(){if(glb_busno!=null&&glb_direction!=null){if(route!=""){setInfoNav.changeA(0)}showHideDiv("routeInfoContainer",1);route=glb_busno;changeSign("routeResultcontainer")}else{if(startpt!=""&&endpt!=""){p2psearchContainer(startpt,endpt)}}}function p2psearchCheck_withmap(e,c,b,a){if(e==""||e.length<3){var f=(getCurLang()=="chi"?"請輸入起點區內之主要區域。":"Please enter major area of origin.");alert(f);if(c.length<3){$("startpt_busstop").hide();$("startpt").show();$("startpt").focus();$("startpt_id").value=$F("startptarea_id");$("startpt_busstop").value="";setTimeout("AutoC.activate();",500)}else{$("startpt").hide();$("startpt_busstop").show();$("startpt_busstop").focus();setTimeout("AutoC_1.activate();",500)}return false}else{if(b==""||b.length<3){var f=(getCurLang()=="chi"?"請輸入目的地區內之主要區域。":"Please enter major area of destination.");alert(f);if(a.length<3){$("endpt_busstop").hide();$("endpt").show();$("endpt").focus();$("endpt_id").value=$F("endptarea_id");$("endpt_busstop").value="";setTimeout("AutoC1.activate();",500)}else{$("endpt").hide();$("endpt_busstop").show();$("endpt_busstop").focus();setTimeout("AutoC1_1.activate();",500)}return false}else{if(e==b){var f=(getCurLang()=="chi"?"起點與目的地一樣，請再選擇":"Please select again as start point and end point are same.");alert(f);return false}}}return true}function p2psearchContainer(c,a){if(route!=""){setInfoNav.changeA(0)}var b=archiveMapVal();setSearchBar.changeA2(1);restoreMapVal(b);showHideDiv("routeInfoContainer",2);setTimeout("showHideDiv('p2pResultContainer', 0)",1000);loadXML("/ajax/"+(getCurLang()=="chi"?"tc":"en")+".p2presultlist.php?fr="+c+"&to="+a,"p2pResultContainer")}function resetMapVal(){glb_busno=null;glb_direction=null;glb_busSearchType=null;glb_startpt=null;glb_endpt=null;glb_interchangept=null}function archiveMapVal(){var a=[glb_busno,glb_direction,glb_busSearchType,glb_startpt,glb_endpt,glb_interchangept];return a}function restoreMapVal(a){if(glb_busno==null){glb_busno=a[0]}if(glb_direction==null){glb_direction=a[1]}if(glb_busSearchType==null){glb_busSearchType=a[2]}if(glb_startpt==null){glb_startpt=a[3]}if(glb_endpt==null){glb_endpt=a[4]}if(glb_interchangept==null){glb_interchangept=a[5]}}function updateMap(e,b,a,c){glb_busno=e.toUpperCase();glb_direction=b;if(a!=0){glb_busSearchType=a}if(c){reloadMap()}}function updateP2PMap(a,c,b,e){glb_startpt=a;glb_endpt=c;if(b!=0){glb_busSearchType=b}if(e){reloadMap()}}function updateP2PMap_forInterChange(g,e,a,c,h,b,f){updateMap(g,e,b,false);updateP2PMap(a,c,b,f);glb_interchangept=h}function updatePMap(a,b,c){glb_startpt=a;if(b!=0){glb_busSearchType=b}if(c){reloadMap()}}function reloadMap(){if(glb_busSearchType==null){return}if(glb_busSearchType==1||glb_busSearchType==3||glb_busSearchType==4){if(mapControlObj!=null&&glb_busno!=null&&glb_direction!=null){if(glb_busno=="848")glb_direction="2";clearMap();morebtn_toggleLayer_hide(1);loadRoute(mapControlObj,glb_busno,glb_direction)}}if(glb_busSearchType==3){if(mapControlObj!=null&&glb_startpt!=null&&glb_endpt!=null){if(glb_isStartptPin){showStartSelectDistrictAreaSelectPin()}else{setP2PStartPointMarker(glb_startpt)}if(glb_isEndptPin){showEndSelectDistrictAreaSelectPin()}else{setP2PEndPointMarker(glb_endpt)}}}if(glb_busSearchType==4){if(mapControlObj!=null&&glb_startpt!=null){setPStartPointMarker(glb_startpt)}}}function clearMap(){if(mapControlObj!=null){mapControlObj.gmap.clearOverlays()}}function loadRoute(h,c,j){var b=c.split(",");var a=j.split(",");for(var f=0;f<b.length;f++){var g=b[f];var e=a[f];getBothWayRouteList(g,e,f)}}function getBothWayRouteList(e,b,c){var a=false;a=(b==DIRECTION.FORWARD?true:false);if(a){getOneWayRouteBusStops(e,DIRECTION.FORWARD,a,c)}a=(b==DIRECTION.BACKWARD?true:false);if(a){getOneWayRouteBusStops(e,DIRECTION.BACKWARD,a,c)}}function getOneWayRouteBusStops(n,z,B,f){var o,v,C,w,k,q;var g=null;var b=[];var c=null;var s=false;var p=null;var A=0;var y=0;var l=0;var x=null;var r=false;var u=null;var a=false;var h=null;var j=false;var i=null;var e="../../ajax/getRouteMapByBusno.php";var m="bn="+n+"&dir="+z;var t=new Ajax.Request(e,{method:"post",parameters:m,requestHeaders:{Accept:"application/json"},onCreate:function(){tmp_activeRequestCount_forBusRouteSearch+=1;showBusyLoading()},onComplete:function(){if(s){setOneWayRouteBusStopsInfo(n,z,b)}if(B&&s){if(glb_busSearchType==3){c=(f<p2pLineColor.length?p2pLineColor[f]:p2pLineColor[p2pLineColor.length-1])}else{c=null}displayRoute(mapControlObj,n,z,1,1,c);morebtn_toggleLayer_hide(1);if(glb_busSearchType==1){setCookieForBusnoSearch($F("busno"));resetHistoryOfBusNoList("history_busnolist")}}tmp_activeRequestCount_forBusRouteSearch-=1;if(tmp_activeRequestCount_forBusRouteSearch<=0){hideBusyLoading();tmp_activeRequestCount_forBusRouteSearch=0}},onSuccess:function(D){var L="";var G=D.responseText.replace(/\r\n/gi," ");try{L=G.evalJSON(true)}catch(E){}if(glb_busSearchType==3&&B){A=0;y=0;l=0;x=null;r=false;u=null;a=false;h=null;j=false;i=null;if(glb_interchangept!=null){i=glb_interchangept.split(",");if(i.length<2){i=null}}mapControlObj.imarkers["startOn"+f]=null;mapControlObj.imarkers["midIntChange"+f]=null;mapControlObj.imarkers["endOff"+f]=null;if(f==0){mapControlObj.getOnMarkers.clear();mapControlObj.getOnMarkers=[];mapControlObj.getInterchangeMarkers.clear();mapControlObj.getInterchangeMarkers=[]}if(f==1){mapControlObj.getOffMarkers.clear();mapControlObj.getOffMarkers=[]}}for(var F=0;F<L.length;F++){if(!s){s=true}var H=L[F].lat;var I=L[F].lng;if(F==L.length-1){if(L[F].subarea==L[0].subarea){I=(parseFloat(I)-0.0001).toString()}}o=new GLatLng(H,I);v=[new GInfoWindowTab("Info",getBusStopDescription(getCurLang(),n,urlHost+"/chi/img.php?file="+L[F].subarea,99,L[F].title_eng,L[F].address_eng,L[F].title_chi,L[F].address_chi,L[F].normal_fare,L[F].air_cond_fare,z,F,L.length-1,L[F].rel_bus))];C=(getCurLang()=="chi"?L[F].title_chi+"<br>"+L[F].title_eng:L[F].title_eng+"<br>"+L[F].title_chi);q=(f>0?p2pBuubleColor[1]:p2pBuubleColor[0]);if(F>0&&F<L.length-1){w=(F+1>maxBusStopIconNo?get_icon_busstop(maxBusStopIconNo,q):get_icon_busstop(F+1,q))}else{w=get_icon_busstop_termination(F+1)}k=(F==0?2:1);g=createMarker(o,v,C,w,k,mapControlObj.gmap);b.push(g);if(glb_busSearchType==3&&B){x=null;u=null;p=null;if(glb_startpt!=null&&glb_endpt!=null){var M=glb_startpt;var J=glb_endpt;var K=f+1;if(M.indexOf(L[F].area)!=-1){if(M.length==3||M.replace(/_/g," ").indexOf(L[F].area)!=-1){if(K==1){p=(getCurLang()=="chi"?"上車 Get On":"Get On 上車");x=createMarker(new GLatLng(H,I),null,p,getIconOn(),0,mapControlObj.gmap);if(x!=null){mapControlObj.getOnMarkers.push(x);mapControlObj.gmap.addOverlay(x)}if(!r){mapControlObj.imarkers["startOn"+f]=x;r=true}}}}else{if(J.indexOf(L[F].area)!=-1){if(J.length==3||J.replace(/_/g," ").indexOf(L[F].area)!=-1){if((glb_interchangept==null&&i==null&&K==1)||(glb_interchangept!=null&&i!=null&&K==2)){p=(getCurLang()=="chi"?"落車 Get Off":"Get Off 落車");u=createMarker(new GLatLng(H,I),null,p,getIconOff(),0,mapControlObj.gmap);if(u!=null){mapControlObj.getOffMarkers.push(u);mapControlObj.gmap.addOverlay(u)}if(!a){mapControlObj.imarkers["endOff"+f]=u;a=true}}}}}if(glb_interchangept!=null&&i!=null){if(i.length>1&&f<i.length&&i[f]==F||(i[f]=="999"&&F==L.length-1)){p=(getCurLang()=="chi"?"轉乘 Interchange":"Interchange 轉乘");h=createMarker(new GLatLng(H,I),null,p,getIconInterChange(),0,mapControlObj.gmap);if(h!=null){mapControlObj.getInterchangeMarkers.push(h);mapControlObj.gmap.addOverlay(h)}if(!j){mapControlObj.imarkers["midIntChange"+f]=h;j=true}}}}}}}})}function moveToStartOn(a){if(mapControlObj.imarkers["startOn"+a]!=null){mapControlObj.gmap.panTo(mapControlObj.imarkers["startOn"+a].getPoint());return true}else{return false}}function moveToEndOff(a){if(mapControlObj.imarkers["endOff"+a]!=null){mapControlObj.gmap.panTo(mapControlObj.imarkers["endOff"+a].getPoint());return true}else{return false}}function moveToMiddleInterchange(a){if(mapControlObj.imarkers["midIntChange"+a]!=null){mapControlObj.gmap.panTo(mapControlObj.imarkers["midIntChange"+a].getPoint());return true}else{return false}}function setOneWayRouteBusStopsInfo(e,b,c){if(mapControlObj.routes[e]==null){mapControlObj.routes[e]=new routeInfoList()}mapControlObj.routes[e].busNo=e;var a=new routeInfo();a.busStops=c;if(b==DIRECTION.FORWARD){if(mapControlObj.routes[e].forward==null){mapControlObj.routes[e].forward=new routeInfo()}mapControlObj.routes[e].forward.busStops=c}else{if(mapControlObj.routes[e].backward==null){mapControlObj.routes[e].backward=new routeInfo()}mapControlObj.routes[e].backward.busStops=c}}function displayRoute(h,o,k,j,e,l){var c=h.routes[o];if(c==null){return}var b=c.forward;if(k==DIRECTION.BACKWARD){b=c.backward}if(b==null){return}var n=b.busStops;var m=b.route;if(n!=null){var a=new GLatLngBounds();for(var g=0;g<n.length;g++){var f=n[g];a.extend(f.getPoint());if(j==1){h.gmap.addOverlay(f)}else{h.gmap.removeOverlay(f)}}h.gmap.setZoom(h.gmap.getBoundsZoomLevel(a)-1);h.gmap.setCenter(a.getCenter())}}function getRouteWayFromGoogle(g,a,h,j){var c=[];var l=[];for(var e=0;e<g.length;e++){var k=g[e].getPoint().lat()+","+g[e].getPoint().lng();c.push(k);if(c.length>=25){l.push(c.clone());c.clear();c.push(k)}}if(c.length>1){l.push(c.clone())}c.clear();var f={getPolyline:true};var b=[];for(e=0;e<l.length;e++){b[e]=new GDirections();GEvent.addListener(b[e],"load",function(){var o=[];var p=this.getPolyline();for(var n=0;n<p.getVertexCount();n++){o[n]=p.getVertex(n)}addMidArrows(o,a,1);var m=j;if(m==null){m=(h==DIRECTION.BACKWARD?backwardLineColor:forwardLineColor)}var i=new GPolyline(o,m,6,0.5);a.addOverlay(i)});b[e].loadFromWaypoints(l[e],f)}GEvent.addListener(b,"error",function(){if(b.getStatus().code==G_GEO_UNKNOWN_ADDRESS){alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: "+b.getStatus().code)}else{if(b.getStatus().code==G_GEO_SERVER_ERROR){alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: "+b.getStatus().code)}else{if(b.getStatus().code==G_GEO_MISSING_QUERY){alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: "+b.getStatus().code)}else{if(b.getStatus().code==G_GEO_BAD_KEY){alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: "+b.getStatus().code)}else{if(b.getStatus().code==G_GEO_BAD_REQUEST){alert("A directions request could not be successfully parsed.\n Error code: "+b.getStatus().code)}else{alert("An unknown error occurred."+b.getStatus().code)}}}}}});b.clear();l.clear()}function setP2PStartPointMarker(b){var a=(getCurLang()=="chi"?"起點 Start point":"Start point 起點");setAPointMarkerByCodeForP2P(b,a,getIconStartPin(),"startpt",true)}function moveToStartPoint(){if(mapControlObj.imarkers.startpt!=null){mapControlObj.gmap.panTo(mapControlObj.imarkers.startpt.getPoint())}}function setP2PEndPointMarker(b){var a=(getCurLang()=="chi"?"目的地 End point":"End point 目的地");setAPointMarkerByCodeForP2P(b,a,getIconEndPin(),"endpt",false)}function moveToEndPoint(){if(mapControlObj.imarkers.endpt!=null){mapControlObj.gmap.panTo(mapControlObj.imarkers.endpt.getPoint())}}function setAPointMarkerByCodeForP2P(h,c,e,j,o){var n,l,m,k,p;var g=null;var i=[];var b="../../ajax/getAPointByCodeForP2P.php";var f="code="+h;var a=new Ajax.Request(b,{method:"post",parameters:f,requestHeaders:{Accept:"application/json"},onCreate:function(){showBusyLoading()},onComplete:function(){if(g!=null){if(mapControlObj.imarkers[j]!=null){mapControlObj.gmap.removeOverlay(mapControlObj.imarkers[j])}mapControlObj.imarkers[j]=g;mapControlObj.gmap.addOverlay(g);if(o){mapControlObj.gmap.panTo(g.getPoint())}}hideBusyLoading()},onSuccess:function(t){var q="";var s=t.responseText.replace(/\r\n/gi," ");try{q=s.evalJSON(true)}catch(r){}if(q.length>0){n=new GLatLng(q[0].lat,q[0].lng);m=c;l=null;k=e;p=0;g=createMarker(n,l,m,k,p,mapControlObj.gmap)}}})}function setPStartPointMarker(a){setAPointMarkerByCodeForP(a,"startpt",true)}function setAPointMarkerByCodeForP(g,h,m){var l,j,k,i,n;var f=null;var e=[];var b="../../ajax/getAPointByCodeForP.php";var c="code="+g;var a=new Ajax.Request(b,{method:"post",parameters:c,requestHeaders:{Accept:"application/json"},onCreate:function(){showBusyLoading()},onComplete:function(){if(f!=null){if(mapControlObj.imarkers[h]!=null){mapControlObj.gmap.removeOverlay(mapControlObj.imarkers[h])}mapControlObj.imarkers[h]=e;for(var o=0;o<e.length;o++){mapControlObj.gmap.addOverlay(e[o])}if(m){mapControlObj.gmap.panTo(f.getPoint())}}hideBusyLoading()},onSuccess:function(s){var p="";var r=s.responseText.replace(/\r\n/gi," ");try{p=r.evalJSON(true)}catch(q){}for(var o=0;o<p.length;o++){l=new GLatLng(p[o].lat,p[o].lng);j=[new GInfoWindowTab("Tab",getBusStopDescription_NearBy(getCurLang(),urlHost+"/chi/img.php?file="+p[o].scode,99,p[o].title_eng,p[o].address_eng,p[o].title_chi,p[o].address_chi,p[o].rel_bus,o))];k=(getCurLang()=="chi"?p[o].title_chi+"<br>"+p[o].title_eng:p[o].title_eng+"<br>"+p[o].title_chi);i=getIconStartOneBus();n=0;f=createMarker_NearBy(l,j,k,i,n,mapControlObj.gmap);e.push(f)}}})}function startMapSelectDistrictArea(f,a){var b=(f=="start"?"startptpin":"endptpin");var e=a;var c=(getCurLang()=="chi"?"tc":"en");f=="start"?setStartptPinFlag(true):setEndptPinFlag(true);if(mapControlObj.ievents.click==null){resetSelectDistrictAreaSelectPin(b);f=="start"?setStartCursor(mapControlObj.gmap):setEndCursor(mapControlObj.gmap);mapControlObj.ievents.click=GEvent.addListener(mapControlObj.gmap,"click",function(h,g){setNearestDistrictArea(g.lat(),g.lng(),c,true,b,f,e)});if(mapControlObj.ievents.mousemove==null){mapControlObj.ievents.mousemove=GEvent.addListener(mapControlObj.gmap,"mousemove",function(g){setNearestDistrictArea(g.lat(),g.lng(),c,false,b,f,e)})}}}function endMapSelectDistrictArea(){if(mapControlObj!=null){if(mapControlObj.ievents!=null){if(mapControlObj.ievents.click!=null){GEvent.removeListener(mapControlObj.ievents.click);mapControlObj.ievents.click=null;if(mapControlObj.ievents.mousemove!=null){GEvent.removeListener(mapControlObj.ievents.mousemove);mapControlObj.ievents.mousemove=null}if(mapControlObj.gmap!=null){resetOpenHandCursor(mapControlObj.gmap)}}}}}function setStartptPinFlag(a){glb_isStartptPin=a}function setEndptPinFlag(a){glb_isEndptPin=a}function showStartSelectDistrictAreaSelectPin(a){showSelectDistrictAreaSelectPin("startptpin")}function showEndSelectDistrictAreaSelectPin(a){showSelectDistrictAreaSelectPin("endptpin")}function showSelectDistrictAreaSelectPin(a){if(mapControlObj.imarkers[a]!=null){mapControlObj.gmap.addOverlay(mapControlObj.imarkers[a])}}function resetSelectDistrictAreaSelectPin(a){if(mapControlObj.imarkers[a]!=null){mapControlObj.gmap.removeOverlay(mapControlObj.imarkers[a]);mapControlObj.imarkers[a]=null}}function setNearestDistrictArea(o,q,j,f,h,e,b){var n,l,m,k,p;var i=null;var c="../../ajax/getNearestDistrictArea.php";var g="lang="+j+"&lat="+o+"&lng="+q;var a=new Ajax.Request(c,{method:"post",parameters:g,requestHeaders:{Accept:"application/json"},asynchronous:false,onComplete:function(){if(f){if(i!=null){resetSelectDistrictAreaSelectPin(h);mapControlObj.imarkers[h]=i;mapControlObj.gmap.addOverlay(i);endMapSelectDistrictArea()}}},onSuccess:function(t){var r=t.responseText.evalJSON(true);if(r.length>0){if(f){n=new GLatLng(o,q);m=(e=="start"?(getCurLang()=="chi"?"起點 Start point":"Start point 起點"):(getCurLang()=="chi"?"終點 End point":"End point 終點"));l=null;k=(e=="start"?getIconStartPin():getIconEndPin());p=0;i=createMarker(n,l,m,k,p,mapControlObj.gmap);GEvent.addListener(i,"click",function(u){startMapSelectDistrictArea(e,b)})}var s=r[0].name;s=s.replace("&#22487;","埗");s=s.replace("&#22487;","埗");s=s.replace("&#39938;","鰂");s=s.replace("&#30945;","磡");s=s.replace("&#40050;","鱲");s=s.replace("&#37032;","邨");s=s.replace("&#30773;","琼");$(b).value=s;$(b+"_id").value=r[0].code;$(b+"area_id").value=r[0].code}}})}function showNearBy(){setNearBy();if(mapControlObj.ievents.moveend==null){mapControlObj.ievents.moveend=GEvent.addListener(mapControlObj.gmap,"moveend",function(){setNearBy()})}}function hideNearBy(){if(mapControlObj.ievents.moveend!=null){GEvent.removeListener(mapControlObj.ievents.moveend);mapControlObj.ievents.moveend=null}clearNearBys(mapControlObj,false)}function zoomToNearByActiveLevel(){if(mapControlObj!=null){if(mapControlObj.gmap!=null){mapControlObj.gmap.setZoom(nearByActivateZoomLevel)}}}function setNearBy(){if(mapControlObj.gmap.getZoom()>=nearByActivateZoomLevel){clearNearBys(mapControlObj,true);var a=getBoundPoints(mapControlObj.gmap);var b="../../ajax/getNearby.php";var c="minlat="+a.minLat+"&maxlat="+a.maxLat+"&minlng="+a.minLng+"&maxlng="+a.maxLng+"&exbusno="+glb_busno;var e=new Ajax.Request(b,{method:"post",parameters:c,requestHeaders:{Accept:"application/json"},onCreate:function(){showBusyLoading()},onComplete:function(){hideBusyLoading()},onSuccess:function(k){var g="";var j=k.responseText.replace(/\r\n/gi," ");try{g=j.evalJSON(true)}catch(h){}for(var f=0;f<g.length;f++){point=new GLatLng(g[f].lat,g[f].lng);tabs=[new GInfoWindowTab("Tab",getBusStopDescription_NearBy(getCurLang(),urlHost+"/chi/img.php?file="+g[f].scode,99,g[f].title_eng,g[f].address_eng,g[f].title_chi,g[f].address_chi,g[f].rel_bus,f))];title=(getCurLang()=="chi"?g[f].title_chi+"<br>"+g[f].title_eng:g[f].title_eng+"<br>"+g[f].title_chi);icon=getIconNearBy();importance=0;marker=createMarker_NearBy(point,tabs,title,icon,importance,mapControlObj.gmap);marker.scode=g[f].scode;marker=isExistNearByMarker(mapControlObj,marker);if(marker!=null){mapControlObj.nearByBusStops.push(marker);mapControlObj.gmap.addOverlay(marker)}}}})}}function clearNearBys(g,c){var f=g.gmap.getBounds();var e=g.nearByBusStops.clone();g.nearByBusStops.clear();for(var b=0;b<e.length;b++){var a=e[b];if(a!=null){if(c){if(f.contains(a.getPoint())==false){g.gmap.removeOverlay(a)}else{g.nearByBusStops.push(a)}}else{g.gmap.removeOverlay(a)}}}e.clear()}function isExistNearByMarker(f,c){for(var e=0;e<f.nearByBusStops.length;e++){var b=f.nearByBusStops[e];if(b.scode==c.scode){return null}else{if(b.getPoint().lat()==c.getPoint().lat()&&b.getPoint().lng()==c.getPoint().lng()){var a=c.getPoint();c.setPoint(new GLatLng(a.lat(),a.lng()-0.00005))}}}return c}function showRouteWithTerminationOnly(){setRoutesWithTerminationOnly(true)}function hideRouteWithTerminationOnly(){setRoutesWithTerminationOnly(false)}function setRoutesWithTerminationOnly(e){var b=glb_busno;var a=b.split(",");var g=glb_direction;var c=g.split(",");for(var f=0;f<a.length;f++){setARouteWithTerminationOnly(a[f],c[f],e)}}function setARouteWithTerminationOnly(e,m,b){var l=e;var j=m;var h=mapControlObj;if(l==null||j==null||h==null){return}var c=h.routes[l];if(c==null){return}var a=c.forward;if(j==DIRECTION.BACKWARD){a=c.backward}if(a==null){return}var k=a.busStops;if(k==null){return}for(var g=0;g<k.length;g++){var f=k[g];if(b){if(g>0&&g<k.length-1){f.hide()}}else{f.show()}}if(glb_busSearchType==3){showAListOfMarker(h.getOnMarkers,b);showAListOfMarker(h.getOffMarkers,b);showAListOfMarker(h.getInterchangeMarkers,b)}}function showAListOfMarker(a,c){if(a!=null){for(var e=0;e<a.length;e++){var b=a[e];if(c){b.hide()}else{b.show()}}}}function getBusStopDescription(u,r,n,a,v,j,q,b,k,f,w,h,e,p){var s=r+"_"+h;var m=h-1;var o=h+1;var x="";if(p!=null&&p!=""){var g=p.split(",");for(var t=0;t<g.length;t++){x+=(x==""?"":", ")+"<a href='#' onclick=\"javascript:relativeBusSubmit('"+g[t]+"'); \">"+g[t]+"</a>"}}if(u=="chi"){var c="<div id='contentPop_chi' style='"+(u=="chi"?"":"display:none")+"'><div id='contentPop' style='width:230px;margin:0px;padding:0px;'><h1 style='height:20px'>"+r+"</h1><h2 >"+q+"</h2><div id='stopImg' style='margin:0px;padding:0px '><img id='"+s+"' src='"+n+"' alt=''  border='1' style='cursor: pointer;' onclick=\"javascript:theImg=this.src+'';window.open(theImg,'mywindow','width=560,height=430');\" /><div class='stopNum'><strong>停站</strong><span>"+(h+1)+"</span><br /><img src='/chi/images/services/icon_toggle.gif' alt='' style='cursor: pointer;' onclick=\"javascript:theImg='"+n+"';window.open(theImg,'mywindow','width=560,height=430');\">放大</div><div class='busAddress'>"+b+"</div>"+(x==""?"":"<h2 style='font-weight:normal;text-align:left'>途經此站之巴士路線:</h2><p style='font-weight:normal;text-align:left'>"+x+"</p>")+(o>e?"":"<a href='#' id='nextStop' onclick=\"setInfoNav.changeA(1);getFocusBusStop('"+r+"','"+w+"','"+(h+1)+"')\">下一站 ></a>")+(m<0?"":"<a href='#' id='prevStop' onclick=\"setInfoNav.changeA(1);getFocusBusStop('"+r+"','"+w+"','"+(h-1)+"')\">< 上一站</a>")+"</div></div></div>";return c}else{var l="<div id='contentPop_eng' style='"+(u=="eng"?"":"display:none")+"'><div id='contentPop' style='width:230px;margin:0px;padding:0px;'><h1 style='height:20px'>"+r+"</h1><h2 >"+v+"</h2><div id='stopImg' style='margin:0px;padding:0px '><img id='"+s+"' src='"+n+"' alt=''  border='1' style='cursor: pointer;' onclick=\"javascript:theImg=this.src+'';window.open(theImg,'mywindow','width=560,height=430');\" /><div class='stopNum'><strong>Stop</strong><span>"+(h+1)+"</span><br /><img src='/eng/images/services/icon_toggle.gif' alt='' style='cursor: pointer;' onclick=\"javascript:theImg='"+n+"';window.open(theImg,'mywindow','width=560,height=430');\">Enlarge</div><div class='busAddress'>"+j+"</div>"+(x==""?"":"<h2 style='font-weight:normal;text-align:left'>Other routes using this bus stop:</h2><p style='font-weight:normal;text-align:left'>"+x+"</p>")+(o>e?"":"<a href='#' id='nextStop' onclick=\"setInfoNav.changeA(1);getFocusBusStop('"+r+"','"+w+"','"+(h+1)+"')\">Next ></a>")+(m<0?"":"<a href='#' id='prevStop' onclick=\"setInfoNav.changeA(1);getFocusBusStop('"+r+"','"+w+"','"+(h-1)+"')\">< Prev</a>")+"</div></div></div>";return l}}function relativeBusSubmit(a){clearContainerValue();clearMap();resetMapVal();updateContainer(a,1);updateMap(a,"1",1,true);$("busno").value=a}function getBusStopDescription_NearBy(o,k,p,h,j,q,b,c,l){var a="nearby_"+l;var n="";if(c!=null&&c!=""){var f=c.split(",");for(var g=0;g<f.length;g++){n+=(n==""?"":", ")+"<a href='#' onclick=\"javascript:relativeBusSubmit('"+f[g]+"'); \">"+f[g]+"</a>"}}if(o=="chi"){var e="<div id='contentPop_chi' style='"+(o=="chi"?"":"display:none")+"'><div id='contentPop'  style='width:230px;margin:0px;padding:0px;'><h2 class='mapBubble'>"+q+"</h2><p>"+b+"</p><div id='stopImg'  style='margin:0px;padding:0px;'><img id='"+a+"' src='"+k+"' alt='' border='1' style='cursor: pointer;' onclick=\"javascript:theImg=this.src+'';window.open(theImg,'mywindow','width=560,height=430');\" /><div class='stopNum'><img src='/chi/images/services/icon_toggle.gif' alt='' style='cursor: pointer;' onclick=\"javascript:theImg='"+k+"';window.open(theImg,'mywindow','width=560,height=430');\">放大</div>"+(n==""?"":"<h2 style='font-weight:normal;text-align:left'>途經此站之巴士路線:</h2><p style='font-weight:normal;text-align:left'>"+n+"</p>")+"</div></div></div>";return e}else{var m="<div id='contentPop_eng' style='"+(o=="eng"?"":"display:none")+"'><div id='contentPop'  style='width:230px;margin:0px;padding:0px;'><h2 class='mapBubble'>"+h+"</h2><p>"+j+"</p><div id='stopImg'  style='margin:0px;padding:0px;'><img id='"+a+"' src='"+k+"' alt=''  border='1' style='cursor: pointer;' onclick=\"javascript:theImg=this.src+'';window.open(theImg,'mywindow','width=560,height=430');\" /><div class='stopNum'><img src='/chi/images/services/icon_toggle.gif' alt='' style='cursor: pointer;' onclick=\"javascript:theImg='"+k+"';window.open(theImg,'mywindow','width=560,height=430');\">Enlarge</div>"+(n==""?"":"<h2 style='font-weight:normal;text-align:left'>Other routes using this bus stop:</h2><p style='font-weight:normal;text-align:left'>"+n+"</p>")+"</div></div></div>";return m}};
