
var searchMap={};searchMap.mapId='map';searchMap.mapCont=null;searchMap.jMap=null;searchMap.jDirs=null;searchMap.depMarker=null;searchMap.destMarker=null;searchMap.mMan=null;searchMap.markerArr=[];searchMap.iconsArr={};searchMap.loadedKml=[];searchMap.loadedMarkerIds={};searchMap.loadedBounds=[];searchMap.kmlFilePath='';searchMap.markerArr={};searchMap.markerArr['j']=[];searchMap.markerArr['p']=[];searchMap.markerArr['subdomain']=[];searchMap.hideState={};searchMap.hideState['j']=false;searchMap.hideState['p']=true;searchMap.hideButtonId={};searchMap.hideButtonId['j']='map-hide-j';searchMap.hideButtonId['p']='map-hide-p';searchMap.voc={};searchMap.baseLink='';searchMap.iwCont={};searchMap.iwCont.activeId=false;searchMap.myInfoWindowInstance=false;searchMap.iwOpenTimeout=null;searchMap.hoveredMarkerInstance=null;jQuery(function(jQuery){if(document.body.id=='bd-map-search'){searchMap.kmlFilePath=mediaPath.replace('/media','/files/kml');searchMap.mapCont=document.getElementById(searchMap.mapId);if(!searchMap.mapCont){return;}
searchMap.mapIsLoading=true;if(!searchMap.mapIsLoaded){google.load("maps","2",{'callback':searchMap.init,'language':currentLang});}}
searchMap.voc['depText']=__('__cnt__journeys_leaving');searchMap.voc['destText']=__('__cnt__journeys_arriving');searchMap.voc['viewList']=__('view_list');searchMap.voc['zoomIn']=__('zoom_in');searchMap.baseLink=window.location.pathname.toString();});searchMap.init=function(){if(!google.maps.BrowserIsCompatible()){return;}
searchMap.jMap=new google.maps.Map2(searchMap.mapCont);searchMap.centerOnBasePosition();searchMap.jMap.addControl(new google.maps.LargeMapControl);searchMap.jMap.addControl(new google.maps.OverviewMapControl());searchMap.jMap.addControl(new google.maps.ScaleControl());searchMap.mMan=new MarkerManager(searchMap.jMap);google.maps.Event.addListener(searchMap.jMap,"click",function(){if(!searchMap.jMap.scrollWheelZoomEnabled()){searchMap.jMap.enableScrollWheelZoom();}});searchMap.jDirs=new google.maps.Directions(searchMap.jMap,null);google.maps.Event.addListener(searchMap.jDirs,"addoverlay",searchMap.onGDirectionsAddOverlay);google.maps.Event.addListener(searchMap.jDirs,"error",searchMap.onGDirectionsError);google.maps.Event.addListener(searchMap.jMap,"zoomend",searchMap.loadMarkers);google.maps.Event.addListener(searchMap.jMap,"dragend",searchMap.loadMarkers);google.maps.Event.addListener(searchMap.jMap,"click",searchMap.iwCloseAction);google.maps.Event.addListener(searchMap.jMap,"zoomend",searchMap.iwCloseAction);jQuery('#enlarge-map').click(function(){var center=searchMap.jMap.getCenter();searchMap.mapCont.style.width='100%';searchMap.jMap.checkResize();searchMap.jMap.setCenter(center);this.style.display='none';jQuery('#map-listing').css('display','none');});searchMap.handleListing(window.location.href.toString());searchMap.loadMarkers();jQuery(document.body).unload(google.maps.Unload);}
searchMap.iwLinkClick=function(){var journeyRegExp=/\/([0-9])+/;if(this.href.toString().match(journeyRegExp)){window.location.href=this.href;}
else{searchMap.handleListing(this.href);}
return false;};searchMap.iwButtonClick=function(){if(this.className=='close'){searchMap.iwCloseAction();return false;}
var oldZoom=searchMap.jMap.getZoom();var pos=searchMap.myInfoWindowInstance.getPoint();var newZoom=Math.min(17,oldZoom+4);searchMap.jMap.setCenter(pos,newZoom);return false;};searchMap.iwCloseAction=function(){if(searchMap.myInfoWindowInstance){searchMap.myInfoWindowInstance.hide();searchMap.myInfoWindowInstance.marker_.removeHighlight();}}
searchMap.onGDirectionsAddOverlay=function(){var wayPointCnt=searchMap.jDirs.getNumGeocodes();var currMarker=null;var currLatLng=null;var currTitle=null;var currContent=null;var icon=null;for(var i=0;i<wayPointCnt;i++){currMarker=searchMap.jDirs.getMarker(i);currLatLng=currMarker.getLatLng();currMarker.hide();switch(i){case 0:searchMap.depMarker.setLatLng(currLatLng);break;case(wayPointCnt-1):searchMap.destMarker.setLatLng(currLatLng);break;}}}
searchMap.onGDirectionsError=function(){var statusCode=searchMap.jDirs.getStatus().code;var errMsgElem=document.getElementById('map-msg');if(errMsgElem){errMsgElem.style.display='block';}
var errorMsg=("An error occurred."+statusCode);}
searchMap.centerOnBasePosition=function(){var center=null;var zoom=0;var currUrl=window.location.href.toString();var queryStart=currUrl.indexOf('dps=');if(queryStart>-1){var queryParams=currUrl.substr(queryStart+4);queryParams=queryParams.split(',');if(queryParams.length<3){return;}
if(!isNaN(parseFloat(queryParams[0]))&&!isNaN(parseFloat(queryParams[1]))){center=new google.maps.LatLng(queryParams[0],queryParams[1]);}
if(!isNaN(parseInt(queryParams[2]))){zoom=parseInt(queryParams[2]);}}
if(!center&&basePos&&baseZoom){var basePosArr=basePos.split(';');center=new google.maps.LatLng(basePosArr[0],basePosArr[1]);zoom=baseZoom;searchMap.jMap.checkResize();searchMap.jMap.setCenter(new google.maps.LatLng(basePosArr[0],basePosArr[1]),baseZoom);searchMap.jMap.checkResize();}
if(!zoom||!center){zoom=4;center=new google.maps.LatLng(47.783635,6.020508);}
searchMap.jMap.setCenter(center,zoom);searchMap.jMap.checkResize();}
searchMap.loadMarkers=function(oldZoom,newZoom){searchMap.jMap.closeInfoWindow();newZoom=newZoom||searchMap.jMap.getZoom();if(newZoom<1){newZoom=1;}
if(newZoom<=4){searchMap.loadKmlMarkers('zoomlevel-4-'+currentLang+'.txt',0,4,'j');}
else if(newZoom==5){searchMap.loadKmlMarkers('zoomlevel-5-'+currentLang+'.txt',5,5,'j');}
else if(newZoom==6){searchMap.loadKmlMarkers('zoomlevel-6-'+currentLang+'.txt',6,6,'j');}
else if(newZoom==7){searchMap.loadKmlMarkers('zoomlevel-7-'+currentLang+'.txt',7,7,'j');}
else if(newZoom>7){var isLoaded=false;var currentBounds=searchMap.jMap.getBounds();for(var i=0;i<searchMap.loadedBounds.length;i++){if(searchMap.loadedBounds[i].containsBounds(currentBounds)){isLoaded=true;}}
if(!isLoaded){searchMap.loadBoundedJourneys(currentBounds);}}}
searchMap.loadBoundedJourneys=function(bounds,query){var southWest=bounds.getSouthWest();var northEast=bounds.getNorthEast();var params={};params['minLat']=southWest.lat().toPrecision(8);params['minLng']=southWest.lng().toPrecision(8);params['maxLat']=northEast.lat().toPrecision(8);params['maxLng']=northEast.lng().toPrecision(8);params['zoom']=searchMap.jMap.getZoom();params['dps']=query||'';params['action']='getBoundedJourneys';jQuery.ajax({data:params,dataType:'json',url:window.location.href.toString(),success:function(data){searchMap.loadJsonMarkers(data,searchMap.jMap.getZoom(),searchMap.jMap.getZoom(),'j');}})}
searchMap.loadKmlMarkers=function(kmlFile,minZoom,maxZoom,markerGroup){if(searchMap.loadedKml.indexOf(kmlFile)>-1){return;}
searchMap.loadedKml.push(kmlFile);jQuery.getJSON(searchMap.kmlFilePath+'/'+kmlFile,function(data){searchMap.loadJsonMarkers(data,minZoom,maxZoom,markerGroup);});}
searchMap.loadJsonMarkers=function(data,minZoom,maxZoom,markerGroup){searchMap.iwStr=[];searchMap.iwStr.push('<div>');var markerArr=[];var iwContent=null;var mType=null;var point=null;var uniqId=null;var id=null;for(var i=0;i<data.length;i++){id=data[i]['id'];uniqId=id+minZoom.toString()+maxZoom.toString();if(uniqId&&searchMap.loadedMarkerIds[uniqId]===true){continue;}
searchMap.loadedMarkerIds[uniqId]=true;iwContent=searchMap.createIwContentHtml(data[i],id);point=new google.maps.LatLng(parseFloat(data[i]['x']),parseFloat(data[i]['y']));mType=data[i]['dpa']!=undefined?'single':'multiple';markerArr.push(searchMap.createMarker(point,id,iwContent,mType,searchMap.hideState[markerGroup]));}
searchMap.markerArr[markerGroup]=searchMap.markerArr[markerGroup].concat(markerArr);searchMap.mMan.addMarkers(markerArr,minZoom,maxZoom);searchMap.mMan.refresh();searchMap.iwStr.push('</div>');var iwCont=document.getElementById('map-iw');iwCont.innerHTML=iwCont.innerHTML+searchMap.iwStr.join('');}
searchMap.createMarker=function(point,id,iwContent,mType,hideMe){if(mType=='single'){var opts={'height':16,'width':26,'className':'single'};}
else{var opts={'height':18,'width':26,'className':'multiple'};}
var marker=new LightMarker(point,opts);marker.iwId=id;marker.hideMe=hideMe;GEvent.addListener(marker,'mouseover',function(){if(searchMap.iwOpenTimeout){window.clearTimeout(searchMap.iwOpenTimeout);}
searchMap.hoveredMarkerInstance=this;searchMap.iwOpenTimeout=window.setTimeout(searchMap.iwOpener,200);});GEvent.addListener(marker,'mouseout',function(){if(searchMap.hoveredMarkerInstance==this){searchMap.hoveredMarkerInstance=null;}});return marker;}
searchMap.iwOpener=function(){var hoveredMarker=searchMap.hoveredMarkerInstance;if(!hoveredMarker){return;}
if(searchMap.myInfoWindowInstance){searchMap.myInfoWindowInstance.hide();searchMap.myInfoWindowInstance.marker_.removeHighlight();searchMap.myInfoWindowInstance.marker_=hoveredMarker;searchMap.myInfoWindowInstance.contentNode_=document.getElementById(hoveredMarker.iwId);}
else{searchMap.myInfoWindowInstance=new myInfoWindow(hoveredMarker,document.getElementById(hoveredMarker.iwId));searchMap.jMap.addOverlay(searchMap.myInfoWindowInstance);searchMap.myInfoWindowInstance.addAction('click',searchMap.addIwActions);}
searchMap.myInfoWindowInstance.redraw(true);searchMap.myInfoWindowInstance.show();searchMap.myInfoWindowInstance.marker_.highlight();return false;}
searchMap.createIwContentHtml=function(marker,id,mType){searchMap.iwStr.push('<div id="'+id+'" class="iw">');if(marker['dp']!=undefined){var depCnt=marker['dp'];var destCnt=marker['ds'];var lat=marker['x'];var lng=marker['y'];var zoom=searchMap.jMap.getZoom();if(depCnt>0){searchMap.iwStr.push('<div class="iw-dep">'+searchMap.voc['depText'].replace(/{cnt}/,depCnt)+'</div>');searchMap.iwStr.push('<a href="'+searchMap.baseLink+'?dps='+lat+','+lng+','+zoom+',dp">'+searchMap.voc['viewList']+'</a>');}
if(destCnt>0){searchMap.iwStr.push('<div class="iw-dest">'+searchMap.voc['destText'].replace(/{cnt}/,destCnt)+'</div>');searchMap.iwStr.push('<a href="'+searchMap.baseLink+'?dps='+lat+','+lng+','+zoom+',ds">'+searchMap.voc['viewList']+'</a>');}
if((depCnt>0||destCnt>0)&&zoom<17){searchMap.iwStr.push('<br />');searchMap.iwStr.push('<button type="button">'+searchMap.voc['zoomIn']+'</button>');}}
else{var depAddress=marker['dpa'];var depJourneyId=marker['dpi'];var destAddress=marker['dsa'];var destJourneyId=marker['dsi'];if(depJourneyId){searchMap.iwStr.push('<div class="iw-addr">'+depAddress+'</div>');searchMap.iwStr.push('<a href="'+JOURNEY_DETAIL_BASELINK+'/'+depJourneyId+'">'+__('view_details')+'</a>');}
if(destJourneyId){searchMap.iwStr.push('<div class="iw-addr">'+destAddress+'</div>');searchMap.iwStr.push('<a href="'+JOURNEY_DETAIL_BASELINK+'/'+destJourneyId+'">'+__('view_details')+'</a>');}}
searchMap.iwStr.push('</div>');}
searchMap.addIwActions=function(iwCont){jQuery(iwCont).click(function(e){if(e.target.tagName.toLowerCase()=='a'){return searchMap.iwLinkClick.call(e.target);}
else if(e.target.tagName.toLowerCase()=='button'){return searchMap.iwButtonClick.call(e.target);}});};searchMap.handleListing=function(myUrl){var centerLatLng=searchMap.jMap.getCenter();var zoom=searchMap.jMap.getZoom();var searchParamStart=myUrl.indexOf('dps=');if(searchParamStart>-1){var queryStr=myUrl.substr(searchParamStart+4).replace(/%2C/g,',');if(queryStr.indexOf('&')>-1){queryStr=queryStr.substr(0,queryStr.indexOf('&'));}
queryParams=queryStr.split(',');if(queryParams.length<3){return;}
if(!isNaN(parseFloat(queryParams[0]))&&!isNaN(parseFloat(queryParams[1]))){centerLatLng=new google.maps.LatLng(queryParams[0],queryParams[1]);}
if(!isNaN(parseInt(queryParams[2]))){zoom=parseInt(queryParams[2]);}
var pageStart=myUrl.indexOf('&p=');if(pageStart<0){pageStart=myUrl.indexOf('?p=');}
var page=1;if(pageStart>-1){myUrl=myUrl.substr(pageStart);var pageRegExp=/p=([0-9])+/;var res=pageRegExp.exec(myUrl);if(res.length>=2){page=res[1];}}
searchMap.fetchJourneyListing(queryStr,page);searchMap.mapCont.style.width='400px';searchMap.jMap.checkResize();jQuery('#enlarge-map').css('display','block');jQuery('#map-listing').css('display','block');searchMap.jMap.setCenter(centerLatLng,zoom);}};searchMap.fetchJourneyListing=function(queryStr,page){var params={};page=page||1;params['zoom']=searchMap.jMap.getZoom();params['action']='getMapListing';params['dps']=queryStr;params['p']=page;jQuery.ajax({data:params,dataType:'html',url:window.location.href.toString(),success:function(result){jQuery('#map-listing').html(result);addDetailsLink();jQuery('#map-listing tr.pagination a').click(function(){searchMap.handleListing(this.href);return false;});}})
return false;};searchMap.triggerJourneySearch=function(overlay,pos){if(overlay){return false;}
if(searchMap.depMarker==null){searchMap.depMarker=new GMarker(pos,searchMap.iconsArr['dep']);searchMap.depMarker.myIsVisible=true;searchMap.jMap.addOverlay(searchMap.depMarker);}
else if(searchMap.destMarker==null){searchMap.destMarker=new GMarker(pos,searchMap.iconsArr['dest']);searchMap.destMarker.myIsVisible=true;searchMap.jMap.addOverlay(searchMap.destMarker);searchMap.searchJourneys(searchMap.depMarker.getLatLng(),pos);}
else if(searchMap.depMarker.myIsVisible&&searchMap.destMarker.myIsVisible){searchMap.jDirs.clear();searchMap.destMarker.hide();searchMap.destMarker.myIsVisible=false;searchMap.depMarker.setLatLng(pos);searchMap.depMarker.show();}
else{searchMap.destMarker.setLatLng(pos);searchMap.destMarker.show();searchMap.destMarker.myIsVisible=true;searchMap.searchJourneys(searchMap.depMarker.getLatLng(),pos);}}
searchMap.searchJourneys=function(depPos,destPos){var wayPointsArr=[depPos,destPos];searchMap.jDirs.loadFromWaypoints(wayPointsArr,{preserveViewport:true});var zoom=searchMap.jMap.getZoom();var dpsString='dps=m'+','+depPos.lat().toPrecision(7)+','+depPos.lng().toPrecision(7)+','
+destPos.lat().toPrecision(7)+','+destPos.lng().toPrecision(7)+','+zoom;var distance='10000';searchMap.handleListing(dpsString,distance);return false;}
searchMap.hideMarkers=function(markerGroup){searchMap.hideState[markerGroup]=true;for(var i=0;i<searchMap.markerArr[markerGroup].length;i++){searchMap.markerArr[markerGroup][i].hideMe=true;searchMap.markerArr[markerGroup][i].hide();}}
searchMap.showMarkers=function(markerGroup){searchMap.hideState[markerGroup]=false;for(var i=0;i<searchMap.markerArr[markerGroup].length;i++){if(searchMap.markerArr[markerGroup][i].isHidden()){searchMap.markerArr[markerGroup][i].hideMe=false;searchMap.markerArr[markerGroup][i].show();}}}
function setMarkerVisibility(markerGroup,hideState){if(hideState=='auto'&&!searchMap.hideState[markerGroup]){hideState='hide';}
if(hideState=='hide'){searchMap.hideMarkers(markerGroup);}
else{searchMap.showMarkers(markerGroup);}
var hideButton=document.getElementById(searchMap.hideButtonId[markerGroup]);if(!hideButton){return;}
if(hideState=='hide'){hideButton.innerHTML=__('show');}
else{hideButton.innerHTML=__('hide');}};