<!--
/* Use this general function to help with Validation:

Parameters:
	obj : the Object to be Validated.
	msg : The message to be displayed to the user upon validation.
	type : The type of validation to take place.
		0 : Plain Text, must have a value
		1 : e-Mail Address, must have @ and ., and must not contain invalid characters
		2 : Radio Buttons, must have one value selected
		3 : Must be Numeric
		4 : The checkbox obj must be checked
		5 : This must be a valid telephone number
		6 : Validates Date Format
		7 : Validates Time
		8 : Validates Credit Card
		9 : Validates a URL
		10: Validates a DropDown Box (added by Riaan van Dyk)
		11: Validates whether string contains a number (added by Riaan van Dyk)
*/		

function ValidationMessage(obj, msg, type) {
	switch (type) {
		case 0: {
			// Validates Existence of Text, Dates etc.
			if (obj.value=='') {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 1: {
			// Validates e-Mail Address's
			var TestExp = /[,"<>:;]|\]|\[|\(|\)|\\/g
			var charpos = obj.value.indexOf('@');
			// Ensure that Field Filled in
			if ((obj.value=='')||
				(charpos==-1)||
				(obj.value.indexOf('.', charpos)==-1)||
				(obj.value.indexOf('@', charpos+1)!=-1)||
				(obj.value[obj.value.length-1]=='.')) {
				
				window.alert(msg);
				obj.focus();
				return false;
			};
			
			// Ensure that Illegal Characters not Entered
			if (obj.value.search(TestExp)!=-1) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 2: {
			// Validates Radio Buttons
			var i;
			for (i=0; i<obj.length; i++) {
				if (obj[i].checked) {
					return true;
					break;
				};
			};
			window.alert(msg);
			return false;
			break;
		};
		case 3: {
			// Validates Numeric strings
			if ((!isFinite(obj.value)) || (obj.value=='')) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 4: {
			// Validates Checkbox's
			if ((obj.checked==false)) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 5: {
			// Validates Telephone Numbers
			if (obj.value=='') {
				window.alert(msg);
				obj.focus();
				return false;
			};
			var TempTel = obj.value;
			var test = /[ ()]|-/g;
			TempTel = TempTel.replace(test,'');
			if (!isFinite(TempTel)) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 6: {
			// Validates Format of Dates
			d = new Date(obj.value);
			if (!isFinite(d)) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			n=new Date();
			n.setTime(Date.parse(obj.value));
			y=n.getDate()+' '+new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[n.getMonth()]+' '+n.getFullYear(); 
			obj.value=n.getDate()+' '+new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[n.getMonth()]+' '+n.getFullYear();
			break;	
		};

		case 7: {
			// Validates Format of Times - not in working order yet
			if (obj.value.indexOf(':')==-1) {
			//t = new Time(obj.value);
			//if (!isFinite(t)) {

				window.alert(msg);
				obj.focus();
				return false;
			};
			break;	
		};
		case 8: {
			// Error Checking in Here iro Credit Cards
			
			var doubledigit = (obj.value.length % 2 == 1) ? false : true;
			var checkdigit = 0;
			var tempdigit=0;
			
			for (var i=0; i<obj.value.length;i++) {
				//window.alert('Enter Loop number:' + i);
				
				//window.alert('i = ' + i);
				//window.alert('obj.value = ' + obj.value);
				//window.alert('obj.value[' + i + '] = ' + obj.value[i]);
				//window.alert('obj.value.charAt(' + i + ') = ' + obj.value.charAt(i));
				
				tempdigit=eval(obj.value.charAt(i));
				if (doubledigit) {
					tempdigit*=2;
					checkdigit+=(tempdigit%10);
					if ((tempdigit/10)>=1.0) {
						checkdigit++;
					}
					doubledigit=false;
				} else {
					checkdigit+=tempdigit;
					doubledigit=true;
				};
			};
			if ((checkdigit%10)!=0) {
				window.alert(msg);
				return false;
			};
			break;
		};
		case 9: {
			// Validates Valid HTTP://
			if ((obj.value.length)<=7) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			if ((obj.value.substr(0,7)).toUpperCase()!='HTTP://') {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};		
		case 10: {
			// Validates Valid Drop Down Selection
			if (obj[obj.selectedIndex].value==-1){
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 11: {
			// Validates whether string contains a number
			var checkstring = obj.value;
			var TestExp = /\d/;
			if (checkstring.search(TestExp)!==-1) {
				//is text only
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 12: {
			// Validates Cellular Numbers
			if (obj.value=='') {
				window.alert(msg);
				obj.focus();
				return false;
			};
			var TempTel = obj.value;
			var test = /[ ()]|-/g;
			TempTel = TempTel.replace(test,'');
			if (!isFinite(TempTel)) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			if (TempTel.length <10) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			if ((TempTel.substring(0,3)!='083') && 
			(TempTel.substring(0,3)!='073') &&
			(TempTel.substring(0,3)!='082') && 
			(TempTel.substring(0,3)!='072') && 
			(TempTel.substring(0,3)!='084') &&
			(TempTel.substring(0,3)!='074')) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 13: {
			// Validates ID Number length
			if ((obj.value.length)<13) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			break;
		};
		case 14: {
			// Validates Format of Full Times
			d = new Date(obj.value);
			if (!isFinite(d)) {
				window.alert(msg);
				obj.focus();
				return false;
			};
			n=new Date();
			n.setTime(Date.parse(obj.value));
			obj.value=n.getDate()+' '+new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[n.getMonth()]+' '+n.getFullYear()+' '+createLeader(n.getHours(),'0',2)+':'+createLeader(n.getMinutes(),'0',2)+':'+createLeader(n.getSeconds(),'0',2);
			break;	
		};
	};
	return true;
};

function createLeader(textToLead,charToLead,lengthToLead) {
	var r='';
	for (var c=0;c<(lengthToLead-textToLead.toString().length);c++) r+=charToLead;
	return r+textToLead;
};

function chkdate(objName) {
	//var strDatestyle = "US"; //United States date style
	var strDatestyle = "EU";  //European date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";
	strDate = datefield.value;
	
	if (strDate.length < 1) {
		return false;
	}
	
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			}else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
	   }
	}
	
	if ((strDay == null) || (strMonth == null) || (strYear == null)) {
		err = 1;
		return false;
	}
	
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
	   }
	}
	
	if (strYear.length == 2) {
		strYear = '20' + strYear;
	}
	
	// US style
	if (strDatestyle == "US") {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}
	
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
		 }
	}
	
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
	if (intMonth == 2) {
		if (intday < 1) {
		err = 8;
		return false;
		}
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
			err = 9;
			return false;
			}
		}else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	
	if (strDatestyle == "US") {
		datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
	}else {
		datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
	}
	return true;
}

function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
		} else {
			if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

function doDateCheck(from, to) {
	if (Date.parse(from.value) <= Date.parse(to.value)) {
		alert("The dates are valid.");
	}else {
		if (from.value == "" || to.value == "") 
			alert("Both dates must be entered.");
		else 
			alert("To date must occur after the from date.");
	   }
}
//-->
