// Form handling helpers

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function validateEmail(email){
	
	var emailPattern=/^(("[\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 
	var result;
	
	if (emailPattern.test(email)){
		return true;
	}
	return false
}

function addError(element){	
	$(element).closest('fieldset').find('.error-message').addClass('required-warning');	
}

function removeError(element){
	$(element).closest('fieldset').find('.error-message').removeClass('required-warning');
}

function checkTelephoneNumber(element){
	if(!isNumber($(element).val()) || $(element).val().length < 10 || $(element).val().length > 20){
		addError($(element));
	}
	else {
		removeError($(element));
	}	
}

function checkEmail(element, canBeEmpty){
	if(canBeEmpty && $(element).val().length === 0){
		removeError($(element));
		return true;
	}
	if(!validateEmail($(element).val())){		
		addError($(element));
	}	
	else {
		removeError($(element));
	}		
}

function checkTextField(element){
	if($(element).val().length > 0){
		removeError($(element));
	}
	else {
		addError($(element));
	}
}

function checkRadio(name){
	element = '#' + $('input[name="'+name+'"]').first().attr('id');	
	if($('input[name="'+name+'"]:checked').length > 0){		
		removeError($(element));
	}
	else {		
		addError($(element));
	}
}

function isFormValid(form){
	if($(form).find('.required-warning').length > 0){	
		if($.browser.msie && $.browser.version > 7 || !$.browser.msie){
			$('.required-warning').fadeOut('normal', function(){
				$(this).fadeIn('fast');
			});
		}
		$('.required-warning').first().find('input').focus();
		return false;
	}
	return true;
}		
