var master = master || {};
/* Notification flyout */

master.notificationFlyout = (function () {

    function init(applicationKey) {
        createMarkup(applicationKey);
        populateFlyoutAsync(applicationKey);
    }

    function setupDependencies() {
        var $style = $("<link />", {
            "rel": "stylesheet",
            "href": "http://" + window.location.hostname + "/auth/content/styles/notification.css",
            "type": "text/css"
        });
        $("head").prepend($style);
    }

    function createMarkup(applicationKey) {
        var $notificationMenu = $("#notificationMenu");
        var $notificationsFlyout = $("<div/>", { "class": "notificationsFlyout" })
                                       .append("<h3>Notifieringar</h3>")
                                       .append($("<div/>", { "id": "notificationPlaceholder" }))
                                       .append($("<a/>", { "href": "/auth/notification/list?applicationKey={0}&returnUrl={1}".formatWith(applicationKey, escape(window.location.href)),
                                           "class": "showMoreLink"
                                       }).text("Visa fler notifieringar »"));
        $notificationsFlyout.hide();
        $notificationMenu.append($("<div/>", { "id": "notificationIcon" }));
        $notificationMenu.append($notificationsFlyout);
        $notificationMenu.click(function (e) {
            e.stopPropagation();
            if ($notificationsFlyout.is(":visible")) {
                $notificationsFlyout.hide();
            } else {
                $(document).click();
                $notificationsFlyout.show();
            }
        });
        $(document).click(function () {
            $notificationMenu.find(".notificationsFlyout").hide();
        });
        $notificationMenu.find(".notificationsFlyout").click(function (e) {
            e.stopPropagation();
        });
    }

    function populateFlyoutAsync(applicationKey) {
        var $notificationMenu = $("#notificationMenu");
        var $notificationPlaceHolder = $notificationMenu.find("#notificationPlaceholder");
        var randomNumber = Math.floor(Math.random() * 10000);
        var url = "/auth/notification/listPartial?applicationKey={0}&pageSize=5&_={1}".formatWith(applicationKey, randomNumber);

        $.get(url, function (data) {
            $notificationPlaceHolder.html(data);
            if ($notificationMenu.find(".notificationsFlyout a.new").length > 0) {
                $notificationMenu.addClass("highLight");
            }
        });
    }

    return {
        init: init,
        setupDependencies: setupDependencies
    };
})();



