/**********************
 * form_validation.js *
 * 1.2 - 04/22/2004   *
 * 1.1 - 10/17/2003   *
 * 1.0 - 11/??/2002   *
 **********************/

function check_email(element) {
	var field = element.value;
	var at = field.indexOf("@");
	var user = field.substring(at,-1);
	var host = field.substring(at,field.length);
	var dot = host.indexOf(".");
	var domain = host.substring(dot,-1);
	var tld = host.substring(dot,host.length);

	if ((user.length > 0) && (domain.length > 2) && (tld.length > 2)) {
		return true;
	} else {
		return false;
	}
}

function check_phone(element) {
	var field = element.value;
	if (field.length == 10) {
		return isNumber(field);
	} else if (field.length == 12) {
		var areacode = field.substr(0,3);
		var prefix = field.substr(4,3);
		var number = field.substr(8,4);
		if (isNumber(areacode) && isNumber(prefix) && isNumber(number)) {
			return true;
		} else {
			return false;
		}		
	} else {
		return false;
	}
}

function check_zip(element) {
	var field = element.value;
	if (isNumber(field)) {
		if (field.length == 5) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
}

function check_canada_zip(element) {
	var field = element.value;
	field = field.replace(/[ -]/g,"");
	if(!field.search(/^[a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d$/i)) {
		return true;
	} else {
		return false;
	}
}

function check_month(element) {
	var field = element.value;
	return valid_month(field);
}

function valid_month (field) {
	if (isNumber(field)) {
		if (field < 1 || field > 12) {
			return false;
		} else {
			return true;
		}
	} else {
		return false;
	}
}

function check_day(element) {
	var field = element.value;
	return valid_day(field);
}

function valid_day (field) {
	if (isNumber(field)) {
		if (field < 1 || field > 31) {
			return false;
		} else {
			return true;
		}
	} else {
		return false;
	}
}

function check_year(element) {
	var field = element.value;
	return valid_year(field);
}
	
function valid_year(field) {
	if (isNumber(field)) {
		if (field > 0 && field < 100) {
			return true; //Allow 2-digit dates
		}
		if (field < 2000 || field > 3000) { // expected life of this script is 998 years
			return false;
		} else {
			return true;
		}
	} else {
		return false;
	}
}

function check_date(element) {
	var field = element.value;
	var firstslash = field.indexOf("/");
	var month = field.substr(0,firstslash);
	var dayyear = field.substr(firstslash + 1, field.length);	
	var secondslash = dayyear.indexOf("/");
	var daystart = firstslash;
	var day = dayyear.substr(0,secondslash);
	var yearstart = firstslash + secondslash + 1;
	var year = field.substr(yearstart+1,field.length);
	if (valid_month(month) && valid_day(day) && valid_year(year)) {
		return true;
	} else {
		return false;
	}
}

function check_futureDate(element) {
	var field = element.value;
	var firstslash = field.indexOf("/");
	var month = field.substr(0,firstslash);
	var dayyear = field.substr(firstslash + 1, field.length);	
	var secondslash = dayyear.indexOf("/");
	var daystart = firstslash;
	var day = dayyear.substr(0,secondslash);
	var yearstart = firstslash + secondslash + 1;
	var year = field.substr(yearstart+1,field.length);
	if (valid_month(month) && valid_day(day) && valid_year(year)) {
		var now=new Date();
		var now_month=now.getMonth()+1;
		var now_day=now.getDate();
		var now_year=now.getFullYear();
		if (year.length == 2) {
			now_year -= 1900;
		}
		if (year < now_year) {
			return false;
		}
		if (year == now_year && month < now_month) {
			return false;
		}
		if (year == now_year && month == now_month && day <= now_day) {
			return false;
		}
		return true;
	} else {
		return false;
	}
}

function check_pastDate(element) {
	var field = element.value;
	var firstslash = field.indexOf("/");
	var month = field.substr(0,firstslash);
	var dayyear = field.substr(firstslash + 1, field.length);	
	var secondslash = dayyear.indexOf("/");
	var daystart = firstslash;
	var day = dayyear.substr(0,secondslash);
	var yearstart = firstslash + secondslash + 1;
	var year = field.substr(yearstart+1,field.length);
	if (valid_month(month) && valid_day(day) && valid_year(year)) {
		var now=new Date();
		var now_month=now.getMonth()+1;
		var now_day=now.getDate();
		var now_year=now.getFullYear();
		if (year.length == 2) {
			now_year -= 1900;
		}
		if (year > now_year) {
			return false;
		}
		if (year == now_year && month > now_month) {
			return false;
		}
		if (year == now_year && month == now_month && day >= now_day) {
			return false;
		}
		return true;
	} else {
		return false;
	}
}


function check_entered(element) {
	if (element.length == undefined) {
		var field = element.value;
		if (field.length > 0) {
			return true;
		} else {
			return false;
		}
	} else {
		var check = false;
		for (i = 0; i < element.length; i++) {
			check = check || element[i].checked;
		}
		if (check) {
			return true;
		} else {
			return false;
		}
	}
}

function isNumber (num) {
    for (i = 0; i < num.length; i++) {   
        var c = num.charAt(i);
		if (isNaN(c)) {
			return false;
		}
    }
	return true;
}

function check_number(element) {
	var field = element.value;
	if (isNumber(field) && (field.length > 0)) {
		return true;
	} else {
		return false;
	}
}

