// Global variables
var isCSS, isW3C, isIE4, isNN4, isIE6CSS;

// Initialize upon load to let all browsers establish content objects
function initDHTMLAPI(){
	if(document.images){
		isCSS = (document.body && document.body.style) ? true : false;
		isW3C = (isCSS && document.getElementById) ? true : false;
		isIE4 = (isCSS && document.all) ? true : false;
		isNN4 = (document.layers) ? true : false;
		isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ? true : false;
	}
}

// Seek nested NN4 layer from string name
function seekLayer(doc, name){
	var theObj;
	
	for(var i = 0; i < doc.layers.length; i++){
		if(doc.layers[i].name == name){
			theObj = doc.layers[i];
			break;
		}
		// dive into nested layers if necessary
		if(doc.layers[i].document.layers.length > 0){
			theObj = seekLayer(document.layers[i].document, name);
		}
	}
	return theObj;
}

// Convert object name string or object reference into a valid element object reference
function getRawObject(obj){
	var theObj;
	
	if(typeof obj == "string"){
		if(isW3C){
			theObj = document.getElementById(obj);
		}else if(isIE4){
			theObj = document.all(obj);
		}else if(isNN4){
			theObj = seekLayer(document, obj);
		}
	}else{
		// pass through object reference
		theObj = obj;
	}
	return theObj;
}

// Cache images
function cacheImages(imgs){
	if(document.images){
		document.imageCache = new Object();
		for(m = 0; m < imgs.length; m++){
			document.imageCache[m] = new Image;
			document.imageCache[m].src = imgs[m];
		}
	}
}

// Set class name
function setClassName(id, className){
	var elem = getRawObject(id);
	if (typeof elem != "undefined") elem.className = className;
}

// Image swap for rollovers
function setImageSrc(id, img){
	var elem = getRawObject(id);
	if (typeof elem != "undefined") elem.src = img;
}

// Toggle element visibility
function showObject(id, show) {
	var elem = getRawObject(id);	
	if (typeof elem != "undefined"){
		if(typeof(show) == "undefined"){
			show = true;
		}	
		elem.style.visibility = ((show) ? "visible" : "hidden");
	}
}

// Toggle block/inline element display
function displayObject(id, type, show) {
    var elem = getRawObject(id);
    if (typeof(elem) != "undefined")
    {
        if (typeof(show) == "undefined")
        {
            show = true;
        }
        elem.style.display = ((show) ? type : "none");
    }
}

// Focus element
function focusObject(id){
	var elem = getRawObject(id);
	if (typeof elem != "undefined"){
		elem.focus();
	}
}

function setValue(id, val) {
    var elem = getRawObject(id);
    if (typeof(elem) != "undefined") {
        elem.value = val;
    }
}