jQuery(function(){

    var doc = $(document);
    var wnd = $(window);

    // overlay
    var addOverlay = function(){
        if($("#overlay").length == 0)
        {
            $("body").append('<div id="overlay"></div>');
            $("#overlay").css({ "opacity" : 0.3, "display" : "block" });
        }
    }

    // dialog init
    var dialogInit = function(){
        if($("#dialog").length == 0)
        {
            $("body").append('<div id="dialog"></div>');
        }
    }

    // login
    var loginInit = function(){

        $("#toggle-login-form").click(function(){
            $("#login-form").slideDown(150);
            addOverlay();
            $("#overlay").bind("click.close_login_form", closeLoginForm);
            $(doc).bind("keydown.close_login_form", function(event){ if(event.which == 27) { closeLoginForm(); } });
            this.blur();
            return false;
        });

        $("#close-login-form").click(closeLoginForm);

        function closeLoginForm()
        {
            $("#login-form").slideUp(100, function(){
                $("#overlay").unbind("close.close_login_form");
                $(doc).unbind("keydown.close_login_form");
                $("#overlay").remove();
            });

            return false;
        }

        $("#login-form").submit(function(){
            var msg = '';
            var params = {};

            params.login = $.trim($("#auth-login").val());
            params.passwd = $.trim($("#auth-passwd").val());

            if(params.login == '')   { msg += '<li>Вы не ввели логин</li>\n'; }
            if(params.passwd == '')  { msg += '<li>Вы не ввели пароль</li>\n'; }

            if(msg != '')
            {
                msg = '<ul>' + msg + '</ul>';
                $("#dialog").html(msg);
                $("#dialog").dialog({
                   "title" : "Ошибки",
                   "modal" : true,
                   "width" : "300px"
                });
                return false;
            }

            return true;
        });
    }

    var basketInit = function(){
        var sending = false;

        $("#basket-toggle-link").click(function(){
            $("#basket-container").toggleClass('basket-act', 100);
            this.blur();
            return false;
        });

        $("#basket-toggle-link").hover(function(){
            $("#basket-container").toggleClass("basket-no-opacity");
        });

        $("#routs_list a[id^='add_'],#rout_description a[id^='add_']").click(function(){
            var objects = [];
            
            objects[0] = { "id" : get_id(this.id), "type" : "transport", "subtype" : $(this).attr("rel"), "act" : "add" };

            return difadd({ "link" : this, "objects" : objects });
        });

        $("#shields_list a[id^='add_'],#shield_description a[id^='add_']").click(function(event){
            var objects = [];

            var id = get_id($(this).attr("id"));
            $("#sides_" + id + " input").each(function(i, elm){
                objects[i] = { "id" : id, "type" : "shield", "subtype" : $(this).val(), "act" : ($(this).attr("checked") ? "add" : "dif") };
            });

            return difadd({ "link" : this, "objects" : objects });
        });

        $("#orders-list a.delete").each(function(i, elm){
            bindDeleteLink(elm);
        });

        function bindDeleteLink(obj)
        {
            $(obj).click(function(event){
                var name = $(this).parent().find("a.desc").html();
                if(!confirm("Удалить " + name + "?")) { this.blur(); return false; }

                var indeces = $(this).attr("rel").split("_");

                var objects = new Array({ "id" : parseInt(indeces[1]), "type" : indeces[0], "subtype" : indeces[2], "act" : "dif" });

                return difadd({ "link" : this, "objects" : objects });
            });
        }

        function difadd(params)
        {
            if(sending || $(params.link).hasClass("buy-disable"))
            {
                params.link.blur();
                return false;
            }

            sending = true;

            $.ajax({
                "url" : "/ajax/difadd.php",
                "type" : "post",
                "dataType" : "json",
                "data" : $.param({ "objects" : params.objects }),
                "success" : function(data)
                {
                    if(data.count_all)
                    {
                        $("#basket_noempty").show();
                        $("#basket_empty").hide();
                    }
                    else
                    {
                        $("#basket_noempty").hide();
                        $("#basket_empty").show();
                    }

                    $("#count_all").html(data.count_all);
                    $("#sum_all").html(number_format(data.sum_all, 0, '', ' '));

                    if(data.objects)
                    {
                        var html;
                        var id_elm;

                        $(data.objects).each(function(i, elm){
                            html = '';

                            id_obj = elm.type + '_' + elm.id + '_' + elm.subtype;

                            if(elm.act == 'add' && !$("#" + id_obj).length)
                            {
                                html += '<div class="item" id="' + id_obj + '">';
                                html += '<a href="' + elm.path + '" class="desc">' + elm.name + ' (' + elm.article + ')</a>';
                                html += '<a href="#content" rel="' + id_obj + '" class="delete"></a>';
                                html += '</div>';

                                $("#orders-list").append(html);
                                bindDeleteLink($("#" + id_obj + " a.delete"));
                            }
                            else if(elm.act == 'dif' && $("#" + id_obj).length)
                            {
                                $("#" + id_obj).remove();
                                $("#check_" + id_obj).attr("checked", false);
                            }
                        })

                        if($("#orders-list .item").length)
                        {
                            $("#basket-container").addClass("basket_nonopacity");
                        }
                        else
                        {
                            $("#basket-container").removeClass("basket_nonopacity");
                        }
                    }

                    sending = false;
                },
                "error" : function() {
                    alert("Ошибка передачи данных, попробуйте еще раз");
                    sending = false;
                }
            });

            params.link.blur();
            return false;
        }
    }

   // inits
   dialogInit();
   loginInit();
   basketInit();

});
