var isDHTML = 0;
var isID = 0;
var isAll = 0;
var isLayers = 0;

if (document.getElementById) {isID = 1; isDHTML = 1;}
else	{
	if (document.all) {isAll = 1; isDHTML = 1;}
	else {
		browserVersion = parseInt(navigator.appVersion);
		if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) {isLayers=1; isDHTML = 1;}
	}
}

// ******* Get object's browser specific DOM reference
// un-nested layers and post-nav4 browsers
function getDOM(objID,fStyle) {
	if (fStyle == 1) {
		if (isID) {return (document.getElementById(objID).style);}
		else {
			if (isAll) {return (document.all[objID].style);}
			else {
				if (isLayers) {return (document.layers[objID]);}
			}
		}
	}
	else {
		if (isID) {return (document.getElementById(objID));}
		else {
			if (isAll) {return (document.all[objID]);}
			else {
				if (isLayers) {return (document.layers[objID]);}
			}
		}	
	}
}
// NESTED LAYERS if you want to support Nav4
//     objID = outer layer  objID2 = inner layer
function getNestedDOM(objID,objID2, fStyle) {
	if (fStyle == 1) {
		if (isID) {return (document.getElementById(objID2).style);}
		else {
			if (isAll) {return (document.all[objID2].style);}
			else {
				if (isLayers) {
					if (objID)	{return (document.layers[objID].layers[objID2]);}
					else {return (document.layers[objID2]);}
				}
			}
		}
	}
	else {
		if (isID) {return (document.getElementById(objID2));}
		else {
			if (isAll) {return (document.all[objID2]);}
			else {
				if (isLayers) {
					if (objID)	{return (document.layers[objID].layers[objID2]);}
					else {return (document.layers[objID2]);}
				}
			}
		}	
	}
}


// ****** OBJECT INFO FUNCTIONS ***********
// Objects have to have ID to turn them into CSS layer that can be accessed

// ~~~ SIZE 
function getWidth(objID){
	var dom = getDOM(objID,0);
	if (dom.offsetWidth) return dom.offsetWidth;
	if (com.clip.width) return dom.clip.width;
	return (null);
}
function getHeight(objID){
	var dom = getDOM(objID,0);
	if (dom.offsetHeight) return dom.offsetHeight;
	if (com.clip.height) return dom.clip.height;
	return (null);
}
// ~~~~ POSITION 
function getLeft(objID){
	var dom = getDOM(objID,0);
	var domStyle = getDOM(objID,1);
	if (domStyle.left) return domStyle.left;
	if (domStyle.pixelLeft) return domStyle.pixelLeft;
	if (dom.offsetLeft) return dom.offsetLeft;
	return (null);
}
function getTop(objID){
	var dom = getDOM(objID,0);
	var domStyle = getDOM(objID,1);
	if (domStyle.top) return domStyle.top;
	if (domStyle.pixelTop) return domStyle.pixelTop;
	if (dom.offsetTop) return dom.offsetTop;
	return (null);
}
function moveTo(objID,x,y){
	var domStyle = getDOM(objID,1);
	domStyle.left = x;
	domStyle.top = y;
}
function moveBy(objID,dx,dy){
	var domStyle = getDOM(objID,1);
	var dom = getDOM(objID,0);
	if (domStyle.pixelLeft) {
		domStyle.pixelLeft += dx;
		domStyle.pixelTop += dy;
	}
	else {
		if (dom.offsetLeft != null) {
			var x = dom.offsetLeft;
			var y = dom.offsetTop;
			domStyle.left = x + dx;
			domStyle.top = y + dy;
		}
		else dom.moveBy(dx,dy);
	}
}

// ~~~~ ZORDER 
//      To find zIndex you first have to set zIndex in code!
function getZ(objID){
	var domStyle = getDOM(objID,1);
	if (domStyle.zIndex != null) return domStyle.zIndex;
	return (null);
}	
function setZ(objID,nZ){
	var domStyle = getDOM(objID,1);
	domStyle.zIndex = nZ;
}	

// ~~~~ VISIBLE
//      To find visibility you first have to set visibility in code!
function getVisibility(objID){
	var domStyle = getDOM(objID,1);
	if ((domStyle.visibility == 'show') || (domStyle.visibility == 'visible')) return 'visible';
	return 'hidden';
}	
function setVisibility(objID, szState){
	var domStyle = getDOM(objID,1);
	domStyle.visibility = szState;
}	
function switchVisibility(objID){
	var domStyle = getDOM(objID,1);
	var szState = domStyle.visibility;
	if ((szState == 'hidden') || (szState == 'hide')) {
		domStyle.visibility = 'visible';
	}
	else {
		domStyle.visibility = 'hidden';
	}
}	

// ~~~~ ANY STYLE
function changeStyle(objID,szStyleName,szState){
	var domStyle = findDOM(objID,1);
	domStyle [szStyleName] = szState;
}

// ~~~~ CSS CLASS
function setClass(objID,szNewClass){
	var dom = findDOM(objID,0);
	dom.className = szNewClass;
}
