
var myFFMap;var MAX_ZOOM=18;var DEFAULT_ZOOM=13;var INIT_ZOOM=4;var DEFAULT_SEARCH_RADIUS=20;var geoCoder=new google.maps.ClientGeocoder();var ffSearcher=new FFSearcher();var markerMgrOptions={borderPadding:20,maxZoom:15,trackMarkers:true};var markerManager;var HOME_URL;function FFMap(googleMap){this.gMap=googleMap;this.gMap.addControl(new google.maps.LargeMapControl(),new google.maps.ControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(10,10)));this.gMap.addControl(new google.maps.ScaleControl(),new google.maps.ControlPosition(G_ANCHOR_BOTTOM_RIGHT,new GSize(10,10)));this.centerOnPoint(new google.maps.LatLng(37.09024,-95.712891));this.localSearch=new google.search.LocalSearch();this.localSearch.setCenterPoint(this.gMap);this.localSearch.setSearchCompleteCallback(null,searchCompleteHandler);this.localSearch.setResultSetSize(GSearch.LARGE_RESULTSET);this.fan=null;this.userCenterPoint=null;setUserCenterPoint();this.initOverlays();this.currentSearchCenter=null;}
FFMap.prototype.centerOnPoint=function(point,zoomLevel){if(!this.gMap){alert("this.gMap is not defined");}
if(!zoomLevel){this.gMap.setCenter(point,INIT_ZOOM);}
else{this.gMap.setCenter(point,zoomLevel);this.gMap.savePosition();}}
FFMap.prototype.getOverlay=function(overlayName){for(var i=0;i<this.gMap.overlays.length;i++){if(this.gMap.overlays[i].getTitle()==overlayName){return this.gMap.overlays[i];}}}
FFMap.prototype.initOverlays=function(){this.overlays=[];var overlays_=this.overlays;GEvent.addListener(this.gMap,'addoverlay',handleOverlayAdded);GEvent.addListener(this.gMap,'removeoverlay',function(o){for(var i=0;i<overlays_.length;i++){if(overlays_[i]==o){return overlays_.splice(i,1);}}});GEvent.addListener(this.gMap,'clearoverlays',function(){myFFMap.overlays=[];});}
function setUserCenterPoint(){var handleGetFan=function(fan){if(debug){if(!myFFMap){alert("myFFMap is not defined");}}
myFFMap.fan=fan;geoCoder.getLatLng(fan.streetAddress+", "+fan.zip,function(point){myFFMap.userCenterPoint=point;});}
var userId=getFanIdFromCookie("sflUserCookie");GlobalDWREngine.getFan(userId,handleGetFan);}
function handleOverlayAdded(o){if(!(o instanceof google.maps.Marker)){return;}
var resultDOMNode=findMatchingNode(o);o.bindInfoWindow(resultDOMNode,null);myFFMap.overlays.push(o);}
function findMatchingNode(overlay){var localResults=ffSearcher.localResults;var targetPoint=overlay.getPoint();var currentPoint;for(var i=0;i<localResults.length;i++){currentPoint=localResults[i].locationPt;if(targetPoint.equals(currentPoint)){return localResults[i].mapResultDiv;}}
return null;}
function loadFanFinder(localSearchAddressId,fanZipId,homeUrl,doSearch){HOME_URL=homeUrl;if(google.maps.BrowserIsCompatible()){createMap();var localAddressElt=document.getElementById(localSearchAddressId);var fanZipElt=document.getElementById(fanZipId);if(localAddressElt&&fanZipElt){if(fanZipElt.value!='00000'){localAddressElt.value=fanZipElt.value;}}
if(doSearch==true){getFFEvents(document.forms['zipForm'].zipcode.value);}}
else{var layerText="We're sorry. Your brower does not support the Google Map toolset. "
+" Please use FireFox 2.x or Internet Explorer 7.x.";alertLayer.populateLayer('unsupportedBrowserId',layerText,'',500,300);loadMainPage();}}
function createMap(){var mapDiv=document.getElementById("mapDiv");if(!mapDiv){alert("Map div is not defined");return;}
myFFMap=new FFMap(new google.maps.Map2(mapDiv));if(!myFFMap.gMap){alert("ffMap.gMap is not defined");}
markerManager=new MarkerManager(myFFMap.gMap,markerMgrOptions);}
function doLocalSearch(inputId,addressId,resultsHeaderId,searchTextId,showNoEventsMessage){var searchInput=document.getElementById(inputId).value;if(!searchInput){alertLayer.populateLayer("fanFinderAlert","Please enter search parameters (e.g. Bars)","",500,300,true);return;}
var address=document.getElementById(addressId).value;if(!address){if(!address){alertLayer.populateLayer("fanFinderAlert","Please specify a search location. E.g.'Bloomfield, NJ' or '07003'","",500,300,true);return;}}
geoCoder.getLatLng(address,function(point){if(!point){alertLayer.populateLayer("fanFinderAlert","Could not execute search. Please check the address and try again.","",500,300,true);return;}
myFFMap.currentSearchCenter=point;myFFMap.localSearch.setCenterPoint(point);myFFMap.localSearch.execute(searchInput);searchTextElt=document.getElementById(searchTextId);searchTextElt.innerHTML=searchInput;resultsHeaderElt=document.getElementById(resultsHeaderId);resultsHeaderElt.style.display="block";if(showNoEventsMessage){var searchTextElt=document.getElementById("localSearchText");if(searchTextElt!=null){searchTextElt.innerHTML=searchTextElt.innerHTML+"&nbsp;&nbsp;<i>Select where you would like to watch this game from the list below, or use the Search box above to find a different place.</i>"}}});}
function searchCompleteHandler(){if(!myFFMap.localSearch.results){alertLayer.populateLayer("fanFinderAlert","Search failed.","",500,300,true);return;}
ffSearcher.showResults(myFFMap.localSearch.results,myFFMap);}
function handleGetLatLng(point){myFFMap.centerOnPoint(point);}
function loadMainPage(){window.location=HOME_URL;}
function centerOnZip(zipcode,participantTopic,millidate,lat,lng){if(lat!=null&&lng!=null){var point=new GLatLng(parseFloat(lat),parseFloat(lng));centerOnZipHandler(point,zipcode,participantTopic,millidate);}else{geoCoder.getLatLng(zipcode,function(point){centerOnZipHandler(point,zipcode,participantTopic,millidate);});}}
function centerOnZipHandler(point,zipcode,participantTopic,millidate){if(!point){alertLayer.populateLayer("fanFinderAlert","Invalid address: "+zipcode,null,500,300,true);return;}
for(var i=0;i<markers.length;i++){myFFMap.gMap.removeOverlay(markers[i]);}
markers=[];if(participantTopic&&millidate){var ajaxRequestStr="/web/ajax?view=fanFinderAjaxController&actionCmd=reloadResultsTable&topicId="+participantTopic.id+"&fullEventDate="+millidate+"&referringLat="+point.lat()+"&referringLng="+point.lng();ajaxHandler.doAjaxCall(ajaxRequestStr,"mapDataAndResults",'overwrite',addMarkersCallBack);}}
function addMarkersCallBack(){ajaxHandler.updateLayer();if(ajaxHandler.webReq.readyState==4&&ajaxHandler.webReq.status==200){if(document.getElementById('ffResultsTable')){document.getElementById('ffResultsTable').style.display="block";}
loadingLayer.hideLoading();var resultCount;if(document.getElementById("resultCount")){resultCount=document.getElementById("resultCount").innerHTML;}
var maxLat=-90;var maxLng=-180;var minLat=90;var minLng=180;for(var i=1;i<=resultCount;i++){var ffMarker=new FFMarker();ffMarker.id=i;ffMarker.infoWindow=document.getElementById("marker_"+i);ffMarker.lat=document.getElementById("lat_"+i).innerHTML;ffMarker.lng=document.getElementById("lng_"+i).innerHTML;ffMarker.setGMarker();var gLat=parseFloat(ffMarker.lat);var gLng=parseFloat(ffMarker.lng);if(gLat>maxLat){maxLat=gLat;}
if(gLat<minLat){minLat=gLat;}
if(gLng>maxLng){maxLng=gLng;}
if(gLng<minLng){minLng=gLng;}
myFFMap.gMap.addOverlay(ffMarker.gMarker);ffMarker.bindClick();}
var bounds=new GLatLngBounds(new GLatLng(parseFloat(minLat),parseFloat(minLng)),new GLatLng(parseFloat(maxLat),parseFloat(maxLng)));var centerPoint=bounds.getCenter();if(resultCount==1){var lat=parseFloat(document.getElementById("lat_1").innerHTML);var lng=parseFloat(document.getElementById("lng_1").innerHTML);centerPoint=new GLatLng(lat,lng);}
else if(resultCount==0){var searchTextElt=document.getElementById('localSearchText');if(searchTextElt!=null){if(searchTextElt.value!=null&&searchTextElt.value!=''){searchTextElt.value="Sports Pub";}}
doLocalSearch('localSearchInput','zipcode','localResultsHeader','localSearchText',true);return;}
myFFMap.centerOnPoint(centerPoint,myFFMap.gMap.getBoundsZoomLevel(bounds));}}
function getFFEvents(zipcode,lat,lng){var topicId=document.getElementById("team").value;if(!topicId){alertLayer.populateLayer('fanfinderAlertDiv','Please choose a valid team or league (hint: use auto-complete)',null,500,300,true);return;}
var participantTopic={id:topicId};var millidate=document.getElementById("fullEventDate").value;centerOnZip(zipcode,participantTopic,millidate,lat,lng);}