<!--
//File Name: formvalidate2.js
//Purpose: This is used for checking the input values in library forms
//Version: 2.0
//Author: 	H. Korotnicki (28/05/2004) 
//			Sharen Chen (04/09/2008)
//Date of update: 04/09/2008
//------------------------------------------------------
// check_form validates the given form for required values
// - required values are have error messages marked as 'r_'
function check_form (f) {

	var i; //loop variable
	var x; //input variable
	var day;
	var month;
	var year;
	var msg = "";
	var tmp = "";
	var msg_h = "The following information are required and must be provided:";
	var msg_f = "Please complete and/or correct these fields before submitting again.";
	var formfields = new Array();
	var required = new Array();

	//use given header/footer (args 2 & 3) if provided
	if (f.error_header) msg_h = f.error_header.value;
	if (f.error_footer) msg_f = f.error_footer.value;

	//create a list of the required field names
	for (i = 0; i < f.elements.length; i++) {
		var field = f.elements[i];
	
		//check if the form field can be read 
		//(e.g. fieldsets are considered a form element but have an 'undefined' type - they should be ignored by the script)
		if (field.type) {
			if(field.name.substring(0, 2) == "r_") {
				//add field name to the required fields list
				required[field.name.substring(2)] = field.value;
			} else if (field.name != "") {
				//add normal form fields to the formfields array
				if (field.type == "checkbox" || field.type == "radio") {
					if (formfields[field.name] == null) {
						formfields[field.name] = field.checked;
					} else {
						formfields[field.name] = formfields[field.name] || field.checked;
					}
				} else if (field.type == "select-one") {
					formfields[field.name] = field.selectedIndex > 0;
				} else if (field.type == "select-multiple") {
					formfields[field.name] = field.selectedIndex > -1;
				} else if (field.type == "password" || field.type == "text" || field.type == "file" || field.type == "textarea") {
					formfields[field.name] = field.value.replace(/^\s+/,'').replace(/\s+$/,'') != "";
				} else {
					//do nothing - for field type submit, hidden
//					alert("can't validate type " + field.type);
				}
			}
		}
	}

	//loop over required fields list and check that they have a value in the form
	for (i = 0; i < f.elements.length; i++) {
		field = f.elements[i];
		
		if (field.name != "") {
			if (formfields[field.name] && !required[field.name]) {
				validInputType(field.name);		
			}

			else if (!formfields[field.name] && required[field.name]) {
				if (i>0) {
					var compare = f.elements[i-1];
					if (required[field.name] != required[compare.name]) {
						tmp += " - " + required[field.name];	
					}
				}
				else{
					tmp += " - " + required[field.name];	
				}
			}			
			else if (formfields[field.name] && required[field.name]) {
				validInputType(field.name);		
			}
		}
		if (tmp != "") {
			msg = msg + tmp + "\n";
			tmp = "";
		}		
	}
	//output error message if there is one
	if (msg != "") {
		alert(msg_h + "\n\n" 
			+ msg + "\n" 
			+ msg_f);
		//stop form from submitting
		return false;
	} else {
		addFullName();
		//submit form
		return true;
	}

//check input types
function validInputType(input) {
	switch(field.name){
		case "":
			break;
		case "fax":
			if (checkPhone(field.value) == false){
			tmp += " - Fax - Please type a complete fax number.";
			}
			break;
		case "homefax":
			if (checkPhone(field.value) == false){
			tmp += " - Home fax - Please type a complete fax number.";
			}
			break;
		case "workfax":
			if (checkPhone(field.value) == false){
			tmp += " - Work fax - Please type a complete fax number.";
			}
			break;
		case "homepcode":
			if (checkPcode(field.value) == false){
			tmp += " - Home postcode - Please type 4 digits.";
			}
			break;
		case "pcode":
			if (checkPcode(field.value) == false){
			tmp += " - Postal code - Please type 4 digits.";
			}
			break;
		case "schoolpcode":
			if (checkPcode(field.value) == false){
			tmp += " - Work street postcode - Please type 4 digits.";
			}
			break;
		case "schoolpostpcode":
			if (checkPcode(field.value) == false){
			tmp += " - Work postal postcode - Please type 4 digits.";
			}
			break;
		case "homephone":
			if (checkPhone(field.value) == false){
			tmp += " - Home phone - Please type a complete phone number.";
			}
			break;
		case "telephone":
			if (checkPhone(field.value) == false){
			tmp += " - Telephone - Please type a complete phone number.";
			}
			break;
		case "workphone":
			if (checkPhone(field.value) == false){
			tmp += " - Work phone - Please type a complete phone number.";
			}
			break;
		case "mobile":
			if (checkPhone(field.value) == false){
			tmp += " - Mobile - Please type a complete phone number.";
			}
			break;
		case "FromEmail":
			if (checkEmail(field.value) == false){
			tmp += " - Email - Please type a correct email.";
			}
			break;
		case "homeemail":
			if (checkEmail(field.value) == false){
			tmp += " - Home email - Please type a correct email.";
			}
			break;
		case "day":
			day = document.getElementById("day").value;
			month = document.getElementById("month").selectedIndex;
			year = document.getElementById("year").value;
			if (checkDate(day, month, year) == false){
			tmp += " - Date - Date cannot be less than today's date";
			}
			break;
		case "collect_day":
			var now = new Date();
			var nowMonth = now.getMonth();
			day = document.getElementById("collect_day").value;
			month = document.getElementById("collect_month").selectedIndex;
			month = month + nowMonth;
			year = document.getElementById("collect_year").value;
			var checkcd = eval(document.getElementById("cd"));
			if (checkDate(day, month, year) == false){
			tmp += " - Required/Collection Date - Date cannot be less than today's date";
			}else if (checkcd){
						var text = document.getElementById("Template").value;
						text = text.replace(eval("/{delivery}/g"), document.getElementById("cd").value);
						document.getElementById("Template").value = text;
						
			}
			break;
		case "from_day":
			day = document.getElementById("from_day").value;
			month = document.getElementById("from_month").selectedIndex;
			year = document.getElementById("from_year").value;
			if (checkDate(day, month, year) == false){
			tmp += " - From Date - Date cannot be less than today's date";
			}
			break;
		case "to_day":
			day = document.getElementById("to_day").value;
			month = document.getElementById("to_month").selectedIndex;
			year = document.getElementById("to_year").value;
			if (checkDate(day, month, year) == false){
			tmp += " - To Date - Date cannot be less than today's date";
			}
			break;
		case "daterequired": //loanrequest3.html
			if (field.value == "When available"){
				if (f.whenavailable.checked){
					if (!document.getElementById("notafter").value){
						tmp += " - Not required after";
					}
					else {
						var text = document.getElementById("Template").value;
						text = text.replace(eval("/{{info}}/g"), document.getElementById("ab").value);
						document.getElementById("Template").value = text;
						text = text.replace(eval("/{delivery}/g"), document.getElementById("dl").value);
						document.getElementById("Template").value = text;
					}
				}
			}
			else if (field.value == "From To"){
				if (f.fromto.checked){
					var fd = document.getElementById("from_day").value;
					var fm = document.getElementById("from_month").value;
					var fy = document.getElementById("from_year").value;
					var td = document.getElementById("to_day").value;
					var tm = document.getElementById("to_month").value;
					var ty = document.getElementById("to_year").value;
					if (fd == ""||fm == ""||fy == ""||td == ""||tm == ""||ty == ""){
						tmp += " - Date required - From and to day";
					}
					else {
						var text = document.getElementById("Template").value;
						text = text.replace(eval("/{{info}}/g"), document.getElementById("ft").value);
						document.getElementById("Template").value = text;
						text = text.replace(eval("/{delivery}/g"), document.getElementById("dl").value);
						document.getElementById("Template").value = text;
					}
				}
			}
			break;
		case "pin":
			if (checkPcode(field.value) == false){
			tmp += " - PIN - Please type a correct PIN.";
			}
			break;
		default:
			break;
	}
}
function checkPcode(pcode){
	x=pcode;
	var postalcode = /^\d{4}$/;
	if (!postalcode.test(x)) {
		return false;
	}
}
function checkPhone(phone){
	x=phone;
	var phoneRe = /^\(?(\d{2})?\)?[\s\-]?(\d{4,10})[\s\-]?(\d{3,4})?[\s\-]?(\d{3})?$/;
	if (!phoneRe.test(x)) {
		return false;	
	}
}
function checkEmail(email){
	//get the email input value
	x=email;
	//regular expressions used to validate the email input
	var emailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	//check if it's not a valide input
	if (!emailRe.test(x)) {
		return false;	
	}
}
function checkDate(day, month, year){
	if (month != ""){
		if (year != ""){
			var now = new Date();
			var todayYear = now.getFullYear();
			var todayMonth = now.getMonth() + 1;
			var todayDay = now.getDate();
			if (todayYear == year) {
				if (todayMonth < month) {
				}else if (todayMonth == month){
					if (todayDay > day){
						return false;
					}					
				}else if (todayMonth > month){
					return false;
				}
			}else if (todayYear > year) {
				return false;
			}
		}
	}
}


function addFullName(){
		
	var fname = document.getElementById("fname").value;
	var lname = document.getElementById("FromName").value;
		
	var text = document.getElementById("Template").value;
	text = text.replace(eval("/{FromName}/g"), lname);
	document.getElementById("Template").value = text;
	if (fname != ""){
	document.getElementById("FromName").value = fname + " " + lname;
	//alert(document.getElementById("FromName").value);
	}
	//*/
}

}


//-->

