﻿namespace('nnet.admin');

nnet.admin.ContentToolBar = $j.klass({
    initialize: function() {
        try {
            this.ToolBar = null;
            this.Panel = null;

            this.InsertButton = null;
            this.PrintButton = null;
            this.ConfigButton = null;
            this.ExportButton = null;
            this.ImportButton = null;
            this.AdminButton = null;
            this.ToolButton = null;

            this.Panel = $j(sVars.AD_ContentToolBarPanelID);
        } catch (e) { logE("admin.ContentToolBar.initialize", e); }
    },


    // event handler so not in context.
    // called by toolbar ready handler
    // so only must assume its on objects are set up
    initToolBar: function(sender) {
        try {
            AD.ContentToolBar.ToolBar = sender;
            AD.ContentToolBar.Panel = $j(sVars.AD_ContentToolBarPanelID);
            sender.add_buttonClicked(AD.ContentToolBar.buttonClick);

            AD.ContentToolBar.InsertButton = sender.findItemByValue('Insert');
            AD.ContentToolBar.PrintButton = sender.findItemByValue('Print');
            AD.ContentToolBar.ConfigButton = sender.findItemByValue('Config');
            AD.ContentToolBar.ExportButton = sender.findItemByValue('Export');
            AD.ContentToolBar.ImportButton = sender.findItemByValue('Import');
            AD.ContentToolBar.AdminButton = sender.findItemByValue('Admin');
            AD.ContentToolBar.ToolButton = sender.findItemByValue('Tool');

            AD.ContentToolBar.hide();
            AD.ContentToolBar.reset();

        } catch (e) { logE("admin.ContentToolBar.initToolBar", e); }
    },

    hide: function() {
        try {
            try{this.ToolBar.set_visible(false);} catch(e){}
            this.Panel.height(contentToolBarHeightCollapsed);
            this.Panel.hide();
        } catch (e) { logE("admin.ContentToolBar.hide", e); }
    },

    show: function() {
        try {
            this.ToolBar.set_visible(true);
            this.Panel.height(contentToolBarHeight);
            this.Panel.show();
        } catch (e) { logE("admin.ContentToolBar.show", e); }
    },

    reset: function() {
        try {
            var items = this.ToolBar.get_items();
            for (var i = 0; i < items.get_count(); i++) {
                items.getItem(i).hide();
            }
        } catch (e) { logE("admin.ContentToolBar.reset", e); }
    },

    showButtons: function(adminMode) {
        try {
            this.reset();
            if (adminMode == "Site") AdminCallback.IsSiteAdmin(AD.SiteID, this.displaySiteButtons, OnPageError);
            else if (adminMode == "Services") AdminCallback.IsServiceAdministration(AD.SiteID, this.displayServiceButtons, OnPageError);
            else if (adminMode == "AllUsers") AdminCallback.IsManageUserAccount(AD.SiteID, this.displayUserButtons, OnPageError);
            else AD.hideToolBar();
        } catch (e) { logE("admin.ContentToolBar.showButtons", e); }
    },


    // handler
    displaySiteButtons: function(hasPermission) {
        try {
            if (hasPermission) {
                AD.ContentToolBar.ConfigButton.show();
                AD.ContentToolBar.ToolButton.show();
                AD.showToolBar();
            } else AD.hideToolBar();
        } catch (e) { logE("admin.ContentToolBar.displaySiteButtons", e); }
    },

    // handler
    displayUserButtons: function(hasPermission) {
        try {
            if (hasPermission) {
                AD.ContentToolBar.AdminButton.show();
                AD.showToolBar();
            } else AD.hideToolBar();
        } catch (e) { logE("admin.ContentToolBar.displayUserButtons", e); }
    },


    // handler
    displayServiceButtons: function(hasPermission) {
        try {
            if (hasPermission) {
                AD.ContentToolBar.AdminButton.show();
                AD.ContentToolBar.ExportButton.show();
                AD.ContentToolBar.ImportButton.show();
                AD.ContentToolBar.ToolButton.set_text("Feedback");
                AD.ContentToolBar.ToolButton.show();
                AD.showToolBar();
            } else AD.hideToolBar();
        } catch (e) { logE("admin.ContentToolBar.displayServiceButtons", e); }
    },


    // event handler so not in context.
    buttonClick: function(sender, e) {
        try {
            var button = e.get_item().get_value();
            if (AD.Mode == "Site") {
                if (button == "Config") new nnet.PopUpWindow({ url: '/Site/Edit/' + AD.SiteID, minWidth: 400 }).show();
                else if (button == "Tool") new nnet.PopUpWindow({ url: '/Admin/Util?SiteID=' + AD.SiteID, minWidth: 400 }).show();
            } else if (AD.Mode == "Services") {
                if (button == "Tool") new nnet.PopUpWindow({ url: '/Directory/Admin/Feedback/' + AD.SiteID, minWidth: 400 }).show();
                else if (button == "Export") new nnet.PopUpWindow({ url: '/Directory/Admin/Export/' + AD.SiteID, minWidth: 400 }).show();
                else if (button == "Import") new nnet.PopUpWindow({ url: '/Directory/Admin/Import/' + AD.SiteID, minWidth: 400 }).show();
                else if (button == "Admin") new nnet.PopUpWindow({ url: '/Directory/Admin/Service/' + AD.SiteID, minWidth: 400 }).show();
            } else if (AD.Mode == "AllUsers") {
                if (button == "Admin") new nnet.PopUpWindow({ url: '/Security/Admin/User?SiteID=' + AD.SiteID, minWidth: 400 }).show();
            }
        } catch (e) { logE("admin.ContentToolBar.buttonClick", e); }
    }

});
