if (typeof (PC) === "undefined") {
		PC = {};
}

PC.Detector = { 
	getAgent : function() {
		return navigator.userAgent.toLowerCase();
	},
	
	isMac : function(M) { 
		var U=M || this.getAgent();
		return !!U.match(/mac/i);
	},
	
	isWin : function(M) {
		var U=M || this.getAgent();
		return !!U.match(/win/i);
	},
	
	isWin2k : function(M) { 
		var U=M || this.getAgent();
		return this.isWin(U) && (U.match(/nt\s*5/i));
	},
	
	isWinVista : function(M) { 
		var U=M || this.getAgent();
		return this.isWin(U) && (U.match(/nt\s*6/i));
	},
	
	isWebKit : function(M) { 
		var U=M || this.getAgent();
		return !!U.match(/AppleWebKit/i);
	},
	
	isOpera : function(M) {
		var U=M || this.getAgent();
		return !!U.match(/opera/i);
	},
	
	isIE : function(M) {
		var U=M || this.getAgent();
		return !!U.match(/msie/i);
	},
	
	isIEStrict : function(M) {
		var U=M || this.getAgent();
		return U.match(/msie/i) && !this.isOpera(U);
	},
	
	isFirefox : function(M) {
		var U=M || this.getAgent();
		return !!U.match(/firefox/i);
	},
	
	isiPhone : function(M) {
		var U=M || this.getAgent();
		return this.isMobile(U);
	},
	
	isMobile : function(M) {
		var U=M || this.getAgent();
		return this.isWebKit(U) && U.match(/Mobile/i);
	},
	
	isiTunesOK : function(M) { 
		var U=M || this.getAgent();
		return this.isMac(U) || this.isWin2k(U);
	},
	
	isQTInstalled : function() {
		var U=false;
		if(navigator.plugins&&navigator.plugins.length) {
			for(var M=0; M<navigator.plugins.length; M++) {
				var g = navigator.plugins[M];
				if(g.name.indexOf("QuickTime")>-1) {
					U = true;
				}
			}
		} else {
			qtObj = false;
			execScript("on error resume next: qtObj = IsObject(CreateObject(\"QuickTimeCheckObject.QuickTimeCheck.1\"))","VBScript");
			U=qtObj;
		}
		return U;
	},
	
	getQTVersion : function() {
		var U = "0";
		if(navigator.plugins&&navigator.plugins.length) {
			for(var g=0; g<navigator.plugins.length; g++) {
				var S = navigator.plugins[g];
				var M = S.name.match(/quicktime\D*([\.\d]*)/i);
				if(M&&M[1]) {
					U=M[1];
				}
			}
		} else { 
			ieQTVersion = null;
			execScript("on error resume next: ieQTVersion = CreateObject(\"QuickTimeCheckObject.QuickTimeCheck.1\").QuickTimeVersion","VBScript");
			if(ieQTVersion) {
				U=(ieQTVersion>>24).toString(16);
			}
		}
		return U;
	},
	
	isQTCompatible : function(g,j) {
		function M(w,R) {
			var i = parseInt(w[0],10);
			if(isNaN(i)) {
				i = 0;
			}
			var V = parseInt(R[0],10);
			if(isNaN(V)) {
				V = 0;
			}
			if(i===V) {
				if(w.length>1) {
					return M(w.slice(1),R.slice(1));
				} else {
					return true;
				}
			} else {
				if(i<V) {
					return true;
				} else { 
					return false;
				}
			}
		}
		
		var S=g.split(/\./);
		var U=j?j.split(/\./):this.getQTVersion().split(/\./);
		return M(S,U);
	},
	
	isValidQTAvailable : function(U){
		return this.isQTInstalled()&&this.isQTCompatible(U);
	}
};
