(function($){
  var options;

  $.fn.validation = function(opt) {
    // Extend local options.
    options = $.extend($.fn.validation.defaults, opt);

    return this.each(function() {
      var form = $(this); // Set form.
      
      // Add submit event to validate form.
      form.submit(function(event) {
        return $.fn.validation.validate(form);
      });
    });
  };

  /**
   * Function that validates the form.
   */
  $.fn.validation.validate = function(form) {
    var fields = form.find("input[type!=submit], textarea, select");  // Get all fields of form.
    var formOk = true;

    // Check every field.
    for(var i = 0; i < fields.length; i++) {
      var field = $(fields[i]); // Get jQuery wrapper of field.

      // Required field validation.
      if(field.hasClass("required")) {
        if(field.val() == "") {
          field.addClass(options.errorClass);
          field.next("span").fadeIn(200);
          formOk &= false;
        }
        else {
          field.removeClass(options.errorClass);
          field.next("span").fadeOut(200);
          formOk &= true;
        }
      }
      // Email field validation.
      if(field.hasClass("email")) {
	
	console.log($.fn.validation.defaults.regexEmail.match(field.val()));
	
        if(!$.fn.validation.defaults.regexEmail.test(field.val())) {
          field.addClass(options.errorClass);
          field.next("span").fadeIn(200);
          formOk &= false;
        }
        else {
          field.removeClass(options.errorClass);
          field.next("span").fadeOut(200);
          formOk &= true;
        }
      }
			// People validation
      if(field.attr("id") == "people") {
				if(isNaN(field.val()) || 1 > field.val() || field.val() > 15) {
          field.addClass(options.errorClass);
          field.next("span").fadeIn(200);
          formOk &= false;
				}
				else {
          field.removeClass(options.errorClass);
          field.next("span").fadeOut(200);
          formOk &= true;
				}
			}
    }

    return (formOk == 0 ? false : 1);
  }

  $.fn.validation.defaults = {
    errorClass: "error",
    regexEmail: /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[a-zA-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|eu)\b/
  };
  
})(jQuery);
