var $map=null;var $zoom=11;var $infoWindow=null;var $geometryXmlCache=[];var $trafficFlowPolyline=[];var refresh=null;var $mapListener=null;var signMarkers=[];$(document).ready(function(){$('#cb-setup').attr('checked',false);$('#cb-setup').click(function(){if($('#cb-setup').is(':checked')){refresh=clearInterval(refresh)}else{clearTrafficFlow();loadTrafficFlow();refresh=setInterval(function(){clearTrafficFlow();loadTrafficFlow()},60000)}});loadGoogleMap();clearTrafficFlow();loadTrafficFlow();refresh=setInterval(function(){clearTrafficFlow();loadTrafficFlow()},60000);$mapListener=google.maps.event.addListener($map,'zoom_changed',function(){$zoom=$map.getZoom();if(8<=$zoom&&19>=$zoom){clearTrafficFlow();loadTrafficFlow()}});$("#mapTraffic").css('display','none')});function loadGoogleMap(){$map=new google.maps.Map(document.getElementById("map"),{center:new google.maps.LatLng(-36.85303,174.7633),zoom:$zoom,zoomControl:true,zoomControlOptions:{style:google.maps.ZoomControlStyle.SMALL},minZoom:8,maxZoom:19,mapTypeId:google.maps.MapTypeId.ROADMAP,mapTypeControl:true,mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DROPDOWN_MENU}});$infoWindow=new google.maps.InfoWindow()};function loadTrafficFlow(){var m=loadXml('traffic');if(false===m){alert("503 Error. Traffic flow data information unavailable. Please try again later.");return}var n=loadGeometryXml($zoom);if(false===n){alert("503 Error. Traffic flow geometry unavailable. Please try again later.");return}var o=loadXml('wind');setWindMarker(o);var p=loadXml('signs');setSignMarkers(p);var q=0;var r=$(m).find("motorway");r.each(function(){var e=$(this).find("location").size();for(var f=0;f<e;f++){var g=[];var h=$(this).find("location").eq(f).attr("id");var i=$(this).find("location").eq(f).attr("congestion");var j='#FFFFFF';switch(i){case('Free Flow'):j='#00FF00';break;case('Moderate'):j='#FFFF00';break;case('Heavy'):j='#FF0000';break;case('Congested'):j='#000000';break;default:break}var k=$(n).find("location[id='"+h+"']");k.find("points").each(function(){var a=$(this).find("point").length;for(var b=0;b<a;b++){var c=$(this).find("point").eq(b).attr("long");var d=$(this).find("point").eq(b).attr("lat");g.push(new google.maps.LatLng(d,c))}});var l=new google.maps.Polyline({path:g,strokeColor:j,strokeOpacity:1.0,strokeWeight:5});$trafficFlowPolyline[q]=l;l.setMap($map);q++}q++});return};function loadXml(c){var d=false;var e=$.ajax({type:"GET",url:"/traffic/current-conditions/webcams/auckland/xml.php",data:({file:c}),dataType:"xml",cache:false,async:false,error:function(a,b){d=true}}).responseXML;if(false==d){return e}return false};function loadGeometryXml(c){var d='';if(c in $geometryXmlCache){d=$geometryXmlCache[c];return d}var e=false;d=$.ajax({type:"GET",url:"/traffic/current-conditions/webcams/auckland/geometry"+c+".xml",dataType:"xml",cache:false,async:false,error:function(a,b){e=true}}).responseXML;if(false==e){$geometryXmlCache[c]=d;return d}return false};function setWindMarker(a){if(a!==false){if('false'==$("wind",a).attr("available")){return}var b=new google.maps.MarkerImage('http://nzta.govt.nz/traffic/ui/img/wind.png',new google.maps.Size(35,33),new google.maps.Point(0,0),new google.maps.Point(16,33));var c=new google.maps.Marker({position:new google.maps.LatLng(-36.8306,174.7456),map:$map,icon:b,title:'High winds on Harbour Bridge'})}return}function setSignMarkers(d){if(false!==d){var e={maxWidth:310};var f=new google.maps.MarkerImage('http://nzta.govt.nz/traffic/ui/img/sign.png',new google.maps.Size(35,33),new google.maps.Point(0,0),new google.maps.Point(16,33));$("signs",d).children("sign").each(function(){var a=$(this).attr("currentMessage");if(null==a||''==a){}else{a=a.replace(/\[nl\]/g,"<br/>");var b='<div class="infowindow"><h6>'+$(this).attr("name")+'</h6><span>'+a+'</span></div>';var c=new google.maps.Marker({position:new google.maps.LatLng($(this).attr("lat"),$(this).attr("lon")),map:$map,icon:f,title:$(this).attr("description")});google.maps.event.addListener(c,'click',function(){$infoWindow.setContent(b);$infoWindow.setOptions(e);$infoWindow.open($map,c)});signMarkers.push(c)}})}return}function clearTrafficFlow(){if($trafficFlowPolyline){for(i in $trafficFlowPolyline){$trafficFlowPolyline[i].setMap(null)}$trafficFlowPolyline.length=0}if(signMarkers){for(i in signMarkers){signMarkers[i].setMap(null)}signMarkers.length=0}return};
