
/**
 * Wybierz zakladke
 */
function selectTab(selected, i) {
    $('#tabs').tabs('enable', i);
    $('#tabs').tabs('option', 'selected', i);
    $('#tabs').tabs('disable', selected);
}

/**
 * Pomin logowanie w kroku 3
 */
function skipLog() {
    var selected = $('#tabs').tabs('option', 'selected');
    selectTab(selected, 3);
}

/**
 * Poprzedni krok
 */
function prevStep() {
    var selected = $('#tabs').tabs('option', 'selected');
    selectTab(selected, selected-1);
}

/**
 * Nastepny krok
 */
function nextStep() {
    var selected = $('#tabs').tabs('option', 'selected');
    if(selected == 0) {
        // PRODUKTY Z KOSZYKA

        var stockErrors = $('.stock_alert').length;
        if(stockErrors > 0)
        {
            // Brak przynajmniej jednego produktu w magazynie
            showStockError();
            return;
        }
        var count = $('.product:visible').length;
        if(count > 1)
            selectTab(selected, selected+1);
        else
            showCountError();
    } else if(selected == 1) {
        // WYSYLKA/DOSTAWA
        if($('input[name=\'carrier_radio\']:checked').val() !== undefined) {
            $.blockUI();
            $.ajax({
                url: 'login',
                cache: false,
                type: 'POST',
                dataType: 'json',
                data: ({ajax: true}),
                success: function(result){
                    $.unblockUI()
                    if(result.login != undefined && result.login) {
                        selectTab(selected, selected+2);
                        $('#order_login_btn').hide();
                        $('#tabs-3 .form-container').html(result.html);
                        getMemberData();
                    } else {
                        selectTab(selected, selected+1);
                        $('#tabs-3 .form-container').html(result.html);
                    }
                }
            });
        } else {
            $('.tab_title_content').effect("pulsate", {}, 400);
            showCarrierError();
        }
    } else if(selected == 2) {
        // WALIDACJA FORMULARZA LOGOWANIA

        // Wyciaganie danych z formularza
        var formFields = [];
        $('#tabs-3 .form-container input').each(function(){
            if(this.type == 'checkbox')
                formFields.push({'f_name': this.name, 'f_val': $('#'+this.name).attr('checked')});
            else
                formFields.push({'f_name': this.name, 'f_val': this.value});
        });
        // Wysylanie pol formularza
        $.blockUI();
        $.ajax({
            url: 'login',
            cache: false,
            type: 'POST',
            dataType: 'json',
            data: ({submit:'true', fields:$.toJSON(formFields, true), ajax: true}),
            success: function(result){
                $.unblockUI()
                $('#tabs-3 .form-container').html(result.html);
                changeInvoiceFields()
                if(result.login) {
                    selectTab(selected, selected+1);
                    $('#order_login_btn').hide();
                    getMemberData();
                }
            }
        });
    } else if(selected == 3) {
        // WALIDACJA FORMULARZA ZAMOWIENIA

        // Wyciaganie danych z formularza
        var formFields = [];
        $('#tabs-4 .form-container input').each(function(){
            if(this.type == 'checkbox')
                formFields.push({'f_name': this.name, 'f_val': $('#'+this.name).attr('checked')});
            else
                formFields.push({'f_name': this.name, 'f_val': this.value});
        });
        // Wysylanie pol formularza
        $.blockUI();
        $.ajax({
            url: 'order/get_form',
            cache: false,
            type: 'POST',
            dataType: 'json',
            data: ({submit:'true', fields:$.toJSON(formFields, true)}),
            success: function(result){
                $.unblockUI()
                $('#tabs-4 .form-container').html(result.html);
                changeInvoiceFields()
                if(result.errors == 0) {
                    selectTab(selected, selected+1);
                    // Pobieranie podsumowania
                    $.blockUI();
                    $.ajax({
                        url: 'order/summary',
                        cache: false,
                        type: 'POST',
                        dataType: 'json',
                        data: ({
                            carrier_id: $('input[name=\'carrier_radio\']:checked').val(),
                            payment_id: $('input[name=\'payment_radio\']:checked').val()
                        }),
                        success: function(result){
                            $.unblockUI()
                            // Uzupelnienie odpowiednich danych podsumowania
                            $('#count_prod').html(result.count_prod);
                            $('#sum_prod').html(result.sum_prod);
                            $('#sum_carr').html(result.sum_carr);
                            $('#sum_prod_net').html(result.sum_prod_net);
                            $('#sum_carr_net').html(result.sum_carr_net);
                            $('#main_sum').html(result.main_sum);
                        }
                    });
                }
            }
        });
    } else if(selected == 4) {
        var formFields = [];
        $('#tabs-4 .form-container input').each(function(){
            if(this.type == 'checkbox')
                formFields.push({'f_name': this.name, 'f_val': $('#'+this.name).attr('checked')});
            else
                formFields.push({'f_name': this.name, 'f_val': this.value});
        });
        $.blockUI();
        $.ajax({
            url: 'order/final_step',
            cache: false,
            type: 'POST',
            data: ({
                submit: 'true',
                carrier_id: $('input[name=\'carrier_radio\']:checked').val(),
                payment_id: $('input[name=\'payment_radio\']:checked').val(),
                fields: $.toJSON(formFields, true)
            }),
            success: function(result){
                $.unblockUI()
                if(result == 'stock_error') {
                    // Blad stanow magazynowych (brak produktu)
                    showStockError();
                } else if(result == 'count_error') {
                    // Blad ilosci produktow koszyku
                    showCountError();
                } else if(result == 'carrier_error') {
                    // Blad w wyborze wysylki/platnosci
                    showCarrierError()
                } else {
                    // Brak bledow podczas dodawania zamowienia
                    $("#order_success_dialog").dialog({
                        modal: true,
                        close: function() {
                            window.location.reload();
                        },
                        buttons: {
                            ok: function() {
                                $(this).dialog('close');
                            }
                        }
                    });
                }
            }
        });
    }
}

/**
 * Wyswietl blad (brak produktu w magazynie)
 */
function showStockError()
{
    $("#order_stock_failed_dialog").dialog({
        modal: true,
        close: function() {
            window.location.reload();
        },
        buttons: {
            ok: function() {
                $(this).dialog('close');
            }
        }
    });
    $("#order_stock_failed_dialog").dialog('open');
}

/**
 * Wyswietl blad (brak produktow w koszyku)
 */
function showCountError()
{
    $("#order_count_failed_dialog").dialog({
        modal: true,
        close: function() {
            window.location.reload();
        },
        buttons: {
            ok: function() {
                $(this).dialog('close');
            }
        }
    });
    $("#order_count_failed_dialog").dialog('open');
}

/**
 * Wyswietl blad (nie wybrano opcji dostawy)
 */
function showCarrierError()
{
    var selected = $('#tabs').tabs('option', 'selected');
    $("#order_carrier_failed_dialog").dialog({
        modal: true,
        close: function() {
            changePayments();
            selectTab(selected, 1);
        },
        buttons: {
            ok: function() {
                $(this).dialog('close');
            }
        }
    });
    $("#order_carrier_failed_dialog").dialog('open');
}

/**
 * Dodaj do koszyka
 */
function addToBasket(id){
    var f_array = [];
    $('#features>.select').each(function(index){
        var f_array_tmp = {
            'id': $('#features>.select>select:eq('+index+')').attr("id"),
            'val': $('#features>.select>select:eq('+index+')').val()
        };
        f_array.push(f_array_tmp);
    });
    $("#add_to_basket_dialog").dialog({
        modal: true,
        open: function() {
            setTimeout("$(\"#add_to_basket_dialog\").dialog('close')", 2000);
        }
    });
    $("#add_to_basket_dialog").dialog('open');
    $.blockUI();
    $.ajax({
        url: 'cart/add_product',
        cache: false,
        type: 'POST',
        data: ({id:id, features:$.toJSON(f_array, true)}),
        success: function(html){
            $.unblockUI();
            $('#cart_box').replaceWith(html);
            $('#cart_box').effect("pulsate", {}, 400);
        }
    });
}

/**
 * Sprawdź dostępność produktu (opierajac sie na wybranych wariantach)
 */
function checkAvailable() {
    // Czy dostepny
    var selectCounter = 0;
    var avail = true;
    // Petla po wszyskich selektach z wariantami
    $('#features>.select').each(function(index) {
        selectCounter++;
        if($('#features>.select>select:eq('+index+')').val().indexOf('#') != -1) {
            avail = false;
        }
    });
    if(selectCounter > 0) {
        if(avail)
        {
            // Wszystkie warianty dostepne
            $('#add_to_basket').show();
            $('#ask_available').hide();
        }
        else
        {
            // Jeden z wariantow niedostepny
            $('#add_to_basket').hide();
            $('#ask_available').show();
        }
    }
}

/**
 * Edytuj ilosc zamawianego produktu w koszyku
 */
function editBasketProduct(th, index){
    $.blockUI();
    $.ajax({
        url: 'cart/edit_product',
        cache: false,
        type: 'POST',
        dataType: 'json',
        data: ({index:index, value:$(th).val()}),
        success: function(result){
            $.unblockUI();
            $('#cart_box').replaceWith(result.cart_box);
            $('#product_'+index+'>.price_sum').html(result.price_sum);
            $('#product_'+index+'>.vat').html(result.vat);
            $('#main_summary_price').html(result.main_summary);
            $('#main_summary_price_net').html(result.main_summary_net);
            $('#main_summary_price_vat').html(result.main_summary_vat);
            $('#cart_box').effect("pulsate", {}, 400);
            changePayments();
        }
    });
}

/**
 * Usun produkt z koszyka
 */
function removeFromBasket(index){
    $.blockUI();
    $('#product_'+index).hide('drop', {}, 500);
    $.ajax({
        url: 'cart/remove_product',
        cache: false,
        type: 'POST',
        data: ({index:index}),
        success: function(html){
            $.unblockUI();
            window.location.reload();
        }
    });
}

/**
 * Pobierz sposoby platnosci
 */
function changePayments(){
    $.blockUI();
    $.ajax({
        url: 'order/get_payments',
        cache: false,
        type: 'POST',
        success: function(html){
            $.unblockUI();
            $('#payments').html(html);
            $('#carriers').html('');
        }
    });
}

/**
 * Pobierz opcje dostawy
 */
function changeCarriers(th){
    $.blockUI();
    $.ajax({
        url: 'order/get_carriers',
        cache: false,
        type: 'POST',
        data: ({payment_id:$(th).val()}),
        success: function(html){
            $.unblockUI();
            $('#carriers').html(html);
        }
    });
}

/**
 * Pobieranie danych zalogowanego klienta
 */
function getMemberData(){
    $.ajax({
        url: 'order/get_member_data',
        cache: false,
        type: 'POST',
        dataType: 'json',
        success: function(result){
            for(var i in result) {
                if($('#'+i).val() == '')
                    $('#'+i).val(result[i]);
            }
        }
    });
}

/**
 * Pobierz formularz zamowienia (pierwsze wyswietlenie)
 */
function getOrderForm(){
    $.ajax({
        url: 'order/get_form',
        cache: false,
        type: 'POST',
        dataType: 'json',
        success: function(result){
            $('#tabs-4 .form-container').html(result.html);
            changeInvoiceFields()
        }
    });
}

/**
 * Zmien widocznosc pol danych fakturowych
 */
function changeInvoiceFields(){
    if($('#invoice').attr('checked')) {
       $('#invoice_fieldset').show();
    } else {
       $('#invoice_fieldset').hide();
    }
}
