(function(){var handlers={};var maps={};var ajaxoffset=0;Drupal.gmap={getMap:function(mapid){if(maps[mapid]){return maps[mapid];}
else{mapid=mapid.split('-').slice(1,-1).join('-');if(maps[mapid]){return maps[mapid];}}
return false;},unloadMap:function(mapid){delete maps[mapid];},addHandler:function(handler,callback){if(!handlers[handler]){handlers[handler]=[];}
handlers[handler].push(callback);},globalChange:function(name,userdata){for(var mapid in Drupal.settings.gmap){if(Drupal.settings.gmap.hasOwnProperty(mapid)){maps[mapid].change(name,-1,userdata);}}},setup:function(settings){var obj=this;var initcallback=function(mapid){return(function(){maps[mapid].change("bootstrap_options",-1);maps[mapid].change("boot",-1);maps[mapid].change("init",-1);maps[mapid].change("maptypechange",-1);maps[mapid].change("controltypechange",-1);maps[mapid].change("alignchange",-1);maps[mapid].ready=true;maps[mapid].change("ready",-1);});};if(settings||(Drupal.settings&&Drupal.settings.gmap)){var mapid=obj.id.split('-');if(Drupal.settings['gmap_remap_widgets']){if(Drupal.settings['gmap_remap_widgets'][obj.id]){jQuery.each(Drupal.settings['gmap_remap_widgets'][obj.id].classes,function(){jQuery(obj).addClass(this);});mapid=Drupal.settings['gmap_remap_widgets'][obj.id].id.split('-');}}
var instanceid=mapid.pop();mapid.shift();mapid=mapid.join('-');var control=instanceid.replace(/\d+$/,'');if(!maps[mapid]){if(settings){maps[mapid]=new Drupal.gmap.map(settings);}
else{maps[mapid]=new Drupal.gmap.map(Drupal.settings.gmap[mapid]);}
var callback=initcallback(mapid);setTimeout(callback,0);}
if(handlers[control]){for(var i=0;i<handlers[control].length;i++){handlers[control][i].call(maps[mapid],obj);}}
else{}}}};jQuery.fn.createGMap=function(settings,mapid){return this.each(function(){if(!mapid){mapid='auto'+ajaxoffset+'ajax';ajaxoffset++;}
settings.id=mapid;$(this).attr('id','gmap-'+mapid+'-gmap0').css('width',settings.width).css('height',settings.height).addClass('gmap-control').addClass('gmap-gmap').addClass('gmap').addClass('gmap-map').addClass('gmap-'+mapid+'-gmap').addClass('gmap-processed').each(function(){Drupal.gmap.setup.call(this,settings)});});};})();Drupal.gmap.factory={};Drupal.gmap.map=function(v){this.vars=v;this.map=undefined;this.ready=false;var _bindings={};this.bind=function(name,callback){if(!_bindings[name]){_bindings[name]=[];}
return _bindings[name].push(callback)-1;};this.change=function(name,id,userdata){var c;if(_bindings[name]){for(c=0;c<_bindings[name].length;c++){if(c!==id){_bindings[name][c](userdata);}}}
if(name!=='all'){this.change('all',-1,name,userdata);}};this.deferChange=function(name,id,userdata){var obj=this;setTimeout(function(){obj.change(name,id,userdata);},0);};};Drupal.gmap.addHandler('gmap',function(elem){var obj=this;var _ib={};_ib.zoom=obj.bind("zoom",function(){obj.map.setZoom(obj.vars.zoom);});_ib.move=obj.bind("move",function(){obj.map.panTo(new GLatLng(obj.vars.latitude,obj.vars.longitude));});_ib.mtc=obj.bind("maptypechange",function(){var i;for(i=0;i<obj.opts.mapTypeNames.length;i++){if(obj.opts.mapTypeNames[i]===obj.vars.maptype){obj.map.setMapType(obj.opts.mapTypes[i]);break;}}});_ib.width=obj.bind("widthchange",function(w){obj.map.getContainer().style.width=w;obj.map.checkResize();});_ib.height=obj.bind("heightchange",function(h){obj.map.getContainer().style.height=h;obj.map.checkResize();});_ib.ctc=obj.bind("controltypechange",function(){if(obj.currentcontrol){obj.map.removeControl(obj.currentcontrol);}
if(obj.vars.controltype==='Micro'){obj.map.addControl(obj.currentcontrol=new GSmallZoomControl());}
else if(obj.vars.controltype==='Small'){obj.map.addControl(obj.currentcontrol=new GSmallMapControl());}
else if(obj.vars.controltype==='Large'){obj.map.addControl(obj.currentcontrol=new GLargeMapControl());}});obj.bind("bootstrap_options",function(){var opts={};obj.opts=opts;opts.mapTypes=[];opts.mapTypeNames=[];if(obj.vars.baselayers.Map){opts.mapTypes.push(G_NORMAL_MAP);opts.mapTypeNames.push('Map');}
if(obj.vars.baselayers.Satellite){opts.mapTypes.push(G_SATELLITE_MAP);opts.mapTypeNames.push('Satellite');}
if(obj.vars.baselayers.Hybrid){opts.mapTypes.push(G_HYBRID_MAP);opts.mapTypeNames.push('Hybrid');}
if(obj.vars.baselayers.Physical){opts.mapTypes.push(G_PHYSICAL_MAP);opts.mapTypeNames.push('Physical');}});obj.bind("boot",function(){obj.map=new GMap2(elem,obj.opts);});obj.bind("init",function(){var map=obj.map;if(obj.vars.mtc==='standard'){map.addControl(new GMapTypeControl());}
else if(obj.vars.mtc==='hier'){map.addControl(new GHierarchicalMapTypeControl());}
else if(obj.vars.mtc==='menu'){map.addControl(new GMenuMapTypeControl());}
if(obj.vars.behavior.overview){map.addControl(new GOverviewMapControl());}
if(obj.vars.behavior.googlebar){map.enableGoogleBar();}
if(obj.vars.behavior.scale){map.addControl(new GScaleControl());}
if(obj.vars.behavior.nodrag){map.disableDragging();}
else if(!obj.vars.behavior.nokeyboard){obj._kbdhandler=new GKeyboardHandler(map);}
if(obj.vars.extent){var c=obj.vars.extent;var extent=new GLatLngBounds(new GLatLng(c[0][0],c[0][1]),new GLatLng(c[1][0],c[1][1]));obj.vars.latitude=extent.getCenter().lat();obj.vars.longitude=extent.getCenter().lng();obj.vars.zoom=map.getBoundsZoomLevel(extent);}
if(obj.vars.behavior.collapsehack){setTimeout(function(){var r=function(){map.checkResize();map.setCenter(new GLatLng(obj.vars.latitude,obj.vars.longitude),obj.vars.zoom);};$(elem).parents('fieldset.collapsible').children('legend').children('a').click(r);},0);}
map.setCenter(new GLatLng(obj.vars.latitude,obj.vars.longitude),obj.vars.zoom);if(!obj.vars.nocontzoom){map.enableDoubleClickZoom();map.enableContinuousZoom();}
if(!obj.vars.behavior.nomousezoom){map.enableScrollWheelZoom();}
GEvent.addListener(map,"zoomend",function(oldzoom,newzoom){obj.vars.zoom=newzoom;obj.change("zoom",_ib.zoom);});GEvent.addListener(map,"moveend",function(){var coord=map.getCenter();obj.vars.latitude=coord.lat();obj.vars.longitude=coord.lng();obj.change("move",_ib.move);});GEvent.addListener(map,"maptypechanged",function(){if(obj.ready){var type=map.getCurrentMapType();var i;for(i=0;i<obj.opts.mapTypes.length;i++){if(obj.opts.mapTypes[i]===type){obj.vars.maptype=obj.opts.mapTypeNames[i];}}
obj.change("maptypechange",_ib.mtc);}});});});Drupal.gmap.addHandler('zoom',function(elem){var obj=this;var binding=obj.bind("zoom",function(){elem.value=obj.vars.zoom;});$(elem).change(function(){obj.vars.zoom=parseInt(elem.value,10);obj.change("zoom",binding);});});Drupal.gmap.addHandler('latitude',function(elem){var obj=this;var binding=obj.bind("move",function(){elem.value=''+obj.vars.latitude;});$(elem).change(function(){obj.vars.latitude=Number(this.value);obj.change("move",binding);});});Drupal.gmap.addHandler('longitude',function(elem){var obj=this;var binding=obj.bind("move",function(){elem.value=''+obj.vars.longitude;});$(elem).change(function(){obj.vars.longitude=Number(this.value);obj.change("move",binding);});});Drupal.gmap.addHandler('latlon',function(elem){var obj=this;var binding=obj.bind("move",function(){elem.value=''+obj.vars.latitude+','+obj.vars.longitude;});$(elem).change(function(){var t=this.value.split(',');obj.vars.latitude=Number(t[0]);obj.vars.longitude=Number(t[1]);obj.change("move",binding);});});Drupal.gmap.addHandler('maptype',function(elem){var obj=this;var binding=obj.bind("maptypechange",function(){elem.value=obj.vars.maptype;});$(elem).change(function(){obj.vars.maptype=elem.value;obj.change("maptypechange",binding);});});(function(){var re=/([0-9.]+)\s*(em|ex|px|in|cm|mm|pt|pc|%)/;var normalize=function(str){var ar;if((ar=re.exec(str.toLowerCase()))){return ar[1]+ar[2];}
return null;};Drupal.gmap.addHandler('width',function(elem){var obj=this;var binding=obj.bind("widthchange",function(w){elem.value=normalize(w);});$(elem).change(function(){var n;if((n=normalize(elem.value))){elem.value=n;obj.change('widthchange',binding,n);}});obj.bind('init',function(){$(elem).change();});});Drupal.gmap.addHandler('height',function(elem){var obj=this;var binding=obj.bind("heightchange",function(h){elem.value=normalize(h);});$(elem).change(function(){var n;if((n=normalize(elem.value))){elem.value=n;obj.change('heightchange',binding,n);}});obj.bind('init',function(){$(elem).change();});});})();Drupal.gmap.addHandler('controltype',function(elem){var obj=this;var binding=obj.bind("controltypechange",function(){elem.value=obj.vars.controltype;});$(elem).change(function(){obj.vars.controltype=elem.value;obj.change("controltypechange",binding);});});if(Drupal.jsEnabled){$(document).unload(GUnload);}
Drupal.behaviors.GMap=function(context){if(Drupal.settings&&Drupal.settings['gmap_remap_widgets']){jQuery.each(Drupal.settings['gmap_remap_widgets'],function(key,val){$('#'+key).addClass('gmap-control');});}
$('.gmap-control:not(.gmap-processed)',context).addClass('gmap-processed').each(function(){Drupal.gmap.setup.call(this)});};
