var Gears = (function(){
	var factory = null;
	if(factory === null){
		if(typeof GearsFactory != 'undefined'){
			factory = new GearsFactory;
		}else{
			try{
				factory = new ActiveXObject('Gears.Factory');
				if(factory.getBuildInfo().indexOf('ie_mobile') !=-1){
					factory.privateSetGloablObject(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 {factory:null};
	}

	var getPermission = function(siteName,imageUrl,extraMessage){
		if(!factory.hasPermission){
			factory.getPermission(siteName,imageUrl,extraMessage);
		}
		return !!factory.hasPerssion;
	};

	var geoLocation = function(){
		var geo = factory.create('beta.geolocation');
		return {
			getLocation : function(callback,errorCallback){
				callback = callback || function(data){alert('当前位置（纬度，经度）是: ' + data.latitude + ',' + data.longitude);};
				errorCallback = errorCallback || function(err){alert(err.message)};
				geo.getCurrentPosition(callback, errorCallback, {
					enableHighAccuracy: true,
                    gearsRequestAddress: true 
				});
			}
		};
	}();

	return {
		factory:factory,
		getPermission:getPermission,
		GeoLocation:geoLocation
	};
})();