//thanks to the tutorial from 
//http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/
//for helping me understand how to make this
//-GK


$(function() {
	$('#book_submitButton').click(function() {

		
		//creates a date from the date fields
		var date_from = $("#date_from").val();
		var date_to = $("#date_to").val();
		var now = new Date();
		var testdate = new Date(date_from.substring(6,10) * 1, date_from.substring(0,2) * 1 - 1, date_from.substring(3,5) * 1);
		var testdate2 = new Date(date_to.substring(6,10) * 1, date_to.substring(0,2) * 1 - 1, date_to.substring(3,5) * 1);
		
		$('input:not(.sub), select').css ({'background-color':'#fff'});

		if ($("#date_from").val()=='') {
			alert ('Don\'t forget this field -- N\'oubliez pas ce champ');
			colorbackground($('#date_from'));
			return false;
		} else if (testdate <= now) {
			alert ('Date must be in the future -- Date doit être à l\'avenir');
			colorbackground($('#date_from'));
			return false;
		} else if ($("#date_to").val()=='') {
			alert ('Don\'t forget this field -- N\'oubliez pas ce champ');
			colorbackground($('#date_to'));
			return false;
		} else if (testdate > testdate2) {
			alert ('You must check in before you check out -- Vous devez vérifier en avant de quitter');
			colorbackground($('#date_to'));
			return false;
		} else if ($('#book_guests').val()=='') {
			alert ('Don\'t forget this field -- N\'oubliez pas ce champ');
			colorbackground($('#book_guests'));
			return false;
		} else if ($('#book_name').val()=='') {
			alert ('Don\'t forget this field -- N\'oubliez pas ce champ');
			colorbackground($('#book_name'));
			return false;
		} else if ($('#book_phone').val()=='') {
			alert ('Don\'t forget this field -- N\'oubliez pas ce champ');
			colorbackground($('#book_phone'));
			return false;
		} else if ($('#book_email').val()=='') {
			alert ('Don\'t forget this field -- N\'oubliez pas ce champ');
			colorbackground($('#book_email'));
			return false;
		} else if (($('#book_email').val()!='')&& (!validateEmail_book ($('#book_email').val()))) {
			colorbackground($('#book_email'));
			return false;
		} else {
			//creates a query string
			var dataString = $('#booking_form').serialize();
		
			$.ajax({
				type: "POST",
				url: "/GK_TEST_NEW/booking_contact.php",
				data: dataString,
				success: function() {
					alert ('Success! Je vous remercie de votre enquête -- Success thank you for your inquiry')
				}
			});
			$('input:not(.sub), textarea').val('');
		}	
		
		
		return false;
		
	});
	
	function colorbackground(field) {
		$(field).css ({'background-color':'#F3D200'});
		$(field).focus();
	}	
});

function validateEmail_book (emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	
	var user=matchArray[1];
	var domain=matchArray[2];
	
	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;
		}
	}
	
	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid.");
		return false;
	}
	
	var IPArray=domain.match(ipDomainPat);
	
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!");
				return false;
			}
		}
	
		return true;
	}
	
	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;
		}
	}
	
	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;
	}
	
	if (len<2) {
		alert("This address is missing a hostname!");
		return false;
	}
	
	return true;
}



