// window.defaultStatus = "Welcome to Canon U.S.A., Inc., Consumer Products Sales Division!";

// 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; 
}

// 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'); 
	if (txtimgName && txtimgSuffix) {
		eval('document.images["' + txtimgName + '"].src = imageArray["' + txtimgName + txtimgSuffix + '"].src');
	}
   }
   if (theMsg == null) { theMsg = window.defaultStatus; }
   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;
	}

}
