//------------------------------------
//	FORM.JS
//	Author: 	Engage Interactive
//	Requires:	jquery 1.4.2
//	Version:	0.1
//------------------------------------

$(function(){$('.form_wrapper').addClass('fresh');$('.form_wrapper .messages p:not(.wait)').append('<a href="#" class="close">&times;</a>');$('form input[title]:not([value]), form textarea[title]:not([value])').each(function(){$(this).attr('value',$(this).attr('title'));});$('form input[title], form textarea[title]').live('focus',function(){if($(this).attr('value')==$(this).attr('title')){$(this).attr('value','');}});$('form input[title], form textarea[title]').live('blur',function(){if($(this).attr('value')==$(this).attr('title')||$(this).attr('value')==''){$(this).attr('value',$(this).attr('title'));}});$('input[type=text].required, textarea.required').blur(function(){if($(this).closest('.form_wrapper').hasClass('fresh')==true)return false;v=$(this).val();l=v.length;if(l<3||v==$(this).attr('title')||$(this).siblings('.counter').hasClass('error')){$(this).error('.field');}else{$(this).valid('.field');}});$('select.required').blur(function(){if($(this).closest('.form_wrapper').hasClass('fresh')==true)return false;v=$(this).val();if(v==$(this).children('option:first').val()||v==$(this).children('option[disabled]').val()){$(this).error('.field');}else{$(this).valid('.field');}});$('input[type=text].email').blur(function(){if($(this).closest('.form_wrapper').hasClass('fresh')==true)return false;v=$(this).val();email=checkemail(v);if(v!=$(this).attr('title')&&(email==false||email==null)){$(this).error('.field');}else if(v!=$(this).attr('title')){$(this).valid('.field');}else if(v==$(this).attr('title')&&!$(this).hasClass('required')){$(this).parent('.field').removeClass('valid').removeClass('error');}});$('input[type=text].phone').blur(function(){if($(this).closest('.form_wrapper').hasClass('fresh')==true)return false;v=$(this).val();pn=checkphone(v);mn=checkMphone(v);if(v!=$(this).attr('title')&&((pn==false||pn==null)&&(mn==false||mn==null))){$(this).error('.field');}else if(v!=$(this).attr('title')){$(this).valid('.field');}else if(v==$(this).attr('title')&&!$(this).hasClass('required')){$(this).parent('.field').removeClass('valid').removeClass('error');}});$('input[type=checkbox].required').change(function(){if($(this).closest('.form_wrapper').hasClass('fresh')!=true){if($(this).attr('checked')){$(this).valid('.field');}else{$(this).error('.field');}}});$('.radio ul.required input[type=radio]').change(function(){if($(this).closest('.form_wrapper').hasClass('fresh')!=true){$(this).valid('.field');}});function checkRadio(formID){$(formID+' .radio ul.required').each(function(){var count=$(this).find('input[type=radio][checked=true]').length;if(count<1){$(this).error('.field');}else{$(this).valid('.field');}});$(formID+' input[type=checkbox].required').each(function(){if(!$(this).attr('checked'))$(this).error('.field');});}
function checkValidation(formID){valid=true;$(formID+' .required').blur();$(formID+' .phone, '+formID+' .email').blur();checkRadio(formID);if($(formID+' .error:visible').size()>0){valid=false;}
return valid;}
$('.form_wrapper button[type=submit]').click(function(e){formID='#'+$(this).closest('.form_wrapper').attr('id');$(formID).removeClass('fresh');if($.browser.safari){scrollElement=$('body');}else{scrollElement=$('html');}
formOffset=$(formID).offset().top-20;if(checkValidation(formID)==true){$(formID+' input, '+formID+' textarea').each(function(){if($(this).val()==$(this).attr('title')||$(this).val()==''){$(this).val(' - ');}});formData=$(formID).serialize();scrollElement.animate({scrollTop:formOffset},500,'easeInOutExpo',function(){fadeMsg(formID,'wait',2000,function(){$(formID).css({height:$(formID).height()});$.ajax({type:'POST',url:$(formID).attr('action'),data:formData,success:function(){$(formID+' fieldset').fadeOut(function(){$(this).remove();$(formID+' .thankyou').fadeIn();$(formID).animate({height:$(formID+' .thankyou').innerHeight(true)},1000,'easeInOutExpo');});}});});});}else{scrollElement.animate({scrollTop:formOffset},500,'easeInOutExpo',function(){fadeMsg(formID,'error',4000,false,function(){fadeMsg(formID,'hide');});});}
return false;});var cbackTimer={};function fadeMsg(id,m,t,before,after){if(m=='hide'){if($.browser.msie){$(id+' .messages').hide();}else{$(id+' .messages').stop([]).fadeOut();}}else{$(id+' .messages').children('.'+m).addClass('active').siblings().removeClass('active');if($.browser.msie){$(id+' .messages').show(0,function(){if(before)before.call();})}else{$(id+' .messages').stop([]).fadeIn(400,function(){if(before)before.call();})}
cbackTimer=$.timer(t,function(){$.clearTimer(cbackTimer);if(after)after.call();});}}
$('.messages').click(function(){if($(this).children('p.wait').hasClass('active')==true)return false;$.clearTimer(cbackTimer);if($.browser.msie){$(this).hide().removeAttr('style');}else{$(this).stop([]).fadeOut(function(){$(this).removeAttr('style');});}
return false;});$('.messages .close').live('click',function(){$.clearTimer(cbackTimer);if($.browser.msie){$(this).closest('.messages').hide().removeAttr('style');}else{$(this).closest('.messages').stop([]).fadeOut(function(){$(this).removeAttr('style');});}
return false;});});function checkemail(email_address){return email_address.length>5&&email_address.match(/^((([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])))\.?$/);}
function checkphone(phone_number){return phone_number.length>9&&phone_number.match(/^(\(?(0|\+44)[1-9]{1}\d{1,4}?\)?\s?\d{3,4}\s?\d{3,4})$/);}
function checkMphone(phone_number){return phone_number.length>9&&phone_number.match(/^((0|\+44)7(5|6|7|8|9){1}\d{2}\s?\d{6})$/);}
(function($){$.fn.valid=function(e){this.closest(e).addClass('valid').removeClass('error');};})(jQuery);(function($){$.fn.error=function(e){this.closest(e).addClass('error').removeClass('valid');};})(jQuery);jQuery.extend(jQuery.easing,{easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;}});jQuery.timer=function(time,func,callback){var a={timer:setTimeout(func,time),callback:null}
if(typeof(callback)=='function'){a.callback=callback;}
return a;};jQuery.clearTimer=function(a){clearTimeout(a.timer);if(typeof(a.callback)=='function'){a.callback();};return this;};
