﻿///<reference path="Extjs_Intellisense.js" />
Ext.namespace('LUL.Admin');

// hanterar administration av sidan
LUL.Admin.Manager = function() {
    this.editingPage = false;

    this.init = function() {
        loginManager.on('loggedIn', this.renderToolbar, this);
        loginManager.on('loggedOut', this.removeToolbar, this);

        try {
            this.pageData = lulPageData;
        }
        catch(err) {
        
        }
    }

    // lägger till verktygsrad för sidredigering
    this.renderToolbar = function() {
        // this.pageData bara satt på "riktiga" sidor
        if (this.pageData) {
            if (loginManager.pageRights == RIGHTS_ADMIN || loginManager.pageRights == RIGHTS_USER) {
                this.addPageButton = new Ext.Toolbar.Button({ id: 'adminAddPageLink', text: 'Lägg till sida', handler: this.addPage, tooltip: 'Lägg till ny undersida' });
                this.removePageButton = new Ext.Toolbar.Button({ id: 'adminRemovePageLink', text: 'Ta bort sida', handler: this.removePage, scope: this, tooltip: 'Ta bort denna sida' });
                this.editSettingsButton = new Ext.Toolbar.Button({ id: 'adminEditSettingsLink', text: 'Sidinställningar', handler: this.editPageSettings, tooltip: 'Redigera sidans inställningar' });
                this.editPageButton = new Ext.Toolbar.Button({ id: 'adminEditPageLink', text: 'Redigera sida', handler: this.editPage, enableToggle: true, tooltip: 'Växla alla sidans paneler till redigeringsläge' });
                this.addPanelButton = new Ext.Toolbar.Button({ id: 'adminAddPanelLink', text: 'Lägg till panel', handler: this.addPanel, tooltip: 'Lägg till en ny/befintlig/dold panel på sidan' });

                var items = [
                    this.addPageButton,
                    this.removePageButton,
                    this.editSettingsButton,
                    { xtype: 'tbseparator' },
                    this.editPageButton,
                    this.addPanelButton
                ]

                if (loginManager.globalRights == RIGHTS_ADMIN) {
                    this.showAdminButton = new Ext.Toolbar.Button({ id: 'adminShowAdminLink', text: 'Administration', handler: this.showAdmin });
                    items = [
                        this.showAdminButton,
                        { xtype: 'tbseparator' }
                    ].concat(items);
                }

                var adminToolbar = new Ext.Toolbar({
                    id: 'adminToolbar',
                    style: 'text-align: left',
                    items: items
                });
                adminToolbar.render(Ext.getBody());

                if (this.pageData.id == 1) this.removePageButton.disable();
            }
        }
    }

    // ta bort administrationsverktyg vid utloggning (om de visas)
    this.removeToolbar = function() {
        var toolbar = Ext.get('adminToolbar');
        if (toolbar) toolbar.remove();
    }

    // ta bort sidan
    this.removePage = function() {
        if (loginManager.loggedIn) {
            Ext.Msg.show({
                title: 'Bekräfta borttagning',
                msg: 'Vill du verkligen ta bort sidan?<br/>Kan inte ångras senare.',
                buttons: Ext.Msg.YESNO,
                animEl: 'adminRemovePageLink',
                icon: Ext.Msg.QUESTION,
                scope: this,
                fn: function(button) {
                    if (button == 'yes') {
                        this.doRemovePage();
                    }
                }
            });
        }
    }

    // utför borttagning
    this.doRemovePage = function() {
        if (loginManager.loggedIn) {
            function success(response) {
                var res = Ext.util.JSON.decode(response.responseText);
                if (res.success) {
                    Ext.Msg.show({
                        title: 'Sidan borttagen',
                        msg: 'Du skickas nu till överliggande sida',
                        buttons: Ext.Msg.OK,
                        //animEl: 'adminRemovePageLink',
                        icon: Ext.Msg.INFO,
                        fn: function(button) {
                            document.location = 'Default.aspx?id=' + res.parent;
                        }
                    });
                }
            }

            function failure() {
                Ext.Msg.alert('Misslyckades', 'Borttagningen misslyckades');
            }

            Ext.Ajax.request({
                url: dataManager.removePageURL,
                success: success,
                failure: failure
            });
        }
    }

    // redigeringsläge för hela sidan
    this.editPage = function() {
        if (this.editingPage) {
            this.editingPage = false;
            editorManager.closeAll();

            //this.editPageButton.setText('Redigera sida');
        } else {
            this.editingPage = true;
            //this.editPageButton.setText('Sluta redigera sida');

            var textPanels = Ext.query('div.textPanel, div.imagePanel, div.linkPanel, div.newsPanel, div.flashPanel, div.thumbnailPanel, div.iframePanel');
            for (var i = 0; i < textPanels.length; i++) editorManager.editPanel(textPanels[i].id);
        }
    }

    // visa "lägg till panel"-fönstret
    this.addPanel = function() {
        if (loginManager.loggedIn) {
            if (!this.addPanelWin) {
                var newPanel = new LUL.Admin.NewPanelTab({});
                var existingPanel = new LUL.Admin.ExistingPanelTab();
                var hiddenPanel = new LUL.Admin.HiddenPanelTab({});

                var tabs = new Ext.TabPanel({
                    activeTab: 0,

                    bbar: new Ext.StatusBar({
                        id: 'newPanelStatus',
                        text: 'Dra ut och släpp valfri panel på sidan för att lägga till'
                    }),

                    items: [
                        newPanel,
                        existingPanel,
                        hiddenPanel
                    ]
                });

                this.addPanelWin = new Ext.Window({
                    title: 'Lägg till panel',
                    width: 500,
                    height: 400,
                    hideBorders: true,
                    layout: 'fit',
                    closeAction: 'hide',
                    bodyStyle: 'text-align: left',
                    items: [
                        tabs
                    ]
                });
            }
            this.addPanelWin.show('adminAddPanelLink');
        }
    }
}


