/**
 * @class Roo.gui.InfoPanel
 * @extends Ext.Panel
 *
 * The InfoPanel is located right in the application.
 * It contains the information panel(s) right of the map.
 *
 * @author ssmeman
 * @version 1.0
 */

/**
 * @constructor
 * @param {Object} config Configuration options
 */
Roo.gui.InfoPanel = Ext.extend(Ext.Panel, {

	aboutPanel_titleText: messages.contentPanel.aboutPanel.title()

	// soft config
	,id: 'rightPane'
	,region: 'east'
	,border: false

	,initComponent: function() {
		// hard coded
		var config = {
			layout: 'border'
			,plain: true

			,defaults : {
				border:false
			}

	    	,items: [{
				xtype: 'panel'
				,id: 'title-panel'
				,height: 36
				,width: 350
				,region: 'north'
			},{
    			xtype: 'panel'
    			,id: 'infoPanel'
				,layout: 'card'
				,region: 'center'
				,activeItem: 3
				,defaults: {
					border: false
					,header: false
				}
				,items: [{
					id: 'planGridPanel'
					,xtype: 'planGridPanel'
				},{
					id: 'planDetailPanel'
					,xtype: 'planDetailPanel'
				},{
					id: 'locationDetailPanel'
					,xtype: 'locationDetailPanel'
				},{
					xtype: 'panel'
					,id: 'about-panel'
					,title:  this.aboutPanel_titleText
					,autoScroll: true
				}]
    		}]
		};

		// apply config
		Ext.apply(this, config);
		Ext.apply(this.initialConfig, config);

		// call parent
		Roo.gui.InfoPanel.superclass.initComponent.apply(this, arguments);

		this.addEvents(
			/**
			 * Fired from flamingo-api.js
			 */
			'receivedIdentifyResult'
			/**
			 * The user selected a plan
			 */
			,'selectedPlan'
			/**
			 * The user selected a plan authentic icon
			 */
			,'selectedPlanAuthentic'
			,'receivedTreenodeDetails'
		);

		this.localStore = new Ext.data.Store({
			proxy: new Ext.ux.data.DwrProxy({
				api: {read: SearchService.findPlanById}
				,listeners: {
					'beforeload': function(dataProxy, params) {
						params[dataProxy.loadArgsKey] = params.query;
					}
				}
			})
			,reader: new Ext.data.JsonReader({}, Ext.data.Record.create([
				{name: 'id', mapping:'identificatie' }
				,{name: 'name', mapping:'naam' }
			]))
		});

		var gridPanel = Ext.getCmp('planGridPanel');
		gridPanel.getSelectionModel().on('rowselect',  function(sm, index, record){
			console.debug('selected row in plan');
	    	Ext.getCmp('infoPanel').fireEvent('selectedPlan', record.json);
	    	sm.clearSelections();
	    }, this);

		// Info panel related events
		eventHub.on({
			scope: this
			,'changedFilter': function(parameters) {
				Ext.DomHelper.overwrite('title-panel', {tag:'div', id:'title-panel-text', html: parameters.panelTitle});

				var url = './content/over.html'
					,title = '';

				switch (parameters.filter) {
				case "ACTUEEL":
				case "JURIDISCH":
					title = messages.application.juridisch.title();
					url = './content/bestemmingsplan.html';
					break;
				case "VISIE":
					title = messages.application.visie.title();
					url = './content/visie.html';
					break;
				case "INSTRUCTIE":
					title = messages.application.instructie.title();
					url = './content/instructie.html';
					break;
				}

				var panel = Ext.getCmp('about-panel');
				panel.setTitle(title);
				panel.load({
					url: url
					,timeout: 20
					,scripts: false
				});
				Ext.getCmp('infoPanel').getLayout().setActiveItem('about-panel');
			}
			,'selectedPlan': function(plan) {
				Ext.getCmp('infoPanel').getLayout().setActiveItem('planDetailPanel');
			}
			,'selectedPlanAuthentic': function(plan) {
				var win = new Roo.gui.SignatureWindow({
					plan: plan
				});
				win.show();
			}
			,'foundPlans': function(plan) {
				Ext.getCmp('infoPanel').getLayout().setActiveItem('planGridPanel');
			}
			,'receivedIdentifyResult': function(plan) {
				Ext.getCmp('infoPanel').getLayout().setActiveItem('locationDetailPanel');
			}
			,'receivedTreenodeDetails': function(data) {
				Ext.getCmp('infoPanel').getLayout().setActiveItem('locationDetailPanel');
			}
			,'showPlan': function(planId) {
				this.localStore.load({
					params: {
						query: {id: planId, tabFilter:null}
					}
					,callback: function(records, options, success) {
						if(success) {
							if(records[0]) {
								var plan = records[0].json;
								Ext.getCmp('headerTabs').activateByTabFilter(plan.tabFilter);
								Ext.getCmp('infoPanel').fireEvent('selectedPlan', plan);
							}
						}
					}
				});
			}
			,'showDocument': function(parameters) {
				var url = Roo.documentPrefix + parameters.document;
				var win = window.open(url, Ext.id());
				win.focus();
			}
		});
	}
});

Ext.reg('infoPanel', Roo.gui.InfoPanel);
