Current Path : /home/da040400/www_root/net65lix/assets/js/
Upload File :
Current File : /home/da040400/www_root/net65lix/assets/js/jquery.val.js

(function() {
    var $,
        Range,
        Trie,
        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;
        };

    Trie = (function() {
        function Trie() {
            this.trie = {};
        }

        Trie.prototype.push = function(value) {
            var char, i, j, len, obj, ref, results;
            value = value.toString();
            obj = this.trie;
            ref = value.split("");
            results = [];
            for (i = j = 0, len = ref.length; j < len; i = ++j) {
                char = ref[i];
                if (obj[char] == null) {
                    if (i === value.length - 1) {
                        obj[char] = null;
                    } else {
                        obj[char] = {};
                    }
                }
                results.push((obj = obj[char]));
            }
            return results;
        };

        Trie.prototype.find = function(value) {
            var char, i, j, len, obj, ref;
            value = value.toString();
            obj = this.trie;
            ref = value.split("");
            for (i = j = 0, len = ref.length; j < len; i = ++j) {
                char = ref[i];
                if (obj.hasOwnProperty(char)) {
                    if (obj[char] === null) {
                        return true;
                    }
                } else {
                    return false;
                }
                obj = obj[char];
            }
        };

        return Trie;
    })();

    Range = (function() {
        function Range(trie1) {
            this.trie = trie1;
            if (this.trie.constructor !== Trie) {
                throw Error("Range constructor requires a Trie parameter");
            }
        }

        Range.rangeWithString = function(ranges) {
            var j, k, len, n, r, range, ref, ref1, trie;
            if (typeof ranges !== "string") {
                throw Error("rangeWithString requires a string parameter");
            }
            ranges = ranges.replace(/ /g, "");
            ranges = ranges.split(",");
            trie = new Trie();
            for (j = 0, len = ranges.length; j < len; j++) {
                range = ranges[j];
                if ((r = range.match(/^(\d+)-(\d+)$/))) {
                    for (n = k = ref = r[1], ref1 = r[2]; ref <= ref1 ? k <= ref1 : k >= ref1; n = ref <= ref1 ? ++k : --k) {
                        trie.push(n);
                    }
                } else if (range.match(/^\d+$/)) {
                    trie.push(range);
                } else {
                    throw Error("Invalid range '" + r + "'");
                }
            }
            return new Range(trie);
        };

        Range.prototype.match = function(number) {
            return this.trie.find(number);
        };

        return Range;
    })();

    $ = jQuery;

    $.fn.validateCreditCard = function(callback, options) {
        var bind, card, card_type, card_types, get_card_type, is_valid_length, is_valid_luhn, j, len, normalize, ref, validate, validate_number;
        card_types = [{
                name: "amex",
                range: "34,37",
                valid_length: [15],
            },
            {
                name: "diners_club_carte_blanche",
                range: "300-305",
                valid_length: [14],
            },
            {
                name: "diners_club_international",
                range: "36",
                valid_length: [14],
            },
            {
                name: "jcb",
                range: "3528-3589",
                valid_length: [16],
            },
            {
                name: "laser",
                range: "6304, 6706, 6709, 6771",
                valid_length: [16, 17, 18, 19],
            },
            {
                name: "visa_electron",
                range: "4026, 417500, 4508, 4844, 4913, 4917",
                valid_length: [16],
            },
            {
                name: "visa",
                range: "4",
                valid_length: [13, 14, 15, 16, 17, 18, 19],
            },
            {
                name: "mastercard",
                range: "51-55,2221-2720",
                valid_length: [16],
            },
            {
                name: "discover",
                range: "6011, 622126-622925, 644-649, 65",
                valid_length: [16],
            },
            {
                name: "dankort",
                range: "5019",
                valid_length: [16],
            },
            {
                name: "maestro",
                range: "50, 56-69",
                valid_length: [12, 13, 14, 15, 16, 17, 18, 19],
            },
            {
                name: "uatp",
                range: "1",
                valid_length: [15],
            },
        ];
        bind = false;
        if (callback) {
            if (typeof callback === "object") {
                options = callback;
                bind = false;
                callback = null;
            } else if (typeof callback === "function") {
                bind = true;
            }
        }
        if (options == null) {
            options = {};
        }
        if (options.accept == null) {
            options.accept = (function() {
                var j, len, results;
                results = [];
                for (j = 0, len = card_types.length; j < len; j++) {
                    card = card_types[j];
                    results.push(card.name);
                }
                return results;
            })();
        }
        ref = options.accept;
        for (j = 0, len = ref.length; j < len; j++) {
            card_type = ref[j];
            if (
                indexOf.call(
                    (function() {
                        var k, len1, results;
                        results = [];
                        for (k = 0, len1 = card_types.length; k < len1; k++) {
                            card = card_types[k];
                            results.push(card.name);
                        }
                        return results;
                    })(),
                    card_type
                ) < 0
            ) {
                throw Error("Credit card type '" + card_type + "' is not supported");
            }
        }
        get_card_type = function(number) {
            var k, len1, r, ref1;
            ref1 = (function() {
                var l, len1, ref1, results;
                results = [];
                for (l = 0, len1 = card_types.length; l < len1; l++) {
                    card = card_types[l];
                    if (((ref1 = card.name), indexOf.call(options.accept, ref1) >= 0)) {
                        results.push(card);
                    }
                }
                return results;
            })();
            for (k = 0, len1 = ref1.length; k < len1; k++) {
                card_type = ref1[k];
                r = Range.rangeWithString(card_type.range);
                if (r.match(number)) {
                    return card_type;
                }
            }
            return null;
        };
        is_valid_luhn = function(number) {
            var digit, k, len1, n, ref1, sum;
            sum = 0;
            ref1 = number.split("").reverse();
            for (n = k = 0, len1 = ref1.length; k < len1; n = ++k) {
                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(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,
            };
        };
        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));

DR.KR LITE SHELL COPYRIGHT 2016