function stringDate(sec) {
    if (sec === 999) {
        return 'По ссылке';
    }
    if (sec === 0) {
        return 'Динамично';
    }
    // return 'По ссылке';
    return ("0" + Math.floor(sec / 60)).slice(-2) + ':' + ("0" + sec % 60).slice(-2)
}

function checkIsIPV4(entry) {
    var blocks = entry.split(".");
    if (blocks.length === 4) {
        return blocks.every(function (block) {
            return parseInt(block, 10) >= 0 && parseInt(block, 10) <= 255;
        });
    }
    return false;
}


function updateProxyCheckboxes() {
    var selected = [];
    $('input.action-proxy-list:checked').each(function () {
        selected.push($(this).data('proxy-id'));
    });

    $('.action-prolong-btn .btn-count').html(selected.length)
    $('.action-prolong-btn').data('ids', selected.join());
}

$.extend(
    {
        redirectPost: function (location, args) {
            var form = '';
            $.each(args, function (key, value) {
                value = value.split('"').join('\"')
                form += '<input type="hidden" name="' + key + '" value="' + value + '">';
            });
            $('<form action="' + location + '" method="POST">' + form + '</form>').appendTo($(document.body)).submit();
        }
    });


$(function () {
    var custom_values = [0, 120, 150, 180, 210, 240, 270, 300,360,420,480,540,600,999];

    //
    var clipboard = new ClipboardJS('.action-copy-update-link');

    clipboard.on('success', function(e) {
        $(e.trigger).removeClass('unactive')

        setTimeout(function(){
            $(e.trigger).addClass('unactive')
        }, 100);

        e.clearSelection();
    });


    $(".time-slider").ionRangeSlider({
        type: "single",
        values: custom_values,
        grid: false,
        skin: "round",
        hide_min_max: true,
        prettify: stringDate
    });

    $(".time-slider").on('change', function () {
        if (this.value === '999'){
            $(this).parents('.proxy-col').find('.update-link-block').removeClass('hide');
        }else{
            $(this).parents('.proxy-col').find('.update-link-block').addClass('hide');
        }
        if (this.value == $(this).data('update-time')) {
            $(this).parents('.cell-field-wrap').find('a').addClass('unactive');
        } else {
            $(this).parents('.cell-field-wrap').find('a').removeClass('unactive');
        }
    })


    $("[name=\"bind_ip\"]").on('input', function () {
        if (this.value == $(this).data('bind-ip')) {
            $(this).parent().find('a').addClass('unactive');
        } else if (checkIsIPV4(this.value) || this.value === '') {
            $(this).parent().find('a').removeClass('unactive');
        } else {
            $(this).parent().find('a').addClass('unactive');
        }
    });

    $("[name=\"subtariff\"]").on('change', function () {
        $(this).parents('.cell-row').find('a').removeClass('unactive');
    });

    $("[name=\"note\"]").on('input', function () {
        if (this.value == $(this).data('note')) {
            $(this).parents('.proxy-col').find('a').addClass('unactive');
        } else {
            $(this).parents('.proxy-col').find('a').removeClass('unactive');
        }
    });

    $('.action-proxy-type-select').on('click', function () {
        var input = $(this).parent().find('input');
        var link = $(this).parents('.cell-row').find('a.action-proxy-type-save');
        var proxy_type = $(this).data('proxy-type');


        $(this).parent().find('a').removeClass('active');
        $(this).addClass('active');

        $(input).val(proxy_type);
        if ($(input).data('proxy-type') == proxy_type) {
            $(link).addClass('unactive');
        } else {
            $(link).removeClass('unactive');
        }
    })


    $('.action-bind-ip-save').on('click', function (e) {
        e.preventDefault();
        var self = this;
        if (!$(this).hasClass('unactive')) {
            var proxy_id = $(this).parent().find('input').data('proxy-id');
            var bind_ip = $(this).parent().find('input').val()

            $.ajax({
                url: '/user/proxy/',
                type: 'POST',
                data: {
                    action: 'bind-ip',
                    proxy_id: proxy_id,
                    bind_ip: bind_ip
                },
                success: function () {
                    $(self).addClass("unactive");
                    $(self).parent().find('input').data('bind-ip', bind_ip);
                }
            })
        }
    })


  $('.action-subtariff-save').on('click', function (e) {
    e.preventDefault();
    var self = this;
    if (!$(this).hasClass('unactive')) {
      var proxy_id = $(this).parent().find('select').data('proxy-id');
      var tariff = $(this).parent().find('select').val()

      $.ajax({
        url: '/user/proxy/',
        type: 'POST',
        data: {
          action: 'change-subtariff',
          proxy_id: proxy_id,
          subtariff: tariff
        },
        success: function () {
          $(self).addClass("unactive");
        }
      })
    }
  })


    $('.action-update-time-save').on('click', function (e) {
        e.preventDefault();
        var self = this;
        if (!$(this).hasClass('unactive')) {
            var proxy_id = $(this).parent().find('input').data('proxy-id');
            var update_time = $(this).parent().find('input').val()

            $.ajax({
                url: '/user/proxy/',
                type: 'POST',
                data: {
                    action: 'update-time',
                    proxy_id: proxy_id,
                    update_time: update_time
                },
                success: function () {
                    $(self).addClass("unactive");
                    $(self).parent().find('input').data('update-time', update_time);
                }
            })
        }
    })


    $('.action-proxy-type-save').on('click', function (e) {
        e.preventDefault();
        var self = this;
        if (!$(this).hasClass('unactive')) {
            var proxy_id = $(this).parent().find('input').data('proxy-id');
            var proxy_type = $(this).parent().find('input').val()

            $.ajax({
                url: '/user/proxy/',
                type: 'POST',
                data: {
                    action: 'proxy-type',
                    proxy_id: proxy_id,
                    proxy_type: proxy_type
                },
                success: function () {
                    $(self).addClass("unactive");
                    $(self).parent().find('input').data('proxy-type', proxy_type);
                }
            })
        }
    })



    $('.action-note-save').on('click', function (e) {
        e.preventDefault();
        var self = this;
        if (!$(this).hasClass('unactive')) {
            var proxy_id = $(this).parent().find('textarea').data('proxy-id');
            var proxy_note = $(this).parent().find('textarea').val()

            $.ajax({
                url: '/user/proxy/',
                type: 'POST',
                data: {
                    action: 'proxy-note',
                    proxy_id: proxy_id,
                    proxy_note: proxy_note
                },
                success: function () {
                    $(self).addClass("unactive");
                    $(self).parent().find('input').data('proxy-note', proxy_note);
                }
            })
        }
    })


    $("#payment-form").on("afterValidate", function (event, messages) {
        var validateResult = [];
        $.each(messages, function (key, messages) {
            if (messages.length !== 0) {
                validateResult.push(messages[0]);
            }
        });

        if (validateResult.length !== 0) {
            $('.form-errors .alert-danger').html(validateResult);
            $('.form-errors').show();
        } else {
            $('.form-errors').hide();
        }
    });


    updateProxyCheckboxes();
    $('.action-proxy-list').on('change', function () {
        updateProxyCheckboxes();
    })

    $('.action-proxy-list-all').on('change', function () {
        if ($(this).prop('checked')) {
            $('input.action-proxy-list').prop('checked', true);
        } else {
            $('input.action-proxy-list').prop('checked', false);
        }
        updateProxyCheckboxes();
    })


    $('.action-prolong-btn').on('click', function () {
        if ($(this).data('ids')) {
            var csrftoken = $('meta[name=csrf-token]').attr('content');

            var data  = {
                ids: $(this).data('ids'),
                '_csrf': csrftoken
            };


            $.redirectPost('/user/prolong/',data );
        }
    })

    $('.js-apply-promocode').on('click', function () {
        var promocode = $('#paymentform-promocode').val();
        if (promocode.length > 0) {
            window.location.href = "/order/pay/?promo=" +promocode;
        }
    });

    $('.js-apply-promocode-prolong').on('click', function () {
        var promocode = $('#paymentform-promocode').val();
        if (promocode.length > 0) {
            window.location.href = "/user/prolong-pay/?promo=" +promocode;
        }
    });


});
