//共用函数
isFun 	 = function(a){ return typeof a == "function"; };
isNull 	 = function(a){ return typeof a == "object" && !a; };
isNumber = function(a){ return typeof a == "number" && isFinite(a);};
isObject = function(a){ return (a && typeof a == "object") || isFun(a);};
isString = function(a){ return typeof a == "string";};
isArray  = function(a){ return isObject(a) && a.constructor == Array; };
isUndef  = function(a){ return typeof a == "undefined";};
DoNothing = function(){};

var Class = {
	create: function(){
		return function(){
			this.initialize.apply(this, arguments);
		}
	},	
	extend: function(destination, source){
		for (property in source) {
    		destination[property] = source[property];
  		}	
		return destination;
	}
};

var Delegate = {
	create: function (obj, func){
		var f = function()	{
			var target = arguments.callee.target;
			var func = arguments.callee.func;
			return func.apply(target, arguments);
		}
		f.target = obj;
		f.func = func;
		return f;
	}
};

//小白接口类
(function(){
	var XBCom = window.XBCom = Class.create();
	
	XBCom.prototype = {
		isIE: (navigator.userAgent.indexOf('MSIE')>0),
		debugMode: false,
		_error: null,
		
		//初始化
		initialize: function(debugMode){
			this.debugMode = debugMode;
			try{
				this._xiaobai = this.getInstance(debugMode);
			}catch(e){
				if(this.debugMode) throw(e);
			}
		},
		
		//安装
		getInstance:function(){
			if(this.isIE){
				if(isUndef(this._xiaobai)){
					try{
						return new ActiveXObject("XBCom.Fun");
					}catch(e){
						if(this.debugMode) throw(e);
					}
				}
			}else{
				if(isUndef(this._xiaobai)){
					try{
						netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");					
					}catch(e){
						this._xiaobai = '';
					}
					try{
						var prefs = Components.classes["@xiaobai.com/xiaobai;1"].createInstance();
						return prefs.QueryInterface(Components.interfaces.IThunderDownload);  					
					}catch(err){					
						if(this.debugMode) throw(err);
					}
				}
			}
		},
		
		//设置错误信息
		error: function(error){
			this._error = error;
		},
		
		//返回最后一个错误信息
		getError: function(){
			return this._error;
		},
		
		//获取当前小白版本号
		version: function(){
			if(!this._xiaobai){
				this.error('系统没有安装小白软件管家');
				return 'Unknown';
			}
			
			return this._xiaobai.Version();
		},
		
		//检测资源(GUID)是否已经安装
		checkResGuid: function(guid){
			if(!this._xiaobai){
				this.error('系统没有安装小白软件管家');
				return false;
			}
			
			if(!guid){
				this.error('GUID为空');
				return false;
			}
				
			return this._xiaobai.ResExists(guid);
		},
		
		//快速批量安装小白软件
		installRes: function(guid){
			if(!this._xiaobai){
				this.error('系统没有安装小白软件管家');
				return false;
			}
			
			return this._xiaobai.InstallRes(guid);
		},
		
		//安装应用
		parseUrl: function(str){
			if(!this._xiaobai){
				this.error('系统没有安装小白软件管家');
				return false;
			}
			
			if(!str) return false;
			if('undefined' != typeof this._xiaobai.ParseUrl) return this._xiaobai.ParseUrl(str);
			else return false;
		}
	};
})();
