// Browser determination

function whichBrowser() {
	var browser = "unknown";
	var browserversion = 0;

	var ua = window.navigator.userAgent;
//	alert(ua);
	var msie = ua.indexOf("MSIE");
	if (msie > 0) {
		var browser = "MSIE";
		var browserversion = parseInt (ua.substring (msie+5, ua.indexOf (".", msie )));
	} else {
		// Netscape/Mozilla browsers use Gecko engine which conforms to standards
		var gecko = ua.indexOf("Gecko");
		if (gecko > 0) {
			var browser = "Gecko";
			var browserversion = 1;
		} 
	}
	var result = new Object();
	result['browser'] = browser;
	result['browserversion'] = browserversion;
//	alert(result['browser']);
//	alert(result['browserversion']);
	return(result);
}

// Print stuff

function custom_print() {
	if (document.all) {
		if (navigator.appVersion.indexOf("5.0") == -1) {
			if (navigator.appVersion.indexOf("MSIE 6.0") == -1) {
				var OLECMDID_PRINT = 6;
				var OLECMDEXECOPT_DONTPROMPTUSER = 2;
				var OLECMDEXECOPT_PROMPTUSER = 1;
				var WebBrowser = "<OBJECT ID=\"WebBrowser1\" WIDTH=0 HEIGHT=0 CLASSID=\"CLSID:8856F961-340A-11D0-A96B-00C04FD705A2\"></OBJECT>";
				document.body.insertAdjacentHTML("beforeEnd", WebBrowser);
				WebBrowser1.ExecWB(6, 2);
				WebBrowser1.outerHTML = "";
				return;
			}
		}
	}
	self.print();
}

// General stuff

function changeCursorOnMouseOver() {
	var srcElement = event.srcElement;
	if (srcElement.tagName == "TD") {
		srcElement.style.cursor = 'hand';
	}
}
function changeCursorOnMouseOut() {
	var srcElement = event.srcElement;
	if (srcElement.tagName == "TD") {
		srcElement.style.cursor = 'default';
	}
}

function getAttribs(myel){
	var atts, attribs = myel.attributes;
	atts = 'Your element has the following attributes:\n';
	for (a=0; a<attribs.length; a++)
		atts += '\n'+attribs[a].nodeName;
	return (atts);
}

function ReplaceLocation(myloc) {
	window.location.replace(myloc);
	for (var i=0; i<200000; i++) {
		continue;
	}
}

function insertToggleOn(mytoggle) {
	for (var i=0; i<document.images.length; i++) {
		if (document.images[mytoggle]) {
			document.images[mytoggle].src = document.images[mytoggle].src.slice(0, -7) + 'on.gif';
			break;
		}
	}
}

// Form stuff

function Replace(form, org, repl) {
	// org is a regexp that contains the field that has to be replaced
	// repl is a string which replaces 'org'
	var el = form.elements;
	for (var i=0; i<el.length; i++) {
		if (el[i].type == 'textarea' || el[i].type == 'text') {
			el[i].value = el[i].value.replace(org,repl);
		}
	}
}

function ReplaceTags(form) {
	var myRegExp = /<br>/gi;
	var repl = '\n';
	Replace(form, myRegExp, repl);
}

function _runThroughForms(label, returncode) {
// returncode is either form or element ('F' or 'E')
	var result = new Array();
	for (var i=0; i<document.forms.length; i++) {
		for (var j=0; j<document.forms[i].elements.length; j++) {
			if (document.forms[i].elements[j].name == label) {
				if (returncode == 'F') { 
					result[result.length] = document.forms[i];
					break;
				} else {
					result[result.length] = document.forms[i].elements[j];
				}
			}
		}
	}
	if (result.length == 1) {
		return result[0];
	} else {
		if (result.length > 1) {
			return result;
		}
	}
	return false;
}

function getForm(label) {
// Don't know what the form is, just the element's name
// Return the form
	return(_runThroughForms(label, 'F'));
}

function getFormElement (label) {
// Don't know what the form is, just the element's name
// Return the element, so that a value can be assigned to it (i.e.)
// ON THE LIST FOR REFACTORING (USING _runThroughForms())
	var result = new Array();
	for (var i=0; i<document.forms.length; i++) {
		for (var j=0; j<document.forms[i].elements.length; j++) {
			if (document.forms[i].elements[j].name == label) {
				result[result.length] = document.forms[i].elements[j];
			}
		}
	}
	if (result.length == 1) {
		return result[0];
	} else {
		if (result.length > 1) {
			return result;
		}
	}
	return false;
}

function isChecked(elementname) {
	myEl = getFormElement(elementname);
	return (myEl.checked == true);
}

function QIsDisabled(elementname) {
	myEl = getFormElement(elementname);
	return (myEl.disabled == true);
}

function replaceBreaks(form){
	var el = form.elements;
	for (var i=0; i<el.length; i++) {
		if (el[i].type == 'textarea') {
			myRegExp = /<br>/gi;
			el[i].value = el[i].value.replace(myRegExp,'\n');
		}
	}
}

// A whole series of stuff to handle radio buttons / checkboxes


function checkRadio(elementname, elementvalue) {
	myRadio = getFormElement(elementname);
	if (myRadio.length) {
		for (var i=0; i<myRadio.length; i++) {
			if (myRadio[i].value == elementvalue) {
				//myRadio[i].checked = true;
				myRadio[i].click();
				break;
			}
		}
	} else {
		if (myRadio.value == elementvalue) {
			//myRadio.checked = true;
			myRadio.click();
		}
	}
}

function uncheckRadio(elementname) {
	myRadio = getFormElement(elementname);
	if (myRadio.length) {
		for (var i=0; i<myRadio.length; i++) {
			myRadio[i].checked = false;
		}
	} else {
		myRadio.checked = false;
	}
}

function uncheckRadioElement(elementname, elementvalue) {
	myRadio = getFormElement(elementname);
	if (myRadio.length) {
		for (var i=0; i<myRadio.length; i++) {
			if (myRadio[i].value == elementvalue) {
				myRadio[i].checked = false;
				break;
			}
		}
	} else {
		if (myRadio.value == elementvalue) {
			myRadio.checked = false;
		}
	}
}

function radioChecked(elementname, elementvalue) {
	myRadio = getFormElement(elementname);
	for (var i=0; i<myRadio.length; i++) {
		if (myRadio[i].value == elementvalue) {
			return(myRadio[i].checked);
		}
	}
}

function radioValue(elementname) {
	myRadio = getFormElement(elementname);
	for (var i=0; i<myRadio.length; i++) {
		if (radioChecked(elementname, myRadio[i].value)) {
			return(myRadio[i].value);
		}
	}
	return(false)
}

function disableRadio(elementname) {
	myRadio = getFormElement(elementname);
	for (var i=0; i<myRadio.length; i++) {
		myRadio[i].disabled = true;
	}
}

function enableRadio(elementname) {
	myRadio = getFormElement(elementname);
	for (var i=0; i<myRadio.length; i++) {
		myRadio[i].disabled = false;
	}
}

function radioDisabled(elementname, elementvalue) {
	myRadio = getFormElement(elementname);
	for (var i=0; i<myRadio.length; i++) {
		if (myRadio[i].value == elementvalue) {
			return(myRadio[i].disabled);
		}
	}
}

// Handle single selectbox's
function preSelect(elementname, elementvalue) {
	var mySelect = getFormElement(elementname);
	for (var i=0; i<mySelect.length; i++) {
		if (mySelect[i].value == elementvalue) {
			mySelect.selectedIndex = i;
		}
	}
}

// Handle multiple selectbox's
function preSelectMulti(elementname, elementvalue) {
	if (elementvalue) {
		eval('var myar = ' + elementvalue + ';');
		if (!typeof(myar) == 'object'){
			myar = Array(elementvalue);
		}
		var mySelect = getFormElement(elementname);
		for (var i=0; i<mySelect.length; i++) {
			for (var j=0; j<myar.length; j++) {
				if (mySelect[i].value == myar[j]) {
					mySelect[i].selected = true;
					break;
				}
			}
		}
	}
}

// Next two functions need a hidden input type with name 'focussedOn'
function setFocus(elm) {
	myform = getForm(elm);
	myform.focussedOn.value = elm;
}

function removeFocus(elm) {
	myform = getForm(elm);
	myform.focussedOn.value = "";
}


// Layer stuff

function setLayerData(layerid, userdata) {
	if (arguments.length > 2) {
		eval('var output = ' + arguments[2] + '.innerHTML');
		var myRegExp = new RegExp();
		for (ud in userdata) {
			myRegExp = new RegExp("{" + ud + "}","g");
			output = output.replace(myRegExp, userdata[ud]);
		}
		document.all[layerid].innerHTML = output;
	} else {
		document.all[layerid].innerHTML = userdata;
	}
}

function showLayer(layerid) {
	document.all[layerid].style.visibility = 'visible';
}

function hideLayer(layerid) {
	document.all[layerid].style.visibility = 'hidden';
}

function positionLayer(obj,lyr) {
	var newX = findPosX(obj);
	var newY = findPosY(obj);
	//if (lyr == 'testP') newY -= 50;
	var x = new getObj(lyr);
	x.style.top = newY + 'px';
	x.style.left = newX + 'px';
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function getObj(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	} else if (document.all) {
		this.obj = document.all[name];
		this.style = document.all[name].style;
	} else if (document.layers) {
		if (document.layers[name]) {
			this.obj = document.layers[name];
			this.style = document.layers[name];
		} else {
			alert('No layer found');
			//this.obj = document.layers.testP.layers[name];
			//this.style = document.layers.testP.layers[name];
		}
	}
}



// Popup window stuff

function popup(URL) {
	var dims = setPopupDimensions(popup.arguments);
	var w = dims[0];
	var h = dims[1];
	var popupwindow = window.open(URL, "_blank", "toolbar=no, location=no, status=yes, menubar=no,scrollbars=no,width="+w+", height="+h+", resizable=no, dependent=yes");
	popupwindow.spawner = this;
}

function popupScroll(URL) {
	var dims = setPopupDimensions(popupScroll.arguments);
	var w = dims[0];
	var h = dims[1];
	var popupwindow = window.open(URL, "_blank", "toolbar=no, location=no, status=yes, menubar=no,scrollbars=yes,width="+w+", height="+h+", resizable=no, dependent=yes");
	popupwindow.spawner = this;
}

function popupmodal(URL) {
	var dims = setPopupDimensions(popupmodal.arguments);
	var w = dims[0];
	var h = dims[1];
	var popupwindow = window.showModalDialog(URL, "status=yes, scroll=no, dialogWidth="+w+", dialogHeight="+h+", resizable=no");
	popupwindow.spawner = this;
}

function setPopupDimensions() {
	var myArgs = setPopupDimensions.arguments[0];
	if (myArgs.length == 3) {
		var w = myArgs[1];
		var h = myArgs[2];
	} else {
		var w = 500;
		var h = 500;
	}
	return(new Array(w, h));
}

function closeWindow() {
	window.parent.close();
}

// Email stuff

function ComposeEmail(user, domain, subject, linktext, myclass) {
	var line = '<a href="mailto:' + user + '@' + domain;
	if (subject) {
		line += '?subject='+subject;
	}
	line += '"';
	if (myclass) {
		line += ' class="' + myclass + '"';
	}
	line += '>';
	if (linktext) {
		line += linktext;
	} else {
		line += user + '@' + domain;
	}
	line += '</a>';
	document.write(line);
}



