var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();
var _bVe=navigator.vendor;

var is_minor = parseFloat(appVer);
var is_major = parseInt(is_minor);

var is_mac = (_UA("mac"));

var iePos  = appVer.indexOf('msie');
if (iePos !=-1) {
	if (is_mac) {
		var iePos = agt.indexOf('msie');
		is_minor = parseFloat(agt.substring(iePos+5,agt.indexOf(';',iePos)));
	} else is_minor	= parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
	is_major = parseInt(is_minor);
}


var is_getElementById   = (document.getElementById) ? "true" : "false";
var is_getElementsByTagName = (document.getElementsByTagName) ? "true" : "false";
var is_documentElement = (document.documentElement) ? "true" : "false";

var is_safari = _UA('safari') && _UA('mac');

var is_gecko = navigator.product && navigator.product.toLowerCase()=="gecko";
var is_gver  = 0;
if (is_gecko) is_gver=navigator.productSub;

var is_fx = _UA('firefox') ;

var is_moz = ( ( _UA('mozilla/5')  &&
				!_UA('compatible') && !_UA('opera')  && !_UA('webtv') && _UA('hotjava')  &&
				is_gecko && 
				((_bVe=="")||(_bVe=="Mozilla")||(_bVe=="Debian"))) ) || ( is_fx );




if (is_moz||is_fx) { 
	var is_moz_ver = (navigator.vendorSub)?navigator.vendorSub:0;
	if (!(is_moz_ver)) {
		is_moz_ver = agt.indexOf('rv:');
		is_moz_ver = agt.substring(is_moz_ver+3);
		is_paren   = is_moz_ver.indexOf(')');
		is_moz_ver = is_moz_ver.substring(0,is_paren);
	}
	is_minor = is_moz_ver;
	is_major = parseInt(is_moz_ver);
}


var is_nav  = ( _UA('mozilla') &&
				!_UA('compatible') && !_UA('opera')  && !_UA('webtv') && _UA('hotjava')  &&
			   (!(is_moz)) && (!is_fx));

if ( _bVe && (( _bVe=="Netscape6")||( _bVe=="Netscape"))&& (is_nav) ) {
	is_major = parseInt(navigator.vendorSub);
	is_minor = parseFloat(navigator.vendorSub);
}

var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && is_minor >= 4);


var is_nav6   = (is_nav && is_major ==6);
var is_nav6up = (is_nav && is_minor >= 6)

var is_nav5   = (is_nav && is_major == 5 && !is_nav6);
var is_nav5up = (is_nav && is_minor >= 5);

var is_nav7   = (is_nav && is_major == 7);
var is_nav7up = (is_nav && is_minor >= 7);

var is_ie   = ((iePos!=-1) );

var is_ie5   = (is_ie && is_major == 5);
var is_ie5up = (is_ie && is_minor >= 5);

var is_ie5_5  = (is_ie && _UA("msie 5.5") );
var is_ie5_5up =(is_ie && is_minor >= 5.5);

var is_ie6   = (is_ie && is_major == 6);
var is_ie6up = (is_ie && is_minor >= 6);


if (is_nav6up) {
	is_minor = navigator.vendorSub;
}

var is_win   = _UA("win");

var is_winxp = ( _UA("windows nt 5.1") || _UA("windows xp") );

var is_win32 = ( ((is_major >= 4) && (navigator.platform == "Win32")) ||
				 ( _UA("win32") || _UA("32bit") ) );

var is_win64 = _UA("wow64");


if (is_mac) {
	is_win = !is_mac;
}


var is_unix  = (
  _UA("inux") ||
 _UA("bsd") ||
 _UA("sunos") ||
 _UA("hp-ux") ||
 _UA("sco") ||
 _UA("x11")
		 );



//Windows Media Player

var is_WMP , is_WMP7up , WMPVer = null;
var objMediaPlayer;

if ( is_win ) {

	if ( is_ie ) {
		try {
			objMediaPlayer = new ActiveXObject("WMPlayer.OCX");
			is_WMP = true;
			is_WMP7up = true;
		}
		catch(objError) {
			is_WMP7up = false;
		}
	}
	// new Ffx WMP plugin
	else if ( is_fx ) {
		is_WMP7up = false;

		for ( var i in  navigator.plugins ) {
			var n = navigator.plugins[i].name;
			if ( n != null && n.indexOf("Windows Media") >= 0 && n.indexOf("Microsoft") >= 0 ) {
				is_WMP = true;
				is_WMP7up = true;
				objMediaPlayer= navigator.plugins[i];
			}
		}
	}

}



if (is_WMP7up) {
	WMPVer = objMediaPlayer.versionInfo;
	objMediaPlayer = null;
};

var is_WMPMinor = parseFloat(WMPVer);
var is_WMPMajor = parseInt(is_WMPMinor);

var is_WMP7 = (is_WMPMinor == 7.0);

var is_WMP8 = (is_WMPMajor == 8);
var is_WMP9 = (is_WMPMajor == 9);

var is_WMP8up = (is_WMPMinor >= 8);
var is_WMP9up = (is_WMPMinor >= 9); // min req for VP


var sw=screen.availWidth;
var sh=screen.availHeight;


// ---------- flash detection


/**
 * FlashObject v1.2.3: Flash detection and embed - http://blog.deconcept.com/flashobject/
 */
if (typeof com == "undefined") var com = new Object();
if (typeof com.deconcept == "undefined") com.deconcept = new Object();
if (typeof com.deconcept.util == "undefined") com.deconcept.util = new Object();
if (typeof com.deconcept.FlashObjectUtil == "undefined") com.deconcept.FlashObjectUtil = new Object();


com.deconcept.FlashObjectUtil.getPlayerVersion = function(){
	var PlayerVersion = new com.deconcept.PlayerVersion(0,0,0);
	if (navigator.plugins && navigator.mimeTypes.length) {
		var x = navigator.plugins["Shockwave Flash"];
		if (x && x.description) {
			PlayerVersion = new com.deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
		}
	} else if (window.ActiveXObject) {
		try {
			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			PlayerVersion = new com.deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
		} catch (e) {}
	}
	return PlayerVersion;
}
com.deconcept.PlayerVersion = function(arrVersion){
	this.major = parseInt(arrVersion[0]) || 0;
	this.minor = parseInt(arrVersion[1]) || 0;
	this.rev = parseInt(arrVersion[2]) || 0;
}
com.deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
	if (this.major < fv.major) return false;
	if (this.major > fv.major) return true;
	if (this.minor < fv.minor) return false;
	if (this.minor > fv.minor) return true;
	if (this.rev < fv.rev) return false;
	return true;
}

if (Array.prototype.push == null) { //legacy support
	Array.prototype.push = function(item) { this[this.length] = item; return this.length;}
}


// aliases
var FlashObject = com.deconcept.FlashObject;


// Flash inspection results
var is_Flash        = false;
var is_FlashVersion = 0;


var version = com.deconcept.FlashObjectUtil.getPlayerVersion();
if ( document.getElementById && version['major'] > 0 ) {
	is_Flash = true;
	is_FlashVersion = parseFloat ( version['major'] +"."+ version['minor'] );
}



// generic detection
// Helix DNA Plugin: RealPlayer	G2
var is_RM; // declaration
function sniffRealMozilla() {


try {
numPlugins = navigator.plugins.length;
for (i = 0; i < numPlugins; i++)
{
  plugin = navigator.plugins[i];

  if (plugin.name.indexOf("RealPlayer") >= 0 )
    {
     is_RM = true;
	   }
	   }

} catch ( e) {}

return is_RM;
}


function sniffRealExplorer() {
var result = false;

var v = [ "rmocx.RealPlayer G2 Control","RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)","RealVideo.RealVideo(tm) ActiveX Control (32-bit)" ];

for ( var i in v ) {
var n = v[i];
	try {
	var o = new ActiveXObject( n ); if ( o!= null ) { result = true; break; }
	}
	catch(e) { }
}


return result;
}


function sniffRealPlugin() {
var result;

	if ( is_moz || ! is_win) { result = sniffRealMozilla(); }
	else if ( is_ie ) {  result = sniffRealExplorer(); }

return result;
}



// Quicktime


var is_QT; // declaration
function sniffQuicktimeMozilla() {


try {
numPlugins = navigator.plugins.length;
for (i = 0; i < numPlugins; i++)
{
  plugin = navigator.plugins[i];

  if (plugin.name.indexOf("QuickTime") >= 0 )
    {
     is_QT = true;
	 }
	}

} catch ( e) {}

return is_QT;
}


function sniffQuicktimeExplorer() {
var result = false;
var v = [ "QuickTimeCheckObject.QuickTimeCheck.1" ];

for ( var i in v ) {
var n = v[i];
	try {
	var o = new ActiveXObject( n ); if ( o!= null && o.IsQuickTimeAvailable(0) ) { result = true; break; }
	}
	catch(e) { }
}

return result;
}


function sniffQuicktimePlugin() {
var result;
	if ( is_moz || ! is_win) { result = sniffQuicktimeMozilla(); }
	else if ( is_ie ) {  result = sniffQuicktimeExplorer(); }

return result;
}



// browser test
function _UA( browser ) { return agt.indexOf( browser ) != -1; }

