
	var xmlTabelle = new Ext.FormPanel({
	    title:text_54,
	    id:'xmlTabelle',
	    labelAlign: 'right',
	    labelWidth: 140,
	    height:140,
	    waitMsgTarget: true,
		trackResetOnLoad: true,

	    // configure how to read the XML Data
	    reader : new Ext.data.XmlReader({
	        record : 'Tabelle',
	        success: '@success'
	    }, [
	        'TabelleID', 'Name', 'Beschreibung'
	    ]),

		defaultType: 'textfield',
        items: [{
            	name: 'TabelleID',
            	id: 'TabelleID',
				hidden:true,
                height:0,
                width:190
            }, {
                fieldLabel: text_45,        
				id:'T_Name',
                name: 'Name',
                tabindex:1,
				allowBlank: false,
                width:190
            }, {
				xtype: 'textarea',
				height:80,
                fieldLabel: text_46,
                name: 'Beschreibung',
                tabindex:3,
                width:300   
            }
        ]
	});

    function storeTabelle(selectNewNode) {
			var s = ""
			for (var i = 0 ; i < storeTabellenFelder.getCount(); i++) {
				var record = storeTabellenFelder.getAt(i);
				if (s.indexOf("||--" + record.get("Name") + "--||") > 0) {
					Ext.MessageBox.alert(text_29, text_62 + record.get("Name") + text_63);
					return;
				}
				s = s + "--||--" + record.get("Name") + "--||--";
			}
		
			xmlTabelle.getForm().submit({
			    clientValidation: true,   
				url:'table_data.php?action=save', 
				waitMsg:'Daten werden gespeichert...',             
			    success: function(form, action) {
			       	var tabelle_id = action.result.msg; 
	    		  	if (Ext.getCmp('TabelleID').getValue() == -1) {
		    		  	var node = Ext.getCmp('treeEinstellungen').getNodeById('adminT').appendChild(new Ext.tree.TreeNode({
		                   	id:'adminT'+tabelle_id, text: Ext.getCmp('T_Name').getValue(), iconCls:'table', leaf:true 
						}));                
		    		  	if (selectNewNode) {
							Ext.getCmp('treeEinstellungen').fireEvent('click', node);
		    		  		Ext.getCmp('treeEinstellungen').selectPath(node.getPath());
		    		  	}
		    		}
					else                                           
   						treeEinstellungen.getLoader().load(treeEinstellungen.root);					
										   						
					// TODO Funktioniert nicht nicht 
					// treeTabellen.getLoader().load(treeTabellen.getNodeById("gridT")); 
				    // oder 
					treeTabellen.getLoader().load(treeTabellen.root);					
					
					var s = "";
					var r = 0;
                    for (var i = 0; i < storeTabellenFelder.getCount(); i++) {
	                	var rec = storeTabellenFelder.getAt(i);
				   	   	s = s + '&f' + r + '=' + rec.get("FeldID") + 
			               '&Name' + r + '=' + rec.get("Name") +  
			               '&Typ' + r + '=' + rec.get("Typ")+  
			               '&Breite' + r + '=' + rec.get("Breite")+  
			               '&Beschreibung' + r + '=' + rec.get("Beschreibung");
			  			r++;
					}
					var s = "action=saveData&TabelleID=" + tabelle_id + "&count=" + r + s;

					new Ext.data.Connection().request({
					    url: 'felder.php', 
					 	params: s,
						failure: function(response, opts) {
						      Ext.MessageBox.alert(text_29, Ext.decode(response.responseText).msg);
						},
					    success: function(response, opts) {                                            
					      	var obj = Ext.decode(response.responseText);
							if (!obj.success) {
					     	 	Ext.MessageBox.alert(text_29, obj.msg);
					     	}
					    	else {
					        }
						}
					});					
			    },
			    failure: function(form, action) {
			        switch (action.failureType) {
			            case Ext.form.Action.CLIENT_INVALID:
			                Ext.Msg.alert(text_29, text_30);
			                break;
			            case Ext.form.Action.CONNECT_FAILURE:
			                Ext.Msg.alert(text_29, text_31);
			                break;
			            default:
			               Ext.Msg.alert(text_29, action.result.msg);
			       }
			    }
			});
	}
	
	// explicit add
	var submitTabelle = xmlTabelle.addButton({
	    text: text_47,
	    disabled:true,
	    handler: function(){    
			storeTabelle(true);	                                  
	    }
	});

	var loeschenTabelle = xmlTabelle.addButton({
	    text: text_48,
	    disabled:true,
	    handler: function(){  
		                   
	     	Ext.MessageBox.show({
	           title:text_49,
	           msg: text_64,
	           buttons: Ext.MessageBox.YESNO,
	           icon: Ext.MessageBox.QUESTION,
	           fn: function(btn) {
					if (btn == 'yes') {
						new Ext.data.Connection().request({
							    url: 'table_data.php',  
								params: {TabelleID: Ext.getCmp('TabelleID').getValue(), action:"delete"},
								failure: function(response, opts) {
								      Ext.MessageBox.alert(text_29, Ext.decode(response.responseText).msg);
								},
							    success: function(response, opts) {                                            
							      	var obj = Ext.decode(response.responseText);
									if (!obj.success) {
							     	 	Ext.MessageBox.alert(text_29, obj.msg);
							     	}
							    	else {
						    		  	Ext.getCmp('treeEinstellungen').getNodeById('adminT'+Ext.getCmp('TabelleID').getValue()).remove();
						    		  	Ext.getCmp('TabelleID').setValue(-1);  
						    		  	Ext.getCmp('treeEinstellungen').selectPath((Ext.getCmp('treeEinstellungen').getNodeById('adminTNeu').getPath()));
								    	xmlTabelle.getForm().load({url:'table_data.php?action=read&TabelleID=-1', 
								                                    waitMsg:text_41});   
									   	treeTabellen.getLoader().load(treeTabellen.root); 
										gridTabellenFelder.store.proxy = new Ext.data.HttpProxy({url: 'felder.php?action=showData&TabelleID=-1'});
										gridTabellenFelder.store.reload();  
									   				
							        }
								}
							});					
					}
			    }
			});
	    }
	});   

	var importExcel = xmlTabelle.addButton({
	    text: text_65,
	    disabled:true,
	    handler: function(){  
			uploadWindow();
	    }
	});   
		
	xmlTabelle.on({
	    actioncomplete: function(form, action){
	        if(action.type == 'load'){
	            submitTabelle.enable();
	        }
	    }
	});

	var FeldTabellenFelder = Ext.data.Record.create([ 
		{ name: 'FeldID', type: 'string'},
		{ name: 'Name', type: 'string'},
		{ name: 'Typ', type: 'string'},
		{ name: 'Breite', type: 'int'},
		{ name: 'Beschreibung', type: 'string'}]);
	         
	 var storeTabellenFelder = new Ext.data.Store({
	  	reader: new Ext.data.JsonReader({fields: FeldTabellenFelder}),
	  	proxy: new Ext.data.HttpProxy({url: 'felder.php?TabelleID=-1&action=showData'})
	 }); 
                  
    var cmFelder = new Ext.grid.ColumnModel({
        defaults: {
            sortable: false
        },
        columns: [ new Ext.grid.RowNumberer(),
            {
                id: 'Name',
                header: text_66,
                dataIndex: 'Name',
                width: 220,
                // use shorthand alias defined above
                editor: new Ext.form.TextField({
                    allowBlank: false
                })
            }, {
                header: text_67,
                dataIndex: 'Typ',      
                width: 130,
	            editor: new Ext.form.ComboBox({
					typeAhead: false,
					triggerAction: 'all',
					editable: false,                    
	                hiddenName:'Typ',
	                valueField:'Typ',
	                displayField:'Typ',
					store: new Ext.data.Store({
		  				reader: new Ext.data.JsonReader({fields: ['Typ']}),
					  	proxy: new Ext.data.HttpProxy({url:'feldtypen.php'})
					}),
	               forceSelection:true,
	               lazyRender:true,
	               listClass: 'x-combo-list-small'
	            })
            }, {
                header: text_68,
                dataIndex: 'Breite',
                width: 70,
                align: 'right',
                editor: new Ext.form.NumberField({
                    allowBlank: false,
                    allowNegative: false,
                    minValue: 10,
                    maxValue: 500
                })
            }, {
                header: text_46,
                dataIndex: 'Beschreibung',
                width: 220,
                // use shorthand alias defined above
                editor: new Ext.form.TextField({
                    allowBlank: true
                })
            }
        ]
    });
                  
    var gridTabellenFelder = new Ext.grid.EditorGridPanel({
    	sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
        store: storeTabellenFelder,            
        cm: cmFelder,
		flex: 1,
		autoExpandColumn: 'Name',
        title: 'Felder',
        clicksToEdit: 1,
        tbar: [{
            iconCls: 'add',
            text: text_69,
            handler: function() {
               	var feld = new FeldTabellenFelder({
                    FeldID: -1,
                    Name: '',
                    Typ: 'Zeichen',
					Breite: 100,
					Beschrebung: ''
                });
                gridTabellenFelder.stopEditing();
                storeTabellenFelder.add(feld);
                gridTabellenFelder.startEditing(storeTabellenFelder.getCount()-1, 0);
            }
        },{
            ref: '../removeBtn',
            iconCls: 'cancel',
            text: text_70,
            disabled: true,
            handler: function(){
                var s = gridTabellenFelder.getSelectionModel().getSelections();
                for(var i = 0, r; r = s[i]; i++){
                    storeTabellenFelder.remove(r);
                }
            }
        }],
		plugins: [new Ext.ux.dd.GridDragDropRowOrder({
		        copy: false, // false by default
		        scrollable: true /*, // enable scrolling support (default is false)
		        targetCfg: { ... }*/ // any properties to apply to the actual DropTarget
		    })]
    });

    gridTabellenFelder.getSelectionModel().on('selectionchange', function(sm){
        gridTabellenFelder.removeBtn.setDisabled(sm.getCount() < 1);  
    });

	var editTabelle = {
	    id: 'editTabelle',
		region: 'center',
	    layout: {
	        type: 'vbox',
	        pack: 'start',
	        align: 'stretch'
	    },
	    defaults: {
	        frame: true,
	        border:false
	    },
	    items: [xmlTabelle, gridTabellenFelder]
	};

