var mNavigationPanel=null,mOverviewControl=null,mOverviewLayer=null,mT4ATileCacheLayer=null,mGoogleSatelliteLayer=null,mGooglePhysicalLayer=null,mT4ARoadsLayer=null,mPadkosLayer=null,mMarkerLayer=null,mMarker=null,mHoverControl=null,mPermalinkControl=null,mSelectControl=null,mSelectStopControl=null,mHighlightControl=null,mOptions=null,mMap=null,mDetailedPopupFlag=null,mPaperMaps=[],mVehicleTrackingLayers=[],mVehicleRefreshStrategy=null,mGeojsonFormat=new OpenLayers.Format.GeoJSON,mapMinZoom=1,mapMaxZoom=
7,mLayout=null;function enableHover(){mDetailedPopupFlag=!1;$("#feature-details").remove();$("#feature-label").remove();mHoverControl!=null&&mHoverControl.activate()}function disableHover(){mDetailedPopupFlag=!0;mHoverControl!=null&&mHoverControl.deactivate()}function zoomToListing(a,b,d){var c=new OpenLayers.LonLat(a,b);c.transform(new OpenLayers.Projection("EPSG:4326"),mMap.getProjectionObject());mMap.setCenter(c,11);createMarker(c);showPopupForItem(d,a,b)}
function showFeatureLabel(a){var b=mMap.getLonLatFromPixel(a.xy);b&&(b=b.transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326")),$("#feature-label").remove(),$.get("/listings/showFeatureLabel/"+b.lon+"/"+b.lat+"/"+mMap.getResolution()+"/","",function(b){var c=null;b!=""&&mDetailedPopupFlag!=!0?(c=new OpenLayers.Popup.Anchored("feature-label",mMap.getLonLatFromPixel(a.xy),new OpenLayers.Size(0,0),styleText(b),null,!1),c.panMapIfOutOfView=!1,c.autoSize=!0,c.setBackgroundColor("#ffffffff"),
mMap.addPopup(c)):$("#feature-label").remove()}),Event.stop(a))}
function showFeatureDetailsPopup(a){var b=mMap.getLonLatFromPixel(a.xy).transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326"));$("#feature-details").remove();$("#feature-label").remove();$.get("/listings/showDetailedFeatureInfo/"+b.lon+"/"+b.lat+"/"+mMap.getResolution()+"/","",function(b){b!==""?(mMap.setCenter(a.xy,mMap.getZoom()),myPopup=new OpenLayers.Popup.FramedCloud("feature-details",mMap.getLonLatFromPixel(a.xy),new OpenLayers.Size(480,300),b,null,!0,enableHover),
myPopup.panMapIfOutOfView=!0,myPopup.autoSize=!1,myPopup.setBackgroundColor("#ffffff"),mMap.addPopup(myPopup),mDetailedPopupFlag=!0,disableHover()):(mDetailedPopupFlag=!1,enableHover())});Event.stop(a)}
function showPopupForItem(a,b,d){var c=(new OpenLayers.LonLat(b,d)).transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));$("#feature-details").remove();$.get("/listings/showPopupForItem/"+a+"/","",function(a){a!==""?(myPopup=new OpenLayers.Popup.FramedCloud("feature-details",c,new OpenLayers.Size(480,300),a,null,!0,enableHover),myPopup.panMapIfOutOfView=!0,myPopup.autoSize=!1,myPopup.setBackgroundColor("#ffffff"),mMap.addPopup(myPopup),mDetailedPopupFlag=!0,disableHover()):
(mDetailedPopupFlag=!1,enableHover())})}
function MapTips(){OpenLayers.Control.Hover=OpenLayers.Class(OpenLayers.Control,{defaultHandlerOptions:{delay:500,pixelTolerance:null,stopMove:!1},initialize:function(a){this.handlerOptions=OpenLayers.Util.extend({},this.defaultHandlerOptions);OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Hover(this,{pause:this.onPause,move:this.onMove},this.handlerOptions)},onPause:function(a){showFeatureLabel(a)},onMove:function(){$("#feature-label").remove()}});mHoverControl=
new OpenLayers.Control.Hover({handlerOptions:{delay:1E3,pixelTolerance:6}});mMap.addControl(mHoverControl);mHoverControl.activate()}function showGoogleSatBaseMap(){mMap.setBaseLayer(mGoogleSatelliteLayer);mT4ARoadsLayer.setVisibility(!0);mPadkosLayer.setVisibility(!0);hideLiveTracks();hidePaperMapControls()}function showGooglePhysicalBaseMap(){mMap.setBaseLayer(mGooglePhysicalLayer);mT4ARoadsLayer.setVisibility(!0);mPadkosLayer.setVisibility(!0);hideLiveTracks();hidePaperMapControls()}
function showMapnikBaseMap(){mMap.setBaseLayer(mT4ATileCacheLayer);mT4ARoadsLayer.setVisibility(!1);mPadkosLayer.setVisibility(!0);hideLiveTracks();hidePaperMapControls()}function showFeatureInfo(a){var b=mMap.getLonLatFromPixel(a.xy).transform(new OpenLayers.Projection("EPSG:900913"),new OpenLayers.Projection("EPSG:4326"));$.get("/listings/showFeatureInfo/"+b.lon+"/"+b.lat+"/"+mMap.getResolution()+"/","",function(a){$("#query-results-list").html(a)});Event.stop(a)}
function showSearchResults(){$.get("/listings/map-search/?search_text="+$("#id_search_text").val(),"",function(a){$("#query-results-list").html(a)})}function handleMeasurements(a){var b=a.units,d=a.measure,c="";c+=a.order==1?d.toFixed(3)+" "+b:d.toFixed(3)*100+" ha";$("#map-output").html(c)}function storeExtentsToSession(){myParams=mPermalinkControl.createParams();$.get("/maps/setlivemapstate/"+myParams.zoom+"/"+myParams.lat+"/"+myParams.lon+"/"+myParams.layers+"/")}
function createMarker(a){mMarkerLayer||(mMarkerLayer=new OpenLayers.Layer.Markers("Markers"),mMap.addLayer(mMarkerLayer));mMarker&&(mMarkerLayer.removeMarker(mMarker),mMarker.erase(),mMarker.destroy());var b=new OpenLayers.Size(29,46),d=new OpenLayers.Pixel(-(b.w/2),-b.h),b=new OpenLayers.Icon("/media/images/t4a-poi-map-pin.png",b,d);mMarker=new OpenLayers.Marker(a,b);mMarkerLayer.addMarker(mMarker);mMarkerLayer.redraw()}
function getLayerByName(a){var b=null;try{b=mMap.getLayersByName(a)[0]}catch(d){}return b}
function setupOverviewMap(){new OpenLayers.Projection("EPSG:900913");new OpenLayers.Projection("EPSG:4326");new OpenLayers.Bounds(-2191602.4754,-4226661.9161,5948635.289,4696291.0178);mOverviewLayer=mT4ATileCacheLayer.clone();var a={maximized:!0,mapOptions:{projection:new OpenLayers.Projection("EPSG:900913"),displayProjection:new OpenLayers.Projection("EPSG:4326"),units:"m",minZoomLevel:3,maxZoomLevel:19,numZoomLevels:17,maxResolution:19567.8792375,restrictedExtent:new OpenLayers.Bounds(-2191602.4754,
-4226661.9161,7E6,4696291.0178),maxExtent:new OpenLayers.Bounds(-2191602.4754,-4226661.9161,645E4,4696291.0178),controls:[]},layers:[mOverviewLayer]};mOverviewControl=new OpenLayers.Control.OverviewMap(a);mMap.addControl(mOverviewControl)}
function createMap(){mOptions={projection:new OpenLayers.Projection("EPSG:900913"),displayProjection:new OpenLayers.Projection("EPSG:4326"),units:"m",minZoomLevel:3,maxZoomLevel:19,numZoomLevels:17,maxResolution:19567.8792375,restrictedExtent:new OpenLayers.Bounds(-2191602.4754,-4226661.9161,7E6,4696291.0178),maxExtent:new OpenLayers.Bounds(-2191602.4754,-4226661.9161,645E4,4696291.0178),controls:[]};mMap=new OpenLayers.Map("t4a-map",mOptions)}
function addPadkos(a){mPadkosLayer=new OpenLayers.Layer.WMS("Padkos",a.T4A_PADKOS_URL,{layers:"padkos",transparent:"true",format:"image/png"},{attribution:'<img src="/media/images/t4a-logo-copyright.png">'},{reproject:!0,minScale:2E7,maxScale:1,gutter:15},{isBaseLayer:!1,visibility:!0});mMap.addLayer(mPadkosLayer)}
function setupListingMap(a,b,d,c){createMap();a&&(mGoogleSatelliteLayer=new OpenLayers.Layer.Google("Google Satellite",{sphericalMercator:!0,type:G_SATELLITE_MAP}),mGooglePhysicalLayer=new OpenLayers.Layer.Google("Google Physical",{sphericalMercator:!0,type:G_PHYSICAL_MAP}));d?(mT4ATileCacheLayer=new OpenLayers.Layer.WMS("T4A Map",b.T4A_TILECACHE_URL,{width:"800",height:"525",layers:"t4a-mn-test",srs:"EPSG:900913",format:"image/png",transparent:"false",antialiasing:"true",force:"true"},{attribution:'<img src="/media/images/t4a-logo-copyright.png">'},
{isBaseLayer:!0}),mT4ARoadsLayer=new OpenLayers.Layer.WMS("T4A Roads",b.T4A_TILECACHE_URL,{width:"800",height:"525",layers:"t4a-ms-test",srs:"EPSG:900913",format:"image/png",transparent:"true",antialiasing:"true",force:"true"},{attribution:'<img src="/media/images/t4a-logo-copyright.png">'},{isBaseLayer:!1})):(mT4ATileCacheLayer=new OpenLayers.Layer.WMS("T4A Map",b.T4A_TILECACHE_URL,{width:"800",height:"525",layers:"t4a-mn",srs:"EPSG:900913",format:"image/png",transparent:"false",antialiasing:"true"},
{attribution:'<img src="/media/images/t4a-logo-copyright.png">'},{isBaseLayer:!0}),mT4ARoadsLayer=new OpenLayers.Layer.WMS("T4A Roads",b.T4A_TILECACHE_URL,{width:"800",height:"525",layers:"t4a-ms",srs:"EPSG:900913",format:"image/png",transparent:"true",antialiasing:"true"},{attribution:'<img src="/media/images/t4a-logo-copyright.png">'},{isBaseLayer:!1}));mT4ATileCacheLayer.setVisibility(!0);mT4ARoadsLayer.setVisibility(!1);a?mMap.addLayers([mT4ATileCacheLayer,mGoogleSatelliteLayer,mGooglePhysicalLayer,
mT4ARoadsLayer]):mMap.addLayers([mT4ATileCacheLayer,mT4ARoadsLayer]);addPadkos(b);c&&(c.transform(new OpenLayers.Projection("EPSG:4326"),mMap.getProjectionObject()),mMap.setCenter(c,12),createMarker(c));$(":radio").click(function(){this.value=="gsat"&&showGoogleSatBaseMap();this.value=="gphy"&&showGooglePhysicalBaseMap();this.value=="papr"&&showPaperMap();this.value=="gps"?showLiveTracks():this.value=="t4a"&&showMapnikBaseMap()});MapTips();mMap.addControl(new OpenLayers.Control.PanZoomBar);setupOverviewMap(mOptions);
$("#papr-radiobutton").attr("checked")&&showPaperMap();$("#gps-radiobutton").attr("checked")&&showLiveTracks()}
function setupMapControls(){OpenLayers.Control.Click=OpenLayers.Class(OpenLayers.Control,{defaultHandlerOptions:{single:!0,"double":!1,pixelTolerance:0,stopSingle:!1,stopDouble:!1},initialize:function(a){this.handlerOptions=OpenLayers.Util.extend({},this.defaultHandlerOptions);OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Click(this,{click:this.onClick,dblclick:this.onDblclick},this.handlerOptions)},onClick:function(a){showFeatureDetailsPopup(a);
showFeatureInfo(a)},onDblclick:function(){}});mClick=new OpenLayers.Control.Click;mMap.addControl(mClick);mClick.activate();var a=new OpenLayers.Control.NavigationHistory({displayClass:"olControlNavigationHistory"});mMap.addControl(a);mNavigationPanel=new OpenLayers.Control.Panel({div:document.getElementById("map-toolbar")});mNavigationPanel.addControls([new OpenLayers.Control.Navigation({displayClass:"olControlNavigation",title:"Pan the map by dragging it"}),new OpenLayers.Control.ZoomToMaxExtent({displayClass:"olControlZoomFull",
title:"Zoom to all of Africa"}),new OpenLayers.Control.ZoomBox({title:"Zoom in by dragging a box",out:!1,displayClass:"olControlZoomBoxIn"}),new OpenLayers.Control.ZoomBox({title:"Zoom out by dragging a box",out:!0,displayClass:"olControlZoomBoxOut"}),a.next,a.previous]);myLineMeasureControl=new OpenLayers.Control.Measure(OpenLayers.Handler.Path,{persist:!0,displayClass:"olControlMeasureLine",title:"Measure distances on the map"});myLineMeasureControl.events.on({measure:handleMeasurements,measurepartial:handleMeasurements});
myAreaMeasureControl=new OpenLayers.Control.Measure(OpenLayers.Handler.Polygon,{persist:!0,displayClass:"olControlMeasurePolygon",title:"Measure areas on the map"});myAreaMeasureControl.events.on({measure:handleMeasurements,measurepartial:handleMeasurements});mNavigationPanel.addControls([myLineMeasureControl,myAreaMeasureControl]);mMap.addControl(mNavigationPanel);mPermalinkControl=new OpenLayers.Control.Permalink("permalink");mPermalinkControl.setMap(mMap);mMap.addControl(mPermalinkControl);mMap.addControl(new OpenLayers.Control.MousePosition({formatOutput:formatLonlats}));
mMap.addControl(new OpenLayers.Control.MouseDefaults);mMap.addControl(new OpenLayers.Control.Attribution);mMap.addControl(new OpenLayers.Control.ScaleBar({align:"left",abbreviateLabel:"true",minWidth:180,maxWidth:300}));mMap.events.register("moveend",mMap,storeExtentsToSession)}function formatLonlats(a){var b=a.lat,a=a.lon,d=OpenLayers.Util.getFormattedLonLat(b),c=OpenLayers.Util.getFormattedLonLat(a,"lon");return d+", "+c+" ("+Math.round(b*1E4)/1E4+", "+Math.round(a*1E4)/1E4+")"}
function setupSearchBox(){$("#search-submit-button").click(showSearchResults);$("input#id_search_text").keypress(function(a){(a.which&&a.which==13||a.keyCode&&a.keyCode==13)&&showSearchResults()})}
function setupLiveMap(a,b,d,c,f){setupSearchBox();$("#permalink-title").click(function(){$("#permalink-container").slideToggle()});$("#base-layer-legend-title").click(function(){$("#base-layer-legend").slideToggle()});$("#papermap-layer-legend-title").click(function(){$("#papermap-layer-legend").slideToggle()});$("#live-tracks-legend-title").click(function(){$("#live-tracks-options").slideToggle()});$("#query-results-title").click(function(){$("#query-results-list").slideToggle()});$("#permalink-container").slideToggle();
$("#live-tracks-legend-title").slideToggle();$("#live-tracks-options").slideToggle();$("#papermap-layer-legend-title").slideToggle();$("#papermap-layer-legend").slideToggle();$("body").layout({north:{size:120,spacing_open:0,closable:!1,resizable:!1},east:{size:260,resizable:!0,spacing_open:0,closable:!1},west__resizable:!1,west__closed:!0,south__closed:!0,initClosed:!1});setupListingMap(a,b,d,c);setupMapControls();!c&&!f&&(c=new OpenLayers.LonLat(39E5,-29E5),mMap.setCenter(c,2))}
function trackPopupClosed(){selectControl.unselect(this.feature)}
function formatTrackFeatureJson(a){myDriverImage="";a.photo!=""&&(myDriverImage="<img src='"+a.photo+"' alt='driver photo' style='float: left;'/>");myRouteColour="<span style='width: 10px; height: 10px; background: "+a.route_colour+"; display: inline-block;'></span>";var b=myDriverImage;b+="<div>";b+="<h3 class='centered'>"+myRouteColour+" "+a.driver_name+" current position</h3><p class='centered'>";b+="<b>Country:</b> "+a.country+"<br />";a.trip_day!=""&&(b+="<b>Trip Day:</b> "+a.trip_day+" - "+
a.trip_name+"<br />");b+=a.timestamp+"<br />";b+="<b>Location:</b> "+a.locality_description+"<br />";b+="<br />";b+="<b>Listings Nearby:</b> ";for(myListingCounter in a.nearest_listings)myListing=a.nearest_listings[myListingCounter],myListingCounter>0&&(b+=", "),b+="<a href='/listings/item/"+myListing.spat_id+"/' target='_new'>"+myListing.name+"("+myListing.distance+"km)</a>";b+="<br />";b+="</p>";b+="</div>";return b}
function formatOvernightStopFeatureJson(a){myDriverImage="";a.photo!=""&&(myDriverImage="<img src='"+a.photo+"' alt='driver photo' style='float: left;'/>");var b=myDriverImage;b+="<div>";b+="<p class='centered' style='color:#387C44'><b>"+a.driver_name+" stayed here </b></p><p class='centered'>";a.trip_day!=""&&(b+="<b>Trip Day:</b> "+a.trip_day+" - "+a.trip_name+"<br />");b+=a.timestamp+"<br />";b+="<b>Location:</b> "+a.locality_description+"<br />";b+="<br />";a.nearest_restPlace.name!=""&&(b+="<b>Staying at :</b> ",
b+="<a href='/listings/item/"+a.nearest_restPlace.spat_id+"/' target='_new'>"+a.nearest_restPlace.name+"("+a.nearest_restPlace.distance+"km)</a>");b+="<br />";b+="</p>";b+="</div>";return b}
function formatStopFeatureJson(a){myDriverImage="";a.photo!=""&&(myDriverImage="<img src='"+a.photo+"' alt='driver photo' style='float: left;'/>");var b=myDriverImage;b+="<div>";b+="<p class='centered' style='color:#7E2217'><b>"+a.driver_name+" stopped here </b></p><p class='centered'>";a.trip_day!=""&&(b+="<b>Trip Day:</b> "+a.trip_day+" - "+a.trip_name+"<br />");b+=a.timestamp+"<br />";b+="<b>Location:</b> "+a.locality_description+"<br />";b+=" Nearby <a href='/listings/item/"+a.nearestPlace.spat_id+
"/' target='_new'>"+a.nearestPlace.name+"("+a.nearestPlace.distance+"km)</a>";b+="<br />";b+="<br />";b+="</p>";b+="</div>";return b}
function showPopupForTrackFeature(a,b){$("#track-popup").remove();var d="/maps/getVehicleTrackInfo/"+a+"/"+b+"/";b==null&&(d="/maps/getVehicleTrackInfo/"+a+"/0/");$.getJSON(d,function(a){if(a!==""){var b=null,b=new OpenLayers.LonLat(a.x,a.y);a.end_point=="False"?a.point_type=="O"?(b=new OpenLayers.Popup.FramedCloud("track-popup",b,new OpenLayers.Size(200,100),formatOvernightStopFeatureJson(a),null,!0,trackFeatureDeselected),b.setBackgroundColor("#B5EAAA")):a.point_type=="S"?b=new OpenLayers.Popup.FramedCloud("track-popup",
b,new OpenLayers.Size(200,100),formatStopFeatureJson(a),null,!0,trackFeatureDeselected):(b=new OpenLayers.Popup.Anchored("track-popup",b,new OpenLayers.Size(0,0),"<span style='width: 10px; height: 10px; background: "+a.route_colour+"; display: inline-block;'></span> Day "+a.trip_day+" : "+a.timestamp,null,!0,trackFeatureDeselected),b.setBackgroundColor("#ffffff")):(b=new OpenLayers.Popup.FramedCloud("track-popup",b,new OpenLayers.Size(200,100),formatTrackFeatureJson(a),null,!0,trackFeatureDeselected),
b.setBackgroundColor("#ffffff"));b.panMapIfOutOfView=!0;b.autoSize=!0;mMap.addPopup(b)}else trackFeatureDeselected()})}function trackFeatureSelected(a){myData=a.data;myData!=null&&myData.vehicle_id!=null&&myData.id!=null&&(showPopupForTrackFeature(myData.vehicle_id,myData.id),Event.stop(a))}function trackFeatureDeselected(){$("#track-popup").remove()}
function setupVehicleTrackingMap(a){setupSearchBox();$("input#id_search_text").keypress(function(a){(a.which&&a.which===13||a.keyCode&&a.keyCode===13)&&showSearchResults()});$("#permalink-title").click(function(){$("#permalink-container").slideToggle()});$("#query-results-title").click(function(){$("#query-results-list").slideToggle()});$("#permalink-container").slideToggle();$("body").layout({north:{size:120,spacing_open:0,closable:!1,resizable:!1},east:{size:260,resizable:!1,spacing_open:0,closable:!1},
west__resizable:!1,west__closed:!0,south__closed:!0,initClosed:!1});createMap();mT4ATileCacheLayer=new OpenLayers.Layer.WMS("T4A Map",a.T4A_TILECACHE_URL,{width:"800",height:"525",layers:"t4a-mn",srs:"EPSG:900913",format:"image/png",transparent:"false",antialiasing:"true"},{attribution:'<img src="/media/images/t4a-logo-copyright.png">'},{isBaseLayer:!0});mT4ATileCacheLayer.setVisibility(!0);mMap.addLayers([mT4ATileCacheLayer]);setupMapControls();mMap.addControl(new OpenLayers.Control.PanZoomBar);
mMap.events.unregister("click",mMap,showFeatureInfo);mMap.events.unregister("click",mMap,showFeatureDetailsPopup);addPadkos(a);url=a.T4A_PADKOS_URL;a=new OpenLayers.Control.WMSGetFeatureInfo({url:url,title:"Identify features by hovering",queryVisible:!0,hover:!0,maxFeatures:1,layers:[mPadkosLayer],exceptions:"application/vnd.ogc.se_xml",handlerOptions:{delay:500,pixelTolerance:6},eventListeners:{getfeatureinfo:function(a){$("#feature-label").remove();var d=null;a.text!==""?(d=new OpenLayers.Popup.Anchored("feature-label",
mMap.getLonLatFromPixel(a.xy),new OpenLayers.Size(0,0),styleText(a.text),null,!1),d.panMapIfOutOfView=!1,d.autoSize=!0,d.setBackgroundColor("#ffffffff"),mMap.addPopup(d)):$("#feature-label").remove()}}});mMap.addControl(a);a.activate();$.getJSON("/maps/getVoetsporeVehicleList/",setupVoetsporeTracks);zoomToLiveTrackLastPosition("10028412")}
function styleText(a){return"<span style='color:white;padding-bottom:0px;padding-top:0px;padding-left:0px;padding-right:0px;font-family:Lucida Sans Unicode;font-size:15pt;font-weight:bold;text-shadow:0 0 0.2em black, 0 0 0.2em black,0 0 0.2em black,0 0 0.2em black'><b>"+a+"</b></span>"}function populateVehicleList(){$.getJSON("/maps/getVehicleList/",function(a){var b=[];$.each(a,function(a,c){b.push('<option value="'+a+'">'+c+"</option>")});$("#track-selector").html(b.join(""))})}
function logEvent(a){OpenLayers.Console.log(a.type,a.feature.id)}function displayLayer(a,b){a=="padkos"&&mPadkosLayer.setVisibility(b)}
function readVehicleTrack(a){var b=getLayerByName(a.vehicle);b?b.destroyFeatures():(b=createTrackLayerStyle(),b=new OpenLayers.Layer.Vector(a.vehicle,{styleMap:b}));b.addFeatures(mGeojsonFormat.read(a));mMap.addLayer(b);mSelectControl==null?(mSelectControl=new OpenLayers.Control.SelectFeature(b,{clickout:!0,geometryTypes:["OpenLayers.Geometry.Point"],hover:!1,toggle:!0,highlightOnly:!1,renderIntent:"select",onSelect:trackFeatureSelected,onUnselect:trackFeatureDeselected,eventListeners:{beforefeaturehighlighted:null,
featurehighlighted:trackFeatureSelected,featureunhighlighted:null}}),mMap.addControl(mSelectControl)):(myLayers=mSelectControl.layers,myLayers==null&&(myLayers=[mSelectControl.layer]),myLayers.push(b),mSelectControl.setLayer(myLayers));mSelectControl.activate();return!0}
function readStops(a){var b=getLayerByName(a.vehicle);b==null&&(b=createTrackLayerStyle(),b=new OpenLayers.Layer.Vector(a.vehicle,{styleMap:b}));b.addFeatures(mGeojsonFormat.read(a));mSelectControl==null?(mSelectControl=new OpenLayers.Control.SelectFeature(b,{clickout:!0,geometryTypes:["OpenLayers.Geometry.Point"],hover:!1,toggle:!0,highlightOnly:!1,renderIntent:"select",onSelect:trackFeatureSelected,onUnselect:trackFeatureDeselected,eventListeners:{beforefeaturehighlighted:null,featurehighlighted:trackFeatureSelected,
featureunhighlighted:null}}),mMap.addControl(mSelectControl)):(myLayers=mSelectControl.layers,myLayers==null&&(myLayers=[mSelectControl.layer]),myLayers.push(b),mSelectControl.setLayer(myLayers));mSelectControl.activate();return!0}
function setupVoetsporeTracks(a){for(var b="",d=0,c=a.vehicles.length;d<c;d++)b=a.vehicles[d],$.getJSON("/maps/getVehicleTrack/"+b+"/",function(a){readVehicleTrack(a);$.getJSON("/maps/getStops/"+a.vehicle+"/",function(a){readStops(a);$.getJSON("/maps/getOvernightStops/"+a.vehicle+"/",function(a){readStops(a)})})});redrawTrackingLayers()}
function createTrackLayerStyle(){var a=new OpenLayers.Rule({title:"Stop points rule",maxScaleDenominator:7E5,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:"point_type",value:"stop"}),symbolizer:{graphicWidth:20,graphicHeight:20,graphicOpacity:1,cursor:"hand"}}),b=new OpenLayers.Rule({title:"Stop points rule",minScaleDenominator:7E5,filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.EQUAL_TO,property:"point_type",value:"stop"}),
symbolizer:{graphicWidth:12,graphicHeight:12,graphicOpacity:1,cursor:"hand"}}),d=new OpenLayers.Rule({title:"Normal points rule",filter:new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.NOT_EQUAL_TO,property:"point_type",value:"stop"}),symbolizer:{graphicZIndex:99,graphicWidth:29,graphicHeight:46,graphicXOffset:-15,graphicYOffset:-46,cursor:"hand"}}),c=new OpenLayers.Style({fillOpacity:0.7,graphicOpacity:1,strokeColor:"${colour}",fillColor:"${colour}",strokeWidth:3,pointRadius:"${point_size}",
label:"${label}",fontColor:"black",fontSize:"12px",fontFamily:"Arial",fontWeight:"bold",labelAlign:"bc",labelXOffset:"0",labelYOffset:"5",externalGraphic:"${marker_graphic}"});c.addRules([d,a,b]);a=new OpenLayers.Style({strokeColor:"yellow",fillColor:"yellow",strokeWidth:6});b=new OpenLayers.Style({strokeColor:"yellow",fillColor:"yellow",strokeWidth:4});return new OpenLayers.StyleMap({"default":c,select:a,temporary:b})}
function setupLiveTracks(){var a=$("#track-selector option:selected").val();a?(createTrackLayerStyle(),$.getJSON("/maps/getVehicleTrack/"+a+"/",function(b){readVehicleTrack(b);$.getJSON("/maps/getStops/"+a+"/",function(b){readStops(b);$.getJSON("/maps/getOvernightStops/"+a+"/",function(a){readStops(a)})})})):alert("Select a vehicle first!")}
function hideLiveTracks(){$("#live-tracks-legend-title").is(":visible")&&$("#live-tracks-legend-title").slideToggle();$("#live-tracks-options").is(":visible")&&$("#live-tracks-options").slideToggle();hideTrackingLayers()}
function showLiveTracks(){mMap.setBaseLayer(mT4ATileCacheLayer);mT4ARoadsLayer.setVisibility(!1);hidePaperMapControls();mVehicleTrackingLayers.length<1&&setupLiveTracks();hideTrackingLayers();$("#live-tracks-legend-title").is(":visible")||$("#live-tracks-legend-title").slideToggle();$("#live-tracks-options").is(":visible")||$("#live-tracks-options").slideToggle()}
function refreshLiveTrack(){var a=$("#track-selector option:selected").val();if(a){for(var b in mVehicleTrackingLayers)mMap.removeLayer(b),b.destroy();$.getJSON("/maps/getVehicleTrack/"+a+"/",function(b){readVehicleTrack(b);$.getJSON("/maps/getStops/"+a+"/",function(b){readStops(b);$.getJSON("/maps/getOvernightStops/"+a+"/",function(a){readStops(a);redrawTrackingLayers()})})});$.getJSON("/maps/getLatestVehiclePosition/"+a+"/",function(a){myPoint=new OpenLayers.LonLat(a.x,a.y);createMarker(myPoint)})}else alert("Select a vehicle first!")}
function zoomToLiveTrackLastPosition(a){a==null&&(a=$("#track-selector option:selected").val());a?($("#track-popup").remove(),$.getJSON("/maps/getLatestVehiclePosition/"+a+"/",function(a){myPoint=new OpenLayers.LonLat(a.x,a.y);mMap.setCenter(myPoint,12);redrawTrackingLayers();createMarker(myPoint)}),showPopupForTrackFeature(a),redrawTrackingLayers()):alert("Select a vehicle first!")}function hideTrackingLayers(){for(var a in mVehicleTrackingLayers)mLayer.setVisibility(!1)}
function redrawTrackingLayers(){for(var a in mVehicleTrackingLayers)a.redraw()}function zoomToLayerByName(a){if(a=getLayerByName(a))mMap.zoomToExtent(a.getDataExtent()),redrawTrackingLayers()}
function getKMLtest(a,b){var d=getLayerByName(a);if(d){var c=new OpenLayers.Format.KML;c.internalProjection=mMap.projection;c.externalProjection=mMap.displayProjection;c.extractAttributes=!0;c.kmlns='<kml xmlns="http://earth.google.com/kml/2.1";>';c.placemarksDesc="Track points of "+b+"'s vehicle";c.foldersName="Tracks4Africa "+b;c.foldersDesc="The vehicle tracks as seen on the map belonging to "+b;kml=c.write(d.features);$("#kmlbox").text(kml)}}
function savefile(a){var b=window.frames.w;if(!b&&(b=document.createElement("iframe"),b.id="w",b.style.display="none",document.body.insertBefore(b,null),b=window.frames.w,!b&&(b=window.open("","_temp","width=100,height=100"),!b)))return window.alert("Sorry, the file could not be created."),!1;var d=b.document;d.open("text/plain","replace");a?(d.write(a),d.close()):(d.close(),d.body.innerHTML="\r\n"+a+"\r\n");d.execCommand("SaveAs",null,name)?window.alert(name+" has been saved."):window.alert("The file has not been saved.\nIs there a problem?");
b.close();return!1}function zoomToLiveTrack(){for(var a in mVehicleTrackingLayers)mMap.zoomToExtent(mVehicleTrackingLayer.getDataExtent()),redrawTrackingLayers()}
function getTileURL(a){var b=this.map.getResolution(),d=Math.round((a.left-this.maxExtent.left)/(b*this.tileSize.w)),b=Math.round((a.bottom-this.tileOrigin.lat)/(b*this.tileSize.h)),c=this.map.getZoom();return this.mapBounds.intersectsBounds(a)&&c>=mapMinZoom&&c<=mapMaxZoom?(c+=3,myUrl=this.url+this.path+"/"+c+"/"+d+"/"+b+"."+this.type):"/media/images/none.png"}
function setupPaperMaps(){var a=[{title:"Mozambique & Malawi N.",path:"MozN",bounds:new OpenLayers.Bounds(29.9182625651,-18.0880679237,41.4909567141,-9.12575821908)},{title:"Mozambique & Malawi S.",path:"MozS",bounds:new OpenLayers.Bounds(29.9189540108,-25.9326065833,41.4878121207,-17.3701617869)},{title:"Namibia N.",path:"NamN",bounds:new OpenLayers.Bounds(10.7318470154,-23.6786979329,22.3045316988,-14.9784021767)},{title:"Namibia S.",path:"NamS",bounds:new OpenLayers.Bounds(9.86753123415,-29.3042770515,
21.4702866042,-20.943151669)},{title:"Botswana back",path:"BotsReverse",bounds:new OpenLayers.Bounds(19.7066108436,-27.1033553335,28.899502746,-16.3266621129)},{title:"Botswana front",path:"BotsFront",bounds:new OpenLayers.Bounds(19.7066108436,-27.1033536282,28.9002638098,-16.3266621129)}];myLi='<li class="ui-corner-all button ui-button ui-widget ui-button-text-only ui-state-default">';for(var b in a){var d=a[b].title,c=a[b].bounds.transform(mMap.displayProjection,mMap.projection),f=a[b].path,g="my"+
f+"Layer",e=new OpenLayers.Layer.TMS(d,"http://178.63.25.215/papermaps/",{type:"png",getURL:getTileURL,isBaseLayer:!1,mapBounds:c,path:f,maxExtent:new OpenLayers.Bounds(-20037508,-20037508,20037508,2.003750834E7),tileOrigin:new OpenLayers.LonLat(-2.003750834E7,-2.003750834E7)});mPaperMaps[g]=e;mMap.addLayer(e);e.setVisibility(!0);d="papermap-"+e.id+"-checkbox";$("#papermap-layer-legend").append(myLi+'<input type="checkbox" class="layer-checkbox" id="'+d+'" name="'+e.name+'"/>'+e.name+"</li>")}$(".layer-checkbox").live("click",
function(){var a=this.name,b=$(this).attr("id"),b=b.replace("papermap-","");b.replace("-checkbox","");myLayers=mMap.layers;try{e=getLayerByName(a),e.getVisibility()?e.setVisibility(!1):e.setVisibility(!0)}catch(c){alert(c+"\n")}})}
function hidePaperMapControls(){$("#papermap-layer-legend-title").is(":visible")&&$("#papermap-layer-legend-title").slideToggle();$("#papermap-layer-legend").is(":visible")&&$("#papermap-layer-legend").slideToggle();for(var a in mPaperMaps){var b=mPaperMaps[a];b&&b.setVisibility(!1)}}
function showPaperMap(){mMap.setBaseLayer(mT4ATileCacheLayer);mT4ARoadsLayer.setVisibility(!1);mPadkosLayer.setVisibility(!1);hideLiveTracks();$("#papermap-layer-legend-title").is(":visible")||$("#papermap-layer-legend-title").slideToggle();$("#papermap-layer-legend").is(":visible")||$("#papermap-layer-legend").slideToggle();$("#papermap-layer-legend").children("li").length==0&&setupPaperMaps();$(".layer-checkbox").each(function(){try{myLayer=getLayerByName(this.name),$(this).attr("checked")?myLayer.setVisibility(!0):
myLayer.setVisibility(!1)}catch(a){alert(a+"\n")}});disableHover()};

