/*  These scripts are Copyright, Rich Harding
		http://www.csscomputing.co.uk, 2002-8
		You may re-use them free of charge
		as long as you retain this notice   */

// Find out what browser functionality is available:

var NN4 = document.layers? true : false; //Netscape Navigator 4.x.
var IE4 = document.all? true : false; // IE version 4 and above.
var XX7 = document.getElementById? true : false; // Up to date browsers.

function checkFile(lFileCount) {
	if (lFileCount==null || lFileCount=="") {
		lFileCount = 6;
	}
	blnPass = true;
	lngCount = 0;
	var strTest;
	strMsg = 'You must choose at least one file to upload!';
	for (j=3;j<=(lFileCount + 2);j++) {
		iPos = 0;
		strTest = document.frmUpload.elements[j].value
		if (strTest != '') {
			lngCount++;
			for (l=0;l<strTest.length;l++) {
				if (strTest.charCodeAt(l) == 92) {
					iPos = l
				}
			}
			strTest = strTest.slice(iPos + 1);
			if (!validFileChars(strTest)) { // <
				strMsg = 'Filename ' + (j - 2) + ' can only contain a-z, A-Z, 0-9, underscore and a single full stop before the file extension (does not apply to the preceding directory $structure).'
				document.frmUpload.elements[j].select();
				document.frmUpload.elements[j].focus();
				blnPass = false
				break;
			}
		}
	}
	if (blnPass && (lngCount > 0)) {
		alert('This process can take some time for large files. Please be patient and do not click Upload File(s) more than once. Thanks.')
		document.frmUpload.submit();
	}
	else {
		alert(strMsg);
	}
}

// Validation types for checkForm
var FORM_TEXT = 0;               // Text Boxes
var FORM_DD = 1;                 // Drop-Downs
var FORM_RADIO = 2;              // Radio Buttons
var FORM_EMAIL = 3;              // E-Mail Addresses
var FORM_EMAIL_OPTIONAL = 6;     // E-Mail Addresses that can be omitted
var FORM_PHONE = 4;              // Phone
var FORM_PHONE_OPTIONAL = 9;     // Phone that can be omitted
var FORM_NUMBER = 5;             // Number
var FORM_NUMBER_OPTIONAL = 7;    // Number that can be omitted
var FORM_PASSWORD = 8;           // Password
var FORM_SCREEN_NAME = 10;       // Screen Name - min 6 chars
var FORM_DATE = 11;              // Date
var FORM_DATE_OPTIONAL = 12;     // Date that can be omitted
var FORM_DECIMAL = 13;           // Decimal
var FORM_CHECKBOX = 14;          // Single Check Box
var FORM_PASSWORD_OPTIONAL = 15; // Password that can be omitted
var FORM_TIME = 16;              // Time
var FORM_TIME_OPTIONAL = 17;     // Time that can be omitted
var FORM_SORTCODE = 18;          // Bank Sort Code
var FORM_DATE_YYYY = 19;         // Date (4-digit year)
var FORM_DATE_3DD = 20;          // Three-DD Date - remember it's mm/dd/yyyy
var FORM_POSTCODE = 22;          // Post Code
var FORM_POSTCODE_AUS = 23;      // Number - 4 digits or can be omitted
var FORM_PHONE_9 = 24;           // Phone - minimum 9 digit
var FORM_DYNAMIC_SELECT = 25;    //
var FORM_YEAR = 26;              // Year. 4 digits.
var FORM_INTEGER = 27;           // Integer

function checkForm(form) {
	var dF = form;
	sAlert = ''

	// alert(arrCheck[1]);
	for (i=0;i<arrCheck.length;i++) {
		if (sAlert.length != 0) {
			break;
		}

		// New functionality to conditionally check against other elements:
		$bCheck = true;
		$arrCheckSplit = arrCheck[i].toString().split(":");
		$iThisEle = parseInt($arrCheckSplit[0]);
		if ($arrCheckSplit.length > 1) {
			// Check the value of the answer which is being depended upon:
			$iDepEle = parseInt($arrCheckSplit[1]);
			// alert($iDepEle);
			// Get the element type (remember that radio returns undefined):
			switch (dF.elements['answer' + $iDepEle].type) {
			case undefined:
				$strEleType = dF.elements['answer' + $iDepEle][0].type;
				break;
			default:
				$strEleType = dF.elements['answer' + $iDepEle].type;
				break;
			}
			switch ($strEleType) {
			case "radio":
				for (e=0;e<dF.elements['answer' + $iDepEle].length;e++) {
					if (dF.elements['answer' + $iDepEle][e].checked == true) {
						if (dF.elements['answer' + $iDepEle][e].value != 1) {
							$bCheck = false;
							break;
						}
					}
				}
				break;
			default:
				break;
			}
		}

		if ($bCheck) {
			switch (arrType[i]) {
			case 0: // Text Boxes
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				break;
			case 1: // Drop-Downs
				if (dF.elements[$iThisEle].length != 0) {
					if (dF.elements[$iThisEle][dF.elements[$iThisEle].selectedIndex].value == 0) {
						iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
					}
				}
				break;
			case 2: // Radio Buttons
				if (dF.elements[$iThisEle].checked == false && dF.elements[$iThisEle + 1].checked == false) {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				break;
			case 3: // E-Mail Addresses
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validEmail(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 4: // Phone
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validTel(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 5: // Number
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (isNaN(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = arrAlert[i] + SITE_NUMBER;
				}
				break;
			case 6: // E-Mail Addresses that can be omitted
				if (dF.elements[$iThisEle].value != '') {
					if (!validEmail(dF.elements[$iThisEle].value)) {
						iAlert = $iThisEle; sAlert = 'dummy';
					}
				}
				break;
			case 7: // Number that can be omitted
				if (isNaN(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = arrAlert[i] + SITE_NUMBER;
				}
				break;
			case 8: // Password
				if (dF.elements[$iThisEle].value != dF.elements[$iThisEle+1].value) {
					iAlert = $iThisEle; sAlert = SITE_PASSWORD1;
				}
				if (!validPass(dF.elements[$iThisEle].value,dF.elements[$iThisEle+1].value)) {
					iAlert = $iThisEle; sAlert = SITE_PASSWORD2;
				}
				break;
			case 9: // Phone that can be omitted
				if (dF.elements[$iThisEle].value != '') {
					if (!validTel(dF.elements[$iThisEle].value)) {
						iAlert = $iThisEle; sAlert = 'dummy';
					}
				}
				break;
			case 10: // Screen Name - min 6 chars
				if (!validScreen(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = SITE_SCREEN;
				}
				break;
			case 11: // Date
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validDateNew(dF.elements[$iThisEle].value,2)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 12: // Date that can be omitted
				if (dF.elements[$iThisEle].value != '') {
					if (!validDateNew(dF.elements[$iThisEle].value,2)) {
						iAlert = $iThisEle; sAlert = 'dummy';
					}
				}
				break;
			case 13: // Decimal
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validDecimal(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = SITE_INVALID + arrAlert[i] + '.';
				}
				break;
			case 14: // Single Check Box
				if (dF.elements[$iThisEle].checked == false) {
					iAlert = $iThisEle; sAlert = arrAlert[i] + '.';
				}
				break;
			case 15: // Password that can be omitted
				if (dF.elements[$iThisEle].value != '' && dF.elements[$iThisEle+1].value != '') {
					if (dF.elements[$iThisEle].value != dF.elements[$iThisEle+1].value) {
						iAlert = $iThisEle; sAlert = SITE_PASSWORD1;
					}
					if (!validPass(dF.elements[$iThisEle].value,dF.elements[arrCheck[i+1]].value)) {
						iAlert = $iThisEle; sAlert = SITE_PASSWORD2;
					}
				}
				break;
			case 16: // Time
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validTime(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 17: // Time that can be omitted
				if (dF.elements[$iThisEle].value != '') {
					if (!validTime(dF.elements[$iThisEle].value)) {
						iAlert = $iThisEle; sAlert = 'dummy';
					}
				}
				break;
			case 18: // Bank Sort Code
				if (!validSortCode(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 19: // Date (4-digit year)
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validDateNew(dF.elements[$iThisEle].value,4)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 20: // Three-DD Date - remember it's mm/dd/yyyy
	//			var strDate1 = new Date(dF.elements[$iThisEle + 1][dF.elements[$iThisEle + 1].selectedIndex].value + '/' + dF.elements[$iThisEle][dF.elements[$iThisEle].selectedIndex].value + '/' + dF.elements[$iThisEle + 2][dF.elements[$iThisEle + 2].selectedIndex].value + ' 00:00');
	//			var strDate2 = strDate1.toString();
	//			var strDate2_Arr = strDate2.split(' ');
	//			if (parseInt(strDate2_Arr[2]) - parseInt(dF.elements[$iThisEle][dF.elements[$iThisEle].selectedIndex].value) != 0) {
				if (!validDateMac(dF.elements[$iThisEle][dF.elements[$iThisEle].selectedIndex].value,dF.elements[$iThisEle + 1][dF.elements[$iThisEle + 1].selectedIndex].value,dF.elements[$iThisEle + 2][dF.elements[$iThisEle + 2].selectedIndex].value)) {
					iAlert = $iThisEle; sAlert = 'This is not a valid Date!';
				}
				break;
			case 22: // Post Code
				if (!validPostcode(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 23: // Number - 4 digits or can be omitted
				$lRequired = 0;
				$lNumLength = 4;
				if (!validNumLength(dF.elements[$iThisEle].value, $lRequired, $lNumLength)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 24: // Phone - minimum 9 digit
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validTel(dF.elements[$iThisEle].value, 9)) {
					iAlert = $iThisEle; sAlert = 'dummy';
				}
				break;
			case 27: // Integer
				if (dF.elements[$iThisEle].value == '') {
					iAlert = $iThisEle; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.';
				}
				if (!validateNos(dF.elements[$iThisEle].value)) {
					iAlert = $iThisEle; sAlert = arrAlert[i] + SITE_INTEGER;
				}
				break;
			case 28: // Three-DD Date that can be omitted - remember it's mm/dd/yyyy
				if (!(dF.elements[$iThisEle][dF.elements[$iThisEle].selectedIndex].value == 'dd' && dF.elements[$iThisEle + 1][dF.elements[$iThisEle + 1].selectedIndex].value == 'mmm' && dF.elements[$iThisEle + 2][dF.elements[$iThisEle + 2].selectedIndex].value == 'yyyy')) {
					if (!validDateMac(dF.elements[$iThisEle][dF.elements[$iThisEle].selectedIndex].value,dF.elements[$iThisEle + 1][dF.elements[$iThisEle + 1].selectedIndex].value,dF.elements[$iThisEle + 2][dF.elements[$iThisEle + 2].selectedIndex].value)) {
						iAlert = $iThisEle; sAlert = 'This is not a valid Date!';
					}
				}
				break;
			}
		}
	}

	if (sAlert.length == 0) {
//		alert('Passed: Submit');
		dF.submit();
	}
	else {
		if (sAlert != 'dummy') {
			alert(sAlert);
		}
		dF.elements[iAlert].focus();
	}
}

function confDel(sMsg,lID1,lID2,lStep,sStep) {
	if (sStep==null || sStep=="") {
		sStep = 'step';
	}
	if (confirm('Are you sure you want to ' + sMsg + '?')) {
		self.location ='?' + sStep + '=' + lStep + '&id=' + lID1 + '&id2=' + lID2;
	}
}

function clearDD(eDD) {
	eDD.options.length = 0;
}

function createMail(who,what,where,why) {

	var strWhere = where;
	if (strWhere == '') { strWhere = MAIL_DOMAIN; }

	var strWhat = what;
	if (strWhat == '') { strWhat = 'E-Mail from ' + MAIL_SITENAME + ' Website'; }

	var strWhy = why;

	var strTo = '';
	var strCc = '';

	var strWho = who;
	if (strWho == '') {
		strTo = MAIL_WEBMASTER;
		strTo = strTo + '@' + MAIL_DOMAIN;
		strWhat = 'Incorrect mail link on website';
		strWhy = 'Please tell the webmaster where you found this link as it is incorrectly formatted.';
	}
	else {
		var lngComma = strWho.indexOf(',')
		if (lngComma > 0) {
			var strAddy = strWho.split(',');
			var strDom = strWhere.split(',');
			for (x=0;x<strAddy.length;x++) {
				if (strDom[x] == null) { strDom[x] = strDomain; }
				if (x == 0) {
					strTo = strAddy[x] + '@' + strDom[x];
				}
				else {
					if (x == 1) {
						strCc = strAddy[x] + '@' + strDom[x];
					}
					else {
						strCc = strCc + ',' + strAddy[x] + '@' + strDom[x];
					}
				}
			}
		}
		else {
			strTo = strWho + '@' + strWhere;
		}
	}

	var to = strTo;
	var cc = strCc;
	var subject = strWhat;
	var body = strWhy;
	var doc = "mailto:" + to + "?subject=" + escape(subject);
	if (cc != '') {
		doc += "&cc=" + cc;
	}
	if (body != '') {
		doc += "&body=" + escape(body);
	}
	window.location = doc;
}

function filterDD(oText,oDD) {
	if (oText.value != '') {
		strTV = oText.value.toUpperCase();
		if (ddText.length > 0) {
			clearDD(oDD);
			for (i=0;i<ddText.length;i++) {
				blnAdd = false;
				switch (i) {
				case 0: // Always add:
					blnAdd = true;
					break;
				default: // Check for strTV
					if (ddText[i].toUpperCase().indexOf(strTV,0) != -1) {
						blnAdd = true;
					}
					break;
				}
				if (blnAdd) {
					oDD.options[oDD.options.length] = new Option(ddText[i], ddID[i], false, false);
				}
			}
		}
	}
}

function formSubmit(form, sParams) {
	var dF = form;
	arrParams = sParams.split("&");
	for (i=0;i<arrParams.length;i++) {
		arrParam = arrParams[i].split("=");
		switch (arrParam.length) {
		case 2:
//			alert(arrParam[0] + '=' + arrParam[1]);
			dF.elements[arrParam[0]].value = arrParam[1];
//			alert(dF.elements[arrParam[0]].value);
			break;
		}
	}
	dF.submit();
}

function futureDate(year, month, day) {
	// Returns true if the supplied date is in the future. False otherwise.
	var today  = new Date();
	var date = new Date();
	date.setFullYear(year,month-1,day);	// Month is between 0 and 11.
	return date > today;
}

function getHeight() {
	if (XX7 || IE4) { iHeight = document.body.clientHeight; }
	else if (NN4) { iHeight = window.innerHeight; }
	return Math.max(iHeight,minH);
}

function getWidth() {
	if (XX7 || IE4) { iWidth = document.body.clientWidth; }
	else if (NN4) { iWidth = window.innerWidth; }
	return Math.max(iWidth, minW);
}

function getDIVHeight(divID) {
	if (XX7) { return document.getElementById(divID).offsetHeight; }
	else if (IE4) { return document.all[divID].style.height; }
	else if (NN4) { return document.layers[divID].height; }
}

function getDIVLeft(divID) {
	if (XX7) { return document.getElementById(divID).style.left; }
	else if (IE4) { return document.all[divID].style.left; }
	else if (NN4) { return document.layers[divID].left; }
}

function getDIVTop(divID) {
	if (XX7) { return document.getElementById(divID).style.top; }
	else if (IE4) { return document.all[divID].style.top; }
	else if (NN4) { return document.layers[divID].top; }
}

function getDIVWidth(divID) {
	if (XX7) { return document.getElementById(divID).offsetWidth; }
	else if (IE4) { return document.all[divID].style.width; }
	else if (NN4) { return document.layers[divID].width; }
}

function imgWindow(imgName) {

	var xPos = (screen.width - 100) / 2
	var yPos = (screen.height - 100) / 2

	imgWin = window.open('/imgauto.php?img=' + imgName, 'iWin', 'toolbar=no,location=no,scrollbars=yes,width=100,height=100,left=' + xPos + ',top=' + yPos)

	setTimeout('reFocus(imgWin)', '500')

}

function infoWindow(htmlFile,w,h,t) {
	var r = Math.random();
	var fN = htmlFile;
	if (fN.indexOf('?') == -1) {
		fN += '?r=' + r;
	}
	else {
		fN += '&r=' + r;
	}
	if (w==null || w=="") {
		w = 500;
	}
	if (h==null || h=="") {
		h = 500;
	}

	if (t==null || t=="" || t==0) {
		t = 'no';
	}
	else {
		t = 'yes';
	}
	var xPos = screen.width - (w + 10);
	var ranWin = 1;
	var myWin = window.name;
	if (myWin.indexOf('infWin') != -1) {
		myNum = myWin.substr(6);
		while (ranWin == myNum) {
			ranWin = Math.round(Math.random()*1000);
		}
	}
	infWindow = window.open(fN, 'infWin' + ranWin, 'toolbar=' + t + ',location=' + t + ',resizable=yes,status=yes,scrollbars=yes,width='+w+',height='+h+',left='+xPos+',top=0')
	if (infWindow != null) {
		infWindow.resizeTo(w,h);
		infWindow.moveTo(xPos,0);
		setTimeout('reFocus(infWindow)', '1000')
	}
	else {
		if (IE4) {
			sAlert = POPUP_REASON + ' Your Internet Explorer browser or other software has blocked a necessary pop-up window from this site. Please enable pop-ups for this site.';
		}
		else if (XX7 || NN4) {
			sAlert = POPUP_REASON + ' Your browser or other software has blocked a necessary pop-up window from this site. Please enable pop-ups for this site.';
		}
		alert(sAlert);
	}
}

function insertAtCursor(myField, myValue) {
	// IE support
	if (document.selection) {
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
	}
	// MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.value = myField.value.substring(0, startPos)
			+ myValue
			+ myField.value.substring(endPos, myField.value.length);
	}
	else {
		myField.value += myValue;
	}

	// calling the function
	// insertAtCursor(document.formName.fieldName, ‘this value’);
}

function insertSampleMovie(sLoc,lW,lH) {
	document.write('<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0" align="middle" width="' + lW + '" height="' + lH + '">\n');
	document.write('<param name="src" value="' + sLoc + '" />\n');
	document.write('<param name="autoplay" value="true"/>\n');
	document.write('<embed src="' + sLoc + '" autoplay="true" align="middle" bgcolor="white" pluginspage="http://www.apple.com/quicktime/download/"></embed>\n');
	document.write('</object>\n');
}

function jumpSelect(fE,lID,lStep) {
	var lThis = fE[fE.selectedIndex].value;
	if (lThis != -1) {
		self.location ='?step=' + lStep + '&id=' + lID + '&ddid=' + lThis;
	}
}

function loadMainFromPopup(htmlFile, reload) {
	if (reload==null) {
		window.opener.location = htmlFile;
	}
	else {
		window.opener.reload();
	}
}

function noGo() {
// empty
}

function nReplace(sVal,need,hay){
	var sHold = sVal;
	var j = sHold.indexOf(need);
	while (j > -1) {
		sHold = sHold.replace(need, hay);
		j = sHold.indexOf(need, j + hay.length + 1);
	}
	return sHold;
}

function popDD(eDD,aNames,aVals) {
	for(i=0;i<aNames.length;i++) {
		newOpt = new Option(aNames[i], aVals[i], false, false);
		eDD.options[eDD.length] = newOpt;
	}
}

function positionDIV(divID,divLeft,divTop,divWidth,divHeight) {
	if (XX7) {
		if (divLeft != -1) { document.getElementById(divID).style.left = divLeft; }
		if (divTop != -1) { document.getElementById(divID).style.top = divTop; }
		if (divWidth != -1) { document.getElementById(divID).style.width = divWidth; }
		if (divHeight != -1) { document.getElementById(divID).style.height = divHeight; }
	}
	else if (IE4) {
		if (divLeft != -1) { document.all[divID].style.left = divLeft; }
		if (divTop != -1) { document.all[divID].style.top = divTop; }
		if (divWidth != -1) { document.all[divID].style.width = divWidth; }
		if (divHeight != -1) { document.all[divID].style.height = divHeight; }
	}
	else if (NN4) {
		if (divLeft != -1) { document.layers[divID].left = divLeft; }
		if (divTop != -1) { document.layers[divID].top = divTop; }
		if (divWidth != -1) { document.layers[divID].width = divWidth; }
		if (divHeight != -1) { document.layers[divID].height = divHeight; }
	}
}

function printWindow(htmlFile,w,h) {
	var r = Math.random();
	var fN = htmlFile;
	if (fN.indexOf('?') == -1) {
		fN += '?r=' + r;
	}
	else {
		fN += '&r=' + r;
	}
	if (w==null || w=="") {
		w = 500;
	}
	if (h==null || h=="") {
		h = 500;
	}
	var xPos = screen.width - (w + 10);
	prtWindow = window.open(fN, 'printWin', 'toolbar=no,location=no,resizable=yes,menubar=yes,status=no,scrollbars=yes,width=657,height=800,left='+xPos+',top=0');
	if (prtWindow != null) {
		prtWindow.resizeTo(w,h);
		prtWindow.moveTo(xPos,0);
		setTimeout('reFocus(prtWindow)', '1000')
	}
	else {
		if (IE4) {
			sAlert = POPUP_REASON + ' Your Internet Explorer browser or other software has blocked a necessary pop-up window from this site. Please enable pop-ups for this site.';
		}
		else if (XX7 || NN4) {
			sAlert = POPUP_REASON + ' Your browser or other software has blocked a necessary pop-up window from this site. Please enable pop-ups for this site.';
		}
		alert(sAlert);
	}
}

function reFocus(winObj) {
	winObj.focus();
}

function setDDbyIdx(eDD,iSet) {
	if (iSet != -1) {
		eDD.selectedIndex = iSet;
	}
}

function setDDbyTxt(eDD,sSet,bIpt) {
	if (sSet != -1) {
		var sIpt;
		if (bIpt == true) {
			sSet = nReplace(sSet.toUpperCase(),' ','');
		}
		for (i=0;i<eDD.length;i++) {
			sIpt = eDD[i].text;
			if (bIpt == true) {
				sIpt = nReplace(sIpt.toUpperCase(),' ','');
			}
			if (sIpt == sSet) {
				eDD.selectedIndex = i;
				break;
			}
		}
	}
}

function setDDbyPartTxt(eDD,sSet,bIpt) {
	var uI = -1;
	var uC = 0;
	if (sSet != -1) {
		var sIpt;
		if (bIpt == true) {
			sSet = nReplace(sSet.toUpperCase(),' ','');
		}
		for (i=0;i<eDD.length;i++) {
			sIpt = eDD[i].text;
			if (bIpt == true) {
				sIpt = nReplace(sIpt.toUpperCase(),' ','');
			}
			if (sIpt == sSet) {
				uI = i;
				break;
			}
			else {
				for (c=uC;c<sIpt.length;c++) {
					if (sSet.substring(0,c) == sIpt.substring(0,c)) {
						uI = i;
					}
				}
			}
		}
	}
	if (uI.length != -1) {
		eDD.selectedIndex = uI;
	}
}

function setDDbyVal(eDD,iSet) {
	if (iSet != -1) {
		eDD.value = iSet;
	}
}

function setEles(fThis,eFrom,eTo,lType) {
	switch (lType) {
	case 1: // Use SQs to set vals from one set of eles from another:
		for (i=0;i<eFrom.length;i++) {
			// Find the Target Element:
			lTo = -1;
			for (e=0;e<fThis.elements.length;e++) {
				if (fThis.elements[e].name.indexOf('sqid1') > -1 ) {
					if (fThis.elements[e].value == eTo[i]) {
						lTo = e + 6;
					}
				}
				if (fThis.elements[e].name.indexOf('sqid2') > -1 ) {
					if (fThis.elements[e].value == eTo[i]) {
						lTo = e + 5;
					}
				}
			}

			// Exit if not found:
			if (lTo == -1) {
				return false;
			}

			switch (eFrom[i]) {
			case "0":
				sSet = '';
				break;
			default:
				// Find the Source Element:
				lFrom = 0;
				for (e=0;e<fThis.elements.length;e++) {
					if (fThis.elements[e].name.indexOf('sqid1') > -1 ) {
						if (fThis.elements[e].value == eFrom[i]) {
							lFrom = e + 6;
						}
					}
					if (fThis.elements[e].name.indexOf('sqid2') > -1 ) {
						if (fThis.elements[e].value == eFrom[i]) {
							lFrom = e + 5;
						}
					}
				}
				sSet = fThis.elements[lFrom].value;
				break;
			}
			// Set the value:
			fThis.elements[lTo].value = sSet;
		}
	}
}

function showDIV(sNo) {
	if (sNo < lngNC1) { // >
		if (XX7) {
			if (iDIV != -1) {
				document.getElementById('dd' + iDIV).style.visibility = 'hidden';
			}
			if (sNo != -1) {
				document.getElementById('dd' + sNo).style.visibility = 'visible';
			}
		}
		else if (IE4) {
			if (iDIV != -1) {
		   	document.all['dd' + iDIV].style.visibility = 'hidden';
			}
			if (sNo != -1) {
	   		document.all['dd' + sNo].style.visibility = 'visible';
			}
		}
		else if (NN4) {
			if (iDIV != -1) {
		   	document.layers['dd' + iDIV].visibility = 'hide';
			}
			if (sNo != -1) {
	   		document.layers['dd' + sNo].visibility = 'show';
			}
		}
		iDIV = sNo
	}
}

function showInfo(sText) {
	alert(sText);
}

function showNothing() {
	var tNew = new Date();
	if ((tNew - tNow) > 5000) {
		showDIV(-1);
	}
}

function toggleDIV(divName,bShow) {
	if (XX7) {
		if (bShow) {
			document.getElementById(divName).style.visibility = 'visible';
		}
		else {
			document.getElementById(divName).style.visibility = 'hidden';
		}
	}
	else if (IE4) {
		if (bShow) {
			document.all[divName].style.visibility = 'visible';
		}
		else {
			document.all[divName].style.visibility = 'hidden';
		}
	}
	else if (NN4) {
		if (bShow) {
			document.layers[divName].visibility = 'show';
		}
		else {
			document.layers[divName].visibility = 'hide';
		}
	}
}

function validCardNo(fldVal) {
	var pattern = /\d{13,16}/;

	if(fldVal.match(pattern)) {
		return true;
	}
	else {
		alert('Card number must be 13 to 16 digits, with no spaces or other characters present.');
		return false;
	}
}

function validCardDate(fldVal) {
	if(fldVal.match(/\d{4}/)) {
		return true;
	}
	else {
		alert('Expiry date must number must be 4 digits - MMYY');
		return false;
	}
}

function validChars(fldVal) {
	vChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
	for (j=0;j<fldVal.length;j++) {
		if (vChars.indexOf(fldVal.charAt(j)) == -1) {
			ivC = fldVal.charAt(j)
			if (ivC == ' ') {
				ivC = 'Spaces'
			}
			return false
			break;
		}
	}
	return true
}

function validCharsName(fldVal) {
	vChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -'
	for (j=0;j<fldVal.length;j++) {
		if (vChars.indexOf(fldVal.charAt(j)) == -1) {
			return false
			break;
		}
	}
	return true
}

function validDate(dteVal) {
	var msg = ''
	var ok = true
	var d1 = dteVal.slice(0, 2)
	var m1 = dteVal.slice(3, 5)
	var y1 = dteVal.slice(6, 8)
	var sa1 = dteVal.slice(2, 3)
	var sb1 = dteVal.slice(5, 6)
	if (isNaN(d1) || isNaN(m1) || isNaN(y1)) {
		ok = false;
	}
	if (sa1 != '\/' || sb1 != '\/' ) {
		ok = false;
	}
	if (!ok) {
		alert(SITE_DATE)
 		return false;
	}
	return true;
}

function validDateNew(dteVal,lY) {
	if (lY == 2) {
		var datePat = /^(\d{2})(\/|-)(\d{2})(\/|-)(\d{2})$/;
	}
	else if (lY == 4) {
		var datePat = /^(\d{2})(\/|-)(\d{2})(\/|-)(\d{4})$/;
	}
	else {
		alert("Date Checker incorrectly configured.");
		return false;
	}

	var matchArray = dteVal.match(datePat); // is the format ok?

	if (matchArray == null) {
		if (lY == 2) {
			alert("Please enter date as either dd/mm/yy or dd-mm-yy");
		}
		else if (lY == 4) {
			alert("Please enter date as either dd/mm/yyyy or dd-mm-yyyy");
		}
		return false;
	}
	return validDateNumerical(matchArray[5], matchArray[3], matchArray[1]);
}

function validDateMac(sD,sM,sY) {
	if (sD.charAt(0) == "0") {
		sD = sD.charAt(1)
	}
	if (sM.charAt(0) == "0") {
		sM = sM.charAt(1)
	}
	if (isNaN(sD) || isNaN(sM) || isNaN(sY)) {
		return false;
	}
	lD = parseInt(sD);
	lM = parseInt(sM);
	lY = parseInt(sY);
	if (lD > 31 || lM > 12 || lY > 2030) {
		return false;
	}
	switch (lM) {
	case 4:
	case 6:
	case 9:
	case 11:
		if (lD == 31) {
			return false;
		}
		break;
	case 2:
		var isLeap = (lY % 4 == 0 && (lY % 100 != 0 || lY % 400 == 0));
		if (lD > 29 || (lD == 29 && !isLeap)) {
			return false;
		}
		break;
	}
	return true; // date is valid
}

function validDateNumerical(year, month, day) {

	if (month < 1 || month > 12) { // check month range
		alert("Month must be between 1 and 12.");
		return false;
	}

	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		return false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn`t have 31 days!");
		return false;
	}

	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)) {
			alert("February " + year + " doesn't have " + day + " days!");
			return false;
		}
	}
	return true; // date is valid
}

function validDecimal(fldVal) {
	validChars = "0123456789.,"
	for (k=1; k<fldVal.length; k++) {
		testChar = fldVal.charAt(k)
		if (validChars.indexOf(testChar,0) == -1) {
			return false;
		}
	}
	return true;
}

function validEmail(strVal) {
	strInv = ' /:,;'
	for (l=0;l<strInv.length;l++) { // >
		strBad = strInv.charAt(l)
		if (strVal.indexOf(strBad,0) > -1) { // <
			alert(SITE_EMAIL1 + strBad + '\'')
   		return false;
		}
	}
	atPos = strVal.indexOf('@',1)
	if (atPos == -1) {
		alert(SITE_EMAIL2)
 		return false;
	}
	if (strVal.indexOf('@',atPos+1) > -1) { // <
		alert(SITE_EMAIL3)
		return false;
	}
	dotPos = strVal.indexOf('.',atPos)
	if (dotPos == -1) {
		alert(SITE_EMAIL4)
		return false;
	}
	if (dotPos+3 > strVal.length) { // <
		alert(SITE_EMAIL5)
		return false;
	}
	return true;
}

function validFileChars(fldVal) {
	vChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._'
	for (k=0;k<fldVal.length;k++) {
		if (vChars.indexOf(fldVal.charAt(k)) == -1) {
			ivC = fldVal.charAt(k)
			if (ivC == ' ') {
				ivC = 'Spaces'
			}
			return false
			break;
		}
	}
	return true
}

function validateNos(fldVal) {
	if (fldVal != '') {
   	var valid = '0123456789'
      var temp;
		for (j=0; j<fldVal.length; j++) { // >
      	temp = '' + fldVal.substring(j, j+1);
         if (valid.indexOf(temp) == -1) {
         	return false
			}
		}
		return true
	}
	else {
     	return true
	}
}

function validNumLength(strVal, lRequired, lNumLength) {
	if (lRequired == 0 && strVal.length == 0) {
		return true;
	}
	if (strVal.length < lNumLength) {
	  alert(arrAlert[i] + SITE_LENGTH1 + lNumLength + SITE_LENGTH3)
		return false;
	}
	validChars = " 0123456789"
	for (k=1; k<strVal.length; k++) {
		testChar = strVal.charAt(k)
		if (validChars.indexOf(testChar,0) == -1) {
	    alert(arrAlert[i] + SITE_NUMBER)
			return false;
		}
	}
	return true;
}

function validPass(fldVal) {
	vC1 = 'abcdefghijklmnopqrstuvwxyz'; vC2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; vC3 = '0123456789'
	lng1 = 0; lng2 = 0; lng3 = 0;
	for (j=0;j<fldVal.length;j++) {
		if (vC1.indexOf(fldVal.charAt(j)) != -1) {
			lng1++
		}
		else if (vC2.indexOf(fldVal.charAt(j)) != -1) {
			lng2++
		}
		else if (vC3.indexOf(fldVal.charAt(j)) != -1) {
			lng3++
		}
		else {
			return false;
			break;
		}
	}
	if (lng1 == 0 || lng2 == 0 || lng3 == 0) {
		return false
	}
	else {
		return true
	}
}

function validScreen(fldVal) {
	if (fldVal.length < 6) { // >
		return false;
	}
	return true;
}

function validSortCode(fldVal) {
	if (fldVal.length < 6) { // >
		alert(SITE_SORT_CODE);
		return false;
	}
	if (isNaN(fldVal)) { // >
		alert(SITE_SORT_CODE);
		return false;
	}
	return true;
}

function validTel(strVal) {
	if (strVal.charAt(0) != '0' && strVal.charAt(0) != '+') {
		alert(SITE_TELNO1)
		return false;
	}
	validChars = " 0123456789-/"
	for (k=1; k<strVal.length; k++) {
		testChar = strVal.charAt(k)
		if (validChars.indexOf(testChar,0) == -1) {
			alert(SITE_TELNO2 + testChar)
			return false;
		}
	}
	if (strVal.length < 10) {
		alert(SITE_TELNO3)
		return false;
	}
	return true;
}

function validTime(sTime) {
	var msg = ''
	var ok = true
	var h1 = sTime.slice(0, 2)
	var m1 = sTime.slice(3, 5)
	var sa1 = sTime.slice(2, 3)
	if (isNaN(h1) || isNaN(m1)) {
		ok = false;
	}
	else {
		if (h1 < 0 || h1 > 23) {
			ok = false;
		}
		if (m1 < 0 || m1 > 59) {
			ok = false;
		}
	}
	if (sa1 != ':') {
		ok = false;
	}
	if (!ok) {
		alert(SITE_TIME)
 		return false;
	}
	return true;
}
