//
// r3baseGrid
// Felix Kosmalla
//
//
// erbt von r3superBaseGrid in der die weiter Entwicklung stattfinden soll
// r3baseGrid dient nur der vereinfachten Eingabe der Konfiguration
//


var r3baseGrid = Ext.extend(r3superBaseGrid, {

	
	init:function(config){
		var config = config || {};		
		Ext.apply(this,config);
		
		console.log('this.disableButtons',this.disableButtons);
		
		this.disableButtons = this.disableButtons || false;
		
	
		this.compileFields();
		
		this.compileDataRecord();
		
		this.compileColumnModel();
		
		this.compileAddPanelItems();
		
		this.compileEditPanelItems();
		
		this.initSuper();
		return this;
	},
	
	
	
	
	// compileFields
	// 
	// erstellt Referenzen zu den Feldoptionen falls diese nicht gesetzt wurden
	// 
	compileFields:function(){
		Ext.each(this.fields, function(item, index){		
			this.fields[index].modelOptions 	= item.modelOptions || {};
			this.fields[index].editOptions 		= item.editOptions || {};
			this.fields[index].addOptions 		= item.addOptions || {};			
		},this);
	},
	
	
	
	// compileDataRecord
	// 
	// erstellt die Konfiguration this.columns die dann später von der SuperClass Funktion createRecord aufgerufen wird.
	// 
	compileDataRecord:function(){
		var columns = [];
		
		Ext.each(this.fields,function(item){
			var objekt = {};
			objekt.name = item.column;
			
			if(item.isIndex){
				objekt.isIndex = true;
			}
			
			columns.push(objekt);
		});
				
		this.columns = columns;
	},
	
	
	
	// compileColumnModel
	// 
	// erstellt die Konfiguration this.model die dann später von der SuperClass Funktion setColModel aufgerufen wird.
	// 
	compileColumnModel:function(){
		var model = [];		
		
		Ext.each(this.fields,function(item){
			var objekt = item.modelOptions;

			
			
			if(Ext.isEmpty(objekt.header)){
				objekt.header = item.label;
			}
			
			if(Ext.isEmpty(objekt.sortable)){
				objekt.sortable = true;
			}
			
			if(Ext.isEmpty(objekt.dataIndex)){
				objekt.dataIndex = item.column;
			}
			
			if(!Ext.isEmpty(objekt.width)){
				objekt.width = parseInt(objekt.width);
			}
			
			
			model.push(objekt);
		});

		this.model = model;
	},
	
	
	// compileAddPanelItems
	// 
	// modifiziert die Konfiguration this.addPanelOptions
	// 
	compileAddPanelItems:function(){
		this.addPanelOptions.items = [];
		
		Ext.each(this.fields,function(item, index){
			
			
			if(Ext.isEmpty(item.addOptions.xtype)){
				item.addOptions.xtype = 'textfield';
			}
			
			if(Ext.isEmpty(item.addOptions.fieldLabel)){
				item.addOptions.fieldLabel = item.label;
			}
			
			if(Ext.isEmpty(item.addOptions.name)){
				item.addOptions.name = item.column;
			}
			
			if(item.isIndex){
				item.addOptions.isIndex = true;
			}
			
			//Combobox abhandlung
			if(item.r3type=='combo'){
				var store = this.multiStores[item.fTable+'_'+item.fTableLabel];
				item.addOptions.triggerAction = 'all';
				item.addOptions.store = store;
				item.addOptions.mode = 'local';
				item.addOptions.displayField = item.fTableLabel;
				item.addOptions.valueField = 'id';
			}
			
			
			if(item.r3type=='select_many'){
				item.addOptions.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_add_'+item.fTable+'_'+item.fTableLabel+'_'+box, inputValue:box});
				}				
				item.addOptions.columns = 2;
				item.addOptions.vertical = true;
				item.addOptions.cls = 'r3checkBox';
				item.addOptions.items = checkboxen;

			}
			
			if(item.r3type == 'select_one_radio'){
				item.addOptions.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_add_'+item.fTable+'_'+item.fTableLabel+'_'+radio, inputValue:radio});
				}
				
				item.addOptions.columns = 2;
				item.addOptions.vertical = true;
				item.addOptions.cls = 'r3checkBox';
				item.addOptions.items = radios;
			}
			
			
			if(item.isPassword){
				item.addOptions.inputType = 'password';
			}
			
			
			
			//Booleanwerte die nicht von YML interpretiert werden können müssen hier neu gesetzt werden
			
			if(item.addOptions.allowBlank == "false"){
				item.addOptions.allowBlank = false;
			}else{
				item.addOptions.allowBlank = true;
			}
			
			
			
			// item.addOptions.allowBlank = false;
			
			this.addPanelOptions.items.push(item.addOptions);
		},this);
	},
	
	
	// 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(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';
			}
			

			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;
			}
			
			
			if(item.isPassword){
				item.editOptions.inputType = 'password';
			}
			
			//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;
			}
			
			
			
			this.editPanelOptions.items.push(item.editOptions);
		},this);
		

	}
	
	
	
	
	
	
	
	
	
	
});
