/* Copyright (C) 2007 - 2011 YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */

(function(b){var d=function(){},h=!1,i=!1,f=[];b.extend(d.prototype,{name:"googlemaps",options:{lat:53.553407,lng:9.992196,marker:!0,popup:!1,text:"",zoom:13,mapCtrl:1,zoomWhl:!0,mapTypeId:"roadmap",typeCtrl:!0,directions:!0,directionsDestUpdate:!0,mainIcon:"red-dot",otherIcon:"blue-dot",iconUrl:"http://maps.google.com/mapfiles/ms/micons/"},initialize:function(a,e){this.options.msgFromAddress=b.trans.get("FROM_ADDRESS");this.options.msgGetDirections=b.trans.get("GET_DIRECTIONS");this.options.msgEmpty=
b.trans.get("FILL_IN_ADDRESS");this.options.msgNotFound=b.trans.get("ADDRESS_NOT_FOUND");this.options.msgAddressNotFound=b.trans.get("LOCATION_NOT_FOUND");this.options=b.extend({},this.options,e);this.container=a;i?this.setupMap():f.push(this)},setupMap:function(){var a=this.options;this.map=new google.maps.Map(this.container.get(0),{mapTypeId:a.mapTypeId,center:new google.maps.LatLng(a.lat,a.lng),streetViewControl:a.mapCtrl?!0:!1,navigationControl:a.mapCtrl,scrollwheel:a.zoomWhl?!0:!1,mapTypeControl:a.typeCtrl?
!0:!1,zoomControl:a.mapCtrl?!0:!1,zoomControlOptions:{style:a.mapCtrl==1?google.maps.ZoomControlStyle.DEFAULT:google.maps.ZoomControlStyle.SMALL}});this.infowindow=new google.maps.InfoWindow;a.marker&&(a.popup==0?(this.map.setCenter(new google.maps.LatLng(a.lat,a.lng)),this.map.setZoom(a.zoom)):this.addMarkerLatLng(a.lat,a.lng,a.text,!0));if(a.mapTypeId=="roadmap")this.map.mapTypeIds=["custom"],this.map.mapTypes.set("custom",new google.maps.StyledMapType([{featureType:"all",elementType:"all",stylers:[{invert_lightness:a.styler_invert_lightness},
{hue:a.styler_hue},{saturation:a.styler_saturation},{lightness:a.styler_lightness},{gamma:a.styler_gamma}]}],{name:"CustomStyle"})),this.map.setMapTypeId("custom");if(a.adresses)for(var e in a.adresses){var c=a.adresses[e];this.addMarkerLatLng(c.lat,c.lng,c.popup,c.center,c.icon)}a.directions&&this.setupDirections()},createMarker:function(a,e,c){var b=this,d=this.map,f=this.infowindow,h=new google.maps.MarkerImage(this.options.iconUrl+c+".png",new google.maps.Size(32,32),new google.maps.Point(0,0),
new google.maps.Point(16,32)),c=c.match("pushpin")?this.options.iconUrl+"pushpin_shadow.png":this.options.iconUrl+"msmarker.shadow.png",c=new google.maps.MarkerImage(c,new google.maps.Size(56,32),new google.maps.Point(0,0),new google.maps.Point(16,32)),g=new google.maps.Marker({position:a,icon:h,shadow:c,map:this.map});google.maps.event.addListener(g,"click",function(){e.length&&(f.setContent(e),f.open(d,g));if(b.options.directionsDestUpdate)b.options.lat=g.getPosition().lat(),b.options.lng=g.getPosition().lng()});
return g},centerMap:function(a,e){this.map.setCenter(new google.maps.LatLng(a,e));this.map.setZoom(this.options.zoom)},addMarkerLatLng:function(a,e,c,b,d){d=d||this.options.otherIcon;if(b)d=this.options.mainIcon;a=new google.maps.LatLng(a,e);d=this.createMarker(a,c,d);b&&(this.map.setCenter(a),this.map.setZoom(this.options.zoom));b&&c&&c.length&&this.options.popup==2&&(this.infowindow.setContent(c),this.infowindow.open(this.map,d))},setupDirections:function(){var a=this;this.directionsService=new google.maps.DirectionsService;
this.directionsDisplay=new google.maps.DirectionsRenderer;this.directionsDisplay.setMap(this.map);this.directionsDisplay.setPanel(b("<div>").addClass("directions").css("position","relative").insertAfter(this.container).get(0));var e=b("<p>").append('<label for="from-address">'+this.options.msgFromAddress+"</label>").append('<input type="text" name="address" style="margin:0 5px;" />').append('<button type="submit">'+this.options.msgGetDirections+"</button>");b('<form method="get" action="#">').append(e).insertAfter(this.container).bind("submit",
function(c){c.preventDefault();c.stopPropagation();a.setDirections(b(this))})},setDirections:function(a){var b=this;this.container.parent().find("div.alert").remove();a=a.find('input[name="address"]').val();a===""?this.showAlert(this.options.msgEmpty):this.directionsService.route({origin:a,destination:new google.maps.LatLng(this.options.lat,this.options.lng),travelMode:google.maps.DirectionsTravelMode.DRIVING},function(a,d){d==google.maps.DirectionsStatus.OK?b.directionsDisplay.setDirections(a):b.showAlert(b.options.msgNotFound)})},
showAlert:function(a){b("<div>").addClass("alert").append(b("<strong>").text(a)).insertAfter(this.container)},cmd:function(){var a=arguments,b=a[0]?a[0]:null;this.map[b]&&this.map[b].apply(this.map,Array.prototype.slice.call(a,1))}});b.fn[d.prototype.name]=function(){var a=arguments,e=a[0]?a[0]:null;return this.each(function(){if(!h){var c=document.createElement("script");c.type="text/javascript";c.async=1;c.src=location.protocol+"//maps.google.com/maps/api/js?sensor=false&callback=jQuery.fn.googlemaps.ready";
document.body.appendChild(c);h=!0}c=b(this);if(d.prototype[e]&&c.data(d.prototype.name)&&e!="initialize")c.data(d.prototype.name)[e].apply(c.data(d.prototype.name),Array.prototype.slice.call(a,1));else if(!e||b.isPlainObject(e)){var f=new d;d.prototype.initialize&&f.initialize.apply(f,b.merge([c],a));c.data(d.prototype.name,f)}else b.error("Method "+e+" does not exist on jQuery."+d.name)})};b.fn[d.prototype.name].ready=function(){for(var a in f)f[a].setupMap();i=!0}})(jQuery);

