if(typeof(SJL)=='undefined'||(!SJL instanceof Object))SJL=new Object();if(typeof(SJL.SLGoogleMap)=='undefined'||(!SJL.SLGoogleMap instanceof Object)){SJL.SLGoogleMap=function(){function Map(init,options){if(init==null||typeof(init)!='object'||typeof(init.map_container)=='undefined'||typeof(init.map_lat)=='undefined'||typeof(init.map_lng)=='undefined'||typeof(init.map_zoom)=='undefined'||typeof(init.pin_lat)=='undefined'||typeof(init.pin_lng)=='undefined'){return false;}
var map_options={'ui_zoom':false,'ui_scale':false,'ui_overview':false,'ui_map_type':false,'map_drag':false,'map_click_zoom':false,'map_scroll_zoom':false,'pin_drag':false,'background':'#FFFFFF','map_types':''}
var valid_map_types={'hybrid':G_HYBRID_MAP,'normal':G_NORMAL_MAP,'physical':G_PHYSICAL_MAP,'satellite':G_SATELLITE_MAP};default_map_type=valid_map_types['normal'];for(o in options){if(map_options[o]!='undefined'){map_options[o]=options[o];}}
this.__map=new GMap2(document.getElementById(init.map_container),{backgroundColor:map_options['background']});this.__map.setCenter(new GLatLng(init.map_lat,init.map_lng),init.map_zoom);ui=this.__map.getDefaultUI();if(this.__map.getSize().height<=325){ui.controls.smallzoomcontrol3d=map_options.ui_zoom;ui.controls.largemapcontrol3d=false;}else{ui.controls.smallzoomcontrol3d=false;ui.controls.largemapcontrol3d=map_options.ui_zoom;}
map_options.map_drag?this.__map.enableDragging():this.__map.disableDragging();ui.zoom.doubleclick=map_options.map_click_zoom;ui.zoom.scrollwheel=map_options.map_scroll_zoom;ui.controls.scalecontrol=map_options.ui_scale;ui.controls.maptypecontrol=ui.controls.menumaptypecontrol=false;if(this.__map.getSize().width<=475){ui.controls.menumaptypecontrol=map_options.ui_map_type;}else{ui.controls.maptypecontrol=map_options.ui_map_type;}
if(map_options.map_types){map_types=map_options.map_types.split('|');ui.maptypes.normal=false;ui.maptypes.satellite=false;ui.maptypes.hybrid=false;ui.maptypes.physical=false;map_types_count=map_types.length;default_map_set=false;for(i=0;i<map_types_count;i++){map_types[i]=map_types[i].toLowerCase();if(valid_map_types[map_types[i]]){ui.maptypes[map_types[i]]=true;if(!default_map_set){default_map_type=valid_map_types[map_types[i]];default_map_set=true;}}}}
this.__map.setMapType(default_map_type);this.__map.setUI(ui);if(map_options.ui_overview){this.__map.addControl(new GOverviewMapControl());}
var t=this;this.__marker=new GMarker(new GLatLng(init.pin_lat,init.pin_lng),{clickable:map_options.pin_drag,draggable:map_options.pin_drag,autoPan:true});this.__map.addOverlay(this.__marker);if(map_options.pin_drag){this.__marker_listener=GEvent.addListener(this.__marker,'dragend',function(latlng){t.set_location(latlng);});}
if(typeof(init.map_field)=='string'&&init.map_field.length){this.__map_field=jQuery('#'+init.map_field);if(this.__map_field.length){this.__map_listener=GEvent.addListener(this.__map,'moveend',function(){var map_data=t.get_location();var pin_data=t.get_marker();var field_data=map_data.latlng.lat()+','+map_data.latlng.lng()+','+map_data.zoom+','+pin_data.lat()+','+pin_data.lng();t.__map_field.val(field_data);});}}
if(typeof(init.address_input)=='string'&&typeof(init.address_submit)=='string'&&init.address_input.length&&init.address_submit.length){this.__address_input=jQuery('#'+init.address_input);this.__address_submit=jQuery('#'+init.address_submit);if(this.__address_input.length&&this.__address_submit.length){this.__in_lookup=false;this.__address_input.unbind('focus').bind('focus',function(e){t.__in_lookup=true;}).unbind('blur').bind('blur',function(){t.__in_lookup=false;});this.__address_submit.unbind('click').bind('click',function(e){var address=jQuery.trim(t.__address_input.val());if(address!=='')t.pinpoint_address(address,function(){var map_data=t.get_location();var pin_data=t.get_marker();var field_data=map_data.latlng.lat()+','+map_data.latlng.lng()+','+map_data.zoom+','+pin_data.lat()+','+pin_data.lng();t.__map_field.val(field_data);});return false;}).parents('form').submit(function(e){if(t.__in_lookup){t.__address_submit.click();return false;}});}}
return this;}
Map.prototype.set_location=function(latlng,zoom){if(jQuery.isFunction(latlng.lat)==false){if((typeof(latlng.lat)=='undefined')||(typeof(latlng.lng)=='undefined')){return false;}else{latlng=new GLatLng(latlng.lat,latlng.lng);}}
if(this.__map){this.__map.setZoom(zoom);this.__map.panTo(latlng);}
return this.get_location();}
Map.prototype.get_location=function(){if(this.__map){loc=this.__map.getCenter();return{latlng:loc,zoom:this.__map.getZoom()};}else{return false;}}
Map.prototype.set_marker=function(latlng){if(jQuery.isFunction(latlng.lat)==false){if((typeof(latlng.lat)=='undefined')||(typeof(latlng.lng)=='undefined')){return false;}else{latlng=new GLatLng(latlng.lat,latlng.lng);}}
this.__marker.setLatLng(latlng);return this.get_marker();}
Map.prototype.get_marker=function(){if(this.__marker){loc=this.__marker.getLatLng();return loc;}else{return false;}}
Map.prototype.pinpoint_address=function(address,callback){var regexp,geo,map,local;if(jQuery.trim(address)=='')return;regexp=new RegExp("(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])[ ]*[0-9][ABD-HJLNP-UW-Z]{2})","i");t=this;if(address.match(regexp)){local=new GlocalSearch();local.setSearchCompleteCallback(null,function(){if(local.results[0]){t.set_location({lat:local.results[0].lat,lng:local.results[0].lng});t.set_marker({lat:local.results[0].lat,lng:local.results[0].lng});if(callback instanceof Function){callback();}}});local.execute(address+", UK");}else{geo=new GClientGeocoder();geo.getLatLng(address,function(latlng){if(latlng!==null){t.set_location(latlng);t.set_marker(latlng);if(callback instanceof Function){callback();}}});}}
return({Map:Map});}();}
jQuery(document).ready(function(){if(GBrowserIsCompatible()&&typeof(SJL.google_maps)!=='undefined'&&SJL.google_maps instanceof Array){for(var i in SJL.google_maps){map=new SJL.SLGoogleMap.Map(SJL.google_maps[i].init,SJL.google_maps[i].options);}}});jQuery(window).unload(function(){if(GBrowserIsCompatible()){GUnload();}});
