// LOAD toggleFields() WHEN PAGE LOADS

if (window.addEventListener) {
	window.addEventListener("load",function(){toggleFields();},false);
} else {
	window.attachEvent("onload",function(){toggleFields();});
}

/* DISABLE/ENABLE SHIPPING ADDRESS FIELDS */

function toggleFields() {
	if (document.getElementById("billing_shipping").checked) {
		document.getElementById("ship_name").disabled = true;
		document.getElementById("saddr1").disabled = true;
		document.getElementById("saddr2").disabled = true;
		document.getElementById("saddr3").disabled = true;
		document.getElementById("scity").disabled = true;
		document.getElementById("scountyprovince").disabled = true;
		document.getElementById("spostalcode").disabled = true;
		//document.getElementById("sstate").disabled = true;
		document.getElementById("scountry").disabled = true;
		document.getElementById("stelephonenumber").disabled = true;
		
		document.getElementById("ship_name").className = "inputbox disabled";
		document.getElementById("saddr1").className = "inputbox disabled";
		document.getElementById("saddr2").className = "inputbox disabled";
		document.getElementById("saddr3").className = "inputbox disabled";
		document.getElementById("scity").className = "inputbox disabled";
		document.getElementById("scountyprovince").className = "inputbox disabled";
		document.getElementById("spostalcode").className = "inputbox disabled";
		//document.getElementById("sstate").className = "inputbox disabled";
		document.getElementById("scountry").className = "country disabled";
		document.getElementById("stelephonenumber").className = "inputbox disabled";
	}
	else {
		document.getElementById("ship_name").disabled = false;
		document.getElementById("saddr1").disabled = false;
		document.getElementById("saddr2").disabled = false;
		document.getElementById("saddr3").disabled = false;
		document.getElementById("scity").disabled = false;
		document.getElementById("scountyprovince").disabled = false;
		document.getElementById("spostalcode").disabled = false;
		//document.getElementById("sstate").disabled = false;
		document.getElementById("scountry").disabled = false;
		document.getElementById("stelephonenumber").disabled = false;
		
		document.getElementById("ship_name").className = "inputbox";
		document.getElementById("saddr1").className = "inputbox";
		document.getElementById("saddr2").className = "inputbox";
		document.getElementById("saddr3").className = "inputbox";
		document.getElementById("scity").className = "inputbox";
		document.getElementById("scountyprovince").className = "inputbox";
		document.getElementById("spostalcode").className = "inputbox";
		//document.getElementById("sstate").className = "inputbox";
		document.getElementById("scountry").className = "country";
		document.getElementById("stelephonenumber").className = "inputbox";
	}
};

/* VALIDATE THE ORDER FORM */

function validateForm(form) {
	
	// Check that something has actually been ordered
	
	if (!checkQuantities("quantity")) {
		alert("Please order at least one ticket.");
		return false;
	}
		
	// Madatory fields that can't be blank
	
	if (
			(form.full_name.value == null || form.full_name.value == "") ||
			(form.baddr1.value == null || form.baddr1.value == "") ||
			(form.bcity.value == null || form.bcity.value == "") ||
			(form.bpostalcode.value == null || form.bpostalcode.value == "") ||
			(form.bcountry.value == null || form.bcountry.value == "") ||
			(form.btelephonenumber.value == null || form.btelephonenumber.value == "") ||
			(form.email.value == null || form.email.value == "") ||
			(form.confirm_email.value == null || form.confirm_email.value == "") ||
			(form.hearaboutus.value == null || form.hearaboutus.value == "")
		) {
			alert("Please ensure all required fields (marked with *) are completed.");
			return false;
	}
	
	// Mandatory fields only if shipping address != billing address
	
	if (!(document.getElementById("billing_shipping").checked)) {
		if (
			(form.ship_name.value == null || form.ship_name.value == "") ||
			(form.saddr1.value == null || form.saddr1.value == "") ||
			(form.scity.value == null || form.scity.value == "") ||
			(form.spostalcode.value == null || form.spostalcode.value == "") ||
			(form.scountry.value == null || form.scountry.value == "") ||
			(form.stelephonenumber.value == null || form.stelephonenumber.value == "")
		) {
			alert("Please ensure all required fields (marked with *) are completed.");
			return false;
		}
	}
	
	// Check telephone number format
	
	if (validateTelephone(form.btelephonenumber.value) == false){
		alert("Please enter a valid phone number.");
		form.btelephonenumber.focus();
		return false;
	}
	
	// Check email address format
	
	if (validateEmail(form.email.value) == false) {
		alert("Please enter a valid email address.");
		form.email.focus();
		return false;
	}

	// Check email address fields match
	
	if (form.email.value != form.confirm_email.value) {
		alert("Your email address and confirm email address fields do not match.");
		form.confirm_email.focus();
		return false;
	}
	
	// Check T&Cs have been agreeded to
	
	if (!(document.getElementById("agree_to_terms").checked)) {
		alert("You must agree to the terms and conditions.");
		form.agree_to_terms.focus();
		return false;
	}
	
	return true;
};

/* VALIDATE TELEPHONE NUMBER */

function validateTelephone(str) {
	 var firstNumber = str.substring(1,0);

	 if (firstNumber != "0" || str.length < 10) {
		 return false;
	 }

	 return true;
};

/* VALIDATE EMAIL ADDRESSES */

function validateEmail(str) {
	var at = "@";
	var dot = ".";
	var lat = str.indexOf(at);
	var lstr = str.length;
	var ldot = str.indexOf(dot);

	if (
			(str.indexOf(at) == -1) ||
			(str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) ||
			(str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) ||
			(str.indexOf(at,(lat+1)) != -1) ||
			(str.substring(lat-1,lat) == dot || str.substring(lat+1,lat+2) == dot) ||
			(str.indexOf(dot,(lat+2)) == -1) ||
			(str.indexOf(" ") != -1)
		) {
	   return false;
	}

	return true;
};

/* NUMBERS AND LETTERS ONLY FOR SOME FIELDS (ALLOW SPACES WHERE KEY == 32) */

function numbersLettersOnly(e,hyphens) {
	var key;
	var keychar;

	if (window.event) {
	   key = window.event.keyCode;
	}
	else if (e) {
	   key = e.which;
	}
	else {
	   return true;
	}

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();

	if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27) || (key == 32)) {
	   return true;
	}
	else if (hyphens) {
		if ((("abcdefghijklmnopqrstuvwxyz0123456789-").indexOf(keychar) > -1)) {
			return true;
		}
		else {
			return false;
		}
	}
	else if ((("abcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) > -1)) {
	   return true;
	}
	else {
	   return false;
	}
};

/* NUMBERS ONLY FOR SOME FIELDS */

function numbersOnly(myfield,e,dec) {
	var key;
	var keychar;

	if (window.event) {
		key = window.event.keyCode;
	}
	else if (e) {
		key = e.which;
	}
	else {
		return true;
	}

	keychar = String.fromCharCode(key);

	if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
		return true;
	}
	else if ((("0123456789").indexOf(keychar) > -1)) {
		return true;
	}
	else if (dec && (keychar == ".")) {
	   myfield.form.elements[dec].focus();
	   return false;
	}
	else {
	   return false;
	}
};

/* CHECK SUM OF QUANTITIES != 0 */

function checkQuantities(classname) {
	document.getElementsByClassName = function(clsName) {
		var retVal = new Array();
		var elements = document.getElementsByTagName("*");
		for (var i = 0;i < elements.length;i++) {
		if (elements[i].className.indexOf(" ") >= 0) {
			var classes = elements[i].className.split(" ");
			for (var j = 0;j < classes.length;j++) {
				if (classes[j] == clsName)
				retVal.push(elements[i]);
			}
		}
		else if (elements[i].className == clsName)
			retVal.push(elements[i]);
		}
		return retVal;
	};
	
	var quantities = document.getElementsByClassName(classname);
	
	var sum = 0;
	
	for (i=0;i<quantities.length;i++) {
		sum = sum + parseInt(quantities[i].value);
	}

	if (sum == 0) {
		return false;
	}
	
	return true;
};

/* DISABLE COPY & PASTE */

function noPaste() {
	document.getElementById('confirm_email').onpaste = function() { return false; };
}

