/**
 * This may be the place for very common behavior
 */

if (typeof(AC) == "undefined") { AC = {}; }

AC.Detector = {

 getAgent: function() {
 return navigator.userAgent.toLowerCase();
 },

 // detect platform
 isMac: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/mac/i);
 },

 isWin: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/win/i);
 },

 isWin2k: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return this.isWin(agent) && (agent.match(/nt\s*5/i));
 },

 isWinVista: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return this.isWin(agent) && (agent.match(/nt\s*6/i));
 },

 // detect browser
 isWebKit: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/AppleWebKit/i);
 },

 isOpera: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/opera/i);
 },

 isIE: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/msie/i);
 },

 isIEStrict: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/msie/i) && !this.isOpera(agent);
 },

 isFirefox: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/firefox/i);
 },

 isiPhone: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return agent.match(/iPhone/i);
 },

 // itunes compabibility
 isiTunesOK: function(userAgent) {
 var agent = userAgent || this.getAgent();
 return this.isMac(agent) || this.isWin2k(agent);
 },

 isQTInstalled: function() {

 var qtInstalled = false;

 if(navigator.plugins && navigator.plugins.length) {

 for(var i=0; i < navigator.plugins.length; i++ ) {

 var plugin = navigator.plugins[i];

 if(plugin.name.indexOf("QuickTime") > -1) {
 qtInstalled = true;
 }
 }
 } else {
 qtObj = false; //global variable written to by vbscript for ie
 execScript('on error resume next: qtObj = IsObject(CreateObject("QuickTimeCheckObject.QuickTimeCheck.1"))','VBScript');
 qtInstalled = qtObj;
 }

 return qtInstalled;
 },

 getQTVersion: function() {

 var version = "0";

 if (navigator.plugins && navigator.plugins.length) {
 for (var i = 0; i < navigator.plugins.length; i++) {

 var plugin = navigator.plugins[i];

 //Match: QuickTime Plugin X.Y.Z
 var match = plugin.name.match(/quicktime\D*([\.\d]*)/i);
 if (match && match[1]) {
 version = match[1];
 }
 }
 } else {
 ieQTVersion = null; //global for vbscript to write to

 execScript('on error resume next: ieQTVersion = (Hex(CreateObject("QuickTimeCheckObject.QuickTimeCheck.1").QuickTimeVersion)/1000000)','VBScript');

 if (ieQTVersion) {
 //only grab the major version: 7.xyz => 7
 version = (ieQTVersion +"").split(/\./)[0];
 }
 }

 return version;
 },

 isQTCompatible: function(required, actual) {

 function areCompatible(required, actual) {

 var requiredValue = parseInt(required[0])
 if (isNaN(requiredValue)) {
 requiredValue = 0;
 }

 var actualValue = parseInt(actual[0])
 if (isNaN(actualValue)) {
 actualValue = 0;
 }

 if (requiredValue == actualValue) {
 if (required.length > 1) {
 return areCompatible(required.slice(1), actual.slice(1));
 } else {
 return true;
 }
 } else if (requiredValue < actualValue) {
 return true;
 } else {
 return false;
 }
 }

 var expectedVersion = required.split(/\./);
 var actualVersion = actual ? actual.split(/\./) : this.getQTVersion().split(/\./);

 return areCompatible(expectedVersion, actualVersion);

 },

 isValidQTAvailable: function(required) {
 return this.isQTInstalled() && this.isQTCompatible(required)
 }

};




































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































