(function(a){a.fn.gMap=function(b,c){switch(b){case"addMarker":return a(this).trigger("gMap.addMarker",[c.latitude,c.longitude,c.content,c.icon,c.popup]);case"centerAt":return a(this).trigger("gMap.centerAt",[c.latitude,c.longitude,c.zoom])}opts=a.extend({},a.fn.gMap.defaults,b);return this.each(function(){var e=new google.maps.Map(this);$geocoder=new google.maps.Geocoder();if(opts.address){$geocoder.geocode({address:opts.address},function(j,i){if(j.length>0){e.setCenter(j[0].geometry.location)}})}else{if(opts.latitude&&opts.longitude){e.setCenter(new google.maps.LatLng(opts.latitude,opts.longitude))}else{if(a.isArray(opts.markers)&&opts.markers.length>0){if(opts.markers[0].address){$geocoder.geocode({address:opts.markers[0].address},function(j,i){if(j.length>0){e.setCenter(j[0].geometry.location)}})}else{e.setCenter(new google.maps.LatLng(opts.markers[0].latitude,opts.markers[0].longitude))}}else{e.setCenter(new google.maps.LatLng(34.885931,9.84375))}}}e.setZoom(opts.zoom);e.setMapTypeId(google.maps.MapTypeId[opts.maptype]);map_options={scrollwheel:opts.scrollwheel};if(opts.controls===false){a.extend(map_options,{disableDefaultUI:true})}else{if(opts.controls.length!=0){a.extend(map_options,opts.controls,{disableDefaultUI:true})}}e.setOptions(map_options);var g=new google.maps.Marker();marker_icon=new google.maps.MarkerImage(opts.icon.image);marker_icon.size=new google.maps.Size(opts.icon.iconsize[0],opts.icon.iconsize[1]);marker_icon.anchor=new google.maps.Point(opts.icon.iconanchor[0],opts.icon.iconanchor[1]);g.setIcon(marker_icon);if(opts.icon.shadow){marker_shadow=new google.maps.MarkerImage(opts.icon.shadow);marker_shadow.size=new google.maps.Size(opts.icon.shadowsize[0],opts.icon.shadowsize[1]);marker_shadow.anchor=new google.maps.Point(opts.icon.shadowanchor[0],opts.icon.shadowanchor[1]);g.setShadow(marker_shadow)}a(this).bind("gMap.centerAt",function(k,l,j,i){if(i){e.setZoom(i)}e.panTo(new google.maps.LatLng(parseFloat(l),parseFloat(j)))});var f;a(this).bind("gMap.addMarker",function(n,p,i,o,q,j){var k=new google.maps.LatLng(parseFloat(p),parseFloat(i));var m=new google.maps.Marker({position:k});if(q){marker_icon=new google.maps.MarkerImage(q.image);marker_icon.size=new google.maps.Size(q.iconsize[0],q.iconsize[1]);marker_icon.anchor=new google.maps.Point(q.iconanchor[0],q.iconanchor[1]);m.setIcon(marker_icon);if(q.shadow){marker_shadow=new google.maps.MarkerImage(q.shadow);marker_shadow.size=new google.maps.Size(q.shadowsize[0],q.shadowsize[1]);marker_shadow.anchor=new google.maps.Point(q.shadowanchor[0],q.shadowanchor[1]);g.setShadow(marker_shadow)}}else{m.setIcon(g.getIcon());m.setShadow(g.getShadow())}if(o){if(o=="_latlng"){o=p+", "+i}var l=new google.maps.InfoWindow({content:opts.html_prepend+o+opts.html_append});google.maps.event.addListener(m,"click",function(){f&&f.close();l.open(e,m);f=l});j&&l.open(e,m)}m.setMap(e)});for(var d=0;d<opts.markers.length;d++){marker=opts.markers[d];if(marker.address){if(marker.html=="_address"){marker.html=marker.address}var h=this;$geocoder.geocode({address:marker.address},(function(i,j){return function(l,k){if(l.length>0){a(j).trigger("gMap.addMarker",[l[0].geometry.location.lat(),l[0].geometry.location.lng(),i.html,i.icon])}}})(marker,h))}else{a(this).trigger("gMap.addMarker",[marker.latitude,marker.longitude,marker.html,marker.icon])}}})};a.fn.gMap.defaults={address:"",latitude:0,longitude:0,zoom:1,markers:[],controls:[],scrollwheel:false,maptype:"ROADMAP",html_prepend:'<div class="gmap_marker">',html_append:"</div>",icon:{image:"http://www.google.com/mapfiles/marker.png",shadow:"http://www.google.com/mapfiles/shadow50.png",iconsize:[20,34],shadowsize:[37,34],iconanchor:[9,34],shadowanchor:[6,34]}}})(jQuery);
