$(document).ready(function() {

    var root = $('div#[id^="z_order"]').scrollable();
    if (root.length===0) return;
    var form = root.find('form:visible').first();

    // some variables that we need
    var api = root.scrollable();//, drawer = $("#drawer");
    var page;

    // validation logic is done inside the onBeforeSeek callback
    api.onBeforeSeek(function(event, i) {
     
        // we are going 1 step backwards so no need for validation
        if (api.getIndex() < i) {

            // 1. get current page
            page = root.find(".page").eq(api.getIndex());

            switch (form.attr('id'))
            {
                case 'z_form_order':
                    switch (i)
                    {
                        case 1:
                            if (is_basket_empty()) return false;

                            break;
                        case 2:
                            if (!check_inputs(page)) return false; // cancel seeking of the scrollable by returning false
                            verify_order();
                            break;
                        case 3:
                            if (is_basket_empty()) return false;
                            $('#z_form_order').submit();
                            break;
                    }
                    break;
                    

                case 'z_form_recommend':
                    if (!check_inputs(page)) return false;
                    $('#z_form_recommend').submit();
                    return false; //jest tylko jedna strona wiec anuluje przewijanie
                    break;

                case 'z_form_contact':
                    if (!check_inputs(page)) return false;
                    $('#z_form_contact').submit();
                    return false; //jest tylko jedna strona wiec anuluje przewijanie
                    break;

                case 'z_form_guestbook':
                    if (!check_inputs(page)) return false;
                    $('#z_form_guestbook').submit();
                    return false; //jest tylko jedna strona wiec anuluje przewijanie
                    break;


                default:
                    return false;
                    break;
            }

            
            // clear error mesage
            page.find("td.message").html('');
        }

        // update status bar
        $("#status li").removeClass("active").eq(i).addClass("active");
    });


    // if tab is pressed on the next button seek to next page
    root.find("button.next").keydown(function(e) {
        if (e.keyCode == 9) {
            // seeks to next tab by executing our validation routine
            api.next();
            e.preventDefault();
        }
    });

    /**
     * Sprawdza poprawnośc wypełnionych pol
     */
    function check_inputs(page)
    {
        var index=api.getIndex();
        if (typeof(page) === 'undefined')
            page = root.find(".page").eq(index);
        var error_text='';
        //var result_object_message=$("td.message:visible");
        var result_object_message=root.find("td.message").eq(index);
        var status;
        var inputs_required = page.find(":input[data-required=1]:visible").removeClass("error"),
        //.. which are empty
        empty = inputs_required.filter(function() {
            return $(this).val().replace(/\s*/g, '') == ''
        });
        //do sprawdzenia poprawnosci wybieram te pola ktore maja odpowiedni znacznik oraz maja wpisane dane
        var inputs_validate = page.find(":input[data-validator]:visible").removeClass("error"),
        to_validate = inputs_validate.filter(function() {
            return typeof($(this).attr('data-validator')) !== 'undefined' && ($(this).attr('data-validator')).length>0 && $.trim($(this).val()) != ''  
        });

        // if there are empty fields, then
        if (empty.length)
        {
            error_text=root.attr('data-error-required');
            // add a CSS class name "error" for empty & required fields
            empty.addClass("error");
            empty.first().focus();
            // cancel seeking of the scrollable by returning false
            status= false;
        }
        else if (to_validate.length)
        {
            to_validate.each(function () {
                if (!(status=validate_input($(this))))
                {
                    error_text=root.attr('data-error-validator');
                    $(this).addClass("error");
                    $(this).focus();
                }
            });
        }
        else
        {
            // everything is good
            empty.removeClass("error");
            status=true;
        }

        if (status)
        {
            result_object_message.addClass('text_ok').removeClass('text_error').html(error_text);
        }
        else
        {
            result_object_message.addClass('text_error').removeClass('text_ok').html(error_text);
        }

        return status;
    }


    /**
     * Sprawdza czy w koszyku znajduja sie jakies produkty
     */
    function is_basket_empty()
    {    
        var php_function='is_basket_empty';
        //        var result_object_message=page.find("td.message");

        var index=api.getIndex();
        var result_object_message=root.find("td.message").eq(index);

        var result=true;

        var data_iks=$('#z_form_order').attr('data-iks');
        var data_kp=$('#z_form_order').attr('data-kp');

        result_object_message.html("<img src='./z/_custom_/loading.gif' />");
        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&data-iks='+data_iks+'&data-kp='+data_kp,
            success: function(msg)
            {
                var JSON = jQuery.parseJSON(msg);
                if (JSON.result>0)
                {
                    result_object_message.addClass('text_ok').removeClass('text_error');
                    result=false;
                }
                else
                {
                    //jesli wygasla sesja koszyk jest juz pusty, czyszcze tez ten na stronie
                    $('#basket').html('');
                    result_object_message.addClass('text_error').removeClass('text_ok');
                }

                result_object_message.html(JSON.message);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            },
            async: false
        });
        return result;
    }


    /**
     * Podsumowuje zamowienie aby uzytkownik mogl je przed zlozeniem zweryfikowac
     */
    function verify_order()
    {
        var form_data = $('#z_form_order').serialize();
        
        var php_function='verify_order';
        //var result_object_message=$("td.message:visible");
        
        var index=api.getIndex();
        var result_object_message=root.find("td.message").eq(index);        
        
        
        var result_object_data=$('#summary');

        var data_iks=$('#z_form_order').attr('data-iks');
        var data_kp=$('#z_form_order').attr('data-kp');
        
        result_object_message.html("<img src='./z/_custom_/loading.gif' />");
        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+form_data+'&data-iks='+data_iks+'&data-kp='+data_kp,
            success: function(msg)
            {
                var JSON = jQuery.parseJSON(msg);
                if (JSON.result>0)
                {
                    result_object_message.html('');
                    result_object_data.html(JSON.data);
                }
                else
                {
                    result_object_message.html(JSON.message);;
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (typeof(result_object_message) !== 'undefined')
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            },
            async: false
        });
    }

    /**
     * klikniecie na checkboxa adresu korespondencyjnego ukrywa
     * lub pokazuje pola do adresu korespondencyjnego
     */
    $('#input_corresp_filled').click(function(){
        if ($(this).is(':checked'))
        {
            //jesli w adresie korespondencyjnym imie, nazwiskosa puste to domyslnie uzupelniam je z podstawowego adresu

            var name=$('#input_name').val();
            if (name.length>0 && $('#input_corresp_name').val().length==0)
                $('#input_corresp_name').val(name);

            var surnamename=$('#input_surname').val();
            if (surnamename.length>0 && $('#input_corresp_surname').val().length==0)
                $('#input_corresp_surname').val(surnamename);

            var firm=$('#input_firm').val();
            if (firm.length>0 && $('#input_corresp_firm').val().length==0)
                $('#input_corresp_firm').val(firm);
                
            $('#user_data tr').addClass('small_height');
            
            $('#corresp_adress').fadeIn()
            $('#input_corresp_street').focus();
        }
        else
        {
            $('#user_data tr').removeClass('small_height');
            $('#corresp_adress').hide();
        }
    });



    /**
     * Zaznaczenie checkboxa faktury, sprawia ze nip staje sie wymagalny
     */
    $('#input_invoice').click(function(){
        var tax_ref=$('#input_tax_ref');
        if (typeof(tax_ref) !== 'undefined')
        {
            if ($(this).is(':checked'))
            {
                tax_ref.attr('data-required','1');
                if ($.trim(tax_ref.val()).length==0)
                    tax_ref.focus();
            }
            else
            {
                tax_ref.attr('data-required','0');
                tax_ref.removeClass('error');
            }
        }
    });
    
    

    $('#z_form_order').submit(function(){

        var php_function='save_order';
        var form_data = $('#z_form_order').serialize();
        var result_object_message=page.find("td.message");
        var result_object_data=$('#pay');

        if (result_object_message.length>0)
            result_object_message.html("<img src='./z/_custom_/loading.gif' />");
            
        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+form_data+'&data-iks='+$(this).attr('data-iks')+'&data-kp='+$(this).attr('data-kp'),
            success: function(msg)
            {                                
                var JSON = jQuery.parseJSON(msg);
                result_object_data.html(JSON.data);
                result_object_message.html('');                                          
            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            },
            async: false
        });
        return false; //not to post the  form physically
    });




    $('#z_form_contact').submit(function(){

        var php_function='contact_us';
        var form = $(this);
        var form_data = form.serialize();
        var result_object_message=$("td.message:visible");

        result_object_message.html("<img src='./z/_custom_/loading.gif' />");

        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+form_data+'&data-kp='+$(this).attr('data-kp'),
            success: function(msg)
            {
                var JSON = jQuery.parseJSON(msg);
                if (JSON.result==1)
                {
                    result_object_message.addClass('text_ok').removeClass('text_error');
                    form.get(0).reset()
                }
                else
                {
                    result_object_message.addClass('text_error').removeClass('text_ok');
                }
                result_object_message.html(JSON.message);

            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            },
            async: false
        });
        return false; //not to post the  form physically
    });


    $('#z_form_recommend').submit(function(){

        var php_function='recommend_us';
        var form = $(this);
        var form_data = form.serialize();
        var result_object_message=$("td.message:visible");

        result_object_message.html("<img src='./z/_custom_/loading.gif' />");

        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+form_data+'&data-kp='+$(this).attr('data-kp'),
            success: function(msg)
            {
                var JSON = jQuery.parseJSON(msg);
                if (JSON.result==1)
                {
                    result_object_message.addClass('text_ok').removeClass('text_error');
                    form.get(0).reset()
                }
                else
                {
                    result_object_message.addClass('text_error').removeClass('text_ok');
                }
                result_object_message.html(JSON.message);

            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            },
            async: false
        });
        return false; //not to post the  form physically
    });



    $('#z_form_guestbook').submit(function(){

        var php_function='add_to_guestbook';
        var form = $(this);
        var form_data = form.serialize();
        var result_object_message=$("td.message:visible");

        result_object_message.html("<img src='./z/_custom_/loading.gif' />");

        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+form_data+'&data-kp='+$(this).attr('data-kp'),
            success: function(msg)
            {

                var JSON = jQuery.parseJSON(msg);
                if (JSON.result==1)
                {
                    result_object_message.addClass('text_ok').removeClass('text_error');
                    form.get(0).reset();
                    $('#z-guestbook-items').html(JSON.data);
                    $('#z-guestbook-items > div.blockquote:first').addClass('new');
                    //genKodRabatowy();
                    $.scrollTo(result_object_message, 700);
                }
                else
                {
                    result_object_message.addClass('text_error').removeClass('text_ok');
                }
                result_object_message.html(JSON.message);

            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            },
            async: false
        });
        return false; //not to post the  form physically
    });



    /*
     * Wybor produktu z rozwijanej listy
     */
    $('select#product_hash').change(function(){
        var php_function='product_description';
        var result_object_message=$("td.message:visible");
        var result_object_data=$('#product_description');

        var select=$(this);
        var select_name=select.attr("name");
        var select_value=select.val();

        var data_iks=$('#z_form_order').attr('data-iks');
        var data_kp=$('#z_form_order').attr('data-kp');

        //nie wybrano zadnego produktu czyli pierwsza pozycja z rozwijajki
        if (select_value=='')
        {
            result_object_message.html('');
            $('#product_description').html('');
            return;
        }


        var z_order=$('#z_order');
        var z_order_height=z_order.height();

        var page_main=$('.page_main').first();
        var page_main_height=page_main.height();

        if (z_order.attr('data-height-diff')=='0')
        {
            z_order.attr('data-height-page_main',page_main_height);
            z_order.attr('data-height-diff',z_order_height-page_main_height);
        }

        result_object_message.html("<img src='./z/_custom_/loading.gif' />");
        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+select_name+"="+select_value+'&data-iks='+data_iks+'&data-kp='+data_kp,
            success: function(msg)
            {
                var JSON = jQuery.parseJSON(msg);
                if (JSON.result==1)
                {
                    result_object_message.html('');
                    result_object_data.html(JSON.data);
                    select.removeClass("error");
                    $('#quantity').focus();


                    page_main_height=page_main.height()
                    if (page_main_height!=z_order.attr('data-height-page_main'))
                    {
                        var new_height=parseInt(page_main_height)+parseInt(z_order.attr('data-height-diff'));
                        z_order.animate({
                            height: new_height
                        });
                        z_order.find(".page_main:gt(0)").height(page_main_height);
                    }

                }
                else
                {
                    result_object_message.html(JSON.message);;
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            }
        });
    });

    /**
     * Obsluga przycisku dodaj do koszyka
     */
    $('button#add_to_basket').click(function(){
        var php_function='add_to_basket';
        var result_object_message=$("td.message:visible");
        var result_object_data=$('#basket');
        
        var z_form_order=$('#z_form_order');

        var data_iks=z_form_order.attr('data-iks');
        var data_kp=z_form_order.attr('data-kp');
     
        var z_order=$('#z_order');
        var z_order_height=z_order.height();

        var page_main=$('.page_main').first();
        var page_main_height=page_main.height();

        if (z_order.attr('data-height-diff')=='0')
        {
            z_order.attr('data-height-page_main',page_main_height);
            z_order.attr('data-height-diff',z_order_height-page_main_height);
        }

        if (!check_inputs()) return false;

        var select=$('select#product_hash');
        var select_name=select.attr("name");
        var select_value=select.val();

        var input_quantity=$('#quantity');
        var input_quantity_name=input_quantity.attr("name");
        var input_quantity_value=input_quantity.val();

        result_object_message.html("<img src='./z/_custom_/loading.gif' />");
        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+select_name+"="+select_value+'&'+input_quantity_name+"="+input_quantity_value+'&data-iks='+data_iks+'&data-kp='+data_kp,
            success: function(msg)
            {
                var JSON = jQuery.parseJSON(msg);
                if (JSON.result==1)
                {
                    result_object_message.html(JSON.message);
                    result_object_data.html(JSON.data);
                    select.removeClass("error");
                    $('#quantity').focus();

                    page_main_height=page_main.height()
                    if (page_main_height!=z_order.attr('data-height-page_main'))
                    {
                        var new_height=parseInt(page_main_height)+parseInt(z_order.attr('data-height-diff'));
                        z_order.animate({
                            height: new_height
                        });
                        z_order.find(".page_main:gt(0)").height(page_main_height);
                    }

                }
                else
                {
                    result_object_message.html(JSON.message);;
                }

            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            }
        });



    });




    /**
     * Sprawdzenie kodu promocyjnego
     */
    $('button#check_promo_code').click(function(){
        var php_function='check_promo_code';
        var result_object_message=$('#promo_code_status');
        var result_object_data=$('#basket');
        
        var data_iks=$('#z_form_order').attr('data-iks');
        var data_kp=$('#z_form_order').attr('data-kp');

        var input_promo_code=$('#promo_code');
        var input_promo_code_name=input_promo_code.attr("name");
        var input_promo_code_value=input_promo_code.val();

        $('input#promo_code').attr('data-checked', '1');
        //if ($.trim(result_object_data.html()).length>0)
        //    result_object_data.html("<img src='./z/_custom_/loading.gif' />");
        
        $.ajax({
            type: "POST",
            url: "./z/order_ajax.php",
            data: 'f='+php_function+'&'+input_promo_code_name+"="+input_promo_code_value+'&data-iks='+data_iks+'&data-kp='+data_kp,
            success: function(msg)
            {
                var JSON = jQuery.parseJSON(msg);
                if (JSON.result>0)
                {
                    result_object_message.html(JSON.message);
                    result_object_message.removeClass().addClass('text_ok');
                    result_object_data.html(JSON.data);
                    $('#quantity').focus();
                }
                else
                {
                    result_object_message.html(JSON.message);
                    result_object_message.removeClass().addClass('text_error');
                    result_object_data.html(JSON.data);
                    input_promo_code.focus();
                }
                $('select#product_hash').change();
            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                if (result_object_message.length>0)
                    result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
            }
        });
    });
    
    /**
     * Jesli uzytkownik wprowadzil kod a go nie sprawdzil to sprawdzam go automatycznie
     */
    $('input#promo_code').change(function() {
        if ($(this).attr('data-checked')==='0')
            $('button#check_promo_code').click();
    });         
    
    
    /**
     * Zmiana w kodzie promocyjnym wyswietla informacje o koniecznosci nacisniecia przycisku Sprawdz kod
     */
    $('input#promo_code').bind('paste', function() {        
        $('input#promo_code').keyup();
    });
    
    
    $('input#promo_code').keyup(function() {
        var result_object_message=$('#promo_code_status');
        
        result_object_message.html($(this).attr('data-info-press-button'));
        result_object_message.removeClass().addClass('text_info');
    });    
    

    /**
     * Wcisniecie entera w polu kodu promocyjnego spowoduje jego sprawdzenie
     */
    $('input#promo_code').keypress(function(event) {
        if (event.keyCode == '13' || event.keyCode == '10') {
            event.preventDefault();
            $('button#check_promo_code').click();
        }
    });

    /**
     * Wcisniecie entera w polu ilosci spowoduje klikniecie na przycisk dodaj do koszyka
     */
    $('input#quantity').keypress(function(event) {
        if (event.keyCode == '13' || event.keyCode == '10') {
            event.preventDefault();
            $('button#add_to_basket').click();
        }
    });


    /**
   * Obsluga emotikon w ksiedze gosci
   */
    $('#emoticons img').click(function(){
        var textarea=$('textarea#fzp_p3');
        textarea.val(textarea.val()+' '+$(this).attr('data-emoticon')+' ');
        textarea.focus();
    });



});


/**
 * Usuwanie produktów z koszyka
 */
function delete_from_basket(product_hash)
{
    var php_function='delete_from_basket';
    var result_object_message=$("td.message:visible");
    var result_object_data=$('#basket');

    var data_iks=$('#z_form_order').attr('data-iks');
    var data_kp=$('#z_form_order').attr('data-kp');

    result_object_message.html("<img src='./z/_custom_/loading.gif' />");
    $.ajax({
        type: "POST",
        url: "./z/order_ajax.php",
        data: 'f='+php_function+'&product_hash='+product_hash+'&data-iks='+data_iks+'&data-kp='+data_kp,
        success: function(msg)
        {
            var JSON = jQuery.parseJSON(msg);
            if (JSON.result==1)
            {
                result_object_message.html(JSON.message);
                result_object_data.html(JSON.data);
                $('#quantity').focus();

                //ustawienie wysokosci formularza po usunieciu produktu z koszyka
                var z_order=$('#z_order');
                var page_main=$('.page_main').first();
                var page_main_height=page_main.height();
                z_order.animate({
                    height: parseInt(page_main_height)+parseInt(z_order.attr('data-height-diff'))
                });
                //dla pozostalych page_main ustawiam taka sama wysokosc jak dla pierwszego
                z_order.find(".page_main:gt(0)").height(page_main_height);

            }
            else
            {
                result_object_message.html(JSON.message);;
            }

        },
        error: function (XMLHttpRequest, textStatus, errorThrown)
        {
            if (result_object_message.length>0)
                result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
        }
    });
}

/**
 * Usuwa wszystkie produkty z koszyka
 */
function clear_basket()
{
    var php_function='clear_basket';
    var result_object_message=$("td.message:visible");
    var result_object_data=$('#basket');

    var data_iks=$('#z_form_order').attr('data-iks');
    var data_kp=$('#z_form_order').attr('data-kp');

    result_object_message.html("<img src='./z/_custom_/loading.gif' />");
    $.ajax({
        type: "POST",
        url: "./z/order_ajax.php",
        data: 'f='+php_function+'&data-iks='+data_iks+'&data-kp='+data_kp,
        success: function(msg)
        {
            var JSON = jQuery.parseJSON(msg);
            if (JSON.result==1)
            {
                result_object_message.html(JSON.message);
                result_object_data.html(JSON.data);
                $('#quantity').focus();

                //ustawienie wysokosci formularza po usunieciu produktu z koszyka
                //ustawienie wysokosci formularza po usunieciu produktu z koszyka
                var z_order=$('#z_order');
                var page_main=$('.page_main');
                var page_main_height=page_main.height();
                    
                z_order.animate({
                    height: parseInt(page_main_height)+parseInt(z_order.attr('data-height-diff'))
                });
                //dla pozostalych page_main ustawiam taka sama wysokosc jak dla pierwszego
                z_order.find(".page_main:gt(0)").height(page_main_height);

            }
            else
            {
                result_object_message.html(JSON.message);;
            }

        },
        error: function (XMLHttpRequest, textStatus, errorThrown)
        {
            if (result_object_message.length>0)
                result_object_message.html('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
        }
    });
}


var opinia="";
function getGuestBookItemRandom()
{

    if (opinia!="")
    {
        $('#z-guestbook-random-container').hide();
        $('div#z-guestbook-random-container').html(opinia);
        $('div#z-guestbook-random-container').fadeIn('slow');
    }

    $.ajax({
        type: "POST",
        url: "./z/order_ajax.php",
        data: "f=getGuestBookItemRandom"+'&data-iks='+$('#z-guestbook-random-container').attr("data-iks"),
        success: function(msg)
        {
            opinia=msg;
        },
        error: function (XMLHttpRequest, textStatus, errorThrown)
        {
        //$("#guestbook-random-container").show();
        //$("#guestbook-random-container").after('Error-> o: '+XMLHttpRequest+' k: '+textStatus+' r: '+ errorThrown);
        }
    });
}
 
