<!--
/* 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 in the format of hh:mm
		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)
		12: Validates cellular numbers
		13: Validates ID number string length
*/		

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));
			obj.value=n.getDate()+' '+new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec')[n.getMonth()]+' '+n.getFullYear();
			break;	
		};
		case 7: {
			// Validates Format of Times 
			var inputString = obj.value;
			var hh = inputString.substring(0,2);
			var mm = inputString.substring(3,5);
			if ((obj.value.indexOf(':')==-1)||(obj.value.length<5)||(obj.value.length>5)) {
				window.alert(msg);
				obj.focus();
				return false;
			}else{
				// we have the correct format, validate that the data entered is numeric
				if (isNaN(hh)||isNaN(mm)) {
					window.alert(msg);
					obj.focus();
					return false;
				}else{
					// check that if the hr is 24, the min cannot be greater than 0
					if ((hh == 24)&&(mm > 0)) {
						window.alert(msg);
						obj.focus();
						return false;
					}else{	
						// the time is numeric, we can now validate the hours and minutes
						if ((hh < 00 || hh > 24)||(mm < 00 || mm > 59)) {
							window.alert(msg);
							obj.focus();
							return false;
						};	
					};	
				};	
			};
			break;	
		};
		case 8: {
			// Error Checking in Here iro Credit Cards
			if (!isFinite(obj.value)) {
				// the input string is not numeric
				window.alert(msg);
				return false;
			};	
			if (obj.value!='' && obj.value.length<16) {
				// checks the length of the input string
				window.alert(msg);
				return false;
			};	
			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)!='082') && (TempTel.substring(0,3)!='072')){
				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;
			};
			// validates id number as numeric
			if (!isFinite(obj.value)) {
				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','Sept','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;
};

//-->
