
var newFolderPopup;
var rmFilePopup;
var addFilePopup;

var reloadAddFile;

function displayFileInfo(hash) {
	if ($('fileinfo_' + hash) && $('fileinfodisplay')) {
		$('fileinfodisplay').set('html', $('fileinfo_' + hash).get('html'));
		var item = $('fileinfodisplay');
		var table = $('file_row_' + hash).getParent('table');
		var pos_row = $('file_row_' + hash).getPosition();
		var pos_sidebar = $('sidebar_footer').getPosition();
		pos = {x: pos_sidebar.x, y: pos_row.y};
		pos.y = Math.min(pos.y, table.getPosition().y + table.getSize().y - item.getSize().y);
		item.setPosition(pos);
		item.setStyle("display", "block");
		item.fade("in");
	}
}

function closeFileInfo() {
	var item = $('fileinfodisplay');
	if(item.getStyle('display') != 'none') {
		item.fade('out');
		//item.setStyle("display", "none");
	}
}

function sortbynameasc(hash) {
	reload_dl_q(hash, 'sort=nameasc');
}

function sortbynamedesc(hash) {
	reload_dl_q(hash, 'sort=namedesc');
}

function sortbydateasc(hash) {
	reload_dl_q(hash, 'sort=dateasc');
}

function sortbydatedesc(hash) {
	reload_dl_q(hash, 'sort=datedesc');
}

function sortbysizeasc(hash) {
	reload_dl_q(hash, 'sort=sizeasc');
}

function sortbysizedesc(hash) {
	reload_dl_q(hash, 'sort=sizedesc');
}

function displaymode(hash, mode) {
	reload_dl_q(hash, 'mode=' + mode);
}

function reload_dl(hash) {
	reload_dl_q(hash, '');
}

function reload_dl_q(hash, query) {
	var container = $('download_container_' + hash);
	var source = $('download_source_' + hash);
	var controls = $('download_controls_' + hash);
	var mode = $('download_mode_' + hash);
	var chroot = $('download_chroot_' + hash);
	var ajaxbrowse = $('download_ajaxbrowse_' + hash);
	if (container && source) {
		container.fade('out');
		var reloadRequest = new Request({
			url: source.get('text')
		});
		reloadRequest.addEvent('success', function(responseText, responseXML) {
			container.set('html', responseText);
			container.fade('in');
		});
		var myquery = 'ajaxreload=yes&dirtoken=' + hash;
		if (controls && controls.get('text') == 'no' && mode) {
			myquery += '&nocontrols=yes&displaymode=' + mode.get('text');
		}
		if (ajaxbrowse && ajaxbrowse.get('text') == 'yes') {
			myquery += '&ajaxbrowse=yes';
		}
		if (chroot && chroot.get('text') != '') {
			myquery += '&chroot=' + chroot.get('text');
		}
		reloadRequest.send(myquery + (query == '' ? '' : '&' + query));
	}
}

function reload_browse(hash, target) {
	var source = $('download_source_' + hash);
	if (source) {
		source.set('text', target);
		reload_dl(hash);
	}
}

function addDir(hash) {
	var source = $('download_source_' + hash);
	if (source) {
		newFolderPopup = new AjaxPopup();
		newFolderPopup.addTitle('Neues Verzeichnis erstellen');
		newFolderPopup.addSubmitButton('Verzeichnis erstellen', function() { sendNewDir(hash); });
		newFolderPopup.addCancelButton('Abbrechen');
		newFolderPopup.addOverlay();
		var request = new Request({
			url: source.get('text'),
			data: 'action=admin_ajax_box&box=newdir'
		});
		newFolderPopup.display(request);
	}
}

function sendNewDir(hash) {
	var source = $('download_source_' + hash);
	var myHash = new Hash({
		dirname: $('newdir.dirname').get('value'),
		action: 'admin_ajax_box',
		box: 'newdir',
		formid: $('newdir.formid').get('value'),
		token: $('newdir.token').get('value')
	});
	var myData = myHash.toQueryString();
	var request = new Request({
		url: source.get('text'),
		data: myData,
		noCache: true
	});
	request.addEvent('success', function(responseText, responseXML) {
		if (responseText == 'success') {
			reload_dl(hash);
			newFolderPopup.close();
		} else {
			newFolderPopup.redisplay(responseText);
		}
	});
	request.send();	
}

function rmFile(hash) {
	var source = $('download_source_' + hash);
	if (source) {
		rmFilePopup = new AjaxPopup();
		rmFilePopup.addTitle('Verzeichnis / Datei löschen');
		rmFilePopup.addSubmitButton('Datei löschen', function() { sendRmFile(hash); });
		rmFilePopup.addCancelButton('Abbrechen');
		rmFilePopup.addOverlay();
		var request = new Request({
			url: source.get('text'),
			data: 'action=admin_ajax_box&box=remove'
		});
		rmFilePopup.display(request);
	}
}

function sendRmFile(hash) {
	var source = $('download_source_' + hash);
	var myHash = new Hash({
		filename: $('remove.filename').get('value'),
		action: 'admin_ajax_box',
		box: 'remove',
		formid: $('remove.formid').get('value'),
		token: $('remove.token').get('value')
	});
	var myData = myHash.toQueryString();
	var request = new Request({
		url: source.get('text'),
		data: myData,
		noCache: true
	});
	request.addEvent('success', function(responseText, responseXML) {
		if (responseText == 'success') {
			reload_dl(hash);
			rmFilePopup.close();
		} else {
			rmFilePopup.redisplay(responseText);
		}
	});
	request.send();		
}

function addFile(hash) {
	var source = $('download_source_' + hash);
	if (source) {
		addFilePopup = new AjaxPopup();
		addFilePopup.addTitle('Datei hinzufügen');
		addFilePopup.addSubmitButton('Datei hinzufügen', function() { sendUploadFile(hash); });
		addFilePopup.addCancelButton('Abbrechen');
		addFilePopup.addOverlay();
		var request = new Request({
			url: source.get('text'),
			data: 'action=admin_ajax_box&box=newfile'
		});
		addFilePopup.display(request);
		reloadAddFile = function() {
			addFileReload(hash);
		};
	}
}

function addFileReload(hash) {
	var source = $('download_source_' + hash);
	var request = new Request({
		url: source.get('text'),
		data: 'action=admin_ajax_box&box=newfile',
		noCache: true
	});
	request.addEvent('success', function(responseText, responseXML) {
		addFilePopup.redisplay(responseText);
	});
	request.send();
}

function sendUploadFile(hash) {
	var source = $('download_source_' + hash);
	var myHash = new Hash({
		filename: $('upload.filename').get('value'),
		newname: $('upload.newname').get('value'),
		keepsource: $('upload.keepsource').get('checked') ? "yes" : "",
		action: 'admin_ajax_box',
		box: 'newfile',
		formid: $('upload.formid').get('value'),
		token: $('upload.token').get('value')
	});
	var myData = myHash.toQueryString();
	var request = new Request({
		url: source.get('text'),
		data: myData,
		noCache: true
	});
	request.addEvent('success', function(responseText, responseXML) {
		if (responseText == 'success') {
			reload_dl(hash);
			addFilePopup.close();
		} else {
			addFilePopup.redisplay(responseText);
		}
	});
	request.send();
}
