// convert all characters to lowercase to simplify testing
var agt=navigator.userAgent.toLowerCase();

// *** BROWSER VERSION ***
// Note: On IE5, these return 4, so use is_ie5up to detect IE5.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);

// Note: Opera and WebTV spoof Navigator.  We do strict client detection.
// If you want to allow spoofing, take out the tests for opera and webtv.
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
            && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
            && (agt.indexOf('webtv')==-1));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav3up = (is_nav && (is_major >= 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly      = (is_nav && ((agt.indexOf(";nav") != -1) ||
                      (agt.indexOf("; nav") != -1)) );
var is_nav5 = (is_nav && (is_major == 5));
var is_nav5up = (is_nav && (is_major >= 5));

var is_ie   = (agt.indexOf("msie") != -1);
var is_ie3  = (is_ie && (is_major < 4));
var is_ie4  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")==-1) );
var is_ie4up  = (is_ie  && (is_major >= 4));
var is_ie5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
var is_ie5up  = (is_ie  && !is_ie3 && !is_ie4);

// KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
// or if this is the first browser window opened.  Thus the
// variables is_aol, is_aol3, and is_aol4 aren't 100% reliable.
var is_aol   = (agt.indexOf("aol") != -1);
var is_aol3  = (is_aol && is_ie3);
var is_aol4  = (is_aol && is_ie4);

// *** PLATFORM ***
var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
var is_mac    = (agt.indexOf("mac")!=-1);

// allows changing of the status message
function message(msg) {
	window.status = msg;
	return true;
}

// function to help pre-load images - must declare imageArray as a new Array() prior
function loadImage(theImage, width, height) {
	var imgName = theImage.substring((theImage.lastIndexOf('\/') + 1), theImage.lastIndexOf('.'));
	var dimensions = "";
	if (width && height) { dimensions = width + ', ' + height; }
	eval('imageArray["' + imgName + '"] = new Image(' + dimensions + ');');
	eval('imageArray["' + imgName + '"].src = "' + theImage + '";');
}

// performs a swap with the appropriate image name, the suffix desired, and window status message - uses imageArray
function swap(imgName, imgSuffix, theMsg, txtimgName, txtimgSuffix) {
//   if (document.layers || document.all) {
	eval('document.images["' + imgName + '"].src = imageArray["' + imgName + imgSuffix + '"].src');
//	var imgTmp = imageArray[imgName.concat(imgSuffix)];
//	document.images[imgName].src = imgTmp.src;
	if (txtimgName && txtimgSuffix) {
		eval('document.images["' + txtimgName + '"].src = imageArray["' + txtimgName + txtimgSuffix + '"].src');
	}
//   }
   if (theMsg == null) { theMsg = window.defaultStatus; }
   return true;
   // return message(theMsg);
}

// alteration of swap.  swaps image according to same name convention as swap, and window status, also swaps the appropriate image at an alternate location.
function swap2(imgName_1, imgSuffix_1, Status, imgName_2) {
	if (document.layers || document.all) {
		eval('document.images["' + imgName_1 + '"].src = imageArray["' + imgName_1 + imgSuffix_1 + '"].src');
		eval('document.images["' + blank + '"].src = imageArray["' + imgName_2 + '"].src');
	}
	if (Status == null) { Status = window.defaultStatus; }
	// return message(Status);
}


// this function allows a popup menu
function pop(name_info, path_info, width, height, scroll, resizable, toolbar) {
	var str = "location=0,directories=0,copyhistory=0,status=1";
	if (toolbar != null) { str += ",toolbar=" + toolbar; }
	if (width != null) { str += ",width=" + width; }
	if (height != null) { str += ",height=" + height; }
	if (scroll != null) { str += ",scrollbars=" + scroll; }
	if (resizable != null) { str += ",resizable=" + resizable; }
	name_info = window.open(path_info, name_info, str);
}

// show this layer or DIV
function show(DIVname) {
	if (document.layers) { eval("document.layers['" + DIVname + "'].visibility = 'show';") }
	else if (document.all) { eval("document.all['" + DIVname + "'].style.visibility = 'visible';") }
}

// hide this layer or DIV
function hide(DIVname) {
	if (document.layers) { eval("document.layers['" + DIVname + "'].visibility = 'hide';") }
	else if (document.all) { eval("document.all['" + DIVname + "'].style.visibility = 'hidden';") }
}

// do nothing
function doNothing() {
	return true;
}

// allow Quick Find to work
function selecting(stuff) {
	var target = "_top";
	window.open(stuff,target);
	document.forms[1].p.selectedIndex = 0;
	// forms[0] = search box
	// forms[1] = Quick Find menu
}


function plugindetect() {
	/*
	Plugin Detector()
	Source: Webmonkey Code Library
	*/

	// this is where we write out the VBScript for MSIE Windows
	var WM_startTagFix = '<'+'/';
	var msie_windows = 0;
	if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)){
	  msie_windows = 1;
	  document.writeln('<SCRIPT LANGUAGE="VBscript">');
	  document.writeln('\'This will scan for plugins for all versions of Internet Explorer that have a VBscript engine version 2 or greater.');
	  document.writeln('\'This includes all versions of IE4 and beyond and some versions of IE 3.');
	  document.writeln('Dim WM_detect_through_vb');
	  document.writeln('WM_detect_through_vb = 0');
	  document.writeln('If ScriptEngineMajorVersion >= 2 then');
	  document.writeln('  WM_detect_through_vb = 1');
	  document.writeln('End If');
	  document.writeln('Function WM_activeXDetect(activeXname)');
	  document.writeln('  on error resume next');
	  document.writeln('  If ScriptEngineMajorVersion >= 2 then');
	  document.writeln('     WM_activeXDetect = False');
	  document.writeln('     WM_activeXDetect = IsObject(CreateObject(activeXname))');
	  document.writeln('     If (err) then');
	  document.writeln('        WM_activeXDetect = False');
	  document.writeln('     End If');
	  document.writeln('   Else');
	  document.writeln('     WM_activeXDetect = False');
	  document.writeln('   End If');
	  document.writeln('End Function');
	  document.writeln(WM_startTagFix+'script>');
	}

	function WM_pluginDetect(plugindescription, pluginxtension, pluginmime, activeXname){

	  //This script block will test all user agents that have a real plug-in array

	  //(i.e. Netscape) and set the variables, otherwise it directs the routine

	  // to WM_activeXDetect to detect the activeX control.



	  // First define some variables
	  var i,plugin_undetectable=0,detected=0, daPlugin=new Object();


	  // Then we check to see if it's an MSIE browser that you can actually

	  // check for the plugin in question.

	  if (msie_windows && WM_detect_through_vb){
	      plugin_undetectable = 0;
	  } else {
	      plugin_undetectable = 1;
	  }



	  // If it has a real plugins or mimetypes array, we look there for the plugin first

	  if(navigator.plugins) {
	      numPlugins = navigator.plugins.length;
	      if (numPlugins > 1) {
		  if (navigator.mimeTypes && navigator.mimeTypes[pluginmime] && navigator.mimeTypes[pluginmime].enabledPlugin && (navigator.mimeTypes[pluginmime].suffixes.indexOf(pluginxtension) != -1)) { // seems like we have it, let's just make sure and check the version (if specified)
		      if ((navigator.appName == 'Netscape') && (navigator.appVersion.indexOf('4.0') != -1)) { // stupid, stupid Netscape can't handle the references to navigator.plugins by number, sooo...
			  for(i in navigator.plugins) {
			      if ((navigator.plugins[i].description.indexOf(plugindescription) != -1) || (i.indexOf(plugindescription) != -1)) { // some versions of quicktime have no description. feh!
				  detected=1;
				  break;
			      }
			  }
		      } else {
			  for (i = 0; i < numPlugins; i++) {
			      daPlugin = navigator.plugins[i];
			      if ((daPlugin.description.indexOf(plugindescription) != -1) || (daPlugin.name.indexOf(plugindescription) != -1)) {
				  detected=1;
				  break;
			      }
			  }
		      }

		      // Mac weirdness
	      if (navigator.mimeTypes[pluginmime] == null) {
			  detected = 0;
		      }
		  }
		  return detected;
	      } else if((msie_windows == 1) && !plugin_undetectable){
		  return WM_activeXDetect(activeXname);
	      } else {
		  return 0;
	      }
	  } else {
	      return 0;
	  }
	}


	// this next function just makes it easy to detect the common plugins

	function WM_easyDetect(whichPlugin) {

	    // this function just makes it easy to do basic plug-in detection without

	    // knowing all the mimetypes and activeX names and such
	    var isItThere = 0;
	    if( (whichPlugin == 'flash') || (whichPlugin == 'Flash') ) {
		isItThere = WM_pluginDetect('Flash', 'swf', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash');
	    } else if( (whichPlugin == 'director') || (whichPlugin == 'Director') ) {
		isItThere = WM_pluginDetect('Shockwave', 'dcr', 'application/x-director', 'SWCtl.SWCtl.1');
	    } else if( (whichPlugin == 'quicktime') || (whichPlugin == 'Quicktime') || (whichPlugin == 'QuickTime') ) {
		isItThere = WM_pluginDetect('QuickTime', 'mov', 'video/quicktime', '');
	    } else if( (whichPlugin == 'realaudio') || (whichPlugin == 'Realaudio') || (whichPlugin == 'RealAudio') ) {
		isItThere = (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','rmocx.RealPlayer G2 Control')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)')) || (WM_pluginDetect('RealPlayer', 'rpm', 'audio/x-pn-realaudio-plugin','RealVideo.RealVideo(tm) ActiveX Control (32-bit)'))
	    } else {

		alert('You need to tell me which plug-in to look for, like so:\n\n' + '          WM_easyDetect(\'flash\')\n\n' + '          WM_easyDetect(\'director\')\n\n' + '          WM_easyDetect(\'quicktime\')\n\n' + '          WM_easyDetect(\'realaudio\')');
	    }
	    return isItThere;
	}

}

function Start(page) {
OpenWin = this.open(page, '300x300', "toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes,width=450, height=300");
}
