$('document').ready(function () {
    form();
    createSVG();

    if ($('.steps').length) {
        steps();
    }

    if ($('.checkout').length) {
        pageCheckout();
    }

    if ($('.myprofile').length) {
        pageProfile();
    }

    if ($('.qty').length) {
        /*productQty();*/
    }


    registrationCheckbox();

    if ($('.series-item').length) {
        seriesBackground();
    }
});

function LightenColor(color, percent) {
    var num = parseInt(color.replace("#", ""), 16),
        amt = Math.round(2.55 * percent),
        R = (num >> 16) + amt,
        B = (num >> 8 & 0x00FF) + amt,
        G = (num & 0x0000FF) + amt;
    return "#" + (0x1000000 + (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + (B < 255 ? B < 1 ? 0 : B : 255) * 0x100 + (G < 255 ? G < 1 ? 0 : G : 255)).toString(16).slice(1);
};

function seriesBackground() {
    $('.series-item').each(function (i, v) {
        var seriesColor = $(v).data('color');

        $(v).css({
            'background': 'linear-gradient(45deg, ' + seriesColor + ' 0%, ' + LightenColor(seriesColor, '40') + ' 100%)'
        });
    })

}

function registrationCheckbox() {
    $('.popup-registration .form-usertype').on('change', function () {
        if ($(this).hasClass('form-person')) {
            $('.popup-registration .form-tax .form-control').removeAttr('required');
            $(this).parents('.popup-registration form').find('.form-tax').addClass('form-control-readonly').removeAttr('required').attr('readonly', 'readonly').hide();
            $(this).parents('.popup-registration form').find('.form-tax').parent().removeClass('has-error');
        } else {
            $('.popup-registration .form-tax').addClass('sys');
            $(this).parents('.popup-registration form').find('.form-tax').removeClass('form-control-readonly').removeAttr('readonly').attr('required', 'required').show();
        }
    });
}

function isEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);

}

function form() {
    $('.ng-validate .form-control[required]').on('keyup focusout change', function () {
        var type = $(this).attr('type'),
            val = $(this).val(),
            valLength = val.length,
            prop = $(this).prop('checked');

        switch (type) {
            case 'text':
            case 'password':
            case 'number':
                if (valLength >= 1) {
                    $(this).parents('.form-group').removeClass('has-error').addClass('has-value');
                } else {
                    $(this).parents('.form-group').removeClass('has-value').addClass('has-error');
                }
                break;
            case 'email':
                if (!isEmail(val)) {
                    if (!$(this).parents('.form-group').hasClass('has-error')) {
                        $(this).parents('.form-group').removeClass('has-value').addClass('has-error');
                    }
                } else {
                    $(this).parents('.form-group').removeClass('has-error').addClass('has-value');
                }
                break;
            case 'checkbox':
                if (prop == false) {
                    $(this).parents('.form-checkbox').addClass('has-error');
                } else {
                    $(this).parents('.form-checkbox').removeClass('has-error');
                }
                break;
            default:
        }
    });

    if ($('.form-search').length) {
        formSelect();
    }
}

function formSelect() {
    $('.form-search').select2({
        width: '100%',
        placeholder: $(this).data('placeholder'),
    });
}

function productQty() {
    $('.qty-input').keyup(function () {
        var $this = $(this), minval = $this.data('min'), maxval = $this.data('max');

        if ($(this).val() > maxval) {
            $(this).val(maxval);
        }

        setTimeout(function () {
            if ($this.val() < minval || $this.val() == '') {
                $this.val(minval);
            }
        }, 500);
    });
    $('body').on('click', '.qty-plus', function () {
        var minval = $(this).parents('.qty').find('.qty-input').data('min'), maxval = $(this).parents('.qty').find('.qty-input').data('max');

        if ($(this).prev().val() < maxval) {
            $(this).prev().val(+$(this).prev().val() + 1);
        }
    })
    $('body').on('click', '.qty-minus', function () {
        var minval = $(this).parents('.qty').find('.qty-input').data('min'), maxval = $(this).parents('.qty').find('.qty-input').data('max');

        if ($(this).next().val() > minval) {
            if ($(this).next().val() > minval) $(this).next().val(+$(this).next().val() - 1);
        }
    });
}

function showSearchBox() {
    var posLeft = $('.navbar-top-center .form-control').offset().left - 2,
        inputWidth = $('.navbar-top-center .form-control').outerWidth(),
        boxWidth = $('.search').outerWidth(),
        finalWidth = boxWidth - inputWidth,
        formula = posLeft - (finalWidth / 2);

    $('.search').css({
        'left': formula
    }).addClass('sys');
    bd.addClass('transparent').show();
}

function steps() {
    $('.steps-item').each(function (i, v) {
        if ($(v).hasClass('active')) {
            var lineWidth = $(v).data('width');

            $('.steps-line').css('width', lineWidth + '%');
        }
    });
}

function pageCheckout() {
    /*
    $('.form-radio-w-desc').on('change', function () {

        if ($(this).prop('checked') == true) {
            $(this).parents('.checkout-box').find('.form-radio-fulltext').slideUp();
            $(this).parents('.form-group').find('.form-radio-fulltext').slideDown();

        }


    }).each(function (i, v) {
        if ($(v).prop('checked') == true) {
            $(v).parents('.checkout-box').find('.form-radio-fulltext').show();
        }
    });
     */

    $('.form-usertype').on('change', function () {
        if ($(this).hasClass('form-person')) {
            $('.form-tax .form-control').removeAttr('required');
            $(this).parents('.checkout-box').find('.form-tax').addClass('form-control-readonly').removeAttr('required').attr('readonly', 'readonly').hide();
            $(this).parents('.checkout-box').find('.form-tax').parent().removeClass('has-error');
        } else {
            $('.form-tax').addClass('sys');
            $(this).parents('.checkout-box').find('.form-tax').removeClass('form-control-readonly').removeAttr('readonly').attr('required', 'required').show();
        }
    });

    $('.form-usertype-otheraddress').on('change', function () {
        if ($(this).hasClass('form-person')) {
            $('.form-tax-otheraddress').removeClass('sys');
            $(this).parents('.checkout-other-billingaddress').find('.form-tax').addClass('form-control-readonly').removeAttr('required').attr('readonly', 'readonly').hide();
            $(this).parents('.checkout-box').find('.form-tax').parent().removeClass('has-error');
        } else {
            $('.form-tax-otheraddress').addClass('sys');
            $(this).parents('.checkout-other-billingaddress').find('.form-tax').removeClass('form-control-readonly').removeAttr('readonly').attr('required', 'required').show();
        }
    });

    $('.form-sameaddress').on('change', function () {
        if ($(this).prop('checked') == true) {
            $('.checkout-other-billingaddress').slideUp();
            $('.checkout-other-billingaddress .form-control').removeAttr('required');
        } else {
            $('.checkout-other-billingaddress').slideDown();
            $('.checkout-other-billingaddress .form-control').attr('required', 'required');
            $('.form-tax-otheraddress .form-control').removeAttr('required');
            form();
        }
    })
}

function pageProfile() {
    $('.form-usertype').on('change', function () {
        if ($(this).hasClass('form-person')) {
            $(this).parents('.checkout-box').find('.form-tax').addClass('form-control-readonly').removeAttr('required').attr('readonly', 'readonly').hide();
            $(this).parents('.checkout-box').find('.form-tax').parent().removeClass('has-error');
        } else {
            $(this).parents('.checkout-box').find('.form-tax').removeClass('form-control-readonly').removeAttr('readonly').attr('required', 'required').show();
            form();
        }
    });

    $('.js-order-collapse').click(function () {
        if (!$(this).parents('.order-item').hasClass('active')) {
            $('.order-item').removeClass('active');
            $('.order-datas').slideUp();

            $(this).parents('.order-item').addClass('active');
            $(this).parents('.order-item').find('.order-datas').slideDown();
        } else {
            $('.order-item').removeClass('active');
            $('.order-datas').slideUp();
        }
    });
}

function createSVG() {
    $('.svg').each((i, e) => {
        const $img = $(e), imgID = $img.attr('id'), imgClass = $img.attr('class'), imgURL = $img.data('src');

        $.get(imgURL, (data) => {
            let $svg = $(data).find('svg');

            if (typeof imgID !== 'undefined') {
                $svg = $svg.attr('id', imgID);
            }

            if (typeof imgClass !== 'undefined') {
                $svg = $svg.attr('class', `${imgClass} replaced-svg`);
            }

            $svg = $svg.removeAttr('xmlns:a');

            if (!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) {
                $svg.attr(`viewBox 0 0  ${$svg.attr('height')} ${$svg.attr('width')}`);
            }

            $img.replaceWith($svg);
        }, 'xml');
    });
}