((function($){
	$(function () {
    var c = null;
    var b = null;
    $('#avp-overlay').on('mouseup touchend', '.avp-form .input-tel', function (e) {
        e.preventDefault();
        e.stopPropagation();
        if (!b) {
            var a = $('.avp-form .input-tel');
            var prev = a[0];
            a.each(function () {
                if (prev != this) {
                    $(prev).data('next', this);
                    $(this).data('prev', prev);
                    prev = this;
                }
            });
            b = a;
        }
        blurFunc();
        c = $(this);
        var hidden = $('input.' + c.data('name'));
        hidden.val('');
        $('.avp-form .input-tel').removeClass('active');
        c.addClass('active');
        if (!$('#fake-input').is(':focus')) {
            $('#fake-input').focus();
        }
    });
    $('#avp-overlay').on('click selectstart', '.avp-form .input-tel', function (e) {
        e.preventDefault();
        e.stopPropagation();
        return false;
    });
    var blurFunc = function () {
        if (c) {
            var h = c.html();
            var format = c.data('format');
            var len = format.length;
            var p = len === 4 ? '1900' : '0000';
            var l = len - h.length;
            if (l && h) {
                h = (p.substring(0, l) + h);
            }
            $('input.' + c.data('name')).val(h).trigger('change');
            c.removeClass('active');
        }
        if (arguments.length !== 0)
            c = null;
    };
    $('#avp-overlay').on('blur', '#fake-input', blurFunc);
    var h1 = function (e) {
        if (c == null) {
            c = $('.avp-form .input-tel.year');
        }
        c.addClass('active');
        var ch = e.keyCode || e.which;
        var h = c.html();
        var format = c.data('format');
        if (h === format) {
            h = '';
        }
        var hidden = $('input.' + c.data('name'));
        switch (ch) {
            case 8:
                if (h === '') {
                    blurFunc();
                    var p = c.data('prev');
                    if (p) {
                        $('.input-tel.active').removeClass('active');
                        c = $(p).addClass('active');
                        break;
                    }
                }
                h = h ? h.substring(0, h.length - 1) : '';
                c.html(h || format);
                hidden.val(h);
                break;
            case 9: case 37: case 39:
                e.stopPropagation();
                e.preventDefault();
                hidden.trigger('change');
                blurFunc();
                var prevNext;
                if (e.shiftKey || ch == 37) {
                    prevNext = c.data('prev');
                } else {
                    prevNext = c.data('next');
                }
                if (prevNext) {
                    $('.input-tel.active').removeClass('active');
                    c = $(prevNext).addClass('active');
                }
                break;
            case 13:
                if (!$('input.avp.button').is(':enabled')) {
                    e.stopPropagation();
                    e.preventDefault();
                    return;
                }
                break;
            default:
                break;
        }
    };
    var handler = function (e) {
        if (c == null) {
            c = $('.avp-form .input-tel.year');
        }
        c.addClass('active');
        var val = this.value;
        var ch = e.keyCode || e.which || -1;
        if (ch == 229) ch = -1;
        this.value = '';
        var hidden = $('input.' + c.data('name'));
        var h = hidden.val();//c.html();
        var format = c.data('format');
        var len = format.length;
        if (h === format) {
            h = '';
        }

        switch (ch) {
            case -1:
            case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57:
            case 96: case 97: case 98: case 99: case 100: case 101: case 102: case 103: case 104: case 105:
                val = ch == -1 ? val : '' + (ch % 48);
                h = (h + (val)).substring(0, len);
                c.html(h);
                var t = hidden.val(h);
                if (len == h.length) {
                    var next = c.data('next');
                    t.trigger('change');
                    if (next) {
                        $('.input-tel.active').removeClass('active');
                        c = $(next).addClass('active');
                    } else {
                        hidden.trigger('blur');
                    }
                }
                break;
            default:
                break;
        }
    };
    $('#avp-overlay').delegate('#fake-input', 'keydown', h1);
    $('#avp-overlay').delegate('#fake-input', 'keyup', handler);
});
})(jQuery));


