function Gmap(d,c,b){var a=false;this.howto=(a)?new Man():{man:function(f){return alert("error in fn: "+f)}};if(arguments.length===0){return this.howto.man("Gmap")}this.conf={ico:"/img/marker.png",canvas:(arguments[1]!==undefined&&arguments[1]!==null)?c:"mapcanvas"};if(document.getElementById(this.conf.canvas)===null||document.getElementById(this.conf.canvas)===undefined){return alert('element with id "'+this.conf.canvas+"\" doesn't exits in document!\ncreate it first please.")}this.map=null;this.markers=[];this.options={panControl:false,panControlOptions:{position:google.maps.ControlPosition.RIGHT_CENTER},overviewMapControl:false,zoom:15,navigationControl:true,mapTypeControl:false,scrollwheel:false,streetViewControl:true,backgroundColor:"#ffffff",mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DROPDOWN_MENU,position:google.maps.ControlPosition.TOP_RIGHT},navigationControlOptions:{style:google.maps.NavigationControlStyle.DEFAULTS,position:google.maps.ControlPosition.RIGHT_CENTER},mapTypeId:google.maps.MapTypeId.ROADMAP};this.init=function(k,i){var h=this.parse_config(k),j=this.create_map(h,this.options,i),l=[];this.map=j;this.conf=h;if(h.hasOwnProperty("markers")){for(var g=0;g<h.markers.length;g++){l.push(this.add_marker(h.markers[g]))}}this.markers=l;var f=[j.map,l];return f};this.parse_config=function(j){var g={},i=[],h;if(j.hasOwnProperty("markers")){for(var f=0;f<j.markers.length;f++){if(j.markers.hasOwnProperty(f)){i.push(j.markers[f])}}g.markers=i}if(j.hasOwnProperty("lat")&&j.hasOwnProperty("lng")){g.latlng={lat:j.lat,lng:j.lng};if(!i.length){}}else{if(i.length){g.latlng={lat:i[0].lat,lng:i[0].lng}}else{return false}}g.ico=j.hasOwnProperty("ico")?j.ico:null;return g};this.extend=function(f){for(var g in f){this.options[g]=f[g]}};var e=function(f,h){var g={map:f.m,position:f.mark,animation:google.maps.Animation.DROP,optimized:true,draggable:false};if(h!==null){g.icon=h}var j=new google.maps.Marker(g);return j};this.add_marker=function(j,l){if(arguments.length===0){return this.howto.man("addMarker")}var g=null,f=null,m={m:this.map};if(j.hasOwnProperty("lat")){f=new google.maps.LatLng(j.lat,j.lng)}else{if(j.hasOwnProperty("Ha")){f=j}}m.mark=f;if(arguments.length===2){this.conf.ico=l}if(this.conf.ico!==null){var k=this.conf.ico,n=["size","origin","anchor"],o=(k.hasOwnProperty("path"))?k.path:k;if(typeof o!=="string"){return"Invalid icon path!"}g=new google.maps.MarkerImage(o);if(typeof k!=="string"){for(var h=0;h<n.length;h++){if(!k.hasOwnProperty(n[h])){return"Invalid icon properties!"}else{if(k[n[h]].length!==2){return"Invalid icon properties!"}}}g.size=new google.maps.Size(k.size[0],k.size[1]);g.origin=new google.maps.Point(k.origin[0],k.origin[1]);g.anchor=new google.maps.Point(k.anchor[0],k.anchor[1])}}return e(m,g)};this.create_map=function(h,f,g){var i=null,k={draggable:true},j=new google.maps.LatLng(h.latlng.lat,h.latlng.lng);f.center=j;i=new google.maps.Map(document.getElementById(g),f);return i};this.geocode=function(g,h){if(arguments.length===0){return this.howto.man("geocode")}var l=new google.maps.Geocoder(),k={},j=this,f,i=new google.maps.InfoWindow();k[h]=g;var m=function(o,n){if(n==google.maps.GeocoderStatus.OK){f=o[0].geometry.location;var p=j.add_marker(f);j.map.panTo(f);i.setContent(o[0].formatted_address+"<br />"+g);i.open(j.map,p);return f}else{f="Geocode was not successful for the following reason: "+n;alert(f);return f}};l.geocode(k,m)};this.zoom=function(f){if(arguments.length===0){return this.howto.man("zoom")}if(typeof f!=="number"){return"NaN"}this.map.setZoom(parseInt(f,10));return"zoom level is "+parseInt(f,10)};this.map_type=function(f){if(arguments.length===0){return this.howto.man("mapType")}if(google.maps.MapTypeId.hasOwnProperty(f)){this.map.setMapTypeId(google.maps.MapTypeId[f]);return"current mapTypeID is "+google.maps.MapTypeId[f]}return false};if(arguments[2]!==undefined&&arguments[2]!==null){this.extend(b)}this.init(d,this.conf.canvas)};
