angular.module("location.module",["lta.services"]).controller("locationCtrl",["$scope","$rootScope","helper",function(n,t,i){"use strict";n.showLocations=!1,n.storeUserLocation=function(n){var t=JSON.stringify(n);i.setStorage("ltalocation",t,1,!0)},n.setUserLocation=function(i,r){t.userLocation=i,t.locationError=!1,n.showLocations=!1,r||n.storeUserLocation(i)},n.setLocations=function(t){n.locations=t,n.showLocations=n.showLocations?!1:!0,n.$apply()},n.presetLocation=function(t){for(var i=0;i<t.length;i++)t[i].types.indexOf("postal_town")>-1&&(n.setUserLocation(t[i]),i=t.length,n.$apply())},n.buildAutoComplete=function(t){var u=document.getElementById(t),i="uk",r=new google.maps.places.Autocomplete(u,{componentRestrictions:{country:i}}),f;google.maps.event.addListener(r,"place_changed",function(){n.setUserLocation(r.getPlace()),n.$apply()}),$(u).keyup(function(t){var u=$(this).val(),e,o;RegExp("(im)[0-9]").test(u)||u.toLowerCase().indexOf("isle of m")!=-1?i!="im"&&(i="im",r.setComponentRestrictions({country:i})):u.toLowerCase().indexOf("guernsey")!=-1?i!="gy"&&(i="gy",r.setComponentRestrictions({country:i})):RegExp("(je)[0-9]").test(u)||u.toLowerCase()=="jersey"?i!="je"&&(i="je",r.setComponentRestrictions({country:i})):i!="uk"&&(i="uk",r.setComponentRestrictions({country:i})),t.keyCode!=13?f=$(".pac-item-selected").length:f==0&&(e=$(this).val(),o=new google.maps.Geocoder,o.geocode({address:e,componentRestrictions:{country:i}},function(t){n.setUserLocation(t[0],!0),n.$apply()}))})},n.revGeocode=function(t){var i=new google.maps.Geocoder,r=new google.maps.LatLng(t.coords.latitude,t.coords.longitude);i.geocode({latLng:r},function(t){n.setPreset?n.presetLocation(t):n.setLocations(t)})},n.checkForLocation=function(r,u){var c=i.getBodyData("data-latitude"),l=i.getBodyData("data-longitude"),a,v,o,f,s,h;if(window.location.href.indexOf("tennis-in-")>-1)a=window.location.href.split("tennis-in-")[1].split("/")[0].replace(/-/g," "),o=new google.maps.Geocoder,o.geocode({address:a,componentRestrictions:{country:"UK"}},function(t){n.setUserLocation(t[0],!1),n.$apply()});else if(c!=undefined&&l!=undefined)v=new google.maps.LatLng(c,l),o=new google.maps.Geocoder,o.geocode({latLng:v},function(t){n.setUserLocation(t[0],!1),n.$apply()});else if(t.stored.cookie!=undefined)f=JSON.parse(t.stored.cookie),f.geometry&&(s=f.geometry.location[Object.keys(f.geometry.location)[0]],h=f.geometry.location[Object.keys(f.geometry.location)[1]],f.geometry.location=new google.maps.LatLng(s,h),n.setUserLocation(f));else if(t.stored.profile){var e=JSON.parse(t.stored.profile),s=e.geometry.location[Object.keys(e.geometry.location)[0]],h=e.geometry.location[Object.keys(e.geometry.location)[1]];e.geometry.location=new google.maps.LatLng(s,h),n.setUserLocation(e)}else n.findLocation(r,u)},n.findLocation=function(i,r){n.setPreset=i,r&&r.preventDefault(),navigator.geolocation?navigator.geolocation.getCurrentPosition(function(i){n.revGeocode(i),t.locationError=!1},function(i){switch(i.code){case 1:t.locationError="Sorry, your location is not accessible. Please enable geolocation or enter a location into the box above.",t.disableGeolocate=!0;break;case 2:t.locationError="Sorry, your location is not available. Please enter a location into the box above.",t.disableGeolocate=!0;break;case 3:t.locationError="Sorry, it has taken too long to find you. Please enter a location into the box above.",t.disableGeolocate=!0}n.$apply()},{enableHighAccuracy:!1,timeout:1e4}):(t.locationError="Your browser doesn’t support geolocation. Please enter a location into the box above.",t.disableGeolocate=!0)},n.toggleFilters=function(n){n.preventDefault(),t.showFilters=!t.showFilters},n.handleKeypress=function(n){n.keyCode===13&&(n.stopPropagation(),n.preventDefault())}}]).run(["$rootScope","helper",function(n,t){n.userLocation,n.locationError="Please enable geolocation or enter a location into the box above.",n.disableGeolocate=!1,n.stored={cookie:t.getStorage("ltalocation",!0),profile:profilelocation}}]),angular.module("map.module",["lta.services"]).controller("mapCtrl",["$scope","$rootScope","data","helper",function(n,t,i,r){"use strict";n.mapMarkers=[],n.mapActive=!0,n.category="all",n.userFilters=[],n.categories=[],n.sessionKey="",n.distance=10,n.setPan=function(t){if(angular.element("#feature .mask #"+t).length>0){var i=angular.element("#feature .mapHead").height(),r=angular.element("#"+t).width(),u=angular.element("#feature .mask").width(),f=(r-u)/2;n.map.panBy(f,-i)}},n.setData=function(i,u){var f;for(n.sessionKey=i.sessionKey,n.newSearch=!1,f=0;f<i.places.length;f++)t.venues.push(i.places[f]);for(f=0;f<t.venues.length;f++)t.venues[f].distance=r.getDistance(t.userLocation.geometry.location.lat(),t.userLocation.geometry.location.lng(),t.venues[f].latitude,t.venues[f].longitude);u?n.defineMap(n.mapId,t.userLocation.geometry.location,n.buildMarkers,t.venues):n.buildMarkers(t.venues)},n.getNewData=function(t,r){var u="/api/VenuesSearch?latitude="+t.lat()+"&longitude="+t.lng()+"&isNewSearch="+n.newSearch+"&sessionKey="+n.sessionKey+"&distance="+n.distance;i.get(n.setData,u,r,"object")},n.waitForLocation=function(i){n.mapId=i,n.newSearch=!0,t.$watch("userLocation",function(t){t&&t.geometry?n.getNewData(t.geometry.location,!0):$("#autoCheck").keyup(function(n){n.keyCode==13&&n.preventDefault()})})},n.defineMap=function(t,i,r,u){var e={zoom:13,minZoom:5,center:i,panControl:!1,zoomControlOptions:{style:google.maps.ZoomControlStyle.SMALL,position:google.maps.ControlPosition.LEFT_BOTTOM},mapTypeControl:!1,streetViewControl:!1,mapTypeId:google.maps.MapTypeId.ROADMAP},f;n.map=new google.maps.Map(document.getElementById(t),e),google.maps.event.addListener(n.map,"dragend",function(){var u=angular.element("#"+t).width(),f=angular.element("#feature .mask").width(),i=(u-f)/2,r;n.map.panBy(-i,0),r=n.map.center,n.map.panBy(i,0),n.getNewData(r)}),n.infoWindow=new google.maps.InfoWindow({}),f=new google.maps.Marker({position:i,map:n.map,html:"geolocation"in navigator?"You are here":"Your searched position",icon:{url:"/Static/images/center-marker.png",size:new google.maps.Size(35,58)}}),google.maps.event.addListener(f,"click",function(){n.infoWindow.setContent(this.html),n.infoWindow.open(n.map,this)}),n.setPan(t),r(u)},n.mapSetCenter=function(t,i,r,u){n.map.setCenter(i),n.setPan(t),r(u)},n.clearMarkers=function(){for(var t=0;t<n.mapMarkers.length;t++)n.mapMarkers[t].marker.setMap(null)},n.buildMarkers=function(t){var r;for(n.mapMarkers.length>-1&&n.clearMarkers(),n.infoWindow=new google.maps.InfoWindow({}),r=0;r<t.length;r++){var i=t[r],e=i.secureId,o=i.name,u=i.delimitedAddress,s=i.distance.toFixed(2),f=i.phoneNumber;u.split(",").join("<br />"),i.marker=new google.maps.Marker({map:n.map,position:new google.maps.LatLng(i.latitude,i.longitude),parentIndex:r,html:"<h3><a href='/play/venues/venue-details/?id="+e+"' target='_parent'>"+o+"<\/a><\/h3><p>"+u+"<br />("+s+" miles)<\/p><a href='tel:"+f+"'>"+f+"<\/a><\/p>",icon:{url:"/Static/images/marker.png",size:new google.maps.Size(35,58)},visible:!1}),google.maps.event.addListener(i.marker,"click",function(){n.infoWindow.setContent(this.html),n.infoWindow.open(n.map,this)}),n.mapMarkers.push(i)}n.filterMarkers(n.mapMarkers)},n.checkFilters=function(t,i){var s=i.Filters.length,e=!1,o=!1,r,u,f;switch(i.Label){case"Costs":r=t.costTypes||[];break;case"Courts":r=t.courtTypes||[];break;case"Sessions":r=t.sessionTypes||[]}for(u=0;u<s;u++)f=i.Filters[u].value,n.userFilters.indexOf(f)>-1&&(e=!0,r.indexOf(f)>-1&&(o=!0));if(!e||o)return!0},n.filterMarkers=function(t){for(var r,o,i=0;i<t.length;i++){var u=t[i],f=0,e=n.categories.length;for(r=0;r<e;r++)o=n.checkFilters(u,n.categories[r]),o&&f++;f===e?u.marker.setVisible(!0):u.marker.setVisible(!1)}n.infoWindow.close(n.map)},n.toggleControls=function(t,i,r){r.preventDefault(),i?(t.setOptions({draggable:!0,zoomControl:!0,scrollwheel:!0,disableDoubleClickZoom:!1}),n.mapActive=!0):(t.setOptions({draggable:!1,zoomControl:!1,scrollwheel:!1,disableDoubleClickZoom:!0}),n.mapActive=!1)},n.saveFilters=function(){var t=n.userFilters.join();r.setStorage("ltaLocationFilters",t,1,!0)},n.changedFilters=function(t,r){var u=$(".filterWrap :checked"),f=u.length;n.userFilters=[],i.venueFilter="all",f>0&&($.each(u,function(t,i){n.userFilters.push(i.id)}),i.venueFilter=n.userFilters),n.filterMarkers(r),n.saveFilters()},n.loadFilters=function(){i.get(n.populateData,"/api/filter",null,"object")},n.isCategorySet=function(t){var r=!1,i,u;if(n.userFilters!=undefined&&n.userFilters.length>0){i=0;do u=n.userFilters[i],u==t&&(r=!0),i++;while(i<n.userFilters.length&&!r)}return r},n.populateData=function(t){var a=[],p=r.getBodyData("data-latitude"),w=r.getBodyData("data-longitude"),v,f,e,o,s,h,c,l,y,u;for((p==undefined||w==undefined)&&(v=r.getStorage("ltaLocationFilters",!0),n.userFilters=v==undefined?[]:v.split(",")),u=0;u<t.costTypes.length;u++)f=t.costTypes[u],a.push({label:f.formattedName,value:f.name,selected:n.isCategorySet(f.name)});for(e=[],o=0;o<t.courtTypes.length;o++)s=t.courtTypes[o],e.push({label:s.formattedName,value:s.name,selected:n.isCategorySet(s.name)});for(h=[],c=0;c<t.sessionTypes.length;c++)l=t.sessionTypes[c],h.push({label:l.formattedName,value:l.name,selected:n.isCategorySet(l.name)});for(y=a.concat(e).concat(h),u=0;u<y.length;u++)i.allFilters.push(y[u].value);n.categories=[{Label:"Costs",Filters:a},{Label:"Courts",Filters:e},{Label:"Sessions",Filters:h}]},n.loadFilters()}]).run(["$rootScope","helper",function(n){n.venues=[],n.showFilters=!1}])