
function prepareGeolocation(opt_force){if(opt_force||typeof navigator.geolocation=="undefined"||navigator.geolocation.shim)(function(){(function(){if(window.google&&google.gears){return;}
var factory=null;if(typeof GearsFactory!='undefined'){factory=new GearsFactory();}else{try{factory=new ActiveXObject('Gears.Factory');if(factory.getBuildInfo().indexOf('ie_mobile')!=-1){factory.privateSetGlobalObject(this);}}catch(e){if((typeof navigator.mimeTypes!='undefined')&&navigator.mimeTypes["application/x-googlegears"]){factory=document.createElement("object");factory.style.display="none";factory.width=0;factory.height=0;factory.type="application/x-googlegears";document.documentElement.appendChild(factory);}}}
if(!factory){return;}
if(!window.google){google={};}
if(!google.gears){google.gears={factory:factory};}})();var GearsGeoLocation=(function(){var geo=google.gears.factory.create('beta.geolocation');var wrapSuccess=function(callback,self){return function(position){callback(position);self.lastPosition=position;}}
return{shim:true,type:"Gears",lastPosition:null,getCurrentPosition:function(successCallback,errorCallback,options){var self=this;var sc=wrapSuccess(successCallback,self);geo.getCurrentPosition(sc,errorCallback,options);},watchPosition:function(successCallback,errorCallback,options){geo.watchPosition(successCallback,errorCallback,options);},clearWatch:function(watchId){geo.clearWatch(watchId);},getPermission:function(siteName,imageUrl,extraMessage){geo.getPermission(siteName,imageUrl,extraMessage);}};})();var AjaxGeoLocation=(function(){var loading=false;var loadGoogleLoader=function(){if(!hasGoogleLoader()&&!loading){loading=true;var s=document.createElement('script');s.src='http://www.google.com/jsapi?callback=_google_loader_apiLoaded';s.type="text/javascript";document.getElementsByTagName('body')[0].appendChild(s);}};var queue=[];var addLocationQueue=function(callback){queue.push(callback);}
var runLocationQueue=function(){if(hasGoogleLoader()){while(queue.length>0){var call=queue.pop();call();}}}
window['_google_loader_apiLoaded']=function(){runLocationQueue();}
var hasGoogleLoader=function(){return(window['google']&&google['loader']);}
var checkGoogleLoader=function(callback){if(hasGoogleLoader())return true;addLocationQueue(callback);loadGoogleLoader();return false;};loadGoogleLoader();return{shim:true,type:"ClientLocation",lastPosition:null,getCurrentPosition:function(successCallback,errorCallback,options){var self=this;if(!checkGoogleLoader(function(){self.getCurrentPosition(successCallback,errorCallback,options);}))return;if(google.loader.ClientLocation){var cl=google.loader.ClientLocation;var position={latitude:cl.latitude,longitude:cl.longitude,altitude:null,accuracy:43000,altitudeAccuracy:null,heading:null,velocity:null,timestamp:new Date(),address:{city:cl.address.city,country:cl.address.country,country_code:cl.address.country_code,region:cl.address.region}};successCallback(position);this.lastPosition=position;}else if(errorCallback==="function"){errorCallback({code:3,message:"Using the Google ClientLocation API and it is not able to calculate a location."});}},watchPosition:function(successCallback,errorCallback,options){this.getCurrentPosition(successCallback,errorCallback,options);var self=this;var watchId=setInterval(function(){self.getCurrentPosition(successCallback,errorCallback,options);},10000);return watchId;},clearWatch:function(watchId){clearInterval(watchId);},getPermission:function(siteName,imageUrl,extraMessage){return true;}};})();navigator.geolocation=(window.google&&google.gears&&google.gears.factory.create)?GearsGeoLocation:AjaxGeoLocation;})();}

