// JavaScript Document

var window_inner_width;
var window_inner_height;

function getWindowInnerDimensions()
{
	if (self.innerHeight) // all except Explorer
	{
		window_inner_width = self.innerWidth;
		window_inner_height = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		window_inner_width = document.documentElement.clientWidth;
		window_inner_height = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		window_inner_width = document.body.clientWidth;
		window_inner_height = document.body.clientHeight;
	}	
}

function submitForm(k,v)
{
	document.main_form.dummy.value = v;
	document.main_form.dummy.name = k;
	document.main_form.submit();
}

function toggleFolder(id)
{
	submitForm("toggle_folder",id);
}

function selectFolder(id)
{
	submitForm("select_folder",id);
}

function selectFile(id)
{
	showFileInfo(id);
}

function showFileInfo(id)
{
	file_info = eval("file_" + id);
	
	document.getElementById("file_info_filename").firstChild.nodeValue = file_info.name;
	document.getElementById("file_info_filesize").firstChild.nodeValue = file_info.filesize;
	document.getElementById("file_info_user").firstChild.nodeValue = file_info.fullusername + " (" + file_info.username + ")";
	document.getElementById("file_info_date").firstChild.nodeValue = file_info.creation_datetime;
	document.getElementById("file_info_info").firstChild.nodeValue = file_info.info;
	
	document.form_file_info.file_id.value = id;
	
	showDialog("file_info");
}

function showDialog(id)
{
	getWindowInnerDimensions();
	
	dialog_element = document.getElementById("dialog_" + id);
	
	dialog_element.style.display = 'block';
	dialog_element.style.left = ((window_inner_width / 2) - (dialog_element.offsetWidth / 2)) + "px";
	dialog_element.style.top = ((window_inner_height / 2) - (dialog_element.offsetHeight / 2)) + "px";
	
	document.getElementById("dialog").style.visibility = 'visible';
	
	current_dialog = id;
}

function cancelDialog()
{
	document.forms["form_" + current_dialog].reset();
	
	current_dialog = "";
	
	document.getElementById("dialog_login").style.display = 'none';
	document.getElementById("dialog_add_folder").style.display = 'none';
	document.getElementById("dialog_edit_folder").style.display = 'none';
	document.getElementById("dialog_delete_folder").style.display = 'none';
	document.getElementById("dialog_add_file").style.display = 'none';
	document.getElementById("dialog_add_file_java").style.display = 'none';
	document.getElementById("dialog_upload_progress").style.display = 'none';
	document.getElementById("dialog_edit_file").style.display = 'none';
	document.getElementById("dialog_file_info").style.display = 'none';
	document.getElementById("dialog_delete_file").style.display = 'none';
	document.getElementById("dialog_add_user").style.display = 'none';
	document.getElementById("dialog_edit_user").style.display = 'none';
	document.getElementById("dialog_choose_notification").style.display = 'none';
	document.getElementById("dialog_edit_message").style.display = 'none';
	document.getElementById("dialog_preferences").style.display = 'none';
	
	document.getElementById("dialog").style.visibility = 'hidden';
}

function createFolder()
{
	showDialog("add_folder");
}

function uploadFile()
{
	showDialog("add_file_java");
}

function startUpload(upload_sid)
{
	if (document.form_add_file.elements["file[0]"].value)
	{
		document.main_form.dummy.value = upload_sid;
		document.main_form.dummy.name = "upload_sid";
		
		document.form_add_file.submit();
		
		//document.getElementById("iframe_progress").src = "upload_progress.php?upload_sid=" + upload_sid;
		
		document.getElementById("dialog_add_file").style.display = 'none';
		
		showDialog("upload_progress");
		window.setTimeout('getUploadStatus("' + upload_sid + '")',1000);
	}
}

function cancelUpload(upload_sid)
{
	document.location.href="index.php?cancel_upload_sid=" + upload_sid;
}

function getUploadStatus(upload_sid)
{
	queryServer("progressxml.php?upload_sid=" + upload_sid);
}

function setUploadStatus(status,total_bytes,read_bytes,read_percent)
{
	document.getElementById("upload_progress_bar").style.width = read_percent + "px";
	
	//if (status == "finish")
		//submitForm("upload_sid",upload_sid);
}

function editFile(id)
{
	var fileinfo = eval("file_" + id);
	
	document.getElementById("edit_file_name").firstChild.nodeValue = fileinfo.name;
	document.form_edit_file.file_info.value = fileinfo.info;
	document.form_edit_file.file_id.value = id;
	
	showDialog("edit_file");
}

function deleteFile(id)
{
	var fileinfo = eval("file_" + id);

	document.getElementById("delete_file_name").firstChild.nodeValue = fileinfo.name;
	document.form_delete_file.file_id.value = id;
	
	showDialog("delete_file");
}

function editFolder(id)
{
	var folderinfo = eval("file_" + id);
	
	document.form_edit_folder.folder_name.value = folderinfo.name;
	document.form_edit_folder.folder_info.value = folderinfo.info;
	document.form_edit_folder.folder_id.value = id;

	showDialog("edit_folder");
}

function deleteFolder(id)
{
	var folderinfo = eval("file_" + id);

	document.getElementById("delete_folder_name").firstChild.nodeValue = folderinfo.name;
	document.form_delete_folder.folder_id.value = id;
	
	showDialog("delete_folder");
}

function addUser()
{
	showDialog("add_user");
}

function editUser(user_id)
{
	submitForm("edit_user",user_id);
}

function chooseNotification()
{
	submitForm("choose_notification",1);
}

function editMessage(recipient_id)
{
	submitForm("edit_message",recipient_id);
}

function editPreferences()
{
	showDialog("preferences");
}

function deleteUser(user_id)
{
	user = eval("user_" + user_id);
	document.getElementById("delete_user_name").firstChild.nodeValue = user.username;
	document.form_delete_user.user_id.value = user_id;
	showDialog("delete_user");
}

function editUserDialog()
{
	showDialog("edit_user");
}

function downloadFile(id,filename)
{
	document.location.href="download.php?id=" + id;
}

function logout()
{
	submitForm("logout",1);
}

function toggleView()
{
	submitForm("toggle_view",1);
}

function highlightListRow(tr)
{
	tr.oldClassName = tr.className;
	tr.className = "over";
}

function unhighlightListRow(tr)
{
	tr.className = tr.oldClassName;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// ajax functions

function queryServer(url)
{
	http_request = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
			// zu dieser Zeile siehe weiter unten
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
		return false;
	}
	http_request.onreadystatechange = onQueryReply;
	http_request.open('GET', url, true);
	http_request.send(null);
}

function onQueryReply()
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			docxml = http_request.responseXML;
			rootnode = docxml.firstChild.firstChild;
			
			while (rootnode)
			{
				switch (rootnode.nodeName)
				{
					case "upload_status":
						status = rootnode.getAttribute('status');
						read_bytes = rootnode.getAttribute('read_bytes');
						total_bytes = rootnode.getAttribute('total_bytes');
						read_percent = rootnode.getAttribute('read_percent');
						setUploadStatus(status,total_bytes,read_bytes,read_percent);
						window.setTimeout('getUploadStatus("' + rootnode.getAttribute('upload_sid') + '")',1000);
						break;
				}

				rootnode = rootnode.nextSibling;
			}
		}
		else
			alert("Fehler: HTTP-Status: " + http_request.status);
	}
}

