var gmap=function(n,t){var s="our-branches",r,f,u=[],o={lat:54.5,lng:-4.4},e,i,c,v=function(){},w=function(n){if(window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");return t.loadXML(n),t}if(window.DOMParser)return(new DOMParser).parseFromString(n,"text/xml")},b=function(){var n={center:o,zoom:6,mapTypeId:google.maps.MapTypeId.ROADMAP},t;r=new google.maps.Map(document.getElementById("map"),n);t=new google.maps.Marker({position:myLatLng,map:r,title:"Northgate Vehicle Hire"})},h=function(){l();var f=n("#chk-workshop").prop("checked"),e="WebApi/GetAllLocations?workshopOnly="+f+"&bodyshopOnly=false",t=new google.maps.LatLngBounds;gmap.downloadUrl(e,function(f){var o=JSON.parse(f),e;n.each(o,function(n,i){a(i.Latitude,i.Longitude,i.Name,i.UrlToken,i.TelephoneNumber);var r=new google.maps.LatLng(parseFloat(i.Latitude),parseFloat(i.Longitude));t.extend(r)});r.fitBounds(t);e=document.getElementById("locationResults");e.innerHTML="";i.style.visibility="visible";i.onchange=function(){var n=i.options[i.selectedIndex].value;google.maps.event.trigger(u[n],"click")}})},l=function(){var n,t;for(e.close(),n=0;n<u.length;n++)u[n].setMap(null);u.length=0;i.innerHTML="";t=document.createElement("option");t.value="none";t.innerHTML="See all results:";i.appendChild(t)},k=function(){document.getElementById("postcode").value!=""?gmap.searchLocations():h(0)},y=function(t){var o=n("#chk-workshop").prop("checked");l();document.getElementById("locationsHeader").style.display="";var s="WebApi/GetAllLocations?workshopOnly="+o+"&bodyshopOnly=false",f=new google.maps.LatLngBounds,e=document.getElementById("locationResults");e.innerHTML="";gmap.downloadUrl(s,function(o){var c=JSON.parse(o),h=[],s=[];n.each(c,function(n,i){var r=google.maps.geometry.spherical.computeDistanceBetween(t,new google.maps.LatLng(i.Latitude,i.Longitude)),u={branch:i,distance:r};s.push(u)});s.sort(function(n,t){return n.distance-t.distance});h.push(s[0]);h.push(s[1]);h.push(s[2]);h.push(s[3]);h.push(s[4]);n.each(h,function(n,t){a(t.branch.Latitude,t.branch.Longitude,t.branch.Name,t.branch.UrlToken,t.branch.TelephoneNumber);var i=new google.maps.LatLng(parseFloat(t.branch.Latitude),parseFloat(t.branch.Longitude)),r=p(t.branch.Name,t.branch.Address1,t.branch.Address2,t.branch.City,t.branch.Postcode,t.branch.PhoneNumber,t.branch.EmailAddress,t.branch.UrlToken,t.distance*.000621371192,n);e.appendChild(r);f.extend(i)});r.fitBounds(f);i.style.visibility="visible";i.onchange=function(){var n=i.options[i.selectedIndex].value;google.maps.event.trigger(u[n],"click")}})},a=function(n,t,i,f,o){var c="",h;c="<div style='margin: 0; padding: 0;'><b>"+i+"<\/b><\/br>Tel: "+o+'<br /><br /><a href="'+gmap.url+s+"/location/"+f+'">'+i+' branch details<\/a><br /><a href="'+gmap.url+s+"/location/"+f+'">Get directions<\/a><\/div>';h=new google.maps.Marker({map:r,position:{lat:n,lng:t}});google.maps.event.addListener(h,"click",function(){e.setContent(c);e.open(r,h)});u.push(h)},d=function(n,t,r){var u=document.createElement("option");u.value=r;u.innerHTML=n+"("+t.toFixed(1)+")";i.appendChild(u)},p=function(n,t,r,f,e,o,h,c,l,a){var v=document.createElement("li"),y;return v.className="list-group-item",v.style.border="0",v.style.padding="0",y='<p><span class="frutiger_bold" style="color:#00b259;">'+f+"<br />"+l.toFixed(1)+" miles<\/span><br />"+t+", "+r+"<br />"+e+'<br /><span class="frutiger_bold" style="color:#00b259;">'+o+'<\/span><br /><span class="frutiger_bold" style="color:#00b259;"><a style="color:#00b259; text-wrap: normal;" href="mailto:'+h+'">'+h+'<\/a><\/span><br /><br /><a href="'+gmap.url+s+"/location/"+c+'" class="btn btn-block btn-default frutiger_bold" style="text-align:left;"><i class="fa fa-chevron-right pull-right" style="color:#00b259;"><\/i> Opening hours, details and directions<\/a><\/p><br />',v.innerHTML=y,google.maps.event.addDomListener(v,"click",function(){var n=i.options[i.selectedIndex].value;google.maps.event.trigger(u[a],"click")}),v},g=function(n,t){var i=document.createElement("li"),r="";return r='<a href="~/our-branches/location/'+t+'">'+n+"<\/a>",i.innerHTML=r,i.style.cursor="pointer",i.style.marginBottom="5px",i};return{url:"_none",load:function(){var t;r=new google.maps.Map(document.getElementById("map"),{center:o,zoom:6,mapTypeId:"roadmap",backgroundColor:"#ffffff",mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DEFAULT}});var f=document.getElementById("postcode"),n=new google.maps.places.Autocomplete(f,{componentRestrictions:{country:["uk"]}});n.bindTo("bounds",r);e=new google.maps.InfoWindow;t=new google.maps.Marker({map:r});google.maps.event.addListener(n,"place_changed",function(){e.close();t.setVisible(!1);var i=n.getPlace();!i.geometry});i=document.getElementById("locationSelect");i.onchange=function(){var n=i.options[i.selectedIndex].value;n!="none"&&google.maps.event.trigger(u[n],"click")};h(0)},loadWithMarker:function(t,i,u,e){google.maps.visualRefresh=!0;var s=n(t).val(),h=n(i).val();s.length==0&&(s=54.5);h.length==0&&(h=-4.4);r=new google.maps.Map(document.getElementById(u),{center:o,zoom:6,mapTypeId:"roadmap",backgroundColor:"#ffffff",mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DEFAULT}});f=new google.maps.Marker({position:new google.maps.LatLng(s,h),map:r,title:"Set lat/lon values for this property",draggable:e});e&&google.maps.event.addListener(f,"dragend",function(r){n(t).val(r.latLng.lat().toFixed(6));n(i).val(r.latLng.lng().toFixed(6))})},loadWithMarkerAndDirections:function(n,t,i,u,f){var e,o,s;directionsDisplay=new google.maps.DirectionsRenderer;c=new google.maps.DirectionsService;e=new google.maps.LatLng(n,t);o={zoom:12,mapTypeId:google.maps.MapTypeId.ROADMAP,center:e};r=new google.maps.Map(document.getElementById(u),o);s=new google.maps.Marker({position:e,map:r,title:"Northgate Vehicle Hire - "+i});directionsDisplay.setMap(r);directionsDisplay.setPanel(document.getElementById(f))},calculateRoute:function(t,i){var r=n(t).val(),u=i,f={origin:r,destination:u,unitSystem:google.maps.UnitSystem.IMPERIAL,travelMode:google.maps.DirectionsTravelMode.DRIVING};c.route(f,function(n,t){t==google.maps.DirectionsStatus.OK&&directionsDisplay.setDirections(n)})},searchLocation:function(t,i,u){var e=new google.maps.Geocoder;e.geocode({address:t},function(t,e){if(e==google.maps.GeocoderStatus.OK&&(f.position=new google.maps.LatLng(t[0].geometry.location.lat(),t[0].geometry.location.lng()),r.setZoom(6),r.setCenter(o),updated=f.getPosition(),old_latitude=n(i).val(),old_longitude=n(u).val(),new_latitude=updated.lat().toFixed(6),new_longitude=updated.lng().toFixed(6),n(i).val(new_latitude),n(u).val(new_longitude),Math.abs(old_latitude-new_latitude)>.01||Math.abs(old_longitude-new_longitude)>.01)){var s=new google.maps.LatLng(new_latitude,new_longitude);f.setPosition(s)}})},searchLocations:function(){var n=document.getElementById("postcode").value,t=new google.maps.Geocoder;t.geocode({address:n},function(n,t){t==google.maps.GeocoderStatus.OK?y(n[0].geometry.location):h()})},downloadUrl:function(n,t){var i=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest;i.onreadystatechange=function(){i.readyState==4&&(i.onreadystatechange=v,t(i.responseText,i.status))};i.open("GET",n,!0);i.send(null)},getLocation:function(){if(navigator.geolocation){var i,r=function(r){i=r;n("#postcode").val(i.coords.latitude+", "+i.coords.longitude);var u=document.getElementById("postcode").value,f=new google.maps.Geocoder;f.geocode({address:u},function(n,i){var r,u,f;if(i==google.maps.GeocoderStatus.OK&&n[1]){for(r=0;r<n[0].address_components.length;r++)for(u=0;u<n[0].address_components[r].types.length;u++)if(n[0].address_components[r].types[u]=="administrative_area_level_2"){city=n[0].address_components[r];break}typeof city!=t&&(f=f||[],f.push({event:"current_location",current_location:city.long_name}))}});gmap.searchLocations()},u=function(){console.log("Error occurred. Error code: "+error.code)};navigator.geolocation.getCurrentPosition(r,u,{maximumAge:3e5,timeout:1e4})}}}}(jQuery)