// jquery plugin for required input
(function($){
  $.fn.extend({
    validate: function() {
      return this.each(function() {
        var f = $(this);
        f.submit(function() {
          var f = $(this);
          var errors = {};
          var valid = true;
          f.find(':input').each(function() {
            var i = $(this);
            var id = i.is('input:radio') ? i.attr('name') : i.attr('id');
            var e = [];
            if (i.is('.required')) {
              var empty = false;
              if (i.is('input:radio')) {
                if (i.is(':unchecked') && i.parents('form').find('input:radio:checked[name='+i.attr('name')+']').length == 0)
                  e.push("is required");
              }
              else {
                if ($.trim(i.val()).length == 0 && ! i.is('.email'))
                  e.push("is required");
              }
            }
            if (i.is('.email')) {
              if (!i.val().match(/^.+@.+\..+$/))
                e.push("is not a valid email");
            }
            if (e.length > 0) {
              errors[id] = e;
              valid = false;
            }
          });
          if (!valid) {
            var m = "Correct the following errors:\n\n";
            $.each(errors, function(id,e) {
              var l = $('label[for="'+id+'"]');
              $.each(e, function() {
                m += ("  " + l.text().replace(/\*$/i,'') + " " + this + ".\n");
              });
            });
            alert(m);
          }
          return valid;
        });
      });
    }
  });
})(jQuery);
