$(document).ready(function(){
	jQuery.validator.addMethod("checkMinSelection", function(value, element, param) {
	    var selectorForMethod = "";  
	    if (element.type == "checkbox") {
	       selectorForMethod = "input[name=" + element.name + "]:checked";
	    }
	    else {
	       selectorForMethod += "select[name=" + element.name + "] option:selected";
	    }
	    var checkCount = $(selectorForMethod).length;
	    if (checkCount >= param) { 
	      return true; 
	    }
	    else {
	      this.settings.messages[element.name] = "Please select at least " + param + " choice(s).";
	      return false;
	    }
	  });
	  jQuery.validator.addMethod("checkMaxSelection", function(value, element, param) {
  	    var selectorForMethod = "";  
  	    if (element.type == "checkbox") {
  	       selectorForMethod = "input[name=" + element.name + "]:checked";
  	    }
  	    else {
  	       selectorForMethod += "select[name=" + element.name + "] option:selected";
  	    }
  	    var checkCount = $(selectorForMethod).length;
  	    if (checkCount <= param) { 
  	      return true; 
  	    }
  	    else {
  	      this.settings.messages[element.name] = "Please select at most " + param + " choice(s).";
  	      return false;
  	    }
  	  }); 
  	  jQuery.validator.addMethod("groupRequired", function(value, element, param) {
  	    $(element).attr('groupField','true');
  	    return !this.optional(element); 
  	  });
  	  jQuery.validator.addMethod("dummyProp", function(value, element, param) {

  	    return true;
  	  });
  	  jQuery.validator.addMethod("minDate", function(value, element, param) {
	     var validator = this;
	     var enteredDateStr = element.value; 
	     if (enteredDateStr == "") {
	       // Dont validate. Nothing entered
	       return true;
	     }
	     var month = enteredDateStr.substring(0,2);
	     var day   = enteredDateStr.substring(3,5);
	     var year = enteredDateStr.substring(6,10);
	     var enteredDate = new Date(year, month, day);
	     month = enteredDate.getMonth() - 1;
	     enteredDate.setMonth(month);
	     if (enteredDate >= new Date(param)) {
	         return true;
	     }
	     else {
	      this.settings.messages[element.name] =  'Please input a date after ' + (new Date(param)).toDateString();
	      return false;
	     }
	  });
	  jQuery.validator.addMethod("maxDate", function(value, element, param) {
	     var validator = this;
	     var enteredDateStr = element.value; 
	     if (enteredDateStr == "") {
	       // Dont validate. Nothing entered
	       return true;
	     }

	     var month = enteredDateStr.substring(0,2);
	     var day   = enteredDateStr.substring(3,5);
	     var year = enteredDateStr.substring(6,10);
	     var enteredDate = new Date(year, month, day);
	     month = enteredDate.getMonth() - 1;
	     enteredDate.setMonth(month);
	     if (enteredDate <=  new Date(param)) {
	         return true;
	     }
	     else {
	      this.settings.messages[element.name] =  'Please input a date before ' + (new Date(param)).toDateString();
	      return false;
	     }
	 });
  	  
});
