/**
 * @author BBXP
 */
if (typeof(AC) === "undefined") {
	AC = {}
}
AC.Detector = {
	getAgent : function() {
		return navigator.userAgent.toLowerCase()
	},
	isMac : function(B) {
		var A = B || this.getAgent();
		return !!A.match(/mac/i)
	},
	isWin : function(B) {
		var A = B || this.getAgent();
		return !!A.match(/win/i)
	},
	isWin2k : function(B) {
		var A = B || this.getAgent();
		return this.isWin(A) && (A.match(/nt\s*5/i))
	},
	isWinVista : function(B) {
		var A = B || this.getAgent();
		return this.isWin(A) && (A.match(/nt\s*6/i))
	},
	isWebKit : function(B) {
		if (this._isWebKit === undefined) {
			var A = B || this.getAgent();
			this._isWebKit = !!A.match(/AppleWebKit/i);
			this.isWebKit = function() {
				return this._isWebKit
			}
		}
		return this._isWebKit
	},
	isSafari2 : function(C) {
		if (this._isSafari2 === undefined) {
			if (!this.isWebKit()) {
				this._isSafari2 = false
			} else {
				var B = navigator.userAgent.toLowerCase();
				var A = parseInt(parseFloat(B.substring(B
						.lastIndexOf("safari/")
						+ 7)));
				this._isSafari2 = (A >= 419)
			}
			this.isSafari2 = function() {
				return this._isSafari2
			}
		}
		return this._isSafari2
	},
	isOpera : function(B) {
		var A = B || this.getAgent();
		return !!A.match(/opera/i)
	},
	isIE : function(B) {
		var A = B || this.getAgent();
		return !!A.match(/msie/i)
	},
	isIEStrict : function(B) {
		var A = B || this.getAgent();
		return A.match(/msie/i) && !this.isOpera(A)
	},
	isFirefox : function(B) {
		var A = B || this.getAgent();
		return !!A.match(/firefox/i)
	},
	isiPhone : function(B) {
		var A = B || this.getAgent();
		return this.isMobile(A)
	},
	isMobile : function(B) {
		var A = B || this.getAgent();
		return this.isWebKit(A) && A.match(/Mobile/i)
	},
	isiTunesOK : function(B) {
		var A = B || this.getAgent();
		return this.isMac(A) || this.isWin2k(A)
	},
	isQTInstalled : function() {
		var A = false;
		if (navigator.plugins && navigator.plugins.length) {
			for (var B = 0; B < navigator.plugins.length; B++) {
				var C = navigator.plugins[B];
				if (C.name.indexOf("QuickTime") > -1) {
					A = true
				}
			}
		} else {
			if (typeof(execScript) != "undefined") {
				qtObj = false;
				execScript(
						'on error resume next: qtObj = IsObject(CreateObject("QuickTimeCheckObject.QuickTimeCheck.1"))',
						"VBScript");
				A = qtObj
			}
		}
		return A
	},
	getQTVersion : function() {
		var A = "0";
		if (navigator.plugins && navigator.plugins.length) {
			for (var C = 0; C < navigator.plugins.length; C++) {
				var D = navigator.plugins[C];
				var B = D.name.match(/quicktime\D*([\.\d]*)/i);
				if (B && B[1]) {
					A = B[1]
				}
			}
		} else {
			if (typeof(execScript) != "undefined") {
				ieQTVersion = null;
				execScript(
						'on error resume next: ieQTVersion = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1").QuickTimeVersion',
						"VBScript");
				if (ieQTVersion) {
					A = (ieQTVersion >> 24).toString(16)
				}
			}
		}
		return A
	},
	isQTCompatible : function(C, E) {
		function B(G, I) {
			var F = parseInt(G[0], 10);
			if (isNaN(F)) {
				F = 0
			}
			var H = parseInt(I[0], 10);
			if (isNaN(H)) {
				H = 0
			}
			if (F === H) {
				if (G.length > 1) {
					return B(G.slice(1), I.slice(1))
				} else {
					return true
				}
			} else {
				if (F < H) {
					return true
				} else {
					return false
				}
			}
		}
		var D = C.split(/\./);
		var A = E ? E.split(/\./) : this.getQTVersion().split(/\./);
		return B(D, A)
	},
	isValidQTAvailable : function(A) {
		return this.isQTInstalled() && this.isQTCompatible(A)
	}
};