(function(){var $,__indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i=0){_results.push(card);}}return _results;})();for(_j=0,_len1=_ref1.length;_j<_len1;_j++){card_type=_ref1[_j];if(number.match(card_type.pattern)){return card_type;}}return null;};is_valid_luhn=function(number){var digit,n,sum,_j,_len1,_ref1;sum=0;_ref1=number.split('').reverse();for(n=_j=0,_len1=_ref1.length;_j<_len1;n=++_j){digit=_ref1[n];digit=+digit;if(n%2){digit*=2;if(digit<10){sum+=digit;}else{sum+=digit-9;}}else{sum+=digit;}}return sum%10===0;};is_valid_length=function(number,card_type){var _ref1;return _ref1=number.length,__indexOf.call(card_type.valid_length,_ref1)>=0;};validate_number=(function(_this){return function(number){var length_valid,luhn_valid;card_type=get_card_type(number);luhn_valid=false;length_valid=false;if(card_type!=null){luhn_valid=is_valid_luhn(number);length_valid=is_valid_length(number,card_type);}return{card_type:card_type,valid:luhn_valid&&length_valid,luhn_valid:luhn_valid,length_valid:length_valid};};})(this);validate=(function(_this){return function(){var number;number=normalize($(_this).val());return validate_number(number);};})(this);normalize=function(number){return number.replace(/[ -]/g,'');};if(!bind){return validate();}this.on('input.jccv',(function(_this){return function(){$(_this).off('keyup.jccv');return callback.call(_this,validate());};})(this));this.on('keyup.jccv',(function(_this){return function(){return callback.call(_this,validate());};})(this));callback.call(this,validate());return this;};}).call(this);