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

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

function basketLogin() {
    // WALIDACJA FORMULARZA LOGOWANIA
    // Wyciaganie danych z formularza
    var formFields = [];
    $('#basket-login input').each(function(){
        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()
            $('#basket-login .form-container').html(result.html);
            if(result.login) {
                $.blockUI();
                $('#basket-login').hide();
                $('#basket-login-info').hide();
                getMemberData();
                getOrderForm(true);
            }
        }
    });
}

/**
 * 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
            showDialog($("#order_stock_failed_dialog").html(),
                function(){
                    window.location.reload();
                }
            ,false);
            return;
        }
        var count = $('.product:visible').length;
        if(count > 0) {
            selectTab(selected, selected+1);
        } else {
            showDialog($("#order_count_failed_dialog").html(),
                function(){
                    window.location.reload();
                }
            ,false);
        }
    } 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+1);
                        $('#basket-login').hide();
                        getMemberData();
                    } else {
                        selectTab(selected, selected+1);
                        $('#basket-login .form-container').html(result.html);
                    }
                }
            });
        } else {
            showDialog($("#order_carrier_failed_dialog").html(),
                function(){
                    changePayments();
                }
            ,false);
        }
    } else if(selected == 2) {
        // WALIDACJA FORMULARZA ZAMOWIENIA

        // Wyciaganie danych z formularza
        var formFields = [];
        $('#tabs-3 .address-submit-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-3 .address-submit-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);
                            // Pobieranie adresu
                            $('#addr_1').text($('#correspaddr_name').val());
                            $('#addr_2').text($('#correspaddr_street').val());
                            $('#addr_3').text($('#correspaddr_postcode').val()+' '+$('#correspaddr_city').val());
                            $('#addr_4').text($('#phone').val());
                            $('#addr_5').text($('#email').val());
                            // Pobieranie danych do faktury
                            $('#inv_1').text($('#invaddr_name').val());
                            $('#inv_2').text($('#invaddr_street').val());
                            $('#inv_3').text($('#invaddr_postcode').val()+' '+$('#invaddr_city').val());
                            $('#inv_4').text($('#nip').val());
                            if(!$('#invoice').attr('checked'))
                                $('#inv_data').hide();
                            $('#payment_info').html(result.carrier+', '+result.payment+', '+result.sum_carr);
                        }
                    });
                }
            }
        });
    } else if(selected == 3) {
        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});
        });
        $('#tabs-3 .address-submit-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',
            dataType: 'json',
            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.status == 'stock_error') {
                    // Blad stanow magazynowych (brak produktu)
                    showDialog($("#order_stock_failed_dialog").html(),
                        function(){
                            window.location.reload();
                        }
                    ,false);
                } else if(result.status == 'count_error') {
                    // Blad ilosci produktow koszyku
                    showDialog($("#order_count_failed_dialog").html(),
                        function(){
                            window.location.reload();
                        }
                    ,false);
                } else if(result.status == 'carrier_error') {
                    // Blad w wyborze wysylki/platnosci
                    var selected = $('#tabs').tabs('option', 'selected');
                    showDialog($("#order_carrier_failed_dialog").html(),
                        function(){
                            changePayments();
                            selectTab(selected, 1);
                        }
                    ,false);
                } else {
                    // Brak bledow podczas dodawania zamowienia
                    showDialog($("#order_success_dialog").html(),
                        function(){
                            //window.location.reload();
                            $('#tabs').hide();
                            $('#order_finished').show();
                            $('.order_f_id').html(result.order_id);
                            $('.order_f_amount').html(result.order_amount);
                            $('#cart_box_count').html('0');
                            $('#cart_box_summary').html('0 PLN');
                            show_payment_summary(result.payment_type,result.order_id);
                            google_ecommerce();
                        }
                    ,false);
                }
            }
        });
    }
}

/**
 * Pobieranie i ustawianie adresu klienta
 * @param type: 1 - adres dostawy, 2 - adres faktury
 */
function getAddressDetails(type) {
    var value = $('#corespaddr').val();
    if(type==2)
        value = $('#invaddr').val();

    $.blockUI();
    $.ajax({
        url: 'order/get_address_details',
        cache: false,
        type: 'POST',
        dataType: 'json',
        data: ({
            id: value
        }),
        success: function(result){
            // Uzupelnienie odpowiednich danych podsumowania
            if(type==1)
            {
                $('#correspaddr_name').val(result.base_member_address_name+' '+result.base_member_address_last_name);
                $('#correspaddr_street').val(result.base_member_address_street);
                $('#correspaddr_city').val(result.base_member_address_city);
                $('#correspaddr_postcode').val(result.base_member_address_postcode);
                $('#correspaddr_phone').val(result.base_member_phone);
            }
            else if(type==2)
            {
                $('#invaddr_name').val(result.base_member_address_name+' '+result.base_member_address_last_name);
                $('#invaddr_street').val(result.base_member_address_street);
                $('#invaddr_city').val(result.base_member_address_city);
                $('#invaddr_postcode').val(result.base_member_address_postcode);
                $('#nip').val(result.base_member_address_nip);
            }
            $.unblockUI();
        }
    });
}

/**
 * Dodaj do koszyka
 */
function addToBasket(id, successMsg, errorMsg) {
    var v_array = [];
    if($('#variant_id').val() !== '#') {
        var f_array_tmp = {
            'variant_id': $('#variant_id').val()
        };
        v_array.push(f_array_tmp);
        // Wyswietlanie komunikatu
        showDialog(successMsg,function(){},true);
        $.blockUI();
        $.ajax({
            url: 'cart/add_product',
            cache: false,
            type: 'POST',
            data: ({id:id, variants:$.toJSON(v_array, true)}),
            success: function(html){
                $.unblockUI();
                $('#cart_box').replaceWith(html);
                $('#cart_box').effect("pulsate", {}, 400);
            }
        });
    } else {
        showDialog(errorMsg,function(){},true);
    }
}

/**
 * Sprawdź dostępność produktu (opierajac sie na wybranych wariantach)
 */
function checkAvailable() {
    var stars=0;
    var aval='';
    var is_some=false;
    var max_stars=0;
    var options_size = 0;
    // Petla po wszyskich selektach z wariantami
    $('#variant_id option').each(function(index) {
        options_size++;
        if($(this).attr('title').substr(0,1)!='0' && $(this).val().substr(0,1)!='#')
            is_some=true;
        
        var val = $(this).attr('title').toString().split(';');
        if(val[0]>max_stars)
            max_stars = val[0];

        if($('#variant_id').val()==$(this).val())
        {
            stars = val[0];
            aval = val[1];
        }
    });

    if(options_size==0)
    {
        var val = $('#variant_id').attr('title').toString().split(';');
        if(val[0]>max_stars)
            max_stars = val[0];
        stars = val[0];
        aval = val[1];
    }
    

    $('#availability img').remove();
    if(stars=='#')
    {
        stars = max_stars;
        if(is_some)
        {
            $('#add_to_basket').show();
            $('#ask_available').hide();
        }else
        {
            $('#add_to_basket').hide();
            $('#ask_available').show();
        }
        $('#delivery_area').hide();
    }
    else
    {
        if(parseInt(stars)>0)
        {
            $('#add_to_basket').show();
            $('#ask_available').hide();
            $('#delivery_area').show();
            $('#delivery').text(aval);
        }
        else
        {
            $('#add_to_basket').hide();
            $('#ask_available').show();
            $('#delivery_area').hide();
        }
    }

    var i;
    for(i=0; i<parseInt(stars);++i)
    {
        $('#availability').append('<img src="application/images/star_green.gif" />');
    }
    for(;i<5;++i)
        $('#availability').append('<img src="application/images/star_gray.gif" />');

    changeDesc(stars);
}

/**
 * Edytuj ilosc zamawianego produktu w koszyku
 */
function editBasketProduct(th, index){
    $('#product_sum_'+index+' .sum_am').html($(th).val());
    $.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+' .sum_pr').html(result.product_price);
            $('#product_sum_'+index+' .sum_pr').html(result.product_price);
            $('#product_'+index+'>.price_val').html(result.price_sum);
            $('#product_sum_'+index+' .sum_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);
            $('.main_discount').html(result.discount);
            $('#discount_diff').html(result.discount_diff);
            $('#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('');
            changeCarriers('#payments input:checked');
        }
    });
}

/**
 * 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_id').html('');
            $('#carriers_'+$(th).val()).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.addr) {
                if($('#'+i).val() == '' && result.addr[i] != null)
                    $('#'+i).val(result.addr[i]);
            }
            $('#invaddr_name').val((result.inv.corespaddr_name==null)?'':result.inv.correspaddr_name);
            $('#invaddr_street').val((result.inv.correspaddr_street==null)?'':result.inv.correspaddr_street);
            $('#invaddr_city').val((result.inv.correspaddr_city==null)?'':result.inv.correspaddr_city);
            $('#invaddr_postcode').val((result.inv.correspaddr_postcode==null)?'':result.inv.correspaddr_postcode);
            $('#nip').val((result.inv.nip==null)?'':result.inv.nip);
        }
    });
}

/**
 * Pobierz formularz zamowienia (pierwsze wyswietlenie)
 */
function getOrderForm(unblockUI){
    $.ajax({
        url: 'order/get_form',
        cache: false,
        type: 'POST',
        dataType: 'json',
        success: function(result){
            $('.address-submit-container').html(result.html);
            changeInvoiceFields()
            if(unblockUI)
            {
                getMemberData();
                $.unblockUI();
            }
        }
    });
}

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

/**
 * Kopiowanie danych faktury
 */
function copyInvoiceFields(){
    $('#invaddr_name').val($('#correspaddr_name').val());
    $('#invaddr_street').val($('#correspaddr_street').val());
    $('#invaddr_city').val($('#correspaddr_city').val());
    $('#invaddr_postcode').val($('#correspaddr_postcode').val());
}

/**
 * Generowanie Google Ecommerce
 */
function google_ecommerce()
{
    try {
        var pageTracker = _gat._getTracker("UA-11177292-2");
        pageTracker._trackPageview();

        var total_price = get_price($('.order_f_amount:first').text());
        var tax = total_price - (total_price*100/122);
        
        pageTracker._addTrans(
           $('.order_f_id:first').text(),           // order ID - required
           'erowery.pl', // affiliation or store name
           total_price,          // total - required
           tax,           // tax
           get_price($('#sum_carr').text()),          // shipping
           $('#correspaddr_city').val(),       // city
           '',     // state or province
           'Poland'             // country
        );


        $('.product_sum').each(function(i,item){
            pageTracker._addItem(
                '1234',           // order ID - necessary to associate item with transaction
                $(item).find(".prod_id").text(),           // SKU/code - required
                $(item).find(".prod_name").text(),        // product name
                $(item).find(".prod_var").text(),   // category or variation
                $(item).find(".sum_pr").text(),          // unit price - required
                $(item).find(".sum_am").text()               // quantity - required
            );
        });

        pageTracker._trackTrans();

    } catch(err) {
        alert(err);
    }
}

/**
 * Wyciage cene ze stringa z waluta, zwracajac jej wartosc
 */
function get_price(price)
{
    var np = price.toString().substr(0, price.toString().indexOf(' '));
    return np.toString().replace(',', '.');
}

/**
 * Wyswietla podsumowanie zaleznie od sposobu platnosci
 */
function show_payment_summary(type,id)
{
    if(type == 'platnosci')
    {
        $('#pay_platnosci .pay_link').attr('href',$('#pay_platnosci .pay_link').attr('href')+id);
        $('#pay_platnosci').show();
    }
    else if(type == 'zagiel')
    {
        $('#pay_zagiel .pay_link').attr('href',$('#pay_zagiel .pay_link').attr('href')+id);
        $('#pay_zagiel').show();
    }
    else
        $('#pay_normal').show();
}