/*  These scripts are Copyright, Rich Harding
		http://www.csscomputing.co.uk, 2002-4
		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 noGo() {
// empty
}

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 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 + '?';
	if (cc != '') {
		doc += "cc=" + cc + '&';
	}
	doc += "subject=" + escape(subject);
	doc += "&body=" + escape(body);
	window.location = doc;
}

function checkForm(form) {
	var dF = form;
	sAlert = ''

	for (i=0;i<arrCheck.length;i++) {
		if (arrType[i] == 0) { // Text Boxes
			if (dF.elements[arrCheck[i]].value == '') {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
		}
		else if (arrType[i] == 1) { // Drop-Downs
			if (dF.elements[arrCheck[i]].length != 0) {
				if (dF.elements[arrCheck[i]][dF.elements[arrCheck[i]].selectedIndex].value == 0) {
					iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
				}
			}
		}
		else if (arrType[i] == 2) { // Radio Buttons
			if (dF.elements[arrCheck[i]].checked == false && dF.elements[arrCheck[i] + 1].checked == false) {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
		}
		else if (arrType[i] == 3) { // E-Mail Addresses
			if (dF.elements[arrCheck[i]].value == '') {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
			if (!validEmail(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = 'dummy'; break;
			}
		}
		else if (arrType[i] == 4) { // Phone
			if (dF.elements[arrCheck[i]].value == '') {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
			if (!validTel(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = 'dummy'; break;
			}
		}
		else if (arrType[i] == 5) { // Number
			if (dF.elements[arrCheck[i]].value == '') {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
			if (isNaN(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = arrAlert[i] + SITE_NUMBER; break;
			}
		}
		else if (arrType[i] == 6) { // E-Mail Addresses that can be omitted
			if (dF.elements[arrCheck[i]].value != '') {
				if (!validEmail(dF.elements[arrCheck[i]].value)) {
					iAlert = arrCheck[i]; sAlert = 'dummy'; break;
				}
			}
		}
		else if (arrType[i] == 7) { // Number that can be omitted
			if (isNaN(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = arrAlert[i] + SITE_NUMBER; break;
			}
		}
		else if (arrType[i] == 8) { // Password
			if (dF.elements[arrCheck[i]].value != dF.elements[arrCheck[i]+1].value) {
				iAlert = arrCheck[i]; sAlert = SITE_PASSWORD1; break;
			}
			if (!validPass(dF.elements[arrCheck[i]].value,dF.elements[arrCheck[i]+1].value)) {
				iAlert = arrCheck[i]; sAlert = SITE_PASSWORD2; break;
			}
		}
		else if (arrType[i] == 9) { // Phone that can be omitted
			if (dF.elements[arrCheck[i]].value != '') {
				if (!validTel(dF.elements[arrCheck[i]].value)) {
					iAlert = arrCheck[i]; sAlert = 'dummy'; break;
				}
			}
		}
		else if (arrType[i] == 10) { // Screen Name - min 6 chars
			if (!validScreen(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = SITE_SCREEN; break;
			}
		}
		else if (arrType[i] == 11) { // Date
			if (dF.elements[arrCheck[i]].value == '') {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
			if (!validDate(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = 'dummy'; break;
			}
		}
		else if (arrType[i] == 12) { // Date that can be omitted
			if (dF.elements[arrCheck[i]].value != '') {
				if (!validDate(dF.elements[arrCheck[i]].value)) {
					iAlert = arrCheck[i]; sAlert = 'dummy'; break;
				}
			}
		}
		else if (arrType[i] == 13) { // Decimal
			if (dF.elements[arrCheck[i]].value == '') {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
			if (!validDecimal(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = SITE_INVALID + arrAlert[i] + '.'; break;
			}
		}
		else if (arrType[i] == 14) { // Single Check Box
			if (dF.elements[arrCheck[i]].checked == false) {
				iAlert = arrCheck[i]; sAlert = arrAlert[i] + '.'; break;
			}
		}
		else if (arrType[i] == 15) { // Password that can be omitted
			if (dF.elements[arrCheck[i]].value != '' && dF.elements[arrCheck[i]+1].value != '') {
				if (dF.elements[arrCheck[i]].value != dF.elements[arrCheck[i]+1].value) {
					iAlert = arrCheck[i]; sAlert = SITE_PASSWORD1; break;
				}
				if (!validPass(dF.elements[arrCheck[i]].value,dF.elements[arrCheck[i+1]].value)) {
					iAlert = arrCheck[i]; sAlert = SITE_PASSWORD2; break;
				}
			}
		}
		else if (arrType[i] == 16) { // Time
			if (dF.elements[arrCheck[i]].value == '') {
				iAlert = arrCheck[i]; sAlert = SITE_PLEASE_TELL + arrAlert[i] + '.'; break;
			}
			if (!validTime(dF.elements[arrCheck[i]].value)) {
				iAlert = arrCheck[i]; sAlert = 'dummy'; break;
			}
		}
		else if (arrType[i] == 17) { // Time that can be omitted
			if (dF.elements[arrCheck[i]].value != '') {
				if (!validTime(dF.elements[arrCheck[i]].value)) {
					iAlert = arrCheck[i]; sAlert = 'dummy'; break;
				}
			}
		}
	}

	if (sAlert.length == 0) {
		dF.submit();
	}
	else {
		if (sAlert != 'dummy') {
			alert(sAlert);
		}
		dF.elements[iAlert].focus();
	}
}

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 validScreen(fldVal) {
	if (fldVal.length < 6) { // >
		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 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 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 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 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;
}

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) {
				if (j == 0 && temp != '-') {
	      	return false;
				}
				else {
	      	return false;
				}
			}
		}
		return true;
	}
	else {
   	return true;
	}
}

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 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 infoWindow(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);
	infWindow = window.open(fN, 'infWin', 'toolbar=no,location=no,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 reFocus(winObj) {
	winObj.focus();
}

function loadMainFromPopup(htmlFile) {
	window.opener.location = htmlFile;
}

function confDel(sMsg,lID1,lID2,lStep) {
	if (confirm('Are you sure you want to ' + sMsg + '?')) {
		self.location ='?step=' + lStep + '&id=' + lID1 + '&id2=' + lID2;
	}
}

function showInfo(sText) {
	alert(sText);
}

function jumpSelect(fE,lID,lStep) {
	var lThis = fE[fE.selectedIndex].value;
	if (lThis != -1) {
		self.location ='?step=' + lStep + '&id=' + lID + '&ddid=' + lThis;
	}
}

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 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 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 clearDD(eDD) {
	eDD.options.length = 0;
}

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 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 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;
}