// protokolleGrid
// Felix Kosmalla
// 
// tabelle mit date picker für die Protokollierung
// nicht editierbar
// 
// 
var protokolleGrid = Ext.extend(r3remoteGrid,{

	// setButtonGrid
	// 
	// 
	setButtonGrid:function(){
		this.buttonGrid = {
			layout:'border',
			border:false,
			
			items:[{
				region:'north',
				height:50,
				border:false,
				title:this.moduleTitle,
				tbar:this.toolbarButtons,
				iconCls: this.windowIconCls,
				tools:[
					
					{id:'print', scope:this, handler:function(){
					var benutzer = Ext.getCmp('selBenutzer').getValue();
					console.log('benutzer',benutzer);
					if(this.requestOptions!=null){

						var benutzer = Ext.getCmp('selBenutzer').getValue();
						if(benutzer==""){
							benutzer = 0;
						}
						if(Ext.getCmp('selVon').getValue()){
							var von = Ext.getCmp('selVon').getValue().getTime();							
						}else{
							var von = 0;
						}

						var bis = Ext.getCmp('selBis').getValue().getTime();
						
						var sort = false;
						var dir = false;
						
						var lo = this.dataStore.lastOptions;
						if(lo.params.sort!=null){
							sort = lo.params.sort;
							dir = lo.params.dir;
						}
						
						console.log('benutzer',benutzer);

						
						
						var url = cfg_backend_url + "protokolle/getPrintView/" + sort + "/" + dir + "/" +benutzer +"/"+ von +"/"+ bis;
						rcm.Application.print(url);
					}
				}},
				
					{id:'save', scope:this, handler:function(){
					var benutzer = Ext.getCmp('selBenutzer').getValue();

					
					if(this.requestOptions!=null){

						var benutzer = Ext.getCmp('selBenutzer').getValue();
						if(benutzer==""){
							benutzer = 0;
						}
						if(Ext.getCmp('selVon').getValue()){
							var von = Ext.getCmp('selVon').getValue().getTime();							
						}else{
							var von = 0;
						}

						var bis = Ext.getCmp('selBis').getValue().getTime();
						
						var sort = false;
						var dir = false;
						
						var lo = this.dataStore.lastOptions;
						if(lo.params.sort!=null){
							sort = lo.params.sort;
							dir = lo.params.dir;
						}

						
						
						var url = cfg_backend_url + "protokolle/getPrintView/" + sort + "/" + dir + "/" +benutzer +"/"+ von +"/"+ bis + "/true";
						window.location.href = url;
						// rcm.Application.print(url);
					}
				}}
				
				]
				
			},
			{
				region:'center',
				id:'grid_view',
				items: this.grid,
				border:false,
				autoScroll:true

			}]
		};
		
		
	},
	
	
	
	// setToolbarButtons
	// 
	// 
	setToolbarButtons:function(){
		if(Ext.isEmpty(this.toolbarButton)){
			// Standard Toolbar setzen
			// console.log(this.multiStores);
			
			this.toolbarButtons = [
			{
				text:'Eintrag anzeigen',
				iconCls:'viewIcon',
				handler:this.editSelectedLine,
				disabled:false,
				id:'viewEntry',
				scope:this
			},
			'&nbsp;&nbsp;Benutzer: ',
			{
				xtype:'combo',
				id:'selBenutzer',
				store:this.multiStores['bcm_benutzer_voller_name'],
				valueField: 'id',
				displayField: 'voller_name',
				mode:'local',
				triggerAction:'all'
				
			},
			
			'&nbsp;&nbsp;','Auswertung von&nbsp;',
			{
				xtype:'datefield',
				id:'selVon'
			},
			
			'&nbsp;&nbsp;bis',
			{
				xtype:'datefield',
				maxValue: new Date(),
				value: new Date(),
				id:'selBis'
			},
			'&nbsp;&nbsp;',
			{
				text:'Start',
				iconCls:'startIcon',
				handler:function(){
					
					Ext.getCmp('viewEntry').enable();
					
					if(Ext.getCmp('selVon').getRawValue()!=''){
						var von = Ext.getCmp('selVon').getValue();
						
						var von = von.getTime();
						
						// var von = Ext.getCmp('selVon').getValue().toGMTString();						
					}else{
						var von = "";
					}
					
					if(Ext.getCmp('selBis').getRawValue()!=''){
						var bis = Ext.getCmp('selBis').getValue().getTime();						
					}else{
						var bis = "";
					}
					
					var benutzer = Ext.getCmp('selBenutzer').getValue();
					
					// var bisJson = Ext.util.JSON.decode(bis);
					Ext.Msg.wait('Daten werden geladen...',false,waitDialogConfig);
					var test= 'test';
					this.requestOptions = false;
					this.dataStore.reload({
						params:{
							von:von,
							bis:bis,
							benutzer:benutzer
						}
					});
					
				},
				scope:this
			}
			];
			
			
		}
		
		// events setzen
		
		
		

	},
	
	
	//setDataProxy
	//
	setDataProxy:function(params){
		var params = params || {};
		
		if(Ext.isEmpty(params.method)){
			params.method = 'POST';
		}

		if(Ext.isEmpty(params.url)){
			params.url = this.backend + "Protokolle/getEintraege";
		}
		

		
		this.dataProxy = new Ext.data.HttpProxy(params);		
	},
	
	
	
	
	
	// checkForComboStores
	// 
	// überprüft ob Comboboxen enthalten sind und lädt die jeweiligen stores
	// 
	checkForComboStores:function(response){
		var tableOptions = Ext.util.JSON.decode(response.responseText);

		//init comboStores
		this.multiStores = new Object();
		this.multiStoresRaw = new Object();
		
		var comboCount = 0;
		
		Ext.each(tableOptions.fields, function(item){
			if(item.r3type == 'combo' || item.r3type == 'select_many' || item.r3type == 'select_one_radio'){
				comboCount++;				
			}
		});
		
		var requestCount = 0;
		
		// für Selectboxen und Multiselects

				Ext.Ajax.request({
					url: this.backend + 'bcm_benutzer' + "/" + 'voller_name' + '/ComboStoreAllowBlank',
					method:'POST',
					scope:this,
					success: function(response){
						requestCount++;
						// SimpleStore für Combobox erstellen
						var crudData = Ext.util.JSON.decode(response.responseText);
						
						this.multiStoresRaw['bcm_benutzer_voller_name'] = crudData.raw;
						
						var simpleStore = new Ext.data.SimpleStore(crudData);				
						
						this.multiStores['bcm_benutzer_voller_name'] = simpleStore;
						

						this.startGrid(tableOptions);

						
					}
				});

		
		// if(comboCount==0){
		// 	alert('0');
		// 	this.startGrid(tableOptions);				
		// }

	},
	
	
	
	
	// compileEditPanelItems
	// 
	// modifiziert die Konfiguration this.editPanelOptions
	// 
	compileEditPanelItems:function(){
		this.editPanelOptions.items = [];
		
		Ext.each(this.fields,function(item, index){

			if(Ext.isEmpty(item.editOptions.xtype)){
				item.editOptions.xtype = 'textfield';
			}
			if(item.editOptions.xtype == 'xdatetime'){
				
				item.editOptions.disabled=true;
			}
			if(Ext.isEmpty(item.editOptions.fieldLabel)){
				item.editOptions.fieldLabel = item.label;
			}
			
			if(Ext.isEmpty(item.editOptions.name)){
				item.editOptions.name = item.column;
			}
			
			if(item.isIndex){
				item.editOptions.isIndex = true;
			}
			
			
			//Combobox abhandlung
			if(item.r3type=='combo'){
				var store = this.multiStores[item.fTable+'_'+item.fTableLabel];

				item.editOptions.store = store;
				item.editOptions.mode = 'local';
				item.editOptions.triggerAction = 'all';
				item.editOptions.displayField = item.fTableLabel;
				item.editOptions.valueField = 'id';
				item.editOptions.disabled=true;
			}
			

			if(item.r3type=='select_many'){
				item.editOptions.xtype = 'checkboxgroup';
				var checkboxen = new Array();
				var dataStore = this.multiStoresRaw[item.fTable+'_'+item.fTableLabel];
				for( var box in dataStore ) {
					checkboxen.push({boxLabel: dataStore[box], id:'cb_edit_'+item.fTable+'_'+item.fTableLabel+'_'+box, inputValue:box});
				}				
				item.editOptions.columns = 2;
				item.editOptions.vertical = true;
				item.editOptions.cls = 'r3checkBox';
				item.editOptions.items = checkboxen;

			}
			
			
			if(item.r3type == 'select_one_radio'){
				item.editOptions.xtype = 'radiogroup';
				var radios = new Array();
				var dataStore = this.multiStoresRaw[item.fTable+'_'+item.fTableLabel];
				for( var radio in dataStore){
					radios.push({boxLabel: dataStore[radio], name:'rd_edit'+item.fTable+'_'+item.fTableLabel, id:'rd_edit_'+item.fTable+'_'+item.fTableLabel+'_'+radio, inputValue:radio});
				}
				
				item.editOptions.columns = 2;
				item.editOptions.vertical = true;
				item.editOptions.cls = 'r3checkBox';
				item.editOptions.items = radios;
			}
			
			
			
			
			//Booleanwerte die nicht von YML interpretiert werden können müssen hier neu gesetzt werden
			
			if(item.editOptions.allowBlank == "false"){
				item.editOptions.allowBlank = false;
			}else{
				item.editOptions.allowBlank = true;
			}
			
			item.editOptions.readOnly = true;
			
			this.editPanelOptions.items.push(item.editOptions);
		},this);
		

	},
	
	
	
	
	//createEditPanelButtons
	//
	// wird i.d.R. von createEditPanel aufgerufen
	//
	// Konfiguriert die Buttons für das EditPanel (z.B. speichern, abbrechen, etc.)
	//
	createEditPanelButtons:function(){
		var buttons = [
			{
				text:'Schließen',
				scope:this,
				iconCls:'cancelIcon',
				handler:function(){
					this.editWindow.hide();
				}
			}		
		];
		
		return buttons;
	},
	
	
	// createWindows
	// 
	// erstellt das Ändern- und Erstellenfenster und legt es in addWindow und editWindow ab
	createWindows:function(){

		
		this.editWindow = new Ext.Window({
			autoScroll:true,
			width:510,
			modal:true,
			iconCls:'viewIcon',
			title:'Eintrag anzeigen',
			items:this.editPanel,
			closeAction:'hide',
			y:50
		});
		
		
	}

	
	

	
	

	
});
