| Index: polymer_1.0.4/bower_components/gold-cc-input/cc-validator.js
|
| diff --git a/polymer_1.0.4/bower_components/gold-cc-input/cc-validator.js b/polymer_1.0.4/bower_components/gold-cc-input/cc-validator.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..58d67e6c88ec6fab680aed8055d069633b35b524
|
| --- /dev/null
|
| +++ b/polymer_1.0.4/bower_components/gold-cc-input/cc-validator.js
|
| @@ -0,0 +1,192 @@
|
| +/*
|
| +jQuery Credit Card Validator 1.0
|
| +
|
| +Copyright 2012-2015 Pawel Decowski
|
| +
|
| +Permission is hereby granted, free of charge, to any person obtaining a copy
|
| +of this software and associated documentation files (the "Software"), to deal
|
| +in the Software without restriction, including without limitation the rights
|
| +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| +copies of the Software, and to permit persons to whom the Software
|
| +is furnished to do so, subject to the following conditions:
|
| +The above copyright notice and this permission notice shall be included
|
| +in all copies or substantial portions of the Software.
|
| +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
| +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
| +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
| +IN THE SOFTWARE.
|
| + */
|
| +
|
| + (function(global) {
|
| + 'use strict';
|
| +
|
| + function validateCreditCard (input) {
|
| + var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
| + var bind, card, card_type, card_types, get_card_type, is_valid_length, is_valid_luhn, normalize, validate, validate_number, _i, _len, _ref;
|
| + card_types = [
|
| + {
|
| + name: 'amex',
|
| + icon: 'images/amex.png',
|
| + pattern: /^3[47]/,
|
| + valid_length: [15]
|
| + }, {
|
| + name: 'diners_club',
|
| + icon: 'images/diners_club.png',
|
| + pattern: /^30[0-5]/,
|
| + valid_length: [14]
|
| + }, {
|
| + name: 'diners_club',
|
| + icon: 'images/diners_club.png',
|
| + pattern: /^36/,
|
| + valid_length: [14]
|
| + }, {
|
| + name: 'jcb',
|
| + icon: 'images/jcb.png',
|
| + pattern: /^35(2[89]|[3-8][0-9])/,
|
| + valid_length: [16]
|
| + }, {
|
| + name: 'laser',
|
| + pattern: /^(6304|670[69]|6771)/,
|
| + valid_length: [16, 17, 18, 19]
|
| + }, {
|
| + name: 'visa_electron',
|
| + pattern: /^(4026|417500|4508|4844|491(3|7))/,
|
| + valid_length: [16]
|
| + }, {
|
| + name: 'visa',
|
| + icon: 'images/visa.png',
|
| + pattern: /^4/,
|
| + valid_length: [16]
|
| + }, {
|
| + name: 'mastercard',
|
| + icon: 'images/mastercard.png',
|
| + pattern: /^5[1-5]/,
|
| + valid_length: [16]
|
| + }, {
|
| + name: 'maestro',
|
| + pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
|
| + valid_length: [12, 13, 14, 15, 16, 17, 18, 19]
|
| + }, {
|
| + name: 'discover',
|
| + icon: 'images/discover.png',
|
| + pattern: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,
|
| + valid_length: [16]
|
| + }
|
| + ];
|
| +
|
| + var options = {};
|
| +
|
| + if (options.accept == null) {
|
| + options.accept = (function() {
|
| + var _i, _len, _results;
|
| + _results = [];
|
| + for (_i = 0, _len = card_types.length; _i < _len; _i++) {
|
| + card = card_types[_i];
|
| + _results.push(card.name);
|
| + }
|
| + return _results;
|
| + })();
|
| + }
|
| + _ref = options.accept;
|
| + for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
| + card_type = _ref[_i];
|
| + if (__indexOf.call((function() {
|
| + var _j, _len1, _results;
|
| + _results = [];
|
| + for (_j = 0, _len1 = card_types.length; _j < _len1; _j++) {
|
| + card = card_types[_j];
|
| + _results.push(card.name);
|
| + }
|
| + return _results;
|
| + })(), card_type) < 0) {
|
| + throw "Credit card type '" + card_type + "' is not supported";
|
| + }
|
| + }
|
| +
|
| + get_card_type = function(number) {
|
| + var _j, _len1, _ref1;
|
| + _ref1 = (function() {
|
| + var _k, _len1, _ref1, _results;
|
| + _results = [];
|
| + for (_k = 0, _len1 = card_types.length; _k < _len1; _k++) {
|
| + card = card_types[_k];
|
| + if (_ref1 = card.name, __indexOf.call(options.accept, _ref1) >= 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);
|
| +
|
| + normalize = function(number) {
|
| + return number.replace(/[ -]/g, '');
|
| + };
|
| +
|
| + validate = (function(_this) {
|
| + return function() {
|
| + return validate_number(normalize(input));
|
| + };
|
| + })(this);
|
| +
|
| + return validate(input);
|
| + };
|
| +
|
| + global.CreditCardValidator = {
|
| + validate: validateCreditCard
|
| + };
|
| + })(this);
|
|
|