//*******************************************
// crossBrowser.js
// contains browser detection, cross browser DHTML
// should always be first js file included
//*******************************************

//BEGIN browser profiling
var isIE = false;
var isN4 = false;
var isN6 = false;
var isMac = false;
var error = "";

var agt=navigator.userAgent.toLowerCase();
var ver = parseInt(navigator.appVersion);
if (navigator.appVersion.toLowerCase().indexOf("macintosh")!=-1) isMac = true;

if ((agt.indexOf('mozilla')!=-1) && ((agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1))) {
	ver = agt.charAt(8);
	if (ver==4) {
		isN4=true;
	} else if (ver>4) {
		isN6=true;
	} else {
		error = "You're using an old version of netscape, you need to upgrade.";
	}
} else if (agt.indexOf("msie") != -1) {
	ver = navigator.appVersion.toLowerCase();
	var pos = ver.indexOf("msie") + 5;
	var iever = ver.substring(pos,pos+3);
	if (iever >=4) {
		isIE = true;
	}
} 

/** returns reference to a div appropriate for browser **/
function getDiv(name) {
	if (isIE) {
		return document.all[name];
	} else if (isN4)  {
		return document.layers[name];
	} else if (isN6) {
		return document.getElementById(name);
	} else {
		return null;
	} 
}

/** returns reference to div with .style tacked on for IE/N6 **/
function getDivStyle(name) {
	if (isIE || isN6) {
		return getDiv(name).style;
	} else if (isN4) {
		return getDiv(name);
	}
}

/** sets visibility of passed div name. vis should be "hidden" or "visible" **/
function setVis(name,vis) {
	if (isN4)  {
		if (vis=="hidden") vis="hide";
		if (vis=="visible") vis="show";
	} 
	getDivStyle(name).visibility=vis;
}

/** gets current visibility **/
function isVis(name) {
	var vis = getDivStyle(name).visibility;
	if (vis=="visible" || vis=="show") {
		return true;
	} else {
		return false;
	}
}

/** moves a div to specified x/y location **/
function setPos(name,x,y) {
	if (isN4) {
		getDiv(name).moveTo(x,y);
	} else if (isIE) {
		getDivStyle(name).pixelLeft = x;
		getDivStyle(name).pixelTop = y;
	} else if (isN6) {
		getDivStyle(name).left = x + "px";
		getDivStyle(name).top = y + "px";
	}
	if (!isVis(name)) setVis(name,"visible");
}

/** writes the contents of a div **/
function setContent(name,content) {
	if (!isVis(name)) setVis(name,"visible");
	if (isIE || isN6) {
		getDiv(name).innerHTML=content;
	} else if (isN4) {
		getDiv(name).document.open();
		getDiv(name).document.write(content);
		getDiv(name).document.close();
	}
}

/**gets a form field refernce **/
function getFormRef(div_name,form_name,field_name) {
	var form = null;
	var ref = null;
	(isN4) ? form = getDiv(div_name).document.forms[form_name] : form = document.forms[form_name];
	if (form!=null) {
		if (field_name!=null) {
			return form.elements[field_name];
		} else {
			return form;
		}
	}
	return ref;
}

/** gets value from a form field of any type **/
function getFormVal(div_name,form_name,field_name) {
	var ref = getFormRef(div_name,form_name,field_name);
///// NEXT LINE ADDED BY DAVID:
	if (ref==null) return null;
	var value = null;
	if (ref.options!=null) {
		value = ref.options[ref.selectedIndex].value;
	} else if (ref.length > 0) {
		for (var i=0; i<ref.length; i++) {
			if (ref[i].checked) {
				value = ref[i].value;
			}
		}
	} else {
		value = ref.value;
	}
	return value;
}

/** sets value for a form field (input or textarea)**/
function setFormVal(div_name,form_name,field_name,value) {
	var ref = getFormRef(div_name,form_name,field_name);
	ref.value = value;
}

/** gets client width **/
function getWidth() {
	var w=0;
	if (isN4) {
		w=window.innerWidth;
	} else {
		w=document.body.clientWidth;
	}
	return w;
}

/** gets client hgt **/
function getHeight() {
	var h=0;
	if (isN4) {
		h=window.innerHeight;
	} else {
		h=document.body.clientHeight;
	}
	return h;
}

/** get div content **/
function getDivHeight(name) {
	var h=0;
	if (isIE || isN6) {
		h = getDiv(name).offsetHeight;
	} else if (isN4) {
		h = getDiv(name).document.height;
	}
	return h;
}

/** simplified rollOver fx **/
function rollOver(name,state) {
	layer = name;
	fileName = "nav_" + name;
	name = "i" + name;
	rollOverFull(name,fileName,state,layer);
}

/** simplified rollOver fx **/
function rollOverSec(name,i,state) {
	layer = name;
	fileName = "navs" + i + "_" + name;
	name = "i" + name;
	rollOverFull(name,fileName,state,layer);
}

/**rollover used when img name and file name differ**/
function rollOverFull(imgName,fileName,state,layer) {
	var ref;
	if (isN4) {
		ref = getDiv(layer).document.images[imgName];
	} else {
		ref = document.images[imgName];
	}
	ref.src = "images/" + fileName + state + ".gif";
}
