/**
 * Carts
 * @type {{}}
 */
var Carts = {};

/**
 * Init
 */
Carts.init = function() {
    Carts.addCartSubmitEvent();
    Carts.backButton();
    Carts.clickEvent();
    Carts.deleteButtonEvent();
    Carts.setOrderTypeButton();
    setTimeout(Carts.checkOpenCart, 0);
};

/**
 * Click esemény hozzáadása
 */
Carts.addCartSubmitEvent = function() {
    $('.cart-submit').unbind().click(function () {
        Carts.actionAddCart($(this).attr('data-parent-class'),this);
    });

    $('.quantity-btn-up').unbind().click(function () {
        var add = parseInt($(this).parent().parent().parent().find('.quantity-input').val()) + 1;
        $(this).parent().parent().parent().find('.quantity-input').attr('value',add);
    });

    $('.quantity-btn-down').unbind().click(function () {
        var less = (parseInt($(this).parent().parent().parent().find('.quantity-input').val()) - 1) < 1 ? 1 : parseInt($(this).parent().parent().parent().find('.quantity-input').val()) - 1;
        $(this).parent().parent().parent().find('.quantity-input').attr('value',less);
    });
};

/**
 * Kosárba rakás
 * @param formSelector
 * @returns {boolean}
 */
Carts.actionAddCart = function(formSelector, element) {
    var group           = $(element).parents(formSelector).find('.cart-input-group').val();
    var productNumber   = $(element).parents(formSelector).find('.cart-input-product_number').val();
    var productName     = $(element).parents(formSelector).find('.cart-input-product_name').val();
    var netPrice        = $(element).parents(formSelector).find('.cart-input-net_price').val();
    var discountPrice   = $(element).parents(formSelector).find('.cart-input-discount_price').val();
    var vat             = $(element).parents(formSelector).find('.cart-input-vat').val();
    var referenceUrl    = $(element).parents(formSelector).find('.cart-input-reference_url').val();
    var pieces          = $(element).parents(formSelector).find('.cart-input-pieces').val();
    var currency        = $(element).parents(formSelector).find('.cart-input-currency').val();

    var formUrl         = $(element).parents(formSelector).attr('action');

    $(formSelector).find('.cart-submit').prop('disabled', true);
    $(formSelector).find('.cart-submit .cart-loader').removeClass('hide');

    $.ajax({
        headers:    {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        url:        formUrl,
        dataType:   'json',
        type:       'post',
        data:       {
            group           :group,
            product_number  :productNumber,
            product_name    :productName,
            net_price       :netPrice,
            discount_price  :discountPrice,
            vat             :vat,
            reference_url   :referenceUrl,
            pieces          :pieces,
            currency        :currency,
        },
        success:    function(result) {
            if (result.status == '200') {
                setTimeout(function(){
                    $(formSelector).find('.cart-submit .cart-loader').addClass('hide');
                    $(formSelector).find('.cart-submit').prop('disabled', false);

                    alert('A termék sikeresen a kosárba lett helyezve!');

                    Carts.reloadCartButton();
                }, 1000);
            }
        },
        statusCode: {
            404:    function() {
                return false;
            },
            500:    function() {
                return false;
            }
        }
    });

    return false;
};

/**
 * Kosárba helyezés cikkkod által
 *
 * @param element
 * @param product_id
 * @returns {boolean}
 */
Carts.actionAddProductIdToCart = function(element, product_id) {

    $(element).parent().find('.cart-loader').removeClass('hide');

    $.ajax({
        headers:    {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        url:        '/carts/ajax/add_product_id_to_cart',
        dataType:   'json',
        type:       'post',
        data:       {
            product_id           :product_id
        },
        success:    function(result) {
            if (result.status == '200') {
                setTimeout(function(){
                    Carts.reloadCartButton();
                }, 1000);
            }
            else
                alert(result.message);

            $(element).parent().find('.cart-loader').addClass('hide');
        },
        statusCode: {
            404:    function() {

                $(element).parent().find('.cart-loader').addClass('hide');

                return false;
            },
            500:    function() {

                $(element).parent().find('.cart-loader').addClass('hide');

                return false;
            }
        }
    });

    return false;
}

/**
 * Kosár gomb újratöltése
 */
Carts.reloadCartButton = function() {
    $('.basket-box').load('/carts/cartButton', function() { Carts.deleteButtonEvent(); });
    $('.cart-mobile').load('/carts/cartButton', function() { Carts.deleteButtonEvent(); });
};

/**
 * backutton
 */
Carts.backButton = function() {
    $('.back__button>i').click(function() {
        window.history.back();
    })
};

/**
 * mini click esemény, ha rákatt a click_bigger_article osztályú DOMra, akkor hozzáad egy osztély vagy elvesz
 */
Carts.clickEvent = function() {
    $('.click_bigger_article').each(function () {
        if ($(this).height() > 164) {
            $(this).css('height', '164');
            $(this).parent().append('<div class="col-xs-12 append__gardient">...</div>');
            $(this).parent().append("<div class='col-xs-12 text-center'><a class='click_bigger_article_button'>Tovább olvasom <i class='glyphicon glyphicon-arrow-down'></i></a></div>");

            $('.click_bigger_article_button').unbind('click').bind('click', function (e) {
                e.preventDefault();
                Carts.addClassToDOM(this);
            });
        }
    });

    $(document).on('change', '#cartAllCheck', function() {
        $.each($('.cartCheckbox'), function(key, value) {
            if ($('#cartAllCheck').is(':checked')) {
                $(value).prop('checked', true);
            }
            else {
                $(value).prop('checked', false);
            }
        });
    });
};

/**
 * Törlés gomb esemény
 */
Carts.deleteButtonEvent = function() {
    $('.cart_delete_item').unbind().click(function (e) {
        e.preventDefault();

        var url = $(this).attr('href');

        $.ajax({
            headers:    {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
            url:        url,
            dataType:   'html',
            type:       'get',
            data:       {},
            success:    function(result) {
                Carts.reloadCartButton();
            },
            statusCode: {
                404:    function() {
                    return false;
                },
                500:    function() {
                    return false;
                }
            }
        });

        return false;
    });
};

/**
 * Leellenőrizzük hogyha ki kell nyissuk a kosarat
 */
Carts.checkOpenCart = function()
{
    /*var current_url = window.location.href;

    if (current_url.indexOf('open_cart') != -1)
        $('.cart_container').trigger('mouseenter');*/
};

Carts.addClassToDOM = function(elem) {
    var siblingElem = $(elem).parent().parent().find('.cart_product__article');
    var gardient = $(elem).parent().parent().find('.append__gardient');
    if(siblingElem.height() === 164) {
        siblingElem.css('height','initial');
        $(elem).html('Elrejtem <i class=\'glyphicon glyphicon-arrow-up\'></i>');
        gardient.hide();
    } else {
        siblingElem.css('height','164');
        $(elem).html('Tovább olvasom <i class=\'glyphicon glyphicon-arrow-down\'></i>');
        gardient.show();
    }
};

Carts.setOrderTypeButton    = function() {
    $(document).on('click', '.cartSetOrderTypeSubmit', function() {
        var checkChecked = false;

        $.each($('.cartCheckbox'), function(key, value) {
            if ($(value).is(':checked')) checkChecked   = true;
        });

        if (!checkChecked) {
            alert('Legalább egy terméket ki kell választani');

            return false;
        }
        else {
            $('#setOrderTypeCartForm').submit();
        }
    });
};

$(document).ready(function() {
    Carts.init();
});