

// Browser Detection
isMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
NS4 = (document.layers) ? true : false;
IEmac = ((document.all)&&(isMac)) ? true : false;
IE4plus = (document.all) ? true : false;
IE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;
IE5 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 5.")!=-1)) ? true : false;
ver4 = (NS4 || IE4plus) ? true : false;
NS6 = (!document.layers) && (navigator.userAgent.indexOf('Netscape')!=-1)?true:false;

// Body onload utility (supports multiple onload functions)
var gSafeOnload = new Array();
function SafeAddOnload(f)
{
	if (IEmac && IE4)  // IE 4.5 blows out on testing window.onload
	{
		window.onload = SafeOnload;
		gSafeOnload[gSafeOnload.length] = f;
	}
	else if  (window.onload)
	{
		if (window.onload != SafeOnload)
		{
			gSafeOnload[0] = window.onload;
			window.onload = SafeOnload;
		}
		gSafeOnload[gSafeOnload.length] = f;
	}
	else
		window.onload = f;
}
function SafeOnload()
{
	for (var i=0;i<gSafeOnload.length;i++)
		gSafeOnload[i]();
}

// Call the following with your function as the argument
//SafeAddOnload(positionElements);

var gSafeOnUnload = new Array();
function SafeAddOnUnload(f)
{
	if (IEmac && IE4)  // IE 4.5 blows out on testing window.onload
	{
		window.onunload = SafeOnUnload;
		gSafeOnUnload[gSafeOnUnload.length] = f;
	}
	else if  (window.onunload)
	{
		if (window.onunload != SafeOnUnload)
		{
			gSafeOnUnload[0] = window.onunload;
			window.onunload = SafeOnUnload;
		}
		gSafeOnUnload[gSafeOnUnload.length] = f;
	}
	else
		window.onunload = f;
}
function SafeOnUnload()
{
	for (var i=0;i<gSafeOnUnload.length;i++)
		gSafeOnUnload[i]();
}

   function TwoStateRollOver(label,inactive,active,status) {
      this._canRoll   = _canThisBrowserHandleImageRolls();
      this._imageId   = label;
      this._winStatus = status;
      this.isActive   = false;
      if( this._canRoll ) {
         this.activeImg         = new Image();
         this.activeImg.src     = active;
         this.inactiveImg       = new Image();
         this.inactiveImg.src   = inactive;
      }
      this.mouseOver = _rollActive;
      this.mouseOut  = _rollInactive;
   }
   function _rollActive(){
      if ( this._canRoll && !this.isSelected ){
         document.images[this._imageId].src = this.activeImg.src;
      }
      this.isActive = true
      window.status = this._winStatus;
   }
   function _rollInactive(){
      if ( this._canRoll ){
         if( !this.isSelected ) {document.images[this._imageId].src = this.inactiveImg.src;}
      }
      this.isActive = false
      window.status = '';
   }
   function _canThisBrowserHandleImageRolls() {
      if (navigator.appName == "Microsoft Internet Explorer") {
         if(parseInt(navigator.appVersion) >= 4) {
            return( 1 );
         } else {
            return( 0 );
         }
      } else if (navigator.appName == "Netscape") {
         if(parseInt(navigator.appVersion) >= 3) {
            return( 1 );
         } else {
            return( 0 );
         }
      }
   }

/*
//example instantiation
preshow_roll= new TwoStateRollOver( "preshow", <-- image name
                     "images/rollovers/preshow_off.gif", <-- state one
                     "images/rollovers/preshow_on.gif",  <-- state two
                     "Alt Tag");
*/


// Flash Player Version Detection - Rev 1.5
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
var bIsIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var bIsWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var bIsOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var strVersion;
	var objAxo;
	var objException;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		objAxo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		strVersion = objAxo.GetVariable("$version");
	} catch (objException) {
	}

	if (!strVersion)
	{
		try {
			// version will be set for 6.X players only
			objAxo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			strVersion = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			objAxo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			strVersion = objAxo.GetVariable("$version");

		} catch (objException) {
		}
	}

	if (!strVersion)
	{
		try {
			// version will be set for 4.X or 5.X player
			objAxo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			strVersion = objAxo.GetVariable("$version");
		} catch (objException) {
		}
	}

	if (!strVersion)
	{
		try {
			// version will be set for 3.X player
			objAxo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			strVersion = "WIN 3,0,18,0";
		} catch (objException) {
		}
	}

	if (!strVersion)
	{
		try {
			// version will be set for 2.X player
			objAxo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			strVersion = "WIN 2,0,0,11";
		} catch (objException) {
			strVersion = -1;
		}
	}
	
	return strVersion;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var strFlashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var strSwVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var strFlashDescription = navigator.plugins["Shockwave Flash" + strSwVer2].description;			
			var listDescArray = strFlashDescription.split(" ");
			var listTempArrayMajor = listDescArray[2].split(".");
			var strVersionMajor = listTempArrayMajor[0];
			var strVersionMinor = listTempArrayMajor[1];
			if ( listDescArray[3] != "" ) {
				listTempArrayMinor = listDescArray[3].split("r");
			} else {
				listTempArrayMinor = listDescArray[4].split("r");
			}
			var strVersionRevision = listTempArrayMinor[1] > 0 ? listTempArrayMinor[1] : 0;
			var strFlashVer = strVersionMajor + "." + strVersionMinor + "." + strVersionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) strFlashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) strFlashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) strFlashVer = 2;
	else if ( bIsIE && bIsWin && !bIsOpera ) {
		strFlashVer = ControlVersion();
	}	
	return strFlashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(strReqMajorVer, strReqMinorVer, strReqRevision)
{
	strVersionStr = GetSwfVer();
	if (strVersionStr == -1 ) {
		return false;
	} else if (strVersionStr != 0) {
		if(bIsIE && bIsWin && !bIsOpera) {
			// Given "WIN 2,0,0,11"
			listTempArray         = strVersionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			strTempString        = listTempArray[1];			// "2,0,0,11"
			listVersionArray      = strTempString.split(",");	// ['2', '0', '0', '11']
		} else {
			listVersionArray      = strVersionStr.split(".");
		}
		var strVersionMajor      = listVersionArray[0];
		var strVersionMinor      = listVersionArray[1];
		var strVersionRevision   = listVersionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (strVersionMajor > parseFloat(strReqMajorVer)) {
			return true;
		} else if (strVersionMajor == parseFloat(strReqMajorVer)) {
			if (strVersionMinor > parseFloat(strReqMinorVer))
				return true;
			else if (strVersionMinor == parseFloat(strReqMinorVer)) {
				if (strVersionRevision >= parseFloat(strReqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(objSrc, strExt)
{
  if (objSrc.indexOf('?') != -1)
    return objSrc.replace(/\?/, strExt+'?'); 
  else
    return objSrc + strExt;
}

function AC_Generateobj(objAttrs, strParams, objEmbedAttrs) 
{ 
    var strOutput = '';
    if (bIsIE && bIsWin && !bIsOpera)
    {
  		strOutput += '<object ';
  		for (var i in objAttrs)
  			strOutput += i + '="' + objAttrs[i] + '" ';
  		for (var i in strParams)
  			strOutput += '><param name="' + i + '" value="' + strParams[i] + '" /> ';
  		strOutput += '></object>';
    } else {
  		strOutput += '<embed ';
  		for (var i in objEmbedAttrs)
  			strOutput += i + '="' + objEmbedAttrs[i] + '" ';
  		strOutput += '> </embed>';
    }

    document.write(strOutput);
}

function AC_FL_RunContent(){
  var objRet = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(objRet.objAttrs, objRet.params, objRet.embedAttrs);
}

function AC_GetArgs(objArgs, strExt, srcParamName, strClassid, strMimeType){
  var objRet = new Object();
  objRet.embedAttrs = new Object();
  objRet.params = new Object();
  objRet.objAttrs = new Object();
  for (var i=0; i < objArgs.length; i=i+2){
    var currArg = objArgs[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        objRet.embedAttrs[objArgs[i]] = objArgs[i+1];
        break;
      case "src":
      case "movie":	
        objArgs[i+1] = AC_AddExtension(objArgs[i+1], strExt);
        objRet.embedAttrs["src"] = objArgs[i+1];
        objRet.params[srcParamName] = objArgs[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        objRet.objAttrs[objArgs[i]] = objArgs[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        objRet.embedAttrs[objArgs[i]] = objRet.objAttrs[objArgs[i]] = objArgs[i+1];
        break;
      default:
        objRet.embedAttrs[objArgs[i]] = objRet.params[objArgs[i]] = objArgs[i+1];
    }
  }
  objRet.objAttrs["classid"] = strClassid;
  if (strMimeType) objRet.embedAttrs["type"] = strMimeType;
  return objRet;
}

/*
Simple document.write function. Can be used to ouput content to the screen with Javascript.
Especially useful to get around the IE "click to activate..." issue with Object/Embed tags
(see http://msdn2.microsoft.com/en-us/library/ms537508.aspx).
*/
function documentWrite(strHTML)
{
	document.write(strHTML);
}

function trackPage(strPageName){
    
        // Omniture requires all of its variables be lower case.
        s_wdpro.pageName = s_wdpro.hier1 + "/" + strPageName.toLowerCase();
       
        // Report page view to Omniture.
        void(s_wdpro.t());
    
}

function trackLink(nodeElem, strLinkId){
	
        s_wdpro.linkTrackVars	= "prop1,prop2,prop9,prop12,eVar10";
        s_wdpro.linkTrackEvents	= "None";
        s_wdpro.prop12			= s_wdpro.pageName;
        
        // Omniture requires all of its variables be lower case.
        s_wdpro.prop9			= strLinkId.toLowerCase();
       
        // Report the link click to Omniture.
        s_wdpro.tl(nodeElem,"o",linkId);
        
        // Reset variables to prevent recounting.
        s_wdpro.prop9			= "";
        s_wdpro.prop12			= "";
    
}