// validate user login in
function validatelogin() {
	var at = document.getElementsById("username").value.indexOf("@")
	var password = document.getElementsById("password").value
	submitOK = "true"

	if ((password == "") || (password == null)) {
		alert("Please provide your email address and password!")
		submitOK = "false"
	}
	if (at == -1) {
		alert("Not a valid e-mail!")
		submitOK = "false"
	}
	if (submitOK == "false") { return false }
	else { return true }
}

// validate book online form
function validatebkoform2() {
	var full_name = document.getElementById("full_name").value
	var house_name = document.getElementById("house_name").value
	var street = document.getElementById("street").value
	var parish = document.getElementById("parish").value
	var postcode = document.getElementById("postcode").value
	var tel = document.getElementById("tel").value
	var email = document.getElementById("email").value
	var email2 = document.getElementById("email2").value
	var dob = document.getElementById("dob").value
	var mam = document.getElementById("mam").value
	var cc = document.getElementById("cc").value
	var terms = document.getElementById("terms").checked

	if ((full_name == "") || (house_name == "") || (street == "") || (postcode == "") || (tel == "") || (email == "") || (email2 == "") || (dob == "") || (mam == "") || (cc == "")) {
		alert("Please check all fields are filled, thanks!")
		return false
	}
	else {
		course = document.getElementById("course")
		if (course.value == "CBT" && document.getElementById("coursedate").value == "") {
			alert("Please select course date!")
			return false
		}
		else if (course.value == "DA" && (document.getElementById("exdate").value == "" || document.getElementById("issued").value == "")) {
			alert("Please check all fields are filled, thanks!")
			return false
		}
		else if (course.value == "one2one" && (document.getElementById("requirements").value == "")) {
			alert("Please check all fields are filled, thanks!")
			return false
		}
	}
	if (email != email2) {
		alert("Your email address does not match! Please check your entry and try again.")
		return false
	}
	if (parish == "") {
		alert("Please select your parish, thanks!")
		return false
	}
	if (terms == "") {
		alert("Please read & accept terms & conditions, thanks!")
		return false
	}

	dob = document.getElementById("dob")
	if (isDate(dob.value) == false) {
		dob.focus()
		return false
	}
	/*
	if (course.value=="CBT")
	{
	coursedate=document.getElementById("coursedate")
	var adate=coursedate.value
	aday=getTheDay(adate)
	if (isDate(coursedate.value)==false)
	{
	coursedate.focus()
	return false
	}
	else if (aday!="Saturday")
	{
	alert("CBT only runs on Saturdays!!!\n" + "You entered a date which falls on a " + aday)
	return false
	}
	else
	{
	}
	}*/
	if (course.value == "DA") {
		exdate = document.getElementById("exdate")
		if (isDate(exdate.value) == false) {
			exdate.focus()
			return false
		}
	}

	if (!emailCheck(email)) {
		return false
	}
	else {
		return true
	}
}
function validatebkoform() {
	/*formvalid=validatebkoform2();
	if (formvalid==true&&course.value=="CBT")
	{
	coursedate=document.getElementById("coursedate")
	if (coursedate!=null)
	{
	alert(coursedate.value)
	checkAvailability(coursedate.value);
	return false;
	}
	}
	else if (formvalid==true)
	{
	return true;
	}
	else
	{
	return false;
	}*/
	formvalid = validatebkoform2();
	if (formvalid == true) {
		return true;
	}
	else {
		return false;
	}
}
/**
* DHTML date validation script for dd/mm/yyyy. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
*/
// Declaring valid date character, minimum year and maximum year
var dtCh = "/";
var minYear = 1900;
var maxYear = 2100;

function isInteger(s) {
	var i;
	for (i = 0; i < s.length; i++) {
		// Check that current character is number.
		var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	// All characters are numbers.
	return true;
}

function stripCharsInBag(s, bag) {
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function daysInFebruary(year) {
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
		if (i == 2) { this[i] = 29 }
	}
	return this
}

function isDate(dtStr) {
	var daysInMonth = DaysArray(12)
	var pos1 = dtStr.indexOf(dtCh)
	var pos2 = dtStr.indexOf(dtCh, pos1 + 1)
	var strDay = dtStr.substring(0, pos1)
	var strMonth = dtStr.substring(pos1 + 1, pos2)
	var strYear = dtStr.substring(pos2 + 1)
	strYr = strYear
	if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
	if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
	}
	month = parseInt(strMonth)
	day = parseInt(strDay)
	year = parseInt(strYr)
	if (pos1 == -1 || pos2 == -1) {
		alert("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length < 1 || month < 1 || month > 12) {
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
		alert("Please enter a valid 4 digit year between " + minYear + " and " + maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
		alert("Please enter a valid date")
		return false
	}
	return true
}

function ValidateForm() {
	var dt = document.frmSample.txtDate
	if (isDate(dt.value) == false) {
		dt.focus()
		return false
	}
	return true
}

// validate book online form
function validatecontactus() {
	var name = document.getElementById("name").value
	var email = document.getElementById("email").value
	var email2 = document.getElementById("email2").value
	var tel = document.getElementById("tel").value
	var address = document.getElementById("address").value
	var subject = document.getElementById("subject").value
	var comment = document.getElementById("comment").value

	if ((name == "") || (email == "") || (email2 == "") || (tel == "") || (address == "") || (subject == "") || (comment == "")) {
		alert("Please check all fields are filled, thanks!");
		return false;
	}
	if (email != email2) {
		alert("Your email address does not match! Please check your entry and try again.");
		return false;
	}
	if (!emailCheck(email)) {
		return false;
	}
	else {
		return true;
	}
}

function emailCheck(emailStr) {
	/* The following variable tells the rest of the function whether or not
	to verify that the address ends in a two-letter country or well-known
	TLD.  1 means check it, 0 means don't. */
	var checkTLD = 1;

	/* The following is the list of known TLDs that an e-mail address must end with. */
	var knownDomsPat = /^(arpa|root|aero|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|travel|xxx)$/;

	/* The following pattern is used to check if the entered e-mail address
	fits the user@domain format.  It also is used to separate the username
	from the domain. */
	var emailPat = /^(.+)@(.+)$/;

	/* The following string represents the pattern for matching all special
	characters.  We don't want to allow special characters in the address. 
	These characters include ( ) < > @ , ; : \ " . [ ] */
	var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

	/* The following string represents the range of characters allowed in a 
	username or domainname.  It really states which chars aren't allowed.*/
	var validChars = "\[^\\s" + specialChars + "\]";

	/* The following pattern applies if the "user" is a quoted string (in
	which case, there are no rules about which characters are allowed
	and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	is a legal e-mail address. */
	var quotedUser = "(\"[^\"]*\")";

	/* The following pattern applies for domains that are IP addresses,
	rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	/* The following string represents an atom (basically a series of non-special characters.) */
	var atom = validChars + '+';

	/* The following string represents one word in the typical username.
	For example, in john.doe@somewhere.com, john and doe are words.
	Basically, a word is either an atom or quoted string. */
	var word = "(" + atom + "|" + quotedUser + ")";

	// The following pattern describes the structure of the user
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");

	/* The following pattern describes the structure of a normal symbolic
	domain, as opposed to ipDomainPat, shown above. */
	var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");

	/* Finally, let's start trying to figure out if the supplied address is valid. */

	/* Begin with the coarse pattern to simply break up user@domain into
	different pieces that are easy to analyze. */
	var matchArray = emailStr.match(emailPat);
	if (matchArray == null) {
		/* Too many/few @'s or something; basically, this address doesn't
		even fit the general mould of a valid e-mail address. */
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user = matchArray[1];
	var domain = matchArray[2];

	// Start by checking that only basic ASCII characters are in the strings (0-127).
	for (i = 0; i < user.length; i++) {
		if (user.charCodeAt(i) > 127) {
			alert("Ths username contains invalid characters.");
			return false;
		}
	}
	for (i = 0; i < domain.length; i++) {
		if (domain.charCodeAt(i) > 127) {
			alert("Ths domain name contains invalid characters.");
			return false;
		}
	}

	// See if "user" is valid 
	if (user.match(userPat) == null) {

		// user is not valid
		alert("The username doesn't seem to be valid.");
		return false;
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic
	host name) make sure the IP address is valid. */
	var IPArray = domain.match(ipDomainPat);
	if (IPArray != null) {

		// this is an IP address
		for (var i = 1; i <= 4; i++) {
			if (IPArray[i] > 255) {
				alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}

	// Domain is symbolic name.  Check if it's valid.
	var atomPat = new RegExp("^" + atom + "$");
	var domArr = domain.split(".");
	var len = domArr.length;
	for (i = 0; i < len; i++) {
		if (domArr[i].search(atomPat) == -1) {
			alert("The domain name does not seem to be valid.");
			return false;
		}
	}

	/* domain name seems valid, but now make sure that it ends in a
	known top-level domain (like com, edu, gov) or a two-letter word,
	representing country (uk, nl), and that there's a hostname preceding 
	the domain or country. */
	if (checkTLD && domArr[domArr.length - 1].length != 2 &&
	domArr[domArr.length - 1].search(knownDomsPat) == -1) {
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}

	// Make sure there's a host name preceding the domain.
	if (len < 2) {
		alert("This address is missing a hostname!");
		return false;
	}
	// If we've gotten this far, everything's valid!
	return true;
}
function getTheDay(aText) {
	myDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
	myDate = new Date()
	myDate.setFullYear(aText.substring(6, 10), aText.substring(3, 5) - 1, aText.substring(0, 2))
	return myDays[myDate.getDay()]
}
function checkAvailability(adate) {
	var xmlHttp;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	xmlHttp.onreadystatechange = function () {
		if (xmlHttp.readyState == 4) {
			if (xmlHttp.responseText == "Available") {
				alert(xmlHttp.responseText)
				xxxbookonlinexxx = document.getElementById("bookonline")
				if (xxxbookonlinexxx != null && confirm("Bookings Available. Do you wish to continue?")) {
					xxxbookonlinexxx.submit();
				}
				else {
					return false;
				}
			}
			else {
				alert(xmlHttp.responseText);
				return false;
			}
		}
	}
	xmlHttp.open("GET", "checkavailability.asp?d=" + adate, true);
	xmlHttp.send(null);
}
function changecourse() {
	course = document.getElementById("course")
	cbt = document.getElementById("CBT")
	da = document.getElementById("DA")
	onetwoone = document.getElementById("one2one")
	if (course != null && cbt != null && da != null && onetwoone != null) {
		cbt.style.display = "none"
		da.style.display = "none"
		onetwoone.style.display = "none"
		document.getElementById(course.value).style.display = "block"
	}
}
window.onload = function () {
	body = document.getElementsByTagName("body")
	if (body.length > 0) {
		body.onload = changecourse();
	}
}
