(function(Woodbine,undefined){(function(Champions,undefined){Champions.settings={Center:{},LocationUrl:"",Locations:[],Map:{}}
Champions.init=function(options){jQuery.extend(Champions.settings,options);if(Champions.settings.center){Champions.createMap(Champions.settings.center);}else{Woodbine.Champions.setCurrentLocation();}
Champions.initVue();Champions.initAutoComplete('locationTextField');}
Champions.initVue=function(){Champions.settings.Vue=new Vue({el:'#locations',data:{locations:[]},methods:{pan:function(a,b){var latLng=new google.maps.LatLng(a.Latitude,a.Longitude);Champions.settings.Map.panTo(latLng);Champions.settings.Map.setZoom(17);this._data.locations.forEach(function(c,d){c.Marker.setAnimation(null);});a.Marker.setAnimation(google.maps.Animation.DROP);jQuery(".active").removeClass("active");jQuery(b.currentTarget).addClass("active");setTimeout(function(){a.Marker.setAnimation(null);},2100);},getDirection:function(a,b){b.stopPropagation();var latLng1=new google.maps.LatLng(Woodbine.Champions.settings.Center.lat,Woodbine.Champions.settings.Center.lng);var latLng2=new google.maps.LatLng(a.Latitude,a.Longitude);Champions.calculateAndDisplayRoute(latLng1,latLng2);}}});}
Champions.initAutoComplete=function(elementId){var input=document.getElementById(elementId);var autocomplete=new google.maps.places.Autocomplete(input);google.maps.event.addListener(autocomplete,'place_changed',function(){var geometry=autocomplete.getPlace().geometry;if(geometry){var cord={coords:{latitude:geometry.location.lat(),longitude:geometry.location.lng()}};Woodbine.Champions.setCurrentLocation(cord);}});}
Champions.initSearchAutoComplete=function(elementId){var input=document.getElementById(elementId);var autocomplete=new google.maps.places.Autocomplete(input);google.maps.event.addListener(autocomplete,'place_changed',function(){var geometry=autocomplete.getPlace().geometry;if(geometry){Champions.cords={latitude:geometry.location.lat(),longitude:geometry.location.lng()};console.log(Champions.cords);}});}
Champions.initSearchButton=function(elementId){jQuery("#"+elementId).on("click",function(){if(Woodbine.Champions.cords){location.href="http://localhost/champions7/?loc="+Champions.cords.latitude+","+Champions.cords.longitude;}});}
Champions.getSettings=function()
{return Champions.settings;}
Champions.loadLocations=function(){return jQuery.getJSON(Champions.settings.LocationUrl);}
Champions.calculateDistance=function(lat1,lon1,lat2,lon2){var deg2rad=function(deg){return deg*(Math.PI/180);};var R=6371;var dLat=deg2rad(lat2-lat1);var dLon=deg2rad(lon2-lon1);var a=Math.sin(dLat/2)*Math.sin(dLat/2)+
Math.cos(deg2rad(lat1))*Math.cos(deg2rad(lat2))*Math.sin(dLon/2)*Math.sin(dLon/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));var d=R*c;return d;}
Champions.sortLocations=function(locations){var myLatLng={lat:parseFloat(Champions.settings.Center.lat),lng:parseFloat(Champions.settings.Center.lng)};for(var i=0;i<locations.length;i++){locations[i]["Distance"]=parseFloat((Champions.calculateDistance(myLatLng.lat,myLatLng.lng,locations[i]["Latitude"],locations[i]["Longitude"],"K")).toFixed(2));}
locations.sort(function(a,b){return(a.Distance>b.Distance)?1:((b.Distance>a.Distance)?-1:0);});return myLatLng;}
Champions.createMap=function(position){Champions.settings.Center={lat:position.coords.latitude,lng:position.coords.longitude};Champions.loadLocations().done(function(locations){Champions.sortLocations(locations);Champions.settings.Locations=locations;Champions.settings.Vue.locations=locations;Champions.settings.Map=new google.maps.Map(document.getElementById('map'),{center:Champions.settings.Center,scrollwheel:true,zoom:12});for(var i=0;i<locations.length;i++){var marker=new google.maps.Marker({map:Champions.settings.Map,position:{lat:parseFloat(locations[i].Latitude),lng:parseFloat(locations[i].Longitude)},title:locations[i].Name});locations[i].Marker=marker;var infoWindow=new google.maps.InfoWindow();google.maps.event.addListener(marker,'click',(function(marker,i){return function(){infoWindow.setContent("<strong>"+locations[i].Name+" ("+locations[i].Region+" - "+locations[i].City+")</strong><div>Address : "+locations[i].Address1+" "+locations[i].Address2+", <br />"
+locations[i].City+", "+locations[i].PostalCode+", "+locations[i].Province+"</div>");infoWindow.open(Champions.settings.Map,marker);}})(marker,i));}});}
Champions.setCurrentLocation=function(position){Champions.directionsDisplay=null;if(position){Champions.createMap(position);}else{try{navigator.geolocation.getCurrentPosition(Champions.createMap);}catch(exp){Woodbine.Champions.setCurrentLocation({coords:{latitude:43.6532,longitude:-79.3832}});}}}
Champions.directionsDisplay=null;Champions.calculateAndDisplayRoute=function(pointA,pointB){var directionsService=new google.maps.DirectionsService;if(Champions.directionsDisplay===null){Champions.directionsDisplay=new google.maps.DirectionsRenderer({map:Champions.settings.Map});}else{Champions.directionsDisplay.set('directions',null);}
directionsService.route({origin:pointA,destination:pointB,avoidTolls:true,avoidHighways:false,travelMode:google.maps.TravelMode.DRIVING},function(response,status){if(status===google.maps.DirectionsStatus.OK){Champions.directionsDisplay.setDirections(response);}else{window.alert('Directions request failed due to '+status);}});}}(Woodbine.Champions=Woodbine.Champions||{}));}(window.Woodbine=window.Woodbine||{}));