// Ultimate client-side JavaScript client sniff.
// (C) Netscape Communications 1999.  Permission granted to reuse and distribute.
// Revised 17 May 99 to add is.nav5up and is.ie5up (see below).

// Everything you always wanted to know about your JavaScript client
// but were afraid to ask ... "Is" is the constructor function for "is" object,
// which has properties indicating:
// (1) browser vendor:
//     is.nav, is.ie, is.opera
// (2) browser version number:
//     is.major (integer indicating major version number: 2, 3, 4 ...)
//     is.minor (float   indicating full  version number: 2.02, 3.01, 4.04 ...)
// (3) browser vendor AND major version number
//     is.nav2, is.nav3, is.nav4, is.nav4up, is.ie3, is.ie4, is.ie4up, is.ie5, is.ie5up
// (4) JavaScript version number:
//     is.js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...)
// (5) OS platform and version:
//     is.win, is.win16, is.win32, is.win31, is.win95, is.winnt, is.win98
//     is.os2
//     is.mac, is.mac68k, is.macppc
//     is.unix
//        is.sun, is.sun4, is.sun5, is.suni86
//        is.irix, is.irix5, is.irix6
//        is.hpux, is.hpux9, is.hpux10
//        is.aix, is.aix1, is.aix2, is.aix3, is.aix4
//        is.linux, is.sco, is.unixware, is.mpras, is.reliant
//        is.dec, is.sinix, is.freebsd, is.bsd
//     is.vms
//
// See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and
// http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html
// for detailed lists of userAgent strings.
//
// Note: you don't want your Nav4 or IE4 code to "turn off" or
// stop working when Nav5 and IE5 (or later) are released, so
// in conditional code forks, use is.nav4up ("Nav4 or greater")
// and is.ie4up ("IE4 or greater") instead of is.nav4 or is.ie4
// to check version in code which you want to work on future
// versions.





function Is ()
{   // 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.
    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);

    this.nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1));
    this.nav2 = (this.nav && (this.major == 2));
    this.nav3 = (this.nav && (this.major == 3));
    this.nav4 = (this.nav && (this.major == 4));
    this.nav4up = (this.nav && (this.major >= 4));
    this.navonly      = (this.nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );
    this.nav5 = (this.nav && (this.major == 5));
    this.nav5up = (this.nav && (this.major >= 5));

    this.ie   = (agt.indexOf("msie") != -1);
    this.ie3  = (this.ie && (this.major < 4));
    this.ie4  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")==-1) );
    this.ie4up  = (this.ie  && (this.major >= 4));
    this.ie5  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    this.ie5up  = (this.ie  && !this.ie3 && !this.ie4);

    // KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
    // or if this is the first browser window opened.  Thus the
    // properties is.aol, is.aol3, and is.aol4 aren't 100% reliable.
    this.aol   = (agt.indexOf("aol") != -1);
    this.aol3  = (this.aol && this.ie3);
    this.aol4  = (this.aol && this.ie4);

    this.opera = (agt.indexOf("opera") != -1);
    this.webtv = (agt.indexOf("webtv") != -1);

    // *** JAVASCRIPT VERSION CHECK ***
    if (this.nav2 || this.ie3) this.js = 1.0
    else if (this.nav3 || this.opera) this.js = 1.1
    else if ((this.nav4 && (this.minor <= 4.05)) || this.ie4) this.js = 1.2
    else if ((this.nav4 && (this.minor > 4.05)) || this.ie5) this.js = 1.3
    else if (this.nav5) this.js = 1.4
    // NOTE: In the future, update this code when newer versions of JS
    // are released. For now, we try to provide some upward compatibility
    // so that future versions of Nav and IE will show they are at
    // *least* JS 1.x capable. Always check for JS version compatibility
    // with > or >=.
    else if (this.nav && (this.major > 5)) this.js = 1.4
    else if (this.ie && (this.major > 5)) this.js = 1.3
    // HACK: no idea for other browsers; always check for JS version with > or >=
    else this.js = 0.0;

    // *** PLATFORM ***
    this.win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
    // NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all
    //        Win32, so you can't distinguish between Win95 and WinNT.
    this.win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1));

    // is this a 16 bit compiled version?
    this.win16 = ((agt.indexOf("win16")!=-1) ||
                  (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) ||
                  (agt.indexOf("windows 16-bit")!=-1) );

    this.win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) ||
                  (agt.indexOf("windows 16-bit")!=-1));

    // NOTE: Reliable detection of Win98 may not be possible. It appears that:
    //       - On Nav 4.x and before you'll get plain "Windows" in userAgent.
    //       - On Mercury client, the 32-bit version will return "Win98", but
    //         the 16-bit version running on Win98 will still return "Win95".
    this.win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1));
    this.winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1));
    this.win32 = ( this.win95 || this.winnt || this.win98 ||
                   ((this.major >= 4) && (navigator.platform == "Win32")) ||
                   (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1) );

    this.os2   = ((agt.indexOf("os/2")!=-1) ||
                  (navigator.appVersion.indexOf("OS/2")!=-1) ||
                  (agt.indexOf("ibm-webexplorer")!=-1));

    this.mac    = (agt.indexOf("mac")!=-1);
    this.mac68k = (this.mac && ((agt.indexOf("68k")!=-1) ||
                               (agt.indexOf("68000")!=-1)));
    this.macppc = (this.mac && ((agt.indexOf("ppc")!=-1) ||
                               (agt.indexOf("powerpc")!=-1)));

    this.sun   = (agt.indexOf("sunos")!=-1);
    this.sun4  = (agt.indexOf("sunos 4")!=-1);
    this.sun5  = (agt.indexOf("sunos 5")!=-1);
    this.suni86= (this.sun && (agt.indexOf("i86")!=-1));
    this.irix  = (agt.indexOf("irix") !=-1);    // SGI
    this.irix5 = (agt.indexOf("irix 5") !=-1);
    this.irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1));
    this.hpux  = (agt.indexOf("hp-ux")!=-1);
    this.hpux9 = (this.hpux && (agt.indexOf("09.")!=-1));
    this.hpux10= (this.hpux && (agt.indexOf("10.")!=-1));
    this.aix   = (agt.indexOf("aix") !=-1);      // IBM
    this.aix1  = (agt.indexOf("aix 1") !=-1);
    this.aix2  = (agt.indexOf("aix 2") !=-1);
    this.aix3  = (agt.indexOf("aix 3") !=-1);
    this.aix4  = (agt.indexOf("aix 4") !=-1);
    this.linux = (agt.indexOf("inux")!=-1);
    this.sco   = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1);
    this.unixware = (agt.indexOf("unix_system_v")!=-1);
    this.mpras    = (agt.indexOf("ncr")!=-1);
    this.reliant  = (agt.indexOf("reliantunix")!=-1);
    this.dec   = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) ||
         (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) ||
         (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1));
    this.sinix = (agt.indexOf("sinix")!=-1);
    this.freebsd = (agt.indexOf("freebsd")!=-1);
    this.bsd = (agt.indexOf("bsd")!=-1);
    this.unix  = ((agt.indexOf("x11")!=-1) || this.sun || this.irix || this.hpux ||
                 this.sco ||this.unixware || this.mpras || this.reliant ||
                 this.dec || this.sinix || this.aix || this.linux || this.bsd ||
                 this.freebsd);

    this.vms   = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1));
}

// ------------------------------------------ Executed code ------------------------------------------

var is;
var isIE3Mac = false;
// this section is designed specifically for IE3 for the Mac

if ((navigator.appVersion.indexOf("Mac")!=-1) && (navigator.userAgent.indexOf("MSIE")!=-1) && (parseInt(navigator.appVersion)==3))
       isIE3Mac = true;
else   is = new Is(); 


//with (navigator){if(userAgent.indexOf("Mac")!=-1&&userAgent.indexOf("MSIE")!=-1&&userAgent.substr(userAgent.indexOf("MSIE")+5,3)=='5.1'){alert('mac ie 5.1');}}
// Execute Browser detection script

if (is.nav4) {
	parentdoc = "parent.document.";
	parentsty = "";
	doc = "document.";
	sty = "";
	htm = ".document"
	nav4 = 1
} else if(is.ie4up) {
	parentdoc = "document.all.";
	parentsty = ".style";
	doc = "document.all.";
	sty = ".style";
	htm = ""
	nav4 = 0
} else if(is.nav5up) {
	parentdoc = "document.all.";
	parentsty = ".style";
	doc = "document.all.";
	sty = ".style";
	htm = ""
	nav4 = 0
}

// ----------------------------------------------- Functions ----------------------------------------

function BZ_setLayerOffImage(imageName, layerName, offX, offY, visibility) { // visible or hidden
  var imgObj = document.images[imageName];
  BZ_setLayerPosition(layerName, BZ_getAbsImageX(imgObj)+offX, BZ_getAbsImageY(imgObj)+offY);
  BZ_layerVisibility(layerName, visibility);
}

// Move an object horizontally based on Main Layer
function BZ_setLayerPosition(layername, x, y) {
  if(document.getElementById) {
    var obj = document.getElementById(layername).style;
    var contentObj = document.getElementById(layername);
  } else {
    var obj = eval(parentdoc+layername+parentsty);
    var contentObj = eval(doc+layername);
  }
  BZ_shiftTo(obj, x, y);
}

function BZ_layerVisibility() { // Call this to change the visibility of a layer
 	for (var i=0; i<BZ_layerVisibility.arguments.length; i+=2) {
    if (document.getElementById) { // DOM1 Test
	  document.getElementById(BZ_layerVisibility.arguments[i]).style.visibility=BZ_layerVisibility.arguments[i+1];
    } else {
      eval(parentdoc+BZ_layerVisibility.arguments[i]+parentsty).visibility = BZ_layerVisibility.arguments[i+1];
    }
  }
}

function BZ_layerDisplay() { // Call this to change the visibility of a layer
  for (var i=0; i<BZ_layerDisplay.arguments.length; i+=2) {
    if (document.getElementById) { // DOM1 Test
      document.getElementById(BZ_layerDisplay.arguments[i]).style.display=BZ_layerDisplay.arguments[i+1];
    } else {
      eval(parentdoc+BZ_layerDisplay.arguments[i]+parentsty).display = BZ_layerDisplay.arguments[i+1];
    }
  }
}

// Functions to get X & Y positions of images
function BZ_getAbsImageX(imgObj) {
  if (is.nav4) {
    return eval(imgObj).x;
  } else {
	xPos = eval(imgObj).offsetLeft;
	temp = eval(imgObj).offsetParent;
  	while (temp != null) {
  		xPos += temp.offsetLeft;
  		temp = temp.offsetParent;
  	}
    return xPos;
  }
}

function gallery(thisGallery) {
	if(!window.opener)
	{
		window.opener=window;
	}
	theURL = '/Content/Includes/gallery.asp?gallery=' + thisGallery;
	windowleft=window.screen.width/2-470;
	windowtop=window.screen.height/2-275;
	window.open(theURL,'Sequence','width=940,height=549,left='+windowleft+',top='+windowtop+',directories=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=no');
}

function thumbnails(thisGallery) {
	theURL = 'http://www.i-o.com/about_us/news_room/image_library/thumbnails?gallery=' + thisGallery;
	window.location.href=theURL;
}
					
function BZ_getAbsImageY(imgObj) {
  if (is.nav4) {
    return eval(imgObj).y;
  } else {
	yPos = eval(imgObj).offsetTop;
	temp = eval(imgObj).offsetParent;
	while (temp != null) {
  		yPos += temp.offsetTop;
  		temp = temp.offsetParent;
  	}
    return yPos;
  }
}

// Position an element at specific location
function BZ_shiftTo(obj, x, y) {
	if (document.getElementById) {
		obj.left = x + 'px';
		obj.top = y + 'px';
	} else if (is.nav4) {
		obj.moveTo(x,y)
	} else {
		obj.pixelLeft = x
		obj.pixelTop = y
	}
}


// More Library Code ------------------------------------------------------------------------


function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
function MM_preloadImages() { //v3.0
  	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v3.0
  	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
   	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
	
function MM_reloadPagebackup(init) {  //reloads the window if Nav4 resized
  	if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
   		document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  	else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  	if (init==true) with (navigator) {if (((appName=="Netscape")&&(parseInt(appVersion)==4))) {
   		document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; window.onresize=MM_reloadPage; } else if ((navigator.userAgent.indexOf("Mac")!=-1)&&(navigator.userAgent.indexOf("MSIE")!=-1)&&(navigator.userAgent.substr(navigator.userAgent.indexOf("MSIE")+5,3)=='5.1')) { window.onresize=BZC_JustReload;} else { window.onresize=BZC_OnResize; } }
	else if (innerWidth!=document.MM_pgW||innerHeight!=document.MM_pgH) {location.reload();}
}

// else if ((navigator.userAgent.indexOf("Mac")!=-1)&&(navigator.userAgent.indexOf("MSIE")!=-1)&&(navigator.userAgent.substr(navigator.userAgent.indexOf("MSIE")+5,3)=='5.1')) {location.reload();}
// window.onresize = BZC_OnLoadResize; // Custom Function to handle any positioning code
MM_reloadPage(true);
//window.onresize = MM_reloadPage;

function BZC_OnResize () {
	BZC_OnLoadResize(); // This is throwing an error
}

function BZC_JustReload() {
	location.reload();
}

function writeConsole(movie,width,height) {
    if (! width) {
		width = 350;
	}
	if (! height) {
		height = 350;
	}
 winwidth = eval(width) + 50;
 winheight = eval(height) + 50;
 top.consoleRef=window.open('','myconsole',
  'width=' + winwidth + ',height=' + winheight
   +',menubar=0'
   +',toolbar=0'
   +',status=0'
   +',scrollbars=0'
   +',resizable=1')
 top.consoleRef.document.writeln(
  '<html><head><title>Movie Console</title></head>' +
  '<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" bgcolor="#000000">' +
  '<table width="100%" height="100%" border="0"><tr><td align="center">' +
  '<embed TYPE="video/x-ms-asf-plugin" PLUGINSPAGE="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" SRC="' + movie + '" NAME="MediaPlayer" WIDTH="' + width + '" HEIGHT=" ' + height + '"></embed>' +
  '</td></tr></table>' +
  '</body></html>'
 )
 top.consoleRef.document.close()
} 

