function formSubmit(frm) {
	if (isEmpty(frm.txtFirstName, "First Name")) return
	if (isEmpty(frm.txtLastName, "Last Name")) return
	if (isEmpty(frm.txtContactNum, "Contact Number")) return
	if (isEmpty(frm.txtEmail, "Contact e-mail")) return
	if (notEmail(frm.txtEmail, "Contact e-mail")) return
	//if (isEmpty(frm.taAddress, "Address")) return
	//if (isEmpty(frm.txtState, "State/Province")) return
	//if (isEmpty(frm.txtPostCode, "Postal/Zip Code")) return
	if (isEmpty(frm.txtHotelName, "Hotel Name")) return
	if (isEmpty(frm.txtRoomType, "Room Type")) return
	if (isEmpty(frm.txtCardHolder, "Card Holder")) return
	if (isEmpty(frm.txtCardNum1, "Credit Card Number")) return
	if (isEmpty(frm.txtCardNum2, "Credit Card Number")) return
	if (isEmpty(frm.txtCardNum3, "Credit Card Number")) return
	if (isEmpty(frm.txtCardNum4, "Credit Card Number")) return
	if (isEmpty(frm.txtCardValidNo, "Card Validation Number")) return
	if (isChecked(frm.chkTerms, "Terms & Conditions")) return

	//submit form
	frm.submit()	
}


function isEmpty(field, fieldName) {
	if (trim(field.value) == "") {
		alert("Please enter " + fieldName + ".");	
		field.focus()
		return true
	}
	return false
}


function isChecked(field, fieldName) {
	if (!field.checked) {
		alert("Please agree on the \"" + fieldName + "\" before proceeding further.");	
		field.focus()
		return true
	}
	return false
}


function notEmail(field, fieldName) {
	var email = trim(field.value)

	if (email == "") return false

	var at = false
	var dot = false

	for (var i=0; i<email.length; i++) {
		if (email.charAt(i) == "@") at = true
		if (email.charAt(i) == "." && at) dot = true
	}

	if (!(at && dot && email.length > 5)) {
		alert("The " + fieldName + " you entered is not a valid e-mail address.")
		field.focus()
		field.select()
		return true
	}

	//check for invalid characters
	if (invalidChars(field, fieldName, ',;|\'" <>\\/')) return true

	return false
}

function invalidChars(validatedControl, validatedName, charString) {
	var validatedString = trim(validatedControl.value).toLowerCase()
	charString = charString.toLowerCase()

	for (var i=0; i<validatedString.length; i++) {
		for (var j=0; j<charString.length; j++) {
			if (validatedString.charAt(i) == charString.charAt(j)) {
				var alertString = charString.split("").join("  ")
				alertString = alertString.split("     ").join("  space  ")
				alert(validatedName + " cannot contain any of the following\nillegal characters:\n\n " + alertString)
				validatedControl.focus()
				validatedControl.select()
				return true
			}
		}
	}

	return false
}

function trim(stringToTrim) {
	var trimmedString = ""

	//left trim
	for(var i=0; i<stringToTrim.length; i++) {
		if (stringToTrim.charAt(i) != " ") break
	}

	trimmedString = stringToTrim.substring(i)

	//right trim
	for(var i=trimmedString.length-1; i>=0; i--) {
		if (trimmedString.charAt(i) != " ") break
	}

	trimmedString = trimmedString.substring(0, i + 1)

	return trimmedString
}
