
(function(jQuery){jQuery.fn.gmap=function(options){var opts=jQuery.extend({},jQuery.fn.gmap.defaults,options);return this.each(function(){var $this=jQuery(this);var o=jQuery.meta?jQuery.extend({},opts,$this.data()):opts;opts['mapnode']=$this;var map=drawMap($this,o);$this.data("map",map);$this.bind("gmaprepaint",function(){refreshMap($this.data("map"));});if(isFacebox(opts)){jQuery(document).bind('reveal.facebox',function(){refreshMap(map);});}});};jQuery.fn.gmap.dragendCallback=function(marker){};function refreshMap(gmapObj){gmapObj.checkResize();}
function drawMap(node,opts){var mapnode=node[0];var gMap;if(GBrowserIsCompatible()){if(mapnode){var mapTypes=opts['mapTypes'];if(mapTypes.length==0){mapTypes=[G_NORMAL_MAP];}
gMap=new GMap2(mapnode,{size:new GSize(opts['width'],opts['height']),mapTypes:mapTypes});var center=getCenterLatLng(opts);gMap.setCenter(center,opts['zoom']);gMap.addControl(new GSmallMapControl());if(mapTypes.length>0){gMap.addControl(new GMapTypeControl());}
drawMarkers(gMap,opts);}}
return gMap;};function getCenterLatLng(opts){var center=opts['center'];var markers=opts['markers'];var defaultCenter=new GLatLng(center[0],center[1]);if(markers.length>0){var latSum=0;var latCount=0;var lngSum=0;var lngCount=0;for(var i=0;i<markers.length;i++){var markersItem=markers[i];var latlng=markersItem['latlng'];latSum+=latlng[0];latCount++;lngSum+=latlng[1];lngCount++;}
return new GLatLng((latSum/latCount),(lngSum/lngCount));}
return defaultCenter;}
function drawMarkers(gMap,opts){var markers=opts['markers'];var infoWindowContentContainer=[];for(var i=0;i<markers.length;i++){var markersItem=markers[i];var latlng=markersItem['latlng'];var caption=markersItem['caption'];var show=markersItem['show'];var draggable=markersItem['draggable'];var title=markersItem['title'];infoWindowContentContainer[i]=caption;var marker=new GMarker(new GLatLng(latlng[0],latlng[1]),{title:title,draggable:draggable});marker.value=i;GEvent.addListener(marker,"click",function(){openInfoWindow(gMap,this.getLatLng(),infoWindowContentContainer[this.value],opts);});GEvent.addListener(marker,"dragend",function(){var fn=opts['dragendCallback'];fn(this);});gMap.addOverlay(marker);if(show){openInfoWindow(gMap,marker.getLatLng(),infoWindowContentContainer[marker.value],opts);}
var bounds=gMap.getBounds();bounds.extend(marker.getLatLng());gMap.setCenter(bounds.getCenter(),gMap.getBoundsZoomLevel(bounds));}}
function openInfoWindow(gMap,latlng,caption,opts){gMap.openInfoWindowHtml(latlng,caption);if(isFacebox(opts)&&jQuery.browser.msie){opts['mapnode'].fadeOut(1);opts['mapnode'].fadeIn(1);}}
function isFacebox(opts){if(opts['facebox']){return true;}
return false;}
function log($obj){if(window.console&&window.console.log){window.console.log($obj);}};jQuery.fn.gmap.defaults={center:[41.8961258,12.5014627],zoom:16,width:500,height:360,mapTypes:[],markers:[],facebox:false,dragendCallback:jQuery.fn.gmap.dragendCallback};})(jQuery);
