﻿(function ($) {
    //{ domain: DomainName, type: type, status: status, jsonData: jsonData }
    var _data = new Array();
    var isDisplay = false;
    var methods = {

        display: function () {
            _data = ReadFromCookie();
            $("#quickNum").text(_data.length);
            $('div[bind="quickListButtonB"]').click(function (e) {
                if (!isDisplay) {

                    isDisplay = true;
                    RenderQuicklist($(this), _data);

                } else {
                    Hide();
                }


                //e.stopPropagation();

            });


            /*$("body").unbind("click").click(function (e) {

            if (!jQuery(e.target).is('div[bind="quickListButtonB"]')) {

            Hide();
            }
            });*/

        },
        getData: function () {
            if (_data.length == 0)
                return ReadFromCookie();
            else {
                return _data;
            }

        },
        save: function () {

            $().login("islogged", function (isLogged) {

                if (isLogged) {
                    SaveDomains();
                }
                else {
                    $().login("openLogin", function () {
                        SaveDomains();
                    }, true);
                }
            });


        },
        add: function (data) {

            _data.push(data);

            SaveCookie(_data);
            //TE({ Category: "quicklist", Name: "add", Data: data.domain });
            $("#quickNum").text(_data.length);
            RenderQuicklist($(this), _data);

            $("body").trigger("add", [data.domain]);
            TE("/search/quicklist/add");
            //$().LiveBot("showMenu", "livebot_menu_quicklist");
        },
        empty: function () {
            _data = new Array();

            SaveCookie(_data);
            $("#quickNum").text(_data.length);
            RenderQuicklist($(this), _data);
            //TE({ Category: "quicklist", Name: "empty", Data: "" });
            //$().LiveBot("showMenu", "livebot_menu_quicklist");
            $("body").trigger("empty", null);
            TE("/search/quicklist/empty");
        },
        remove: function (index) {
            //TE({ Category: "quicklist", Name: "remove", Data: _data[index].domain });

            $("body").trigger("remove", [_data[index].domain]);

            Remove(index, $(this));
            $("#quickNum").text(_data.length);
            TE("/search/quicklist/remove");
            //$().LiveBot("showMenu", "livebot_menu_quicklist");

        },
        removeByName: function (domain) {
            var index = Contains(domain);

            $("body").trigger("remove", [_data[index].domain]);

            TE({ Category: "quicklist", Name: "remove", Data: _data[index].domain });
            if (index > -1) {
                Remove(index, $(this));
            }
            $("#quickNum").text(_data.length);
            // $().LiveBot("showMenu", "livebot_menu_quicklist");

        }

    };


    $.fn.Quicklist = function (method) {
        if (methods[method]) {


            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist on jQuery.Quicklist');
        }
    };

    function Remove(index, element) {
        _data.splice(index, 1);

        SaveCookie(_data);

        RenderQuicklist(element, _data);
    }

    function Contains(domain) {

        var where = $.Enumerable.From(_data)
                    .Select(function (val, i) { return { Index: i, Obj: val} })
                    .Where(function (v) { return v.Obj.domain.toLowerCase() == domain.toLowerCase() });

        if (where.Count() > 0) {
            return where.First().Index;
        }
        else {
            return -1;
        }

    }

    function RenderQuicklist(element, data) {


        $('div[bind="quickListButton"]').addClass("quickListBtnSel");
        $('div[bind="quickListContainer"]').css("visibility", "visible");

        $('div[bind="quickListContainer"]').viewManager("get", "quicklist", { model: data });

        $('a[bind="quicklist"][field="delete"]').click(function () {
            var index = $(this).attr("index");
            element.Quicklist("remove", index);

        });

        $('a[bind="quicklist"][field="vendor"]').click(function () {
            var textData = $(this).attr("data");
            var data = jQuery.parseJSON(textData);
            AddToCart(data.DomainName, data.Type, data.Status, data.Data, false);

        });



        $("#__quicklist_save").click(function () { element.Quicklist("save") });

        $("#__quicklist_empty").click(function () { element.Quicklist("empty") });



    }

    function Hide() {
        if (isDisplay) {
            $('div[bind="quickListContainer"]').css("visibility", "hidden");
            $('div[bind="quickListContainer"]').html("");
            $('div[bind="quickListButton"]').removeClass("quickListBtnSel");
            isDisplay = false;

        }
    }

    function SaveCookie(data) {
        try {
            var json = JSON.stringify(data);
            $.cookie('domainsbot_quicklist', json);
        }
        catch (err) {
            $().Errors("show", "Error saving cookie\tdomainsbot_quicklist");
        }
    }

    function SaveDomains() {
        $.each(_data, function () {
            $.getJSON("/My/AddDomains?domains=" + this.domain, function (res) {
                if (res != null && res == true) {

                }
                else {
                    $().Errors("show", "Error adding domains\t/My/AddDomains?domains=" + formatted);
                }
            });
        });
    }

    function ReadFromCookie() {
        try {
            var json = $.cookie('domainsbot_quicklist');
            if (json != null)
                return jQuery.parseJSON(json);
            else
                return new Array();
        } catch (err) {
            $().Errors("show", "Error reading cookie\tdomainsbot_quicklist");
        }


    }

    //  ...
    // end of closure
})(jQuery);
