jQuery.validator.addMethod('minChecked', function(value, element, minChecked) {
  return ( $('input[name="'+element.name+'"]:checked').size() >= minChecked );
}, 'Please select at least one option');


jQuery.validator.addMethod("skip_or_fill_minimum", function(value, element, options) {
    var numberRequired  = options[0];
    var selector        = options[1];
    var numberFilled = $(selector, element.form).filter(':filled').size();
    return (numberFilled >= numberRequired || numberFilled == 0);
}, jQuery.format("Please either skip these fields or fill at least {0} of them."));

jQuery.validator.addMethod('equalToIfExists', function(a,b,d) {
  d=$(d).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){$(b).valid()});
  return this.optional(b) || a==d.val()
}, 'Please enter the same value again.');
