$(function() {
	var name = $("#name"),
		email = $("#email"),
		confirm_email = $("#confirm_email"),
		accommodation = $("#accommodation"),
		bedrooms = $("#bedrooms"),
		denotes = $("#denotes"),
		//keystring = $("#keystring"),
		allFields = $([]).add(name).add(email).add(confirm_email).add(accommodation).add(bedrooms), //.add(keystring)
		tips = $("#validateTips");

	function updateTips(t)
	{
		tips.text(t).effect("highlight", {}, 1500);
	}

	function checkLength(o, n, min, max)
	{
		if ( o.val().length > max || o.val().length < min )
		{
			o.addClass('ui-state-error');
			o.focus();
			updateTips(!(min == max) ? "Length of [" + n + "] must be between " + min + " and " + max : "[" + n + "] cannot be left blank");
			return false;
		} else {
			return true;
		}
	}

	function checkEmpty(o, n)
	{
		if ( o.val().length < 1 )
		{
			o.addClass('ui-state-error');
			o.focus();
			updateTips("[" + n + "] cannot be left blank");
			return false;
		} else {
			return true;
		}
	}

	function equateEmails(x, y)
	{
		if ( x.val() == y.val() )
		{
			return true;
		} else {
			x.addClass('ui-state-error');
			y.addClass('ui-state-error');
			y.focus();
			updateTips("[Email] and [Confirm Email] are different");
			return false;
		}
	}

	function checkRegexp(o, regexp, n)
	{
		if ( !( regexp.test( o.val() ) ) )
		{
			o.addClass('ui-state-error');
			o.focus();
			updateTips(n);
			return false;
		} else {
			return true;
		}
	}
	
	$("#dialog").dialog({
		bgiframe: true,
		autoOpen: false,
		width: 500,
		height: 500,
		modal: true,
		buttons: {
			'SEND BOOKING REQUEST': function() {
				var bValid = true;
				allFields.removeClass('ui-state-error');

				bValid = bValid && checkLength(name, "Name", 3, 30);
				bValid = bValid && checkRegexp(name, /^[a-z]([0-9a-z _])+$/i, "[Name] may consist of a-z, 0-9, whitespaces, underscores, begin with a letter");

				bValid = bValid && checkLength(email, "Email", 6, 40);
				bValid = bValid && checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "Please enter VALID [Email] :: example - yourname@domain.com");

				bValid = bValid && checkLength(confirm_email, "Confirm Email", 6, 40);
				bValid = bValid && checkRegexp(confirm_email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "Please enter VALID [Confirm Email] :: example - yourname@domain.com");

				bValid = bValid && equateEmails(email, confirm_email);

				if (denotes.val() == "R")
				{
					bValid = bValid && checkRegexp(accommodation, /^([0-9])+$/, "[Accommodation] needs to be numeric value");
					bValid = bValid && checkRegexp(bedrooms, /^([0-9])+$/, "[Bedrooms] needs to be numeric value");
				}
				
				//bValid = bValid && checkEmpty(keystring, "Security Code");

				if (bValid)
				{
					$("#frmEnquiry").submit();

					$(this).dialog('close');

					return false; // not to post the form physically

					/*
					var dataString = 'client_name='+ name.val() + '&client_email=' + email.val() + '&client_phone=' + phone.val();  

					$.ajax({  
					  type: "POST",  
					  url: "../../properties/enquiry",  
					  data: dataString,  
					  success: function() {  
						$("#dialog").fadeOut(300).hide();
					  }  
					});  

					return false;
					*/
				}
			},
			' CANCEL ': function() {
				$(this).dialog('close');
			}
		},
		close: function() {
			allFields.val('').removeClass('ui-state-error');
		}
	});
	
	$('#enquiry').click(function() {
		$('#dialog').dialog('open');
	})
	.hover(
		function(){ 
			$(this).addClass("ui-state-hover"); 
		},
		function(){ 
			$(this).removeClass("ui-state-hover"); 
		}
	).mousedown(function(){
		$(this).addClass("ui-state-active"); 
	})
	.mouseup(function(){
			$(this).removeClass("ui-state-active");
	});
});