// Komunikaty
function pid() {
    var d = new Date();
    var dd = d.getTime();
    return dd.toString().substr(-3);
}

function wait() {
    $.dialogIS( {
        type : "wait"
    });
}

function unwait() {
    $.dialogIS( {
        type : "unwait"
    });
}

function showResponse(responseText, statusText) {
    var r = $.evalJSON(responseText);
    $.dialogIS(r);
}

(function($) {
    $.dialogIS = function(options) {
        var defaults = {
            message : ismsg.init_message,
            message_ok : ismsg.init_message_ok,
            message_err : ismsg.init_message_err,
            type : "tell", // wait, tell, ask
            what : "ok", // ok, error
            refresh : "manual", // auto, manual, forced
            link_ok : "",
            link_err : "",
            link_hash : "",
            txt_yes : ismsg.init_txt_yes,
            txt_no : ismsg.init_txt_no,
            txt_ok : "OK",
            txt_ok_add : ismsg.init_txt_ok_add,
            txt_err_add : ismsg.init_txt_err_add
        };

        var c = $.extend(defaults, options);

        var ntemp = location.toString();
        var nurl = ntemp.split("?");
        var nlocation = nurl[0];

        if (c.type == "unwait") {
            $.unblockUI();
            return true;
        }

        if (c.type == "wait") {
            $.blockUI( {
                message : '<div id="DIALOGBOX"><div id="DB"><p><img src="' + baseURL + 'images/ajax-loader-shop.gif" alt="(Loading)" /><br />' + ismsg.please_wait + '</p></div></div>'
            });
            return true;
        }

        if (c.what == "ok" && c.refresh == "auto") {
            $.dialogIS( {
                type : "wait"
            });
            top.location = nlocation + '?' + pid() + c.link_hash;
            return true;
        }

        if (c.type == "tell" && c.what == "error") {
            $.blockUI( {
                message : '<div id="DIALOGBOX"><div id="DB1"><p><img src="'
                + baseURL
                + 'images/panel/error.gif" align="left" alt="" />'
                + c.message
                + '</p><p><span>'
                + c.message_err
                + '</span></p></div><div id="DB2"><p><a id="ok" class="linkA" href="javascript:void(0)">'
                + c.txt_ok
                + c.txt_err_add
                + '</a></p></div></div>'
            });
            refresh = false;
        }

        if (c.type == "tell" && c.what == "ok") {
            $.blockUI( {
                message : '<div id="DIALOGBOX"><div id="DB1"><p><img src="'
                + baseURL
                + 'images/ok.gif" align="left" alt="" />'
                + c.message
                + '</p><p><span>'
                + c.message_ok
                + '</span></p></div><div id="DB2"><p><a id="ok" class="linkA" href="javascript:void(0)">'
                + c.txt_ok
                + c.txt_ok_add
                + '</a></p></div></div>'
            });
            refresh = true;
        }

        if (c.type == "ask") {
            if (c.what == "ok")
                message2 = c.message_ok;
            if (c.what == "error")
                message2 = c.message_err;
            $.blockUI( {
                message : '<div id="DIALOGBOX"><div id="DB1"><p><img src="'
                + baseURL
                + 'images/'
                + c.what
                + '.gif" align="left" alt="" />'
                + c.message
                + '</p><p><span>'
                + message2
                + '</span></p></div><div id="DB2"><p><a style="float:left" id="no" class="linkA" href="javascript:void(0)">'
                + c.txt_no
                + c.txt_err_add
                + '</a> <a style="float:right" id="yes" class="linkA" href="javascript:void(0)">'
                + c.txt_yes
                + c.txt_ok_add
                + '</a></p></div></div>'
            });
            refresh = true;
        }

        if (c.refresh == "forced") {
            refresh = true;
        }

        // przyciski
        if (refresh == true) {
            $('#ok').click(function() {
                $.dialogIS( {
                    type : "wait"
                });
                top.location = nlocation + '?' + pid() + c.link_hash;
            });
        }
        if (refresh == false) {
            $('#ok').click(function() {
                $.unblockUI();
            });
        }

        $('#no').click(function() {
            $.unblockUI();
        });

        $('#yes').click(function() {
            alert("Uwaga! Akcja nie została przypisana!");
        });

        if (c.link_ok != "") {
            $('#yes, #ok').unbind().click(function() {
                $.dialogIS( {
                    type : "wait"
                });
                top.location = c.link_ok;
            });
        }

        if (c.link_err != "") {
            $('#no').unbind().click(function() {
                $.dialogIS( {
                    type : "wait"
                });
                top.location = c.link_err;
            });
        }

        if (c.link_ok == "this") {
            $('#yes, #ok').unbind().click(function() {
                $.dialogIS( {
                    type : "wait"
                });
                top.location = nlocation + '?' + pid() + c.link_hash;
            });
        }

        if (c.link_err == "this") {
            $('#no').unbind().click(function() {
                $.dialogIS( {
                    type : "wait"
                });
                top.location = nlocation + '?' + pid() + c.link_hash;
            });
        }
    };
})(jQuery);

(function($) {
    $.extend({
        add2cart: function(source_id, target_id, callback) {
            var source = $('#' + source_id );
            var target = $('#' + target_id );
            var display_image = $('#' + source_id).attr('src');
      
            var shadow = $('#' + source_id + '_shadow');
            if( !shadow.attr('id') ) {
                $('body').prepend('<div id="'+source.attr('id')+'_shadow" style="display: none; background-color: #ddd; border: solid 1px darkgray; position: static; top: 0px; z-index:100000"><img src="' + display_image + '" /></div>');
                var shadow = $('#'+source.attr('id')+'_shadow');
            }

            if( !shadow ) {
                alert('Cannot create the shadow div');
            }
      
            shadow.width(source.css('width')).height(source.css('height')).css('top', source.offset().top).css('left', source.offset().left).css('opacity', 0.5).show();
            shadow.css('position', 'absolute');
            
            shadow.animate(
            {
                top: target.offset().top,
                left: target.offset().left
            },
            400,
            'linear'
            ).animate(
            {
                opacity: 0
            },
            100,
            function(){
                shadow.hide();
            }
            ).animate(
            {
                opacity: 0
            },

            {
                duration: 0,
                complete: callback
            }
            );
        }
    });
})(jQuery);


// funkcje inicjujace

function InitStart() {
    // Rozswietlanie obrazkow
    $(".fade").hover(function() {
        $(this).fadeTo("fast", 0.6);
    }, function() {
        $(this).fadeTo("fast", 1);
    });

    $(".fade").fadeTo("fast", 1);

    $(".fade2").hover(function() {
        $(this).fadeTo("fast", 1);
    }, function() {
        $(this).fadeTo("fast", 0.6);
    });

    $(".fade2").fadeTo("fast", 0.6);

    $(".this_lang img").unbind().fadeTo("fast",1);
	
    $(".disabled").keydown(function(){
        return false;
    });

    $(".top_search_input").click(function() {
        this.value = "";
    });

    // Dodanie do koszyka - karta produktu
    $("#add_to_basket_submit").unbind().click(function() {
        wait(); $(".wait").show();
        $.scrollTo("#start", 800);
        $("#add_to_basket").submit();
    });

    // Blokowanie
    $(".locked").unbind().fadeTo("fast", 0.4);
    $(".locked img").unbind().removeClass("fade");
    $(".lockATB").fadeTo("fast", 0.4);
    $(".input_locked").click(function(){
        return false;
    });
}

function InitSelectColor() {
    $(".selectColor").unbind();
    $(".selectColor").fadeTo("fast", 0.4);
    $(".selectColor").click(function() {
        var mag_id = $(this).attr("rel");
        $(".selectColor").fadeTo("fast", 0.4);
        $(this).fadeTo("fast", 1);
        $("#mag_id").val(mag_id);
        UnLockAddToBasket();
    });
}

function LockAddToBasket() {
    $("#add_to_basket_submit").unbind();
    $("#add_to_basket_submit").fadeTo("fast", 0.4);
    $("#add_to_basket_submit").attr("class", "locked");

    InitStart();
    InitSelectColor();
}

function UnLockAddToBasket() {
    $("#add_to_basket_submit").unbind();
    $("#add_to_basket_submit").fadeTo("fast", 1);
    $("#add_to_basket_submit").attr("class", "fade");

    InitStart();
}

// Przechowalnia
function LockSubmit(item_id) {
    $("a.atb_" + item_id).addClass("lockATB");
    $("a.atb_" + item_id).fadeTo("fast", 0.4);

    $(".atb_" + item_id + "[type=checkbox]").hide();
    $(".atb_" + item_id + "[type=checkbox]").attr("disabled", "disabled");

    $(".fault_" + item_id).addClass("fault");

    InitStart();
// InitSelectColor();
}

function UnLockSubmit(item_id) {
    $("a.atb_" + item_id).removeClass("lockATB");
    $("a.atb_" + item_id).fadeTo("fast", 1);

    $(".atb_" + item_id + "[type=checkbox]").show();
    $(".atb_" + item_id + "[type=checkbox]").attr("disabled", "");
    $(".fault_" + item_id).removeClass("fault");

    InitStart();
}

// wstrzymanie dzialania w milisekundach

function pause(numberMillis) {
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime)
            return;
    }
}

// foreach - prototyp
if (!Array.prototype.forEach) {
    Array.prototype.forEach = function(fun /* , thisp */) {
        var len = this.length;
        if (typeof fun != "function")
            throw new TypeError();

        var thisp = arguments[1];
        for ( var i = 0; i < len; i++) {
            if (i in this)
                fun.call(thisp, this[i], i, this);
        }
    };
}

$(document).ready(function() {

    var BrowserDetect = {
        init: function () {
            this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
            this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
            this.OS = this.searchString(this.dataOS) || "an unknown OS";
        },
        searchString: function (data) {
            for (var i=0;i<data.length;i++)	{
                var dataString = data[i].string;
                var dataProp = data[i].prop;
                this.versionSearchString = data[i].versionSearch || data[i].identity;
                if (dataString) {
                    if (dataString.indexOf(data[i].subString) != -1)
                        return data[i].identity;
                }
                else if (dataProp)
                    return data[i].identity;
            }
        },
        searchVersion: function (dataString) {
            var index = dataString.indexOf(this.versionSearchString);
            if (index == -1) return;
            return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
        },
        dataBrowser: [
        {
            string: navigator.userAgent,
            subString: "Chrome",
            identity: "Chrome"
        },
        {
            string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
        },
        {
            prop: window.opera,
            identity: "Opera"
        },
        {
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {		// for newer Netscapes (6+)
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Explorer",
            versionSearch: "MSIE"
        },
        {
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        { 		// for older Netscapes (4-)
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
        ],
        dataOS : [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
            string: navigator.userAgent,
            subString: "iPhone",
            identity: "iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
        ]

    };
    BrowserDetect.init();

    InitStart();

    // Logowanie strona glowna
    $(".submit").click(function() {
        var tempForm = $(this).attr("title");
        $("#" + tempForm).submit();
    });

    var optionsLoginForm = {
        beforeSubmit : wait, // pre-submit callback
        success : showResponse, // post-submit callback
        clearForm : true
    // clear all form fields after successful submit
    };
	
    $('#LOGOWANIE, #LOGOWANIE2').ajaxForm(optionsLoginForm);

    // Informacje systemowe
    $("#ei_show").dblclick(function() {
        $("#engine_info").show();
    });
		
    // Koszyk - nawigacja
    $(".basket3_next_step").click(function(){
        wait();
        url = $(this).attr("rel");
        setTimeout('top.location = url', 2000);
    });
		   
    $(".back_step").click(function(){
        top.location = $(this).attr("rel");
    });
	
    // Aktualnosci
    $("#newsarch").click(function(){
        $(".newsarchive").toggle();
    });

    if(BrowserDetect.browser!= "Explorer" && BrowserDetect.version != "6"){
        // Podpowiedzi
        $("input[name=new_user_city],input[name=dest_ud_city]").autocomplete('' + baseURL + 'panel/suggest/city', {
            width: 199,
            //max: 10,
            highlight: false,
            scroll: true,
            scrollHeight: 200,
            formatItem: function(data, i, n, value){
                return value;
            },
            formatResult: function(data, value){
                return value;
            }
        });
    }
});
