
Voyeur.Application.Default = Ext.extend(Voyeur.Application, {
	firstCorpusTermsFrequenciesRowClick :false
	,constructor : function(config) {
		Voyeur.Application.Default.superclass.constructor.call(this, config);
		this.addListener('CorpusSummaryResultLoaded', function(data) {
			Ext.getCmp('add-texts').hide();
			Ext.getCmp('tools-container').show();
			Ext.getCmp('bottom-tools').collapse(true);
			Ext.getCmp('logo').collapse(false);
		}, this);

		this.addListener('CorpusGridBootstrap', function(){
			Ext.getCmp('corpusTabPanel').activate(Ext.getCmp('voyeurCorpusGrid'));
		})
		this.addListener('corpusTypeSelected', function(){
			this.expandIfCollapsed('voyeurDocumentTypeFrequenciesGrid', 'documentTypeDataPanel');
		})
		this.addListener('corpusTypesSelected', function(){
			this.expandIfCollapsed('voyeurDocumentTypeFrequenciesGrid', 'documentTypeDataPanel');
		})
		this.addListener('corpusDocumentSelected', function(){
			this.expandIfCollapsed('voyeurDocumentTypeFrequenciesGrid');
		})
		this.addListener('CorpusTypeFrequenciesGridBootstrap', function(){
			this.expandIfCollapsed('CorpusTypeFrequenciesGridBootstrap');
		})
		this.addListener('documentTypeSelected', function(){
			this.expandIfCollapsed('documentTypeDataPanel');
		})
	},

	expandIfCollapsed: function() {
		var panel;
		for (var i=0;i<arguments.length;i++) {
			panel = Ext.getCmp(arguments[i]);
			if (panel && panel.collapsed) {panel.expand(false);}
		}
	}
    ,initPage: function(){
    	var defaults = {
    		border: false
    		,split: true
    		,useSplitTips: true
    		,splitTip : Voyeur.localization.get('app.split_tip')
			,collapsibleSplitTip : Voyeur.localization.get('app.collapsible_split_tip')
			,collapsible : true
			,collapseMode: undefined
			,collapseFirst: true
			,floatable: false
    		
    	}
		var lang = this.getLocalization().getLang();
        new Ext.Viewport({
            layout: 'border',
            defaults: {border: false, split: false, header: false, collapsible: false},
            items: [
				{
					region : 'north',
					xtype: 'voyeurHeader'
				},
				{
					region: 'center'
					,layout: 'border'
					,id : 'main-panel'
					,bodyStyle: {
						'background-color': 'white'
					}
					,items : [
						{
							region: 'north'
							,id: 'add-texts'
							,split : false
							,collapsible : false
							,frame: true
							,xtype: 'voyeurDocumentInputAdd'
							,height: 175
							,margins : {
								left: 100
								,right: 100
								,top: 25
							}
						},{
							region: 'center',
							layout: 'border',
							id: 'tools-container',
							hidden: true,
							header: false,
							defaults : defaults,
							items: [
								{
								    region: 'center'
								    ,layout: 'border'
								    ,defaults : defaults
								    ,id: 'middle-tools'
								    ,header: false
								    ,items : [
								        {
								            region : 'west'
								            ,width : '35%'
								            ,defaults : defaults
								            ,layout : 'fit'
								            ,collapsed: false
								            ,header: false
								            ,listeners : {
								                'expand' : function(panel) {
								                    panel.getComponent(0).expand(true);
								                }
								            }
								            ,items: [{
								                xtype : 'voyeurCorpusTypeFrequenciesGrid'
								                ,id : 'voyeurCorpusTypeFrequenciesGrid'
								                ,collapsed: false
								                ,listeners : {
								                    'collapse' : {
								                        fn : function(panel) {panel.ownerCt.collapse(true);}
								                    }
								                    ,'expand' : {
								                        fn : function(panel) {panel.ownerCt.expand(true);}
								                    }
								                }
								            }]
								        },{
								            xtype : 'panel'
								            ,region : 'center'
								            ,header: true
								            ,layout: 'fit'
								            ,collapsible: false
								            ,tools: [{
								                id : 'gear'
								                ,qtip : '<h3>' + this.localize('tool.options') + '</h3>' +
								                    this.localize('tool.optionsTip')
								                ,handler : function(ev, tool, panel, toolConfig) {
								                    var realPanel = panel.findByType('tabpanel', true)[0].getActiveTab();
								                    realPanel.onOptions.call(realPanel, ev, tool, realPanel, toolConfig);
								                }
								            },{
								                id : 'save'
								                ,qtip : '<h3>' + this.localize('tool.export') + '</h3>' +
								                    this.localize('tool.exportTip')
								                ,handler : function(ev, tool, panel, toolConfig) {
								                    var realPanel = panel.findByType('tabpanel', true)[0].getActiveTab();
								                    realPanel.onExport.call(realPanel, ev, tool, realPanel, toolConfig);
								                }
								            },{
								                id : 'help'
								                ,qtip : '<h3>' + this.localize('tool.help') + '</h3>' +
								                    this.localize('tool.helpTip')
								                ,handler : function(ev, tool, panel, toolConfig) {
								                    var realPanel = panel.findByType('tabpanel', true)[0].getActiveTab();
								                    realPanel.onHelp.call(realPanel, ev, tool, realPanel, toolConfig);
								                }
								            }]
								            ,items : [
								                {
								                    xtype: 'tabpanel'
								                    ,activeTab: 0
								                    ,id: 'corpusTabPanel'
								                    ,defaults: defaults
								                    ,items : [
								                        {
								                            xtype : 'voyeurCorpusSummary'
								                            ,id : 'voyeurCorpusSummary'
								                            ,tabTip: Voyeur.Tool.CorpusSummary.prototype.i18n.help[lang]
								                            ,header: false
								                        },{
								                            xtype : 'voyeurCorpusGrid'
								                             ,defaults: defaults
								                            ,id : 'voyeurCorpusGrid'
								                            ,tabTip: Voyeur.Tool.CorpusGrid.prototype.i18n.help[lang]
								                            ,header: false
								                            ,viewConfig : {
								                                emptyText : '<b>'+Voyeur.localization.get('voyeurTool.noResults') + '</b> Add new texts to populate the corpus.'
								                            }
								                        }
								                    ]
								                }
								            ]
								        }
								        ,{
								            region : 'east'
								            ,defaults : defaults
								            ,layout : 'fit'
								            ,width : '35%'
								            ,collapsible: true
								            ,collapsed: true
								            ,header: false
								            ,listeners : {
								                'expand' : function(panel) {
								                    panel.getComponent(0).expand(true);
								                }
								            }
								            ,items: [{
								                xtype : 'voyeurDocumentTypeFrequenciesGrid'
								                ,id : 'voyeurDocumentTypeFrequenciesGrid'
								                ,collapsed: true
								                ,collapsible: true
								                ,listeners : {
								                    'collapse' : function(panel) {
								                        panel.ownerCt.collapse(true);
								                    }
								                    ,'expand' : function(panel) {
								                        panel.ownerCt.expand(true);
								                    }
								                }
								                ,viewConfig : {
								                    emptyText : '<b>'+this.localize('tool.noResults') + '</b> Select one or more rows from the <i>Corpus Types</i> tool.'
								                }
								            }]
								        }
								    ]
								},
								{
								    region : 'south'
								    ,layout : 'border'
								    ,defaults : defaults
								    ,height : 300
								    ,id : 'bottom-tools'
								    ,header: false
								    ,listeners : {
						                'expand' : function(panel) {
						                    panel.getComponent(0).expand(true);
						                    panel.getComponent(1).expand(true);
						                }
						                ,'collapse' : function(panel) {
						                    panel.getComponent(0).collapse(true);
						                    panel.getComponent(1).collapse(true);
						                }
						            }
								    ,items : [
								        {
								            region : 'west',
								            width : '30%',
								            layout : 'fit',
								            listeners : {
								                'expand' : function(panel) {
								                    panel.getComponent(0).expand(true);
								                    panel.ownerCt.expand(true);
								                }
								                ,'collapse' : function(panel) {
								                    panel.getComponent(0).collapse(true);
								                }
								            }
								            ,items : [{
								                xtype : 'voyeurTypeFrequenciesChart'
								                ,html : '<span class="x-grid-empty"><b>'+this.localize('tool.noResults') + '</b> Select one or more rows from the <i>Corpus Types</i> tool.</span>'
								                ,id : 'voyeurTypeFrequenciesChart'
								                ,collapsible : true
								                ,listeners : {
								                    'collapse' : function(panel) {
								                        panel.ownerCt.collapse(true);
								                    }
								                    ,'expand' : function(panel) {
								                        panel.ownerCt.expand(true);
								                    }
								                }
								                
								            }]
								        },{
								            xtype : 'panel'
								            ,region : 'center'
								            ,width : '70%'
								            ,header: true
								            ,layout: 'fit'
							            	,listeners : {
								                'expand' : function(panel) {
								                    panel.getComponent(0).expand(true);
								                    panel.ownerCt.expand(true);
								                }
								                ,'collapse' : function(panel) {
								                    panel.getComponent(0).collapse(true);
								                }
								            }
								            ,tools: [{
								                id : 'gear'
								                ,qtip : '<h3>' + this.localize('tool.options') + '</h3>' +
								                    this.localize('tool.optionsTip')
								                ,handler : function(ev, tool, panel, toolConfig) {
								                    var realPanel = panel.findByType('tabpanel', true)[0].getActiveTab();
								                    realPanel.onOptions.call(realPanel, ev, tool, realPanel, toolConfig);
								                }
								            },{
								                id : 'save'
								                ,qtip : '<h3>' + this.localize('tool.export') + '</h3>' +
								                    this.localize('tool.exportTip')
								                ,handler : function(ev, tool, panel, toolConfig) {
								                    var realPanel = panel.findByType('tabpanel', true)[0].getActiveTab();
								                    realPanel.onExport.call(realPanel, ev, tool, realPanel, toolConfig);
								                }
								            },{
								                id : 'help'
								                ,qtip : '<h3>' + this.localize('tool.help') + '</h3>' +
								                    this.localize('tool.helpTip')
								                ,handler : function(ev, tool, panel, toolConfig) {
								                    var realPanel = panel.findByType('tabpanel', true)[0].getActiveTab();
								                    realPanel.onHelp.call(realPanel, ev, tool, realPanel, toolConfig);
								                }
								            }]
								            ,items : [
								                {
								                    xtype: 'tabpanel'
								                    ,activeTab: 0
								                    ,id: 'documentTypeDataPanel'
							                    	,listeners : {
									                    'collapse' : function(panel) {
									                        panel.ownerCt.ownerCt.collapse(true);
									                    }
									                    ,'expand' : function(panel) {
									                        panel.ownerCt.ownerCt.expand(true);
									                    }
										            }
								                    ,items : [
								                        {
								                            xtype: 'voyeurDocumentTypeKwicsGrid'
								                            ,header: false
								                            ,viewConfig : {
								                                emptyText : '<b>'+this.localize('tool.noResults') + '</b> Select one or more rows from the <i>Document Types</i> tool.'
								                            }
								                            ,id : 'voyeurDocumentTypeKwicsGrid'
								                            ,tabTip: Voyeur.Tool.DocumentTypeKwicsGrid.prototype.i18n.help[lang]
								                            
								                        }
								                        ,{
								                            xtype: 'voyeurDocumentTypeCollocateFrequenciesGrid'
								                            ,header: false,
								                            id: 'voyeurDocumentTypeCollocateFrequenciesGrid',
								                            tabTip: Voyeur.Tool.DocumentTypeCollocateFrequenciesGrid.prototype.i18n.help[lang],
								                            viewConfig: {
								                                emptyText : '<b>'+this.localize('tool.noResults') + '</b> Select one or more rows from the <i>Document Types</i> tool.'
								                            }
								                        }
								                    ]
								                }
								            ]
								        }
								    ]
								}
							]
						}
					]
				}
				,{
	                region: 'south',
					xtype : 'voyeurFooter'
            	}
			]
        });

		
    }
	
});


