Ext.apply(
  Ext.ux.UploadDialog.Dialog.prototype.i18n,
  {
    title: 'Hochladen von Dateien',
    state_col_title: 'Status',
    state_col_width: 70,
    filename_col_title: 'Dateiname',
    filename_col_width: 230,
    note_col_title: 'Info',
    note_col_width: 150,
    add_btn_text: 'Datei wählen',
    add_btn_tip: 'Wählen Sie eine Datei aus',
    remove_btn_text: 'Entfernen',
    remove_btn_tip: 'Entfernen der ausgewählten Datei',
    reset_btn_text: 'Zurücksetzen',
    reset_btn_tip: 'Zurücksetzen',
    upload_btn_start_text: 'Start',
    upload_btn_stop_text: 'Abbrechen',
    upload_btn_start_tip: 'Dateien hochladen',
    upload_btn_stop_tip: 'Der Vorgang wird abgebrochen',
    close_btn_text: 'Fertig',
    close_btn_tip: 'Schliesst das Fenster',
    progress_waiting_text: '',
    progress_uploading_text: 'Datei: {0} von {1} hochgeladen',
    error_msgbox_title: 'Fehler',
    permitted_extensions_join_str: ',',
    err_file_type_not_permitted: 'Die ausgewählte Datei entspricht nicht den zulässigen Typen!<br />Folgende Formate sind zulässig: {1}',
    note_queued_to_upload: 'Datei für den Upload',
    note_processing: 'Verarbeitet...',
    note_upload_failed: 'Fehler',
    note_upload_success: 'Übertragen',
    note_upload_error: 'Fehler',
    note_aborted: 'Abbruch',
    note_canceled: 'Abbruch'
  }
);


Ext.onReady(function(){

    Ext.QuickTips.init();
	var dialog = null;  
	var ds = null;
	var folder = "";
	var data_send = false;
	var data_loaded = false;
	var dataform = null;
	
	window.onbeforeunload = confirmExit;
	function confirmExit()
  	{
		if (data_send == false && data_loaded == true)
		{
			return "ACHTUNG! Bitte füllen Sie das untenstehende Formular aus und übertragen Sie Ihre Daten mit dem Button -Alle übertragenen Dateien an Mehgro übermitteln- ! Durch das Schließen des Fensters gehen Ihre Dateien sonst verloren. Wenn Sie mit dem Ausfüllen des Formulars fortfahren wollen, klicken Sie jetzt bitte auf -Abbrechen-.";
			
		}
	}
	
		function hideLoadingMask()
	{
		var loading = Ext.get('loading');
		var mask = Ext.get('loading-mask');
		mask.remove();
		loading.remove();
		Ext.get(document.body).setStyle('overflow', 'visible');
	}
	
	function getDialog()
	{
		if (!dialog) {
		  dialog = new Ext.ux.UploadDialog.Dialog({
			url: 'cgi-bin/upload.pl',
			permitted_extensions: ["pdf", "jpg", "jpeg", "gif", "ai", "ps", "psd", "indd" , "tif", "qxd", "eps"],
			reset_on_hide: false,
			allow_close_on_upload: true,
			upload_autostart: false, //true,
			post_var_name: 'form_file',
			modal: true,
			base_params: {action: 'upload_file', folder_name: folder}
		  });
		
		  dialog.on('uploadsuccess', onUploadSuccess);
				//dialog.on('beforefileuploadstart', onBeforeFileUploadStart);
		}
		return dialog;
	}
	
	function showDialog(button)
	{
		getDialog().show(button.getEl());
	}
	
	function onUploadSuccess(dialog, filename, resp_data, record)
	{
	  	ds.load({params:{action:'get_filelist', folder_name: folder, start:0, limit:1000, dir:'ASC', sort:'name'}});
		data_loaded = true;
	}

	// *********************************
	// selectionmodel für das Grid
	var sm = new Ext.grid.RowSelectionModel({singleSelect:false});

	// *********************************
	// create the Data Store
	ds = new Ext.data.Store({
		// load using script tags for cross domain, if the data in on the same domain as
		// this page, an HttpProxy would be better
		proxy: new Ext.data.HttpProxy({url: 'gateway.php'}),

		// create reader that reads the Topic records
		reader: new Ext.data.JsonReader({
			root: 'file-list',
			totalProperty: 'totalCount',
			id: 'id'
		}, [
			{name: 'name'},
			{name: 'size'}
		]),

		// turn on remote sorting
		remoteSort: false
	});

	//ds.setDefaultSort('name', 'desc');

	// *********************************
	// Funktionen zum rendern der Gridfelder
	function renderTextSimple(value, p, record)
	{
		return String.format('{0}', value);
	}

	function renderBytesSimple(value, p, record)
	{
		size = Math.round((value/1024));
		if(size > 1024) 
		{
			size = Math.round((size/1024)) + " MB";
		}
		else
		{
			size = size + " KB";
		}
		
		return String.format('{0}', size);
	}

	// *********************************
	// the column model has information about grid columns
	// dataIndex maps the column to the specific data field in
	// the data store
	var cm = new Ext.grid.ColumnModel([{
		   id: 'name',
		   header: "Name",
		   dataIndex: 'name',
		   width: 180,
		   renderer: renderTextSimple
		},{
		   id: 'size',
		   header: 'Größe',
		   dataIndex: 'size',
		   width: 50,
		   renderer: renderBytesSimple
		}]);

	// by default columns are sortable
	cm.defaultSortable = false;

	// *********************************
	// Grid erstellen und diverse Optionen einstellen
	var grid = new Ext.grid.GridPanel({
		applyTo: 'file_list',
		ds: ds,
		cm: cm,
		selModel: sm,
		enableColLock:true,
		enableColumnMove:false,
		border: false,
		width: 530,
		title: 'Bereits hochgeladene Dateien',
		autoHeight: true,
		frame: true,
		buttonAlign: 'center',
		viewConfig: {
			forceFit: true,
			headersDisabled: true
		},
		keys: [{
			key: Ext.EventObject.DELETE,
			handler: function(){
				var rows = grid.getSelectionModel().getSelections();	
				poststr = 'action=del_file';
				
				if(rows.length == 0) return false;
				
				for(i = 0; i < rows.length; i++)
				{
					var sel = rows[i];
					poststr = poststr + '&file_id='+sel.data['name'];
				};
				Ext.Ajax.request({
				   url: 'gateway.php',
				   success: function(){
					   ds.load({params:{action:'get_filelist', folder_name: folder, start:0, limit:1000, dir:'ASC', sort:'name'}});
				   },
				   failure: function(){
						Ext.MessageBox.alert("Achtung!", "Die Datei konnte nicht gelöscht werden!");   
				   },
				   params: poststr
				});
			}
		}],
		buttons: [{
			text: 'Datei hochloaden',
			handler: showDialog
		},{
			text: 'ausgewählte Datei entfernen',
			handler: function(){
				var rows = grid.getSelectionModel().getSelections();	
				poststr = 'action=del_file&folder_name=' + folder;
				
				if(rows.length == 0) return false;
				
				for(i = 0; i < rows.length; i++)
				{
					var sel = rows[i];
					poststr = poststr + '&file_id='+sel.data['name'];
				};
				Ext.Ajax.request({
				   url: 'gateway.php',
				   success: function(){
					   ds.load({params:{action:'get_filelist', folder_name: folder, start:0, limit:1000, dir:'ASC', sort:'name'}});
				   },
				   failure: function(){
						Ext.MessageBox.alert("Achtung!", "Die Datei konnte nicht gelöscht werden!");   
				   },
				   params: poststr
				});
			}
		}]
	});

	
	ds.on('load', function(){
	   if(ds.getTotalCount() > 0)
	   {
			//document.getElementById('file_list').style.visibility = 'visible';
			document.getElementById('data_form').style.visibility = 'visible';
	   }
	   else
	   {
			//document.getElementById('file_list').style.visibility = 'hidden';  
			document.getElementById('data_form').style.visibility = 'hidden';  
	   }
	}); 
			


// Ordnername anfordern
	Ext.Ajax.request({
	   url: 'gateway.php',
	   params: {action: 'get_folder'},
	   success: function(result){
		   	folder = result.responseText;
	   
			ds.load({params:{action:'get_filelist', folder_name: folder, start:0, limit:1000, dir:'ASC', sort:'name'}});
			   
			   
		dataform = new Ext.FormPanel({
			renderTo: 'data_form',
			width: 530,
			frame: true,
			title: 'Informationen',
			autoHeight: true,
			bodyStyle: 'padding: 10px 10px 0 10px;',
			labelWidth: 130,
			url: 'gateway.php',
			defaults: {
				anchor: '95%',
				allowBlank: true,
				msgTarget: 'side'
			},
			items: [{
				id: 'action',
				xtype:'hidden',
				name: 'action',
				value: 'send_mail'
			},{
				id: 'folder_name',
				xtype:'hidden',
				name: 'folder_name',
				value: folder
			},{
				xtype: 'textfield',
				fieldLabel: '<b>Ihre Emailadresse*</b>',
				allowBlank: false,
				name: 'email',
				blankText: 'Dieses Feld ist erforderlich!',
				msgTarget: 'qtip'
			},{
				xtype: 'textfield',
				fieldLabel: '<i>Ihr Name</i>',
				name: 'name'
			},{
				xtype: 'textfield',
				fieldLabel: '<i>Ihre Kundennr.</i>',
				name: 'kdnr'
			},{
				xtype: 'textarea',
				height: 100,
				fieldLabel: '<i>Weitere Informationen</i>',
				name: 'info'
			}],
			buttons: [{
				type: 'submit',
				text: 'Alle übertragenen Dateien an Mehgro übermitteln',
				handler: function(){
					if(dataform.getForm().isValid()){
						dataform.getForm().submit({
							success:function(form, result) {
								var upload_result = Ext.decode(result.response.responseText);
								ds.load({params:{action:'get_filelist', folder_name: "leer", start:0, limit:1000, dir:'ASC', sort:'name'}});	
								data_send = true;
								Ext.MessageBox.alert('Übertragung abgeschlossen', 'Ihre Daten wurden erfolgreich übermittelt.<br />Sie erhalten in Kürze eine Bestätigungsemail.<br /><br />Sie können nun das Fenster schließen.');   
								
							}
						});
					}	
				}
			}]
		});			
		}
	});	
			
			
	hideLoadingMask();
    Ext.get(document.body).setStyle('overflow', 'auto');
	//getDialog().show(document.body);
	
});


