function validateCardDate(form){
  var cardDate=new Date();
  var today = new Date();
  var cmonth=$('#expirationmonth').attr('value');
  var cyear=$('#expirationyear').attr('value');
  var valid=false;
  cardDate.setFullYear(cyear,cmonth,0);
  $("#cardDateError").text('');
  if(cmonth != '' && cyear != ''){
    if(cardDate >= today){ return true; }else{ $("#cardDateError").text('Invalid Expiration Date');  return false; }
  }
}
function replaceChars(value, filter){
  switch(filter){

    case 'numbersOnly':
      re = /\$|,|@|[a-z]|\>|\s|\<|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\_|\]|\[|\}|\{|\;|\:|\.|\'|\"|\<|\>|\?|\/|\||\\|\!|\$/g;
    break;

    case 'alphanumNoWhite':
      re = /\$|,|@|\>|\s|\<|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\_|\]|\[|\}|\{|\;|\:|\.|\'|\"|\<|\>|\?|\/|\||\\|\!|\$/g;
    break;

    case 'alphanum':
      re = /\$|,|@|\>|\<|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\_|\]|\[|\}|\{|\;|\:|\.|\'|\"|\<|\>|\?|\/|\||\\|\!|\$/g;
    break;

    case 'alpha':
      re = /\$|,|[0-9]|@|\>|\<|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\/|\||\\|\!|\$/g;
    break;

    case 'email':
      re = /\$|,|\>|\<|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\/|\||\\|\!|\$/g;
    break;

    default:
      alert('no filter defined');
    break;
  }
  value=value.replace(re, '');
  return value;
}
jQuery.validator.addMethod("cardExpiration", function(value, element) {
  valid=validateCardDate(element.form);
  return this.optional(element) || valid;
}, "Invalid Expiration Date");

jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
	return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
}, "Letters Only");

jQuery.validator.addMethod("alphanumeric", function(value, element) {
  return this.optional(element) || /^\w+$/i.test(value);
}, 'Numbers and Letters Only');

jQuery.validator.addMethod("lettersonly", function(value, element) {
  return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters Only ");

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return this.optional(element) || /^\S+$/i.test(value);
}, "No white space please"); 

jQuery.validator.addMethod("ziprange", function(value, element) {
	return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
