/*

	PerthWeb Standard Mail Forms Handler for PHP (Client Side Validation)
	
	Version : 1.2
	Author  : Dominic Manley (dominic@perthweb.com.au)
	Date    : 2nd December 2005

*/

function in_array(str, arr) {
	var found = false;
	for (var i = 0; i < arr.length; i++) {
		if (arr[i] == str) {
			found = true;
		}
	}
	return found;
}

function isPWFormName(formName) {
	var isPW = true;
	if (formName.substr(0, 2) != 'pw') {isPW = false;}
	var char3 = Array('m', 'o');
	if (in_array(formName.substr(2, 1), char3) != true) {isPW = false;}
	var char4 = Array('s', 'a', 'n', 'e', 'w', 'd');
	if (in_array(formName.substr(3, 1), char4) != true) {isPW = false;}
	return isPW;
}

function stripFormName(formName) {
	var stripped = formName.substr(4); // remove the 4 character code preffix
	stripped = stripped.replace(/_/g, ' '); // replace underscores with spaces
	stripped = stripped.replace(/\[/g, ''); // checkbox arrays (PHP only)
	stripped = stripped.replace(/\]/g, ''); //    "       "
	return stripped;
}

function pwValidate(frmObj) {

	var invalid = Array();
	var handled = Array();
	
	for (var i = 0; i < frmObj.elements.length; i++) {
		var eName = frmObj.elements[i].name;
		if (isPWFormName(eName) == true) {
			if (in_array(eName, handled) == false) {
				if (frmObj.elements[i].type != 'hidden') {
					if (eName.substr(2, 1) == 'm') { // mandatory
						if (frmObj.elements[i].type == 'checkbox' || 
							frmObj.elements[i].type == 'radio') {
							var allEmpty = true;
							for (var j = 0; j < frmObj[eName].length; j++) {
								if (frmObj[eName][j].checked != false) {
									allEmpty = false;
								}
							}
							if (allEmpty == true) {
								var typeText = 'an'; if (frmObj.elements[i].type == 'checkbox') {typeText = 'at least one';}
								var invalid_msg = 'You must select ' + typeText + ' option for ' + stripFormName(eName) + '.';
								invalid[invalid.length] = invalid_msg;
							}
						} else {
							if (frmObj.elements[i].value == '') {
								var invalid_msg = stripFormName(eName) + ' must not be empty.';
								invalid[invalid.length] = invalid_msg;
							}
						}
					}
					handled[handled.length] = eName;	
				}
			}
		}
	}
	
	if (invalid.length > 0) {
		invalid_txt = '';
		for (var i = 0; i < invalid.length; i++) {
			invalid_txt += invalid[i] + "\n";
		}
		alert(invalid_txt);
		return false;
	}
	
	return true;

}