
/**
 * jQuery gMap v3
 *
 * @url         http://www.smashinglabs.pl/gmap
 * @author      Sebastian Poreba <sebastian.poreba@gmail.com>
 * @version     3.2.0 RC
 * @date        28.06.2011
 */
(function(h){var f=google.maps,m=new f.Geocoder,b={},n=0,g={},g={init:function(a){var c;b=h.extend({},h.fn.gMap.defaults,a);for(c in h.fn.gMap.defaults.icon)b.icon[c]||(b.icon[c]=h.fn.gMap.defaults.icon[c]);return this.each(function(){var a=h(this),c=g._getMapCenter.apply(a,[]),e,j,k,l=39135.758482;if(b.zoom=="fit"){e=g._getBoundaries();j=(e.E-e.W)*111E3/a.width();k=(e.S-e.N)*111E3/a.height();for(e=2;e<20;e+=1){if(j>l||k>l)break;l/=2}b.zoom=e-2}j=new f.Map(this,{zoom:b.zoom,center:c,mapTypeControl:b.mapTypeControl, zoomControl:b.zoomControl,panControl:b.panControl,scaleControl:b.scaleControl,streetViewControl:b.streetViewControl,mapTypeId:b.maptype,scrollwheel:b.scrollwheel});b.log&&console.log("map center is:");b.log&&console.log(c);a.data("$gmap",j);a.data("gmap",{opts:b,gmap:j,markers:[],markerKeys:{},infoWindow:null});if(b.controls.length!==0)for(e=0;e<b.controls.length;e+=1)j.controls[b.controls[e].pos].push(b.controls[e].div);if(b.markers.length!==0)for(e=0;e<b.markers.length;e+=1)g.addMarker.apply(a, [b.markers[e]]);g._onComplete.apply(a,[])})},_onComplete:function(){var a=this.data("gmap"),b=this;if(n!==0)window.setTimeout(function(){g._onComplete.apply(b,[])},1E3);else a.opts.onComplete()},_setMapCenter:function(a){b.log&&console.log("delayed setMapCenter called");var c=this.data("gmap");if(c.gmap!==void 0)c.gmap.setCenter(a);else{var d=this;window.setTimeout(function(){g._setMapCenter.apply(d,[a])},500)}},_boundaries:null,_getBoundaries:function(){if(g._boundaries)return g._boundaries;var a= b.markers[0].latitude,c=b.markers[0].longitude,d=b.markers[0].longitude,f=b.markers[0].latitude,e;for(e=1;e<b.markers.length;e+=1){if(a>b.markers[e].latitude)a=b.markers[e].latitude;if(c<b.markers[e].longitude)c=b.markers[e].longitude;if(d>b.markers[e].longitude)d=b.markers[e].longitude;if(f<b.markers[e].latitude)f=b.markers[e].latitude}g._boundaries={N:a,E:c,W:d,S:f};return g._boundaries},_getMapCenter:function(){var a,c=this,d,i;if(b.markers.length&&(b.latitude=="fit"||b.longitude=="fit"))return a= g._getBoundaries(),a=new f.LatLng((a.N+a.S)/2,(a.E+a.W)/2);if(b.latitude&&b.longitude)return a=new f.LatLng(b.latitude,b.longitude);else a=new f.LatLng(0,0);if(b.address)return m.geocode({address:b.address},function(a,d){d===google.maps.GeocoderStatus.OK?g._setMapCenter.apply(c,[a[0].geometry.location]):b.log&&console.log("Geocode was not successful for the following reason: "+d)}),a;if(b.markers.length>0){i=null;for(d=0;d<b.markers.length;d+=1)if(b.markers[d].setCenter){i=b.markers[d];break}if(i=== null)for(d=0;d<b.markers.length;d+=1){if(b.markers[d].latitude&&b.markers[d].longitude){i=b.markers[d];break}b.markers[d].address&&(i=b.markers[d])}if(i===null)return a;if(i.latitude&&i.longitude)return new f.LatLng(i.latitude,i.longitude);i.address&&m.geocode({address:i.address},function(a,d){d===google.maps.GeocoderStatus.OK?g._setMapCenter.apply(c,[a[0].geometry.location]):b.log&&console.log("Geocode was not successful for the following reason: "+d)})}return a},processMarker:function(a,c,d,g){var e= this.data("gmap"),j=e.gmap,k;g===void 0&&(g=new f.LatLng(a.latitude,a.longitude));if(!c)var l={image:b.icon.image,iconSize:new f.Size(b.icon.iconsize[0],b.icon.iconsize[1]),iconAnchor:new f.Point(b.icon.iconanchor[0],b.icon.iconanchor[1]),infoWindowAnchor:new f.Size(b.icon.infowindowanchor[0],b.icon.infowindowanchor[1])},c=new f.MarkerImage(l.image,l.iconSize,null,l.iconAnchor);d||(new f.Size(b.icon.shadowsize[0],b.icon.shadowsize[1]),l&&l.iconAnchor||new f.Point(b.icon.iconanchor[0],b.icon.iconanchor[1])); k=new f.Marker({position:g,icon:c,title:a.title,map:j});k.setShadow(d);e.markers.push(k);a.key&&(e.markerKeys[a.key]=k);var h;a.html&&(c={content:b.html_prepend+a.html+b.html_append,pixelOffset:a.infoWindowAnchor},b.log&&console.log("setup popup with data"),b.log&&console.log(c),h=new f.InfoWindow(c),f.event.addListener(k,"click",function(){b.log&&console.log("opening popup "+a.html);b.singleInfoWindow&&e.infoWindow&&e.infoWindow.close();h.open(j,k);e.infoWindow=h}));a.html&&a.popup&&(b.log&&console.log("opening popup "+ a.html),h.open(j,k))},_geocodeMarker:function(a,c,d){n+=1;var i=this;m.geocode({address:a.address},function(e,h){n-=1;h===f.GeocoderStatus.OK?g.processMarker.apply(i,[a,c,d,e[0].geometry.location]):b.log&&console.log("Geocode was not successful for the following reason: "+h)})},addMarker:function(a){b.log&&console.log("putting marker at "+a.latitude+", "+a.longitude+" with address "+a.address+" and html "+a.html);var c={image:b.icon.image,iconSize:new f.Size(b.icon.iconsize[0],b.icon.iconsize[1]), iconAnchor:new f.Point(b.icon.iconanchor[0],b.icon.iconanchor[1]),infoWindowAnchor:new f.Size(b.icon.infowindowanchor[0],b.icon.infowindowanchor[1])},d={image:b.icon.shadow,iconSize:new f.Size(b.icon.shadowsize[0],b.icon.shadowsize[1]),anchor:c.iconAnchor};a.infoWindowAnchor=c.infoWindowAnchor;if(a.icon){if(a.icon.image)c.image=a.icon.image;if(a.icon.iconsize)c.iconSize=new f.Size(a.icon.iconsize[0],a.icon.iconsize[1]);if(a.icon.iconanchor)c.iconAnchor=new f.Point(a.icon.iconanchor[0],a.icon.iconanchor[1]); if(a.icon.infowindowanchor)c.infoWindowAnchor=new f.Size(a.icon.infowindowanchor[0],a.icon.infowindowanchor[1]);if(a.icon.shadow)d.image=a.icon.shadow;if(a.icon.shadowsize)d.iconSize=new f.Size(a.icon.shadowsize[0],a.icon.shadowsize[1])}c=new f.MarkerImage(c.image,c.iconSize,null,c.iconAnchor);d=new f.MarkerImage(d.image,d.iconSize,null,d.anchor);if(a.address){if(a.html==="_address")a.html=a.address;if(a.title=="_address")a.title=a.address;b.log&&console.log("geocoding marker: "+a.address);g._geocodeMarker.apply(this, [a,c,d])}else{if(a.html==="_latlng")a.html=a.latitude+", "+a.longitude;if(a.title=="_latlng")a.title=a.latitude+", "+a.longitude;var h=new f.LatLng(a.latitude,a.longitude);g.processMarker.apply(this,[a,c,d,h])}},removeAllMarkers:function(){var a=this.data("gmap").markers,b;for(b=0;b<a.length;b+=1)a[b].setMap(null)},getMarker:function(a){return this.data("gmap").markerKeys[a]}};h.fn.gMap=function(a){if(g[a])return g[a].apply(this,Array.prototype.slice.call(arguments,1));else if(typeof a==="object"|| !a)return g.init.apply(this,arguments);else h.error("Method "+a+" does not exist on jQuery.gmap")};h.fn.gMap.defaults={log:!1,address:"",latitude:null,longitude:null,zoom:3,markers:[],controls:{},scrollwheel:!0,maptype:google.maps.MapTypeId.ROADMAP,mapTypeControl:!0,zoomControl:!0,panControl:!1,scaleControl:!1,streetViewControl:!0,singleInfoWindow:!0,html_prepend:'<div class="gmap_marker">',html_append:"</div>",icon:{image:"http://www.google.com/mapfiles/marker.png",iconsize:[20,34],iconanchor:[9, 34],infowindowanchor:[9,2],shadow:"http://www.google.com/mapfiles/shadow50.png",shadowsize:[37,34]},onComplete:function(){}}})(jQuery);

$(window).ready(function () {
$('#map').gMap({ markers: [{address: "Calle San Vicente 22, 41002 Sevilla, España"}],zoom: 16});
});
