var STATUS_INITIALIZING = 0;
			var STATUS_UPLOADING = 1;
			var STATUS_COMPLETE = 2;
			
			var currentUploadStatus;
			
			var progressDisplayTable;
			var uploadStatus;
			var uploadSize;
			var uploadRemainingSize;
			var uploadTime;
			var uploadRemainingTime;
			var progressBar;
			
			var doc;
			var progressContainerWidth;

			function startUpload()
			{
				window.top.document.uploadComplete = false;
				currentUploadStatus = STATUS_INITIALIZING;
				
				var saveButton = document.getElementById("saveButton");
				
				saveButton.disabled = true;
				saveButton.href = "javascript:;";
				
				var uploadDocument = window.frames["uploadFrame"].document;				
				var uploadForm = uploadDocument.getElementById("uploadForm");
							
				uploadForm.submit();

				var uploadFrame = document.getElementById("uploadFrame");
				uploadFrame.style.display = "none";
				
				progressDisplayTable = document.getElementById("progressDisplayTable");
				uploadStatus = document.getElementById("uploadStatus");
				uploadSize = document.getElementById("uploadSize");
				uploadRemainingSize = document.getElementById("uploadRemainingSize");			
				uploadTime = document.getElementById("uploadTime");			
				uploadRemainingTime = document.getElementById("uploadRemainingTime");			
				progressBar = document.getElementById("progressBar");

				var progressDisplay = document.getElementById("progressDisplay");
				progressDisplay.style.display = "block";

				var progressContainer = document.getElementById("progressContainer");
				progressContainerWidth = progressContainer.offsetWidth;

				// Clear the displays
				uploadSize.innerHTML = "";
				uploadRemainingSize.innerHTML = "";
				uploadTime.innerHTML = "";
				uploadRemainingTime.innerHTML = "";

				uploadStatus.innerHTML = "Initializing";

				doc = Sarissa.getDomDocument();
				doc.async = false;
				
				progressUpdate();
			}
			
			function cancelUpload()
			{
				window.location = window.location;
			}
			
			function resetUpload()
			{
				var progressDisplay = document.getElementById("progressDisplay");
				progressDisplay.style.display = "none";
				
				var uploadSuccess = document.getElementById("uploadSuccess");
				uploadSuccess.style.display = "none";

				var uploadError = document.getElementById("uploadError");
				uploadError.style.display = "none";

				var resetButton = document.getElementById("resetButton");
				resetButton.style.display = "none";

				var uploadFrame = document.getElementById("uploadFrame");
				uploadFrame.style.display = "block";

				var saveButton = document.getElementById("saveButton");
				
				saveButton.disabled = false;
				saveButton.href = "javascript:startUpload();";
			}
			
			function getCurrentRoot()
			{
				var pos = window.location.pathname.lastIndexOf("/");
				
				return window.location.protocol + "//" + window.location.host + window.location.pathname.substr(0, pos) + "/";
			}

			function progressUpdate()
			{				
				doc.load(getCurrentRoot() + "UploadProgress.ashx?uploadId=" + document.uploadId);
							
				var isError = false;
				
				if (doc != null && doc.documentElement != null && doc.documentElement.attributes.length > 0)
				{
					var state = doc.documentElement.getAttribute("state");
								
					if (state == "ReceivingData")
					{						
						uploadSize.innerHTML = doc.documentElement.getAttribute("contentLengthText");

						uploadRemainingSize.innerHTML = doc.documentElement.getAttribute("transferredLengthText");

						uploadTime.innerHTML = doc.documentElement.getAttribute("elapsedTimeText");

						uploadRemainingTime.innerHTML = doc.documentElement.getAttribute("remainingTimeText");
						
						var positionRaw = doc.documentElement.getAttribute("positionRaw")
						var contentLengthRaw = doc.documentElement.getAttribute("contentLengthRaw")
								
						progressBar.style.width = (positionRaw / contentLengthRaw) * document.getElementById("progressContainer").offsetWidth + "px";
						
						if (currentUploadStatus == STATUS_INITIALIZING)
						{
							uploadStatus.innerHTML = "In progress";
							progressDisplayTable.style.display = "block";
							
							currentUploadStatus = STATUS_UPLOADING;
						}
					}
					else
					{
						var uploadError = document.getElementById("uploadError");

						switch (state)
						{
							case "Error":
								uploadError.innerHTML = "Error uploading file.";
								
								uploadError.style.display = "block";
																
								isError = true;

								break;
							case "ErrorMaxRequestLengthExceeded":
								uploadError.innerHTML = "Error uploading file. Maximum request length exceeded.";
							
								uploadError.style.display = "block";
																
								isError = true;

								break;
						}

						document.uploadComplete = true;
					}
				}
				
				if (window.top.document.uploadComplete)
				{
					if (!isError)
					{
						var uploadSuccess = document.getElementById("uploadSuccess");
						uploadSuccess.style.display = "block";
					}
						
					var resetButton = document.getElementById("resetButton");						
					resetButton.style.display = "inline";
					
					var progressDisplay = document.getElementById("progressDisplay");
					progressDisplay.style.display = "none";
					
					window.frames["uploadFrame"].location = "UploadHandler.aspx";
					
					currentUploadStatus = STATUS_COMPLETE;
				}
				
				if (currentUploadStatus != STATUS_COMPLETE)
					window.setTimeout("progressUpdate()", 1000);
			}