
function LabeledMarker(latlng,options){this.latlng=latlng;this.labelText=options.labelText||"";this.labelClass=options.labelClass||"markerLabel";this.labelOffset=options.labelOffset||new GSize(0,0);this.clickable=options.clickable||true;if(options.draggable){}
GMarker.apply(this,arguments);}
LabeledMarker.prototype=new GMarker(new GLatLng(0,0));LabeledMarker.prototype.initialize=function(map){GMarker.prototype.initialize.apply(this,arguments);var div=document.createElement("div");div.className=this.labelClass;div.innerHTML=this.labelText;div.style.position="absolute";map.getPane(G_MAP_MARKER_PANE).appendChild(div);if(this.clickable){var eventPassthrus=['click','dblclick','mousedown','mouseup','mouseover','mouseout'];for(var i=0;i<eventPassthrus.length;i++){var name=eventPassthrus[i];GEvent.addDomListener(div,name,newEventPassthru(this,name));}
div.style.cursor="pointer";}
this.map=map;this.div=div;}
function newEventPassthru(obj,event){return function(){GEvent.trigger(obj,event);};}
LabeledMarker.prototype.redraw=function(force){GMarker.prototype.redraw.apply(this,arguments);if(!force)return;var p=this.map.fromLatLngToDivPixel(this.latlng);var z=GOverlay.getZIndex(this.latlng.lat());this.div.style.left=(p.x+this.labelOffset.width)+"px";this.div.style.top=(p.y+this.labelOffset.height)+"px";this.div.style.zIndex=z+1;}
LabeledMarker.prototype.remove=function(){GEvent.clearInstanceListeners(this.div);this.div.parentNode.removeChild(this.div);this.div=null;GMarker.prototype.remove.apply(this,arguments);}
var mapAddress=new Array();function addMarker(location){var latLong=new GLatLng(location.lat,location.long);this.map.setCenter(latLong,13);var gIcon=new GIcon(G_DEFAULT_ICON);gIcon.image="http://www.parkfast.com/images/googlemarker_"+location.color+".png";gIcon.shadow="http://www.parkfast.com/images/googlemarker_shadow.png";gIcon.iconSize=new GSize(24,23);gIcon.shadowSize=new GSize(36,17);gIcon.iconAnchor=new GPoint(12,11);var offset;if(location.locationNum.length==1)offset=-5;if(location.locationNum.length==2)offset=-7;if(location.locationNum.length==3)offset=-9;var markerOptions={draggable:location.draggable,icon:gIcon,labelText:location.locationNum,labelOffset:new GSize(offset,-5)};var marker=new LabeledMarker(latLong,markerOptions);this.map.addOverlay(marker);return marker;}
function addEventMarker(latLong){var gIcon=new GIcon(G_DEFAULT_ICON);gIcon.image="http://www.parkfast.com/images/googlemarker_arena.png";gIcon.shadow="http://www.parkfast.com/images/googlemarker_arenaShadow.png";gIcon.iconSize=new GSize(31,23);gIcon.shadowSize=new GSize(31,23);gIcon.iconAnchor=new GPoint(15,11);var markerOptions={draggable:false,icon:gIcon};var marker=new GMarker(latLong,markerOptions);this.map.addOverlay(marker);}
function MapLocation(location,address,city,state,zip,color,long,lat){this.streetAddr=address;this.city=city;this.state=state;this.zip=zip;this.color=color;this.locationNum=location;this.long=long;this.lat=lat;this.draggable=false;this.getAddressString=function(){return this.streetAddr+" "+this.city+", "+this.state+" "+this.zip;}
this.setDraggable=function(draggable){this.draggable=draggable;}}
function setMapCenter(lat,long,zoom){var latLong=new GLatLng(lat,long);this.map.setCenter(latLong,zoom);}
function getEventLatLng(num){this.num=num;var address=$("#address"+this.num).val();var city=$("#city"+this.num).val();var state=$("#state"+this.num).val();var zip=$("#zip"+this.num).val();var addressString=address+" "+city+", "+state+" "+zip;var geocoder=new GClientGeocoder();geocoder.getLatLng(addressString,function(point){if(!point){alert(addressString+" not found");}else{var lng=point.x;var lat=point.y;var lngForm=document.getElementById("lng"+num);var latForm=document.getElementById("lat"+num);lngForm.value=lng;latForm.value=lat;}})}
function getLotLatLng(){var address=document.getElementById("locationAddress").innerHTML;var city=document.getElementById("locationCity").innerHTML;var state=document.getElementById("locationState").innerHTML;var zip=document.getElementById("locationZip").innerHTML;var addressString=address+" "+city+", "+state+" "+zip;var geocoder=new GClientGeocoder();geocoder.getLatLng(addressString,function(point){if(!point){alert(addressString+" not found");}else{var lng=point.x;var lat=point.y;var lngForm=document.getElementById("googleLongitude");var latForm=document.getElementById("googleLatitude");var zoomForm=document.getElementById("googleZoom");var locationNum=document.getElementById("locationNum").innerHTML;lngForm.value=lng;latForm.value=lat;zoomForm.value=13;var latLong=new GLatLng(lat,lng);var location=new MapLocation(locationNum,"","","","","green",lng,lat);location.setDraggable(true);this.map.clearOverlays();var marker=addMarker(location);this.map.setCenter(latLong,Number(13));addDragListener(marker);}})}
function loadLocations(areaName){$.getJSON("/do/regionsAjax?areaName="+areaName,function(data){updateMaps(data);});}
function loadLocationsById(regionId,color){$.getJSON("/do/regionsAjax?regionId="+regionId+"&defaultColor="+color,function(data){updateMaps(data);});}
function updateMaps(regions){var locations=new Array();if($.isArray(regions)){for(var i=0;i<regions.length;i++){var region=regions[i];var locs=region.associatedLocations;for(var ii=0;ii<locs.length;ii++){var loc=locs[ii];var location=buildLocation(loc,region);locations.push(location);}}}else{var locs=regions.associatedLocations;for(var ii=0;ii<locs.length;ii++){var loc=locs[ii];var location=buildLocation(loc,regions);locations.push(location);}}
try{for(var i=0;i<locations.length;i++){addMarker(locations[i]);}}catch(e){}
setDefaultCenter();}
function buildLocation(loc,region){var location=new MapLocation(new String(loc.id),loc.address1,loc.city,loc.state,loc.zipCode,region.color,loc.longitude,loc.latitude);return location;}
function setDefaultCenter(){this.map.setCenter(this.defaultLatLong,this.defaultZoom);}
