var uploadStatusTimer = null;
var uploadStatusRequester = null;
var uploadStatusRequesterTimeout = null;

var uploadKey = null;

function toggleModifiable(id, enableModify)
{
	var mainOptions = document.getElementById("mainOptions-" + id);
	var modifyOptions = document.getElementById("modifyOptions-" + id);
	var mainAttributes = document.getElementById("mainAttributes-" + id);
	var modifiableAttributes = document.getElementById("modifiableAttributes-" + id);
	
	if (mainOptions && modifyOptions && mainAttributes && modifiableAttributes)
	{
		var mainDisplay = "block";
		var modifyDisplay = "none";
		
		if (enableModify)
		{
			mainDisplay = "none";
			modifyDisplay = "block";
		}
		
		mainOptions.style.display = mainDisplay;
		modifyOptions.style.display = modifyDisplay;
		mainAttributes.style.display = mainDisplay;
		modifiableAttributes.style.display = modifyDisplay;
	}
}

function saveModifyDirectory(id)
{
	document.forms['modifyDirectory' + id].submit();
}

function saveModifyFile(id)
{
	document.forms['modifyFile' + id].submit();
}

function deleteFile(id)
{
	var confirmBox = confirm("Are you sure you want to delete this file?");
	if (confirmBox)
	{
		document.forms['deleteFile' + id].submit();
	}
	else
	{
		//Don't do anything on a "no"
	}
}

function submittedUpload(key)
{
	var uploadStatus = document.getElementById("uploadStatus");
	if (uploadStatus)
	{
		document.upload.style.display = "none";	
		uploadStatus.style.display = "block";
		
		uploadKey = key;
		startUpdateUploadStatus();
	}
	
	return true;
}

function startUpdateUploadStatus()
{
	if (!uploadStatusTimer)
	{
		uploadStatusTimer = setTimeout(updateUploadStatus, 15000);
	}
}

function updateUploadStatus()
{
	if (uploadStatusRequester != null && uploadStatusRequester.readyState != 0 && uploadStatusRequester.readyState != 4)
	{
		return;
	}
	
	try
	{
		uploadStatusRequester = new XMLHttpRequest();
	}
	catch (error)
	{
		try
		{
			uploadStatusRequester = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (error)
		{
			try
			{
				uploadStatusRequester = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (error)
			{
				uploadStatusRequester = null;
			}
		}
	}

	if (uploadStatusRequester != null)
	{
		uploadStatusRequester.open("GET", "/fileManagementStatus.php?id=" + uploadKey, true);		
		uploadStatusRequester.onreadystatechange = gotUploadStatus;
		
		uploadStatusRequesterTimeout = setTimeout(gotUploadStatusTimeout, 5000);		
		uploadStatusRequester.send(null);
	}
}

function gotUploadStatus()
{
	if (uploadStatusRequester == null || uploadStatusRequester.readyState != 4)
	{
		return;
	}
	
	if (uploadStatusRequester.status == 200)
	{
		setUploadStatus(uploadStatusRequester.responseText);
		uploadStatusRequester = null;

		abortUploadStatusTimeout();
		startUpdateUploadStatus();
	}
	else
	{
		abortUploadStatusTimeout();
	}
}

function gotUploadStatusTimeout()
{
	abortUploadStatus();	
	startUpdateUploadStatus();
}

function abortUploadStatusTimeout()
{
	if (uploadStatusTimer != null)
	{
		clearTimeout(uploadStatusTimer);
		uploadStatusTimer = null;
	}

	if (uploadStatusRequester != null)
	{
		uploadStatusRequester.abort();
		uploadStatusRequester = null;
	}

	if (uploadStatusRequesterTimeout != null)
	{
		clearTimeout(uploadStatusRequesterTimeout);
		uploadStatusRequesterTimeout = null;
	}
}

function setUploadStatus(text)
{
	var uploadStatus = document.getElementById("uploadStatus");
	if (uploadStatus)
	{
		uploadStatus.innerHTML = text;
	}
}
