function swapImg(imgDocID, imgObjName) {
	document.images[imgDocID].src = eval(imgObjName + ".src");
}

// javascript functions - RGA
function isDefined(property) {
  return (typeof property != 'undefined');
}

var W3CDOM = (isDefined(document.createElement) && isDefined(document.getElementsByTagName));
var aEvents = new Array();

function init() {
	if (!W3CDOM) return;
	loadEvents('a');
	loadEvents('area');
}

/* ******************************
 * popup scripts
 */
function loadEvents(tag) {
	var oEvent = document.getElementsByTagName(tag);
	for (var i = 0; i < oEvent.length; i++) {
		if (oEvent[i].className && oEvent[i].className == 'popup') {
			aEvents[i] = new Object();
			aEvents[i].params = 'scrollbars=1,status=0,width=570,height=740';
			oEvent[i].onclick = popWin;
			
			oEvent[i].n = i;
		}
	}
}

function popWin() {
	window.open(this.href, 'popWin', aEvents[this.n].params);
	return false;
}

/* ******************************
 * validation
 */
function limitText(oField, iLimit) {
	if (oField.value.length >= iLimit) {
		oField.value = oField.value.substring(0, iLimit);
	}
}

// produces comma delimted list of answers from checkboxes
function cb2String(oField, sAnswer) {
	if (W3CDOM) {
		var aAnswers = new Array();
		var f = document.forms[0][oField.name];

		for (var x = 0; x < f.length; x++) {
			if (f[x].checked) aAnswers.push(f[x].value);
		}
		
		document.getElementById(sAnswer).value = aAnswers.join(',');
		//alert(document.getElementById(sAnswer).value);
	}
}

function validateForm(oForm, aValidator) {
	var aProblem = new Array();
	var aOneOfEntered = new Array();
	var iOneofEntered = 0;

	for (var x = 0; x < aValidator[0].length; x++) {
		var fieldRef = oForm[aValidator[0][x]];

		//alert(fieldRef.name);
		switch (aValidator[1][x]) {
			case 'date':
				if (!isDate(fieldRef.value)) aProblem.push(aValidator[0][x]);
				break;
			case 'email':
				if (!isEmail(fieldRef.value)) aProblem.push(aValidator[0][x]);
				break;
			case 'req':
				if (!isNotEmpty(fieldRef.value)) aProblem.push(aValidator[0][x]);
				break;
			// compares <fieldName> with <fieldNameConfirm>
			case 'confirm':
				var fieldConfirm = oForm[fieldRef.name.replace(/Confirm/, '')];
				if (!isSame(fieldRef.value, fieldConfirm.value)) aProblem.push(aValidator[0][x]);
				break;
			case 'isInt':
				if (!isInt(fieldRef.value)) aProblem.push(aValidator[0][x]);
				break;
			case 'isNum':
				if (!isNum(fieldRef.value)) aProblem.push(aValidator[0][x]);
				break;
			case 'isTelNum':
				if (!isTelNum(fieldRef.value)) aProblem.push(aValidator[0][x]);
				break;
			case 'oneOfTelNum':
				if (!isTelNum(fieldRef.value)) aOneOfEntered.push(aValidator[0][x]);
				iOneofEntered++;
				break;
			case 'checked':
				if (!isChecked(fieldRef)) aProblem.push(aValidator[0][x]);
				break;
		}
	}
	
	// check 'one of' entries
	//alert('total='+iOneofEntered+', errors='+aOneOfEntered.length);
	if (aOneOfEntered.length > iOneofEntered-1) {
		for (var i = 0; i < aOneOfEntered.length; i++) {
			aProblem.push(aOneOfEntered[i]);
		}
	}

	// reset warnings
	for (var x = 0; x < aValidator[0].length; x++) {
		document.getElementById('warn_' + aValidator[0][x]).style.visibility = 'hidden';
	}

	// show warnings
	if (aProblem.length > 0) {
		for (x = 0; x < aProblem.length; x++) {
			document.getElementById('warn_' + aProblem[x]).style.visibility = 'visible';
		}

		alert(sErrorMsg);
		return false;
	} else {
		//alert('passed');
		return true;
	}
}

// date range from 01/01/2000 - 31/12/2099 - allows 31st Feb etc.
function isDate(s) {
	var pattern = /^([0][1-9]|[12]\d|[3][01])\/([0][1-9]|[1][012])\/20\d{2}$/;
	if (pattern.test(s)) return true;
	else return false;
}

function isEmail(s) {
	var pattern  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})+$/;
	if (pattern.test(s)) return true;
	else return false;
}

function isNotEmpty(s) {
	var pattern = /./;
	if (pattern.test(s)) return true;
	else return false;
}

function isSame(s1, s2) {
	if (s1 != '' && s1 == s2) return true;
	else return false;
}

// whole numbers greater than zero
function isInt(s) {
	var pattern = /^([1-9]{1,1}\d*)$/;
	if (pattern.test(s)) return true;
	else return false;
}

// whole numbers including zero
function isNum(s) {
	var pattern = /^(\d+)$/;
	if (pattern.test(s)) return true;
	else return false;
}

// telephone numbers - +()[space]
function isTelNum(s) {
	var pattern = /^([\(\)\+ 0-9]+)$/;
	if (pattern.test(s)) return true;
	else return false;
}

function isChecked(f) {
	var bChecked = false;
	
	// single checkboxes are not treated as arrays...
	if (!isDefined(f.length)) return f.checked;
	
	for (var x = 0; x < f.length; x++) {
		if (f[x].checked) bChecked = true;
	}
	
	return bChecked;
}

/* ******************************
 * submit a form via a link
 */
function submitForm(formRef) {
	obj = document.forms[formRef];
	obj.submit();
}

/* ******************************
 * call init when document has loaded
 */
if (isDefined(window.addEventListener)) {
   window.addEventListener('load', init, false);
} else if (isDefined(window.attachEvent)) {
   window.attachEvent('onload', init);
}