function validateForm(which, cardreq){
	
	if (!checkForm(which, cardreq)) {
		return false; 
	} else {
		var type = $('#type').val();
		var url = '';
		var inputs = $("#contact_form").serialize();
		if (type == 'Travel Trade') {
			url = "/subscribers/travel_trade_postman.php";
		} else {
			url = "/subscribers/postman.php";
		}
		//alert(inputs);
		$.ajax({  
			type: "GET",  
			url: url,  
			data: inputs,  
			success: function(data) {
				$('#contact_form_area').html(data);
		  	} 
		});
	}
	return false;
}

function checkForm(which, cardreq) {
		
	if (which == 'subscribe') { // its one of the subscriber forms
			// quickie references to my fields
		var title = document.getElementById('title');
		var firstname = document.getElementById('firstname');
		var surname = document.getElementById('surname');
		var CompanyName = document.getElementById('CompanyName');
		var address = document.getElementById('address');
		var suburb = document.getElementById('suburb');
		var state = document.getElementById('state');
		var postcode = document.getElementById('postcode');
		var email = document.getElementById('email');
		var usertype = document.getElementById('usertype');
		var captcha = document.getElementById('captcha');
		var phone = document.getElementById('phone');
		var mobile = document.getElementById('mobile');
			
		// check the inputs  (main function nav)
		if (selectField(title, "mand", "Please enter your preferred title.")) {
			if (alphaField(firstname, "mand", "given or first name.")) {
				if (alphaField(surname, "mand", "family or surname."))	{
					if(alphaNumField(address, "mand", "address.")) {
						if(alphaNumField(suburb, "mand", "town or suburb.")) {
							if (selectField(state, "mand", "Please enter your state if you live in Australia or Outside Australia if not.")) {
								if(postCodeField(postcode, "mand", "postal code.")) {
									if(emailField(email, "mand", "email address.")) {
										if(phoneFields(phone, mobile)) {		
											if (cardreq == 'yes') {
												var card_number = document.getElementById('card_number');
												if(alphaNumField(card_number, "mand", "MetroCard number.")) {
													if (selectField(usertype, "mand", "Please enter the primary reason you use Metro Transport's Monorail or Light Rail services.")) {
														if(alphaNumField(captcha, "mand", "SPAM blocker letters and digits.")) {
															return true
														}
													}
												}
											} else {
												if (selectField(usertype, "mand", "Please enter the primary reason you use Metro Transport's Monorail or Light Rail services.")) {
													if(alphaNumField(captcha, "mand", "SPAM blocker letters and digits.")) {
														return true;
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}		
			}
		}
		return false;
	} if (which == 'Travel Trade') { // its the travel trade form
		var operator = document.getElementById('operator');
		var name = document.getElementById('name');
		var phone = document.getElementById('phone');
		var email = document.getElementById('email');
		var date = document.getElementById('date');
		var time_arrival = document.getElementById('time_arrival');
		var time_departure = document.getElementById('time_departure');
		var leader_name = document.getElementById('leader_name');
		var leader_mobile = document.getElementById('leader_mobile');
		var number_pax = document.getElementById('number_pax');
		var captcha = document.getElementById('captcha');
		// check the inputs  (main function nav)
		if (alphaField(operator, "mand", "your operator or organisation name.")) {
			if (alphaField(name, "mand", "name.")) {
				if (phoneField(phone, "mand", "contact phone number."))	{
					if(emailField(email, "mand", "email address.")) {
						if(alphaNumField(date, "mand", "date of visit.")){
							if(alphaNumField(time_arrival, "mand", "estimated arrival time.")) {
								if(alphaNumField(time_departure, "mand", "estimated departure time.")) {
									if (alphaField(leader_name, "mand", "group or tour leader's name.")) {
										if (alphaField(leader_mobile, "mand", "group or tour leader's mobile phone for contact on the day.")) {
											if (alphaNumField(number_pax, "mand", "group or tour leader's mobile phone for contact on the day.")) {
												if(alphaNumField(captcha, "mand", "SPAM blocker letters and digits.")) {
													return true;
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		return false;
	} else { // its an enquiry or corporate form
		var title = document.getElementById('title');
		var firstname = document.getElementById('firstname');
		var surname = document.getElementById('surname');
		var organisation = document.getElementById('organisation');
		var phone = document.getElementById('phone');
		var email = document.getElementById('email');
		var enquiry = document.getElementById('enquiry');
		var captcha = document.getElementById('captcha');
		// check the inputs  (main function nav)
		if (selectField(title, "mand", "Please enter your preferred title.")) {
			if (alphaField(firstname, "mand", "given or first name.")) {
				if (alphaField(surname, "mand", "family or surname."))	{
					if(alphaNumField(organisation, "mand", "organisation.")) {
						if(phoneField(phone, "mand", "main phone number.")){
							if(emailField(email, "mand", "email address.")) {
								if(alphaNumField(enquiry, "mand", "enquiry details so we can route your request and respond accordingly.")) {
									if(alphaNumField(captcha, "mand", "SPAM blocker letters and digits.")) {
										return true;
									}
								}
							}
						}
					}
				}
			}
		}
	return false;
	}
}

// function for checking alpha-only text fields
function alphaField(element, which, fieldDesc) {
	var alphaExp = /^[-a-zA-Z ']+$/;
	if ((which == 'mand') && (element.value.length < 2)) {
		var shortStub = 'Please enter your ';
		alert(shortStub + fieldDesc);
		element.focus(); // set the focus to this input
		return false;
	} else if ((element.value.length > 1) && (!element.value.match(alphaExp))) {
	var wrongStub = 'Please enter only letters for your ';
		alert(wrongStub + fieldDesc);
		element.focus();
		return false;
	}else {
		return true;
	}
}
	
// function for checking alphanumeric text fields
function alphaNumField(element, which, fieldDesc) {
	var alphaNumExp = /^[-0-9a-zA-Z' /]+$/;
	if ((which == 'mand') && (element.value.length < 2)) {
		var shortStub = 'Please enter your ';
		alert(shortStub + fieldDesc);
		element.focus(); // set the focus to this input
		return false;
	}else {
		return true;
	}
}
	
// function for checking dropdown fields
function selectField(element, which, message){
	if ((which == 'mand') && (element.value == '')) {
		alert(message);
		element.focus();
		return false;
	}else{
		return true;
	}
}

// function for checking post and zip code fields (needs letters for uk and nz)
function postCodeField(element, which, fieldDesc) {
	var alphaNumExp = /^[0-9a-zA-Z]+$/;
	if ((which == 'mand') && (element.value.length < 4)) {
		var shortStub = 'Please enter your ';
		alert(shortStub + fieldDesc);
		element.focus(); // set the focus to this input
		return false;
	} else if ((element.value.length > 1) && (!element.value.match(alphaNumExp))) {
		var wrongStub = 'Please enter only letters and numbers for your ';
		alert(wrongStub + fieldDesc);
		element.focus();
		return false;
	} else {
		return true;
	}  
}
	
// function for checking  telephone number fields. we allow numbers and spaces.
function phoneField(element, which, fieldDesc) {
	var NumExp = /^[- 0-9]+$/;
	if ((which == 'mand') && (element.value.length < 7)) {
		var shortStub = 'Please enter your ';
		alert(shortStub + fieldDesc);
		element.focus(); // set the focus to this input
		return false;
	} else if ((element.value.length > 1) && (!element.value.match(NumExp))) {
	var wrongStub = 'Please enter only numbers for your ';
		alert(wrongStub + fieldDesc);
		element.focus();
		return false;
	}else {
		return true;
	}
}

// function for checking for at least 1 of phone fields. we allow numbers and spaces.
function phoneFields(phone, mobile) {
	if ((phone.value == '') && (mobile.value == '')) {
		alert('Please enter either a home or mobile phone number.');
		phone.focus(); // set the focus to this input
		return false;
	} else {
		return true;
	}
}

// function for quickly checking email format (check again on server side)	
function emailField(element, which, fieldDesc){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if ((which == 'mand') && (element.value.length < 6)) {
		var shortStub = 'Please enter your ';
		alert(shortStub + fieldDesc);
		element.focus(); // set the focus to this input
		return false;
	} else if (element.value.match(emailExp)) {
		return true;
	} else {
		var wrongStub = 'Please check the format of your ';
		alert(wrongStub + fieldDesc);
		element.focus();
		return false;
	}
}
