//------------------------------------
//	CONTACT.JS
//	Author: 	Engage Interactive
//	Requires:	jquery 1.3.2
//				global.js
//				cufon.js
//				gazz.js
//------------------------------------

Cufon.replace('#contact_form label');

$(function(){
//BEGIN jQuery

	busy = false;
	isOpen = false;
	
	if($('#kind').val() == $('#kind .grumble').text()){
		$('#complaint').show().css({height:$('#complaint_form').height()});
		$('#complaint span.mask').hide();
		isOpen = true;
	}

	$('#kind').change(function(){
		
		$('#complaint').show();
		
		m = $(this).children('.grumble').text();
		c = $(this).val();
		h = $('#complaint_form').height();
		
		if(c == m && busy == false && isOpen == false){
			busy = true;
			$('#kind').attr('disabled','disabled');
			$('#complaint_form').hide();
			$('#complaint').animate({height:h},h*3,'easeInOutExpo',function(){
				$('#complaint_form').show();
				$('#complaint span.mask').fadeOut();
				isOpen = true;
				busy = false;
				$('#kind').removeAttr('disabled');
			});
			$('#restaurant option:first').html('Please choose one');
		}else if(busy == false && isOpen == true){
			busy = true;
			$('#kind').attr('disabled','disabled');
			$('#complaint span.mask').fadeIn(function(){
				$('#complaint_form').hide();
				$('#complaint').animate({height:0},h*3,'easeInOutExpo',function(){
					isOpen = false;
					busy = false;
					$('#kind').removeAttr('disabled');
					$('#complaint .field').removeClass('error');
					$(this).hide();
				});
			});
			$('#restaurant option:first').html('Please choose one (optional)');
		}
	});
	
	
	//E-MAIL VALIDATION
	
	$("#email").blur(function(){
		var email = $(this).val();
		
		if(email != 0){
			if(isValidEmailAddress(email)){
				$(this).parent('div').removeClass('error');
			}else{
				$(this).parent('div').addClass('error');
			}
		}else{
			$(this).parent('div').removeClass('error');
		}
	});
	
	
	// FREE ENTRY VALIDATION
	
	$('#name, #message').blur(function(){
		c = $(this).val().length;
		
		if(c != 0){
			if(c < 3 || $(this).val() == $(this).attr('title')){
				$(this).parent('div').addClass('error');
			}else{
				$(this).parent('div').removeClass('error');
			}
		}else{
			$(this).parent('div').addClass('error');
		}
	});
	
	
	// DROP DOWNS
	
	$('#restaurant, #time').blur(function(){
		if($(this).val() == $(this).children('option:first').text() && isOpen == true){
			$(this).parent('div').addClass('error');
		}else{
			$(this).parent('div').removeClass('error');
		}
	});
	
	
	//SUBMIT
	
	$('#contact_form form').submit(function(){
		if(checkValidation() == false){
			$('#error_message').fadeIn();
			return false;
		}
	});
	
	function checkValidation(){
		//Innocent until proven guilty!
		valid = true;

		//Is it a complaint?
		if($('#kind').val() == $('#kind .grumble').text()){
			//It's a complaint, have they chosen a location?
			if($('#restaurant').val() == $('#restaurant option:first').text()){
				//Nope! ERROR!
				valid = false;
				$('#restaurant').parent('div').addClass('error');
			}
			//Have they chosen a time?
			if($('#time').val() == $('#time option:first').text()){
				//Nope! ERROR!
				valid = false;
				$('#time').parent('div').addClass('error');
			}
		}
		
		//Check the required fields
		$('#email, #name, #message').blur();
		
		//Check for error classes
		if($('.error:visible').size() > 0){
			valid = false;
		}else{
			valid = true;
		}
		return valid;
	}

//END jQuery
});


//CHECK FOR VALID EMAIL
function isValidEmailAddress(emailAddress) {
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}