(function($){$.fn.html5form=function(options){$(this).each(function(){var defaults={async:true,method:$(this).attr('method'),responseDiv:null,labels:'show',colorOn:'#000000',colorOff:'#a1a1a1',action:$(this).attr('action'),messages:false,allBrowsers:false}
var opts=$.extend({},defaults,options);if(!opts.allBrowsers){if($.browser.webkit){return false;}}
var form=$(this);var requiredClass='_required';var emailClass='_email';var urlClass='_url';function fillInput(input){input.val(input.attr('placeholder'));input.css('color',opts.colorOff);}
if(opts.labels=='hide'){$(this).find('label').hide();}
$.each($(':input:visible:not(:button, :submit, :radio, :checkbox)',this),function(){fillInput($(this));if($(this).attr('required')==''||($(this).attr('required')!=false)){$(this).addClass(requiredClass);}
$("input[type='url']").filter(this).each(function(){$(this).addClass(urlClass);});$("input[type='email']").filter(this).each(function(){$(this).addClass(emailClass);});$(this).bind('focus',function(ev){ev.preventDefault();if(this.value==$(this).attr('placeholder')){if(!$(this).hasClass(urlClass)){$(this).attr('value','');}
$(this).css('color',opts.colorOn);}});$(this).bind('blur',function(ev){ev.preventDefault();if(this.value==''){fillInput($(this));}else{if(($(this).hasClass(urlClass))&&($(this).val()==$(this).attr('placeholder'))){fillInput($(this));}}});$('textarea').filter(this).each(function(){$(this).keydown(function(ev){var cc=ev.charCode||ev.keyCode;if(cc==37||cc==39){return true;}
if(cc==8||cc==46){return true;}
if(this.value.length>=$(this).attr('maxlength')){return false;}else{return true;}});});});$.each($(':submit',this),function(){$(this).bind('click',function(ev){var emptyInput=null;var emailError=null;$('.'+requiredClass,form).each(function(){if(($(this).val()==$(this).attr('placeholder'))||($(this).val()=='')){emptyInput=$(this);if(opts.messages=='es'){$(opts.responseDiv).html('<p>El campo '+$(this).attr('id')+' es requerido.</p>');}else if(opts.messages=='en'){$(opts.responseDiv).html('<p>The '+$(this).attr('title')+' field is required.</p>');}
return false;}
return emptyInput;});$('.'+emailClass,form).each(function(){if($(this).val().search(/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/i)){emailError=$(this);return false;}
return emailError;});if(!emptyInput&&!emailError){if(opts.async){var formData=$(form).serialize();$.ajax({url:opts.action,type:opts.method,data:formData,success:function(data){if(opts.responseDiv){$(opts.responseDiv).html(data);}
$.each(form[0],function(){fillInput($(this).not(':submit, :button'));});}});}else{$(form).submit();}}else{if(emptyInput){$(emptyInput).focus().select();}
else if(emailError){if(opts.messages=='es'){$(opts.responseDiv).html('<p>Ingrese una dirección de correo válida por favor.</p>');}else if(opts.messages=='en'){$(opts.responseDiv).html('<p>Please type a valid email address.</p>');}
$(emailError).select();}else{alert('Unknown Error');}}
return false;});});});}})(jQuery);
