﻿Ext.namespace('FinnKodeWeb');

FinnKodeWeb.PanelSearchView =
function(config) {
    config = config || {};
    var _searchSources = config.searchSources;
    var _searchField = new FinnKodeWeb.SearchField({
        anchor: '100%',
        fieldLabel: 'Søk'
    });
    var _searchResultGrid = new FinnKodeWeb.SearchResultGrid({
        id: NamingService.createId('global', 'SearchResultGrid'),
        showSource: true
    });
    var _centerTabPanel = new Ext.TabPanel({
        deferredRender: true,
        border: true,
        defaults: {
            autoScroll: true,
            layout: 'fit',
            border: false
        },
        items: [
            new Ext.ux.ManagedIFrame.Panel({
                title: 'Forside',
		defaultSrc: 'contentpages/Forside.htm',
                id: NamingService.createId('frontpage', 'Panel'),
                bodyStyle: { padding: '5px' },
                itemId: 'frontpage'
            }),
            new FinnKodeWeb.PanelHelpView({
                title: 'Hjelp',
                listeners: {
                    activate: {
                        fn: function() {
                            this.setSrc('contentpages/Brukerveiledning.html', false, null, this);
                        },
                        single: true
                    }
                },
                id: NamingService.createId('userguide', 'PanelHelpView'),
                bodyStyle: { padding: '5px' },
                itemId: 'userguide'
            }),
            new FinnKodeWeb.PanelFormQuestion({
                title: 'Kodehjelp',
                id: NamingService.createId('questionform', 'Panel'),
                bodyStyle: { padding: '0px' },
                itemId: 'questionform'
            }),
            new FinnKodeWeb.PanelFormSynonyms({
                title: 'Synonymforslag',
                id: NamingService.createId('synonymform', 'Panel'),
                bodyStyle: { padding: '0px' },
                itemId: 'synonymform'
            }),
            new FinnKodeWeb.PanelFormError({
                title: 'Feilmeldingsskjema',
                id: NamingService.createId('errorform', 'Panel'),
                bodyStyle: { padding: '0px' },
                itemId: 'errorform'
            }),
            new FinnKodeWeb.PanelSynonyms({
                title: 'Synonymoversikt',
                id: NamingService.createId('synonyms', 'Panel'),
                bodyStyle: { padding: '0px' },
                itemId: 'synonyms'
            })
        ]
    });
    var _searchFieldSearchClickedHandler = function() {
        var sources = _searchSources.getCheckedSearchSources();
        sources = _searchSources.autoCheckSources(sources);
        var searchTerm = _searchField.getValue();
        _searchResultGrid.search(searchTerm, sources);
    };
    _searchField.addListener('searchClicked', _searchFieldSearchClickedHandler);
    _searchSources.addListener('searchRequested', _searchFieldSearchClickedHandler);

    var _searchAndSourcesContainer = new Ext.Panel({
        layout: 'border',
        border: false,
        items: [
            {
                region: 'north',
                border: false,
                split: false,
                height: 60,
                padding: 5,
                layout: 'form',
                title: 'Søkeutrykk',
                labelWidth: 30,
                items: _searchField
            },
            {
                region: 'center',
                layout: 'fit',
                border: false,
                split: false,
                title: 'Avgrens søket',
                items: _searchSources
            }
        ]
    });
    var _leftContainer = new Ext.Panel({
        layout: 'border',
        border: false,
        items: [
            {
                region: 'north',
                height: 190,
                layout: 'fit',
                split: false,
                items: _searchAndSourcesContainer
            },
            {
                region: 'center',
                layout: 'fit',
                border: false,
                items: _searchResultGrid
            }
        ]
    });

    var _isTabsCreated = false;

    Ext.apply(this, {
        title: 'Hjelpeside',
        layout: 'border',
        listeners: {
            activate: function() {
                MsgSvc.addMsg({
                    Category: 'MainView',
                    Action: 'Activate',
                    Label: 'search'
                });
            }
        },
        items: [
            {
                region: 'center',
                layout: 'fit',
                border: false,
                items: _centerTabPanel
            }, {
                region: 'west',
                layout: 'fit',
                border: true,
                split: true,
                width: 450,
                minWidth: 100,
                items: _leftContainer
            }
        ],
        navigate: function(hashManager) {
            if (!hashManager.bookSectionId) {
                return;
            }
            // Activate tab in centerTabPanel tab
            var tabId = hashManager.bookSectionId;
            _centerTabPanel.setActiveTab(tabId);
        },
        createTabs: function() {
            // All tabs created design time (not dynamically run time)
            // Just set active tab the first time called
            if (!_isTabsCreated) {
                _isTabsCreated = true;
                _centerTabPanel.setActiveTab(0);
            }
        },
        createSearchSources: function(settings) {
            _searchSources.createSearchSources(settings);
        }
    });
    FinnKodeWeb.PanelSearchView.superclass.constructor.call(this, config);
};
Ext.extend(FinnKodeWeb.PanelSearchView, Ext.Panel);
