Xsn.StatusDialog = function(){
	this.init();
}

Ext.extend(Xsn.StatusDialog, Ext.util.Observable, {

	show : function(tabIndex){
	 	if (tabIndex){
			this.dlg.getLayout().getRegion('center').showPanel(tabIndex);
		}
		
		this.grid1.getDataSource().startAutoRefresh(60, {limit:10, start:0}, null, true);		
		this.grid2.getDataSource().startAutoRefresh(60, {limit:10, start:0}, null, true);		
		
	 	this.dlg.show();	
	},

	hide : function(){
		this.grid1.getDataSource().stopAutoRefresh();		
		this.grid2.getDataSource().stopAutoRefresh();				
		this.dlg.hide();
	},
	
	init: function(){
		var dlg = new Ext.LayoutDialog("status-dlg", {
		        modal:true,
		        autoCreate: true,
				title: 'Status overzicht',
		        width:850,
		        height:360,
		        shadow:true,
                closable:false,
                draggable:false,
                collapsible:false,
                animateTarget:null,
                resizable:false,				                
		        minWidth:400,
		        minHeight:250,
		        center: {
		            titlebar: false,
		            tabPosition:'top',
		            autoScroll:false
		        }
		});

		dlg.addKeyListener(27, this.hide, this);
		dlg.addButton('Sluiten', this.hide, this);
		
		//malings grid
		var cm = new Ext.grid.ColumnModel([{
				header: "Nieuwsbrief",
				dataIndex: 'naam',
				width: 250,
				renderer : function(value, p, record){
				 	return '<span class=\'' + (record.data['klaar'] == 1 ? 'status-done' : 'status-running') +  '\'>' + value + '</span>';
				}
			},{
		       header: "Datum",
		       dataIndex: 'datum',
		       width: 140
			},{
		       header: "Aantal verzonden emails",
		       dataIndex: 'aantal',
		       width: 190,
			   sortable: false			   		       
		}]);
		cm.defaultSortable = true;
		
		var Mailing = Ext.data.Record.create([
	       {name: 'id'},    
	       {name: 'naam', type: 'string'},
	       {name: 'datum', type: 'string'},
	       {name: 'aantal', type: 'string'},
	       {name: 'klaar', type: 'bool'}	       
		   			   		       
		]);
		
		var ds1 = new Ext.data.Store({
		    proxy: new Ext.data.HttpProxy({url: 'index.php?action=status'}),
		    reader: new Ext.data.XmlReader({
		           record: 'Mailing',
		           id: ' id',			               
		           totalRecords: 'TotalCount'
		       }, Mailing),
			remoteSort: true 			           
		});
		ds1.setDefaultSort('datum', 'desc'); 		    
		
		gridContainer = dlg.getLayout().getEl().createChild({tag:'div', id:'status-grid-mailings'});		
		var grid1 = new Ext.grid.Grid(gridContainer, {
		    ds: ds1,
		    cm: cm,
		    selModel: new Ext.grid.RowSelectionModel(),
		    enableColLock:false
		
		});
		grid1.render();
		grid1.getSelectionModel().lock();  
		var gridFoot = grid1.getView().getFooterPanel(true);
		var tb = new Ext.PagingToolbar(gridFoot, ds1, {pageSize: 10});

		tb.loading.setText('Gegevens verversen');
		tb.loading.getEl().addClass('x-btn-text-icon').removeClass('x-btn-icon');		

		var cm = new Ext.grid.ColumnModel([{
				header: "Bestand",
				dataIndex: 'bestand',
				width: 225,
				renderer : function(value, p, record){
				 	return '<span class=\'' + (record.data['klaar'] == 1 ? 'status-done' : 'status-running') +  '\'>' + value + '</span>';
				}
			},{
				header: "Datum",
				dataIndex: 'datum',
				width: 130
			},{
				header: "Aantal geimporteerde contactpersonen",
				dataIndex: 'aantal',
				width: 240,
				sortable: false			   		       
		}]);
		cm.defaultSortable = true;
		
		var Import = Ext.data.Record.create([
	       {name: 'id', type: 'int'},    
	       {name: 'bestand', type: 'string'},
	       {name: 'datum', type: 'string'},
	       {name: 'aantal', type: 'string'},
	       {name: 'klaar', type: 'bool'}	       		   			   		       
		]);
		
		var ds2 = new Ext.data.Store({
		    proxy: new Ext.data.HttpProxy({url: 'index.php?action=statusImports'}),
		    reader: new Ext.data.XmlReader({
		           record: 'Import',
		           id: ' id',			               
		           totalRecords: 'TotalCount'
		       }, Import),
			remoteSort: true 			           
		});
		ds2.setDefaultSort('datum', 'desc'); 		    
		
		gridContainer = dlg.getLayout().getEl().createChild({tag:'div', id:'status-grid-imports'});
		var grid2 = new Ext.grid.Grid(gridContainer, {
		    ds: ds2,
		    cm: cm,
		    selModel: new Ext.grid.RowSelectionModel(),
		    enableColLock:false
		
		});
		grid2.render();
		grid2.getSelectionModel().lock();  
		var gridFoot = grid2.getView().getFooterPanel(true);
		var tb = new Ext.PagingToolbar(gridFoot, ds2, {pageSize: 10});

		tb.loading.setText('Gegevens verversen');
		tb.loading.getEl().addClass('x-btn-text-icon').removeClass('x-btn-icon');		

		dlg.getLayout().beginUpdate();		
		dlg.getLayout().add('center', new Ext.GridPanel(grid2, {title: 'Imports', fitToFrame: false}));				
		dlg.getLayout().add('center', new Ext.GridPanel(grid1, {title: 'Mailings', fitToFrame: false}));				
		dlg.getLayout().endUpdate();

		this.grid1 = grid1;
		this.grid2 = grid2;
		this.dlg = dlg;
	}
});
