	
	function createRequestObj()
	{
		var xmlhttp = false;
		
		try
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				xmlhttp = false;
			}
		}
		if(!xmlhttp && typeof XMLHttpRequest != 'undefined')
		{
			try
			{
				xmlhttp = new XMLHttpRequest();
			}
			catch(e)
			{
				xmlhttp = false;
			}
		}
		if(!xmlhttp && window.createRequest)
		{
			try
			{
				xmlhttp = window.createRequest();
			}
			catch(e)
			{
				xmlhttp = false;
			}
		}		
		
		return xmlhttp;
	}
	
	function trackUpload()
	{
		//document.getElementById("Form").style.visibility = "hidden";
		document.getElementById("Form").style.position = "absolute";
		document.getElementById("Form").style.left = "-9999px";
		document.getElementById("ProgressContainer").style.visibility = "visible";
		document.getElementById("ProgressContainer").style.height = "";
		setTimeout(trackProgress, 1000);
		top.finished = false;
		
		return true;
	}

	function filesize_string(size)
	{
		var sizes = ["Bytes", "KB", "MB", "GB"];
		var current_size = 0;
		var adjusted_size = size;
		while(adjusted_size >= 1024)
		{
			adjusted_size /= 1024;
			current_size++;
		}

		return (Math.round(adjusted_size * 100) / 100) + " " + sizes[current_size];
	}

	function eta_string(seconds)
	{
		window.status = seconds;
		var units = ["Seconds", "Minutes", "Hours", "Days"];
		var amounts =	[
							seconds % 60,
							Math.floor((seconds % (60 * 60)) / 60),
							Math.floor((seconds % (60 * 60 * 24)) / (60 * 60)),
							Math.floor(seconds / (60 * 60 * 24))
						];
		var result_str = "";
		for(var unit = units.length - 1; unit >= 0; unit--)
		{
			if(amounts[unit] > 0)
				result_str += (amounts[unit]) + " " + units[unit] + " ";
		}

		return result_str;
	}

	top.finish = function()
	{
		top.finished = true;
		document.getElementById("ProgressPct").childNodes[0].nodeValue = document.getElementById("ProgressBar").style.width = "100%";
		document.getElementById("ResultText").childNodes[0].nodeValue = 'Your image has been received. Your submission is now awaiting approval.';
		document.getElementById("Result").className = "allgood";
		document.getElementById("Result").style.display = "block";
		document.getElementById("ProgressReport").style.display = "none";
	}

	top.error = function(text)
	{
top.finished = true;
		document.getElementById("ProgressPct").childNodes[0].nodeValue = document.getElementById("ProgressBar").style.width = "100%";
		document.getElementById("ResultText").childNodes[0].nodeValue = text;
		document.getElementById("Result").className = "error";
		document.getElementById("Result").style.display = "block";
		document.getElementById("ProgressReport").style.display = "none";
	}

	function trackProgress()
	{
		var xmlhttp = createRequestObj();
		xmlhttp.open("POST", "/util/progress.json.php?ck=" + Math.random(), true);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.onreadystatechange = function()
		{
			if(xmlhttp.readyState == 4)
			{
				//window.console.log("ReadyState 4: " + xmlhttp.responseText);
				var p = eval('(' + xmlhttp.responseText + ')');
				if(p)
				{
					//window.console.log("Recieved valid response");
					var bytes_uploaded = parseInt(p.bytes_uploaded);
					var bytes_total = parseInt(p.bytes_total);
					var percent_complete = Math.round(bytes_uploaded / bytes_total * 100) + "%";
					
					document.getElementById("UploadProgressUploaded").childNodes[0].nodeValue = filesize_string(bytes_uploaded) + " / " + filesize_string(bytes_total) + "(" + percent_complete + ")";
					document.getElementById("UploadProgressSpeed").childNodes[0].nodeValue = filesize_string(parseInt(p.speed_average)) + "/sec";
					document.getElementById("UploadProgressETA").childNodes[0].nodeValue = eta_string(parseInt(p.est_sec));

					document.getElementById("ProgressPct").childNodes[0].nodeValue = document.getElementById("ProgressBar").style.width = Math.round((p.bytes_uploaded / p.bytes_total) * 100) + "%";
				}
				else
				{
					//window.console.log(escape(document.getElementById("UPLOAD-IDENTIFIER").value));
				}
					

				if(!top.finished)
					setTimeout(trackProgress, 1000);
				
			}
		};

		xmlhttp.send("upload_id=" + escape(document.getElementById("UPLOAD-IDENTIFIER").value));
	}