//
// Copyright 2002 Sensible Internet Retail, Inc.
// Author: Matthew V. Maloney except clientsniff below
//

/* dreamsearch.js for wasatch
***/

function divon(divid) {
	if (get_obj(divid)) {
		get_obj(divid).style.display='block';
	}
}

function divoff(divid) {
	if (get_obj(divid)) {
		get_obj(divid).style.display='none';
	}
}

function checkbox_all(form, partialname, onoroff) {
	// either check or uncheck (determined by onoroff) all
	// checkboxes in form whose names contain partialname.
	for (var i=0; i < form.all.length; i++) {
		if (('checkbox' == form.all(i).type) && (-1 < form.all(i).name.indexOf(partialname))) {
			form.all(i).checked = onoroff;
		}
	}
	return true;
}

function set_innerHtmlById(elemid, htmlstr) {
	set_innerHTML(get_obj(elemid), htmlstr);
}

function set_innerHTML(elem, htmlstr) {
	//alert("function set_innerHTML(" + elem + ", " + htmlstr + ") starting... ");
	var e = (typeof(elem) === "string") ? get_obj(elem) : elem;
	if ( (null != e) && (typeof(e) === "object") ) {
		if (is.nav6up || is.ie4up) {
			e.innerHTML = htmlstr;
		} else if (is.nav4) {
			e.document.open();
			e.document.write(htmlstr);
			e.document.close();
		} else {
			// nothing
		}
	} else {
		// nothing
	//	alert("set_innerHTML() doing nothing");
	}
}

function get_objs(id1) {
	var id2 = new String(id1);
	if (is.ie4up) {
		var o = document.getElementsByName(id2);
	} else {
		return null;
	}
	return o;
}

function get_obj(id1) {
	var id2 = new String(id1);
	if (is.ie5up || is.nav6up) {
		var o = document.getElementById(id2);
		//alert(o.name + " is a " + o);
	} else if (is.ie4up) {
		var o = document.all(id2)
	} else {
		return null;
	}

	return o;
}

function get_eventKeyCode(evnt) {
	return (evnt.keyCode > 0 ? evnt.keyCode : evnt.which);
}

function get_eventTarg(evnt) {
	var retval = (is.ie4up ? evnt.srcElement : evnt.target);
	//alert("get_eventTarg() returning " + retval);
	return retval
}

// Ultimate client-side JavaScript client sniff.
// (C) Netscape Communications 1999.  Permission granted to reuse and distribute.
// Revised 17 May 99 to add is.nav6up and is.ie5up (see below).
//
// Matthew V. Maloney
// Revised 25 Mar 2002 (Matthew V. Maloney) to add suport for ie5.5 and ie6.
//
// 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 nav6 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.nav6 = this.nav5;
		this.nav6up = this.nav5up;

    this.ie    = (agt.indexOf("msie") != -1);
    this.ie3   = (this.ie && (this.major < 4));
		// Original ie4 code (Revised on or before 17 May 99 by Netscape Communications 1999).
		//    this.ie4  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")==-1) );
		// Modified ie4 code (Revised 25 Mar 2002 by Matthew V. Maloney)
		// ... original was identifying ie55 as ie4.
    this.ie4   = (this.ie && (this.major == 4) && (agt.indexOf("msie 4")!=-1) );
    this.ie4up = (this.ie  && (this.major >= 4));
		// Original ie5+ code (Revised on or before 17 May 99 by Netscape Communications 1999).
		//    this.ie5  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) );
		//    this.ie5up  = (this.ie  && !this.ie3 && !this.ie4);

		// Modified and appended ie5+ code (Revised 25 Mar 2002 by Matthew V. Maloney)
		// ... Added support for ie55.
		//		- renamed is.ie5 to is.ie50 (still testing specifically for ie v5.0)
		//		- is.ie5up is unchanged.
		//		- added ie5x testing for and ie v5 version.
		//		- added ie55 testing for ie v5.5 specifically.
    this.ie5x  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5")!=-1) );
    this.ie50  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    this.ie55  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.5")!=-1) );
    this.ie5up = (this.ie && !this.ie3 && !this.ie4);

		// Modified and appended ie5+ code (Revised 25 Mar 2002 by Matthew V. Maloney)
		// ... Added support for ie6.
		//		- added ie6x testing for any ie v6.x client.
		//		- added ie60 testing specifically for ie v6.0.
		//		- added ie6up testing for any ie version greater than 5.
		this.ie6x  = (this.ie && (this.major == 4) && (agt.indexOf("msie 6")!=-1) );
    this.ie60  = (this.ie && (this.major == 4) && (agt.indexOf("msie 6.0")!=-1) );
    this.ie6up = (this.ie && !this.ie3 && !this.ie4 && !this.ie5x);

    // 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.nav6) 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) );
    this.mac    = (agt.indexOf("mac")!=-1);
    this.linux = (agt.indexOf("inux")!=-1);
}

var is;
if ((navigator.appVersion.indexOf("Mac")!=-1) && (navigator.userAgent.indexOf("MSIE")!=-1) && (parseInt(navigator.appVersion)==3))
       isIE3Mac = true;
else   is = new Is();
