function validateForm() {
	var msg = "";
	
	// Check the terms and conditions checkbox
	var terms = document.getElementById("bAgree");
	if (!terms.checked) {
		msg += _TermsAndConditionsValidationText;
	} else {
			
		// Validate the firstName
		var firstName = document.getElementById("bAdr1");
		if (firstName.value == "" || firstName.value == firstName.defaultValue ) {
			msg += _FirstNameValidationText + "<br>\n";
		}
		
		// Validate the lastName
		var lastName = document.getElementById("bAdr2");
		if (lastName.value == "" || lastName.value == lastName.defaultValue ) {
			msg += _LastNameValidationText + "<br>\n";
		}
		
		// Validate the streetAddress
		var streetAddress = document.getElementById("bAdr4");
		if (streetAddress.value == "" || streetAddress.value == streetAddress.defaultValue ) {
			msg += _StreetAddressValidationText + "<br>\n";
		}
			
		// Validate the suburb
		var suburb = document.getElementById("bAdr6");
		if (suburb.value == "" || suburb.value == suburb.defaultValue ) {
			msg += _SuburbValidationText + "<br>\n";
		}
	
		// Validate the email
		var email = document.getElementById("bEmail");
		if (email.value != "" && email.value != email.defaultValue ) {
			var emailTester  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if ( !emailTester.test( email.value ) ) {
				 msg += _EmailValidationText + "<br>\n";
			}
		}

		// Validate the telephone
		var telObj = document.getElementById("bTelephone");
		telObj.value = removeNonNumericCharacters(telObj.value);
		if (telObj.value != "" && telObj.value != telObj.defaultValue ) {
			var phoneNumberTester = /^\s*\(?(020[7,8]{1}\)?[ ]?[1-9]{1}[0-9{2}[ ]?[0-9]{4})|(0[1-8]{1}[0-9]{3}\)?[ ]?[1-9]{1}[0-9]{2}[ ]?[0-9]{3})\s*/;
			if ( !phoneNumberTester.test( telObj.value ) ){
				 msg += _TelephoneValidationText + "<br>\n";
			}
		}
		
		// Validate the zip code
		var zipObj = document.getElementById("bZip");
		zipObj.value = removeBlanks(zipObj.value);
		if (zipObj.value != "" && zipObj.value != zipObj.defaultValue) {
		var zipTester =/(((^[BEGLMNS][1-9]\d?)|(^W[2-9])|(^(A[BL]|B[ABDHLNRST]|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]|F[KY]|G[LUY]|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]|M[EKL]|N[EGNPRW]|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKL-PRSTWY]|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)\d\d?)|(^W1[A-HJKSTUW0-9])|(((^WC[1-2])|(^EC[1-4])|(^SW1))[ABEHMNPRVWXY]))(\s*)?([0-9][ABD-HJLNP-UW-Z]{2}))$|(^GIR\s?0AA$)/;
			if ( !zipTester.test( zipObj.value ) ){
				msg += _ZipCodeValidationText + "<br>\n";
			}
		}
		
	} 

	if (msg != "") {
		document.getElementById("errorMessageText").innerHTML = "<b>" + _ErrorMessageText + "</b><br><br>" + msg;
		document.getElementById("errorMessage").style.visibility = "visible";
		return false;
	}

	return true;
}

//Remove blanks from string
function removeBlanks(inputText) {
	var tempText = "";
	for (j = 0; j <= inputText.length; j++) {
		var tempCharacter = inputText.charAt(j);
		if ((tempCharacter != " ")) {
			tempText += tempCharacter;
		}
	}
	return tempText;
}

function validateStep2() {
	var msg = "";
	
	var cc_hn = document.getElementById("cc_holder_name");
	var cc_no = document.getElementById("cc_no");
	
	if (cc_hn.value == "" || cc_hn.value == cc_hn.defaultValue)
		msg += _CreditCardHolderNameValidationText + "<br>\n";

	if (cc_no.value.length != 16 || !validModule10(cc_no.value))
		msg += _CreditCardNumberValidationText + "<br>\n";

	var monthform = document.getElementsByName("cc_expire_month").value;
	var yearform = document.getElementsByName("cc_expire_year").value;
	if (!validateDate(monthform, yearform))
		msg += _ExpirationDateValidationText + "<br>\n";
       
	if (msg != "") {
		document.getElementById("errorMessageText").innerHTML = "<b>" + _ErrorMessageText + "</b><br><br>" + msg;
		document.getElementById("errorMessage").style.visibility = "visible";
		return false;
	}

	return true;
}

function validateDate(objMonth, objYear) {
	var todayDate = new Date();
	var year = todayDate.getFullYear();
	var month = todayDate.getMonth() + 1;
	
	var strSelectedDate = objYear + objMonth;
	var strTodayDate = year + (month < 10 ? "0" + month : month);
	
	if (parseInt(strSelectedDate, 10) < parseInt(strTodayDate, 10))
		return false;

	return true;
}

function removeNonNumericCharacters(inputText) {
	var tempText = "";
	for (i = 0; i <= inputText.length; i++) {
		var tempCharacter = inputText.charAt(i);
		if ((!isNaN(tempCharacter)) && (tempCharacter != " ")) {
			tempText += tempCharacter;
		}
	}
	return tempText;
}

function validModule10(ccNumber) {
	ccNumber = ccNumber + "";
	sum = 0;
	var paren = 0;
	try {
		for (i = ccNumber.length; i > 0; i--) {
			broj = parseInt(ccNumber.charAt(i - 1), 10);
			if (paren) {
				broj = broj * 2;
				sum += parseInt(broj / 10);
				sum += broj % 10;
			} else {
				sum += broj;
			}
			paren = paren ^ 1;
		}
		if ((sum % 10) == 0) {
			return true;
		} else {
			return false;
		}
	}
	catch (e) {
		return false;
	}
}
