<!--


// (c) 2003 Shaun Johnston, Pixelcreative (shaun@pixelcreative.com.au)

// Functions to strip erroneous characters  

function stripNonNumeric(field) {
	field.value=field.value.replace(/\D/gi,'');
}

function stripNonAlphaNumeric(form,field) {
	document[form][field].value=document[form][field].value.replace(/\W/gi,'');
}

function stripSpecialChars(form,field) {
	document[form][field].value=document[form][field].value.replace(/[^\w .,]/gi,'');
}

// Functions to validate data types

function validateNumeric(field,name) {
	var err="";
	if (field.value.match(/\D/gi)) {
		err = 'There is an invalid (non-numerical) character in the ' + name + ' field.';
	}
	return err;		
}

function validateAlphaNumeric(form,field,name) {
	var err="";
	if (document[form][field].value.match(/\W/gi)) {
		err = 'There is an invalid character in the ' + name + ' field.';
	}
	return err;
}

function validateForSpecialChars(form,field,name) {
	var err="";
	if (document[form][field].value.match(/[^\w ]/gi)) {
		err = 'There is an invalid character in the ' + name + ' field.';
	}
	return err;
}

function validateDate(field,name,dateType) {
	var err="";
	switch (dateType) {
		case 'yyyy-mm-dd':
			if (field.value.match(/[^\d-]/gi)) {
				err = 'There is an invalid character in the ' + name + ' field.';
			}
			break;
	}
	return err;
}

function validateEmail(form,field,name) {
	var err="";
	if (document[form][field].value!=""){
		if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(document[form][field].value))){
			err = "\nHet emailadres in " + name + " veld bevat illegale characters.";
		}
	}else{
		err=validateRequired(form,field,name);
	}
	return err;
}

function validateDutchPostcode(form,field,name) {
	var err="";
	if (document[form][field].value!=""){
		if (!(/^[1-9]{1}[0-9]{3} ?[A-Za-z]{2}$/.test(document[form][field].value))){
			err = "\nVeld " + name + " is ongeldig.";
		}
	}else{
		err=validateRequired(form,field,name);
	}
	return err;
}

function validateURL(field,name) {
	var err="";
	var proto	= field.value.indexOf('http://');
	var period	= field.value.lastIndexOf('.');
	var space	= field.value.indexOf(' ');
	var URLLength	= field.value.length - 1;
	if ((proto != 0) || (period <= (proto + 1)) ||  (period == Length) || (space  != -1)) {
		err = "The URL you supplied in the " + name + " field doesn't seem to be valid.";
	}
	return err;
}

function validateURL2(form,field,name) {
	var err="";
	var str = document[form][field].value;
	 var reg = /(http|https)(:\/{2}[\w]+)([\/|\.]?)([\S]*)/i ; 
	 if (str=='')
	 	err = '\nVeld ' + name + ' mag niet leeg zijn.';
	 else{
		if (!(reg.test(str)))
	  	err = "\nHet URL in " + name + " veld bevat illegale characters.";
	 }
				
	return err;
}

function validateRequired(form,field,name) {
	var err="";
	switch (document[form][field].type) {
		case 'text':
			if (!document[form][field].value) {
				err = '\nVeld ' + name + ' mag niet leeg zijn.';
			}
			break;
		case 'password':
			if (!document[form][field].value) {
				err = '\nVeld ' + name + ' mag niet leeg zijn.';
			}
			break;
		case 'textarea':
			if (!document[form][field].value) {
				err = '\nVeld ' + name + ' mag niet leeg zijn.';
			}
			break;
		case 'select-one':
			if (!document[form][field][document[form][field].selectedIndex].value) {
				err = '\nAn option needs to be selected from the list in the ' + name + ' field.';
			}
			break;
		case 'select-multiple':
			if (!document[form][field][document[form][field].selectedIndex].value) {
				err = '\nAn option needs to be selected from the list in the ' + name + ' field.';
			}
			break;
		case 'checkbox':
			if (!document[form][field].checked) {
				err = '\nYou need to select the ' + name + ' field.';
			}
			break;
		case 'radio':
			var numOfOptions = document[form][field].length;
			for (i = 0; i < numOfOptions; i++) {
				if (document[form][field].radios[i].checked) {
					var isChecked = document[form][field].radios[i].value;
					break;
				}
			}
			if (!isChecked) {
				err = '\nYou need to select an option from the ' + name + ' field.';
			}
			break;
	}
	return err;
}

// Functions for returning data validations under different events
	
function validateOnBlur(form,field,name,type) {
	switch (type) {
		case 'numeric':
			err = validateNumeric(form,field,name);
			break;
		case 'alphanumeric':
			err = validateAlphaNumeric(form,field,name);
			break;
		case 'specialchars':
			err = validateForSpecialChars(form,field,name);
			break;
		case 'date':
			err = validateDate(form,field,name);
			break;
		case 'email':
			err = validateEmail(form,field,name);
			break;
		case 'url':
			err = validateURL(form,field,name);
			break;
	}
	if (err) {
		alert(err);
		field.focus;
	}
}

function validateOnSubmit(fieldStr, name) {
	document[name].actionsub.disabled = 'disabled';
	var reqErr;
	var errString = '';
	var err = new Array();
	var field = new Array();
	var fieldCache = fieldStr.split('|');
	var numToExtract = fieldCache.length;
	var i;
	for (i = 0; i < numToExtract; i++) {
		field[i] = fieldCache[i].split(':');
	}
	var numToValidate = field.length;
	for (i = 0; i < numToValidate; i++) {
		if (field[i][0] && field[i][1] && field[i][2] && (field[i][3] || field[i][4])) {
			if (field[i][4]) {
				reqErr = validateRequired(field[i][0],field[i][1],field[i][2]);
			}
			if (!reqErr) {
				if (field[i][3].length > 0) {
					switch (field[i][3]) {
						case 'numeric':
							err[i] = validateNumeric(field[i][0],field[i][1],field[i][2]);
							break;
						case 'alphanumeric':
							err[i] = validateAlphaNumeric(field[i][0],field[i][1],field[i][2]);
							break;
						case 'specialchars':
							err[i] = validateForSpecialChars(field[i][0],field[i][1],field[i][2]);
							break;
						case 'date':
							err[i] = validateDate(field[i][0],field[i][1],field[i][2]);
							break;
						case 'email':
							err[i] = validateEmail(field[i][0],field[i][1],field[i][2]);
							break;
						case 'url':
							err[i] = validateURL(field[i][0],field[i][1],field[i][2]);
							break;
					}
				}
			}
			else {
				err[i] = reqErr;
				reqErr = '';
			}
		}
	}
	for (i = 0; i < numToValidate; i++) {
		if (err[i]) {
			errString += err[i] + "\n\n";
		}
	}
	if (errString) {
		alert(errString);
		document[name].actionsub.disabled = null;
		return false;
	}
	else {
		return true;
	}
}

// Functions for manipulation of content presentation

function contentInputAlterValue(fieldStr) {
	var field;
	var fieldCache = fieldStr.split('|');
	var numToExtract = fieldCache.length;
	var i;
	for (i = 0; i < numToExtract; i++) {
		field[i] = fieldCache[i].split(':');
	}
	var numToAlter = field.length;
	for (i = 0; i < numToAlter; i++) {
		if (field[i][0] && field[i][1] && field[i][2] && field[i][3]) {
			field[i][0].field[i][1].field[i][2] = field[i][3];
		}
	}
}

function contentElementAlterValue(elementStr) {
	var element;
	var elementCache = elementStr.split('|');
	var numToExtract = elementCache.length;
	var i;
	for (i = 0; i < numToExtract; i++) {
		element[i] = elementCache[i].split(':');
	}
	var numToAlter = element.length;
	for (i = 0; i < numToAlter; i++) {
		if (field[i][0] && field[i][1] && field[i][2]) {
			document.getElementById(field[i][0]).field[i][1] = field[i][2];
		}
	}
}

// Function to perform actions when a condition is true

function checkCondition(field,reqvalue,code, altCode) {
	if (field.value == reqvalue) {
		eval(code);
	}
	else {
		eval(altCode);
	}
}

-->
