/**
 *	---| dhtml_utils.js |---
 *	copyright 2001, Chao Nian Wang
 *	adapted from original code by "The Dynamic Duo"
 *
 *	This file consists of common functions and variables for browser detection, pre-loading images, 
 *	swapping images, and picking images.
 */
var agt = navigator.userAgent.toLowerCase(); 

var is_major = parseInt(navigator.appVersion); 
var is_minor = parseFloat(navigator.appVersion); 

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_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_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_ie4); 

var is_win     = ( (agt.indexOf("win") != -1) || (agt.indexOf("16bit") != -1) );
var is_mac     = (agt.indexOf("mac") != -1);

// *** GENERAL JAVASCRIPT FUNCTIONS ****
var initialized 	 = false;

var imgArray      = new Array();
var imgState 	  = new Array();
var picked_prefix = new Array();
var picked		  = "";

imgState[0]  	 = "_off";
imgState[1]  	 = "_on";
picked_prefix[0] = "";

function imgInit(divName) {
    if (!divName) { divName = "document"; }
	var doc = eval(divName);
	
    if (doc.images) { imgPull(divName); }
    if (document.layers && doc.layers.length > 0) {
        for (var i = 0; i < doc.layers.length; i++) { imgInit(divName + ".layers[" + i + "].document"); }
    }
    initialized = true;
}

function imgPull(divName) {
    var doc = eval(divName);

    for (var i = 0; i < doc.images.length; i++) {
        var imgObj = doc.images[i];
        // only add images that match the imgState 'off' state
        // *** for images that default to on use an init statement in the main body
        if (imgObj.src.lastIndexOf(imgState[0] + ".") > 0) {
            var imgName   = imgObj.name;
            var imgLoc    = imgObj.src.split(imgState[0]);
            var imgWidth  = imgObj.width;
            var imgHeight = imgObj.height;

            for (var j = 0; j < imgState.length; j++) {
                loadImage(divName, (imgName + imgState[j]), (imgLoc[0] + imgState[j] + imgLoc[1]), imgWidth, imgHeight);
            }
        }
    }
}

function loadImage(divName, imgName, imgSrc, imgWidth, imgHeight, imgMessage) {
    if (!imgArray[imgName]) {
        imgArray[imgName]        = new Image(imgWidth, imgHeight);
        imgArray[imgName].div    = divName;
        imgArray[imgName].src    = imgSrc;
        imgArray[imgName].msg    = imgMessage;
        imgArray[imgName].picked = false;
    }
}

function pick(imgName, imgPickedState, imgOldState) {
if (initialized) {
    if (!imgOldState) { imgOldState = 0; }
    if (!imgPickedState) { imgPickedState = imgState.length - 1; }

	var oldPicked = picked;
	picked = imgName;
	for (var i = 0; i < picked_prefix.length; i++) {
		if (oldPicked != "") {
			for (var j = 0; j < imgState.length; j++) {
				var imgReplace = picked_prefix[i] + oldPicked;
				// revert old graphic
				imgArray[(imgReplace + imgState[j])].picked = false;
				swap(imgReplace, imgOldState);
			}
		}
		for (var j = 0; j < imgState.length; j++) {
			var imgReplace = picked_prefix[i] + picked;
			// switch new graphic
			swap(imgReplace, imgPickedState);
			imgArray[(imgReplace + imgState[j])].picked = true;
		}
	}
}
}

function swap(imgName, imgReplace, msg) {
if (initialized) {
    // get the correct imgReplace
    if (!isNaN(imgReplace)) { imgReplace = imgState[imgReplace]; }
    if (imgReplace.indexOf("_") == 0) { imgReplace = imgName + imgReplace; }
    
    var theImage = imgArray[imgReplace];
    var divName = eval(imgArray[imgReplace].div);
    
    // do the actual swap
    if (document.images && !theImage.picked) { divName.images[imgName].src = theImage.src; }

    // check for status messages
    if (msg) { return message(msg); }
    else if (theImage.msg) { return message(theImage.msg); }
}
}

function message(msg) {
    if (msg) { window.status = msg; }
    else { window.status = ''; }
    return true;
}

function show(divName) {
	if (document.layers) { document.layers[divName].visibility = "show"; }
	else if (document.all) { document.all[divName].style.visibility = "visible"; }
	else if (is_nav5up) { document.getElementById(divName).style.visibility = "visible"; }
}

function hide(divName) {
	if (document.layers) { document.layers[divName].visibility = "hide"; }
	else if (document.all) { document.all[divName].style.visibility = "hidden"; }
	else if (is_nav5up) { document.getElementById(divName).style.visibility = "hidden"; }
}

function popup(path_info, name_info, popWidth, popHeight, windowFeatures, otherFeatures) {
    var str = "";
    if (!name_info) { name_info = "popup_window"; }
    if (!popWidth)  { popWidth = 640; }
    if (!popHeight) { popHeight = 480; }
    str = "width=" + popWidth + ",height=" + popHeight;
    // *** the following uses "document.layers" instead of IS_NS to detect the browser
    if (document.layers) { str += ",innerWidth=" + popWidth + ",innherHeight=" + popHeight; }
    
    if (windowFeatures) { 
        windowFeatures.toLowerCase();
        if (windowFeatures.indexOf("toolbar") != -1)     { str += ",toolbar=1"; } else { str += ",toolbar=0"; }
        if (windowFeatures.indexOf("location") != -1)    { str += ",location=1"; } else { str += ",location=0"; }
        if (windowFeatures.indexOf("directories") != -1) { str += ",directories=1"; } else { str += ",directories=0"; }
        if (windowFeatures.indexOf("copyhistory") != -1) { str += ",copyhistory=1"; } else { str += ",copyhistory=0"; }
        if (windowFeatures.indexOf("status") != -1)      { str += ",status=1"; } else { str += ",status=0"; }
        if (windowFeatures.indexOf("scrollbars") != -1)  { str += ",scrollbars=1"; } else { str += ",scrollbars=0"; }
        if (windowFeatures.indexOf("resizable") != -1)   { str += ",resizable=1"; } else { str += ",resizable=0"; }
    }
    if (otherFeatures) { str += "," + otherFeatures; }
    name_info = window.open(path_info, name_info, str);
    name_info.focus();
    
    return name_info;
}
