﻿// JScript File
var STATUS_INITIALIZING = 0;
var STATUS_UPLOADING = 1;
var STATUS_COMPLETE = 2;

var bUploadComplete;
var iCurrentUploadStatus;
var sUploadId;
var sProgressPath;

var oUploadArea;
var oUploadError;
var oUploadProgress;

var oUploadStatus;
var oUploadSize;
var oUploadRemainingSize;
var oUploadTime;
var oUploadRemainingTime;
var oUploadProgressBar;
var oUploadProgressContainer;
var oUploadErrorMessage;

var doc;

function setProgressPath(path) {
  sProgressPath = path;
}

function startUpload(progressPath, frameNameID) {

    sProgressPath = progressPath;

    oUploadArea              = window.document.getElementById("UploadArea");
	oUploadError             = window.document.getElementById("UploadError");
	oUploadProgress          = window.document.getElementById("UploadProgress");

	oUploadStatus            = window.document.getElementById("oUploadStatus");
	oUploadSize              = window.document.getElementById("oUploadSize");
	oUploadRemainingSize     = window.document.getElementById("oUploadRemainingSize");			
	oUploadTime              = window.document.getElementById("oUploadTime");			
	oUploadRemainingTime     = window.document.getElementById("oUploadRemainingTime");			
	oUploadErrorMessage      = window.document.getElementById("oUploadErrorMessage");			

	oUploadProgressContainer = window.document.getElementById("oUploadProgressContainer");
    oUploadProgressBar       = window.document.getElementById("oUploadProgressBar");
	
	var oUploadDocument      = window.frames[frameNameID].document;				
	var oUploadForm          = oUploadDocument.getElementById("uploadForm");

	bUploadComplete = false;
	iCurrentUploadStatus = STATUS_INITIALIZING;
	sUploadId = oUploadDocument.UploadID;
	
	oUploadForm.submit();
 
    oUploadArea.style.display = "none";
	oUploadProgress.style.display = "block";
	oUploadProgressBar.style.width = "0px"
	
	// Clear the displays
	oUploadStatus.innerHTML = "Initializing";
	oUploadSize.innerHTML = "";
	oUploadRemainingSize.innerHTML = "";
	oUploadTime.innerHTML = "";
	oUploadRemainingTime.innerHTML = "";

	doc = Sarissa.getDomDocument();
	doc.async = false;
	
	progressUpdate();
}

function progressUpdate()
{				
	doc.load(sProgressPath + "?uploadId=" + sUploadId);
				
	var isError = false;
	if (doc != null && doc.documentElement != null && doc.documentElement.attributes.length > 0) {
		var state = doc.documentElement.getAttribute("state");					
		if (state == "ReceivingData" || state == "Complete") {						
			oUploadSize.innerHTML          = doc.documentElement.getAttribute("contentLengthText");
			oUploadRemainingSize.innerHTML = doc.documentElement.getAttribute("transferredLengthText");
			oUploadTime.innerHTML          = doc.documentElement.getAttribute("elapsedTimeText");
			oUploadRemainingTime.innerHTML = doc.documentElement.getAttribute("remainingTimeText");
			
			var positionRaw      = doc.documentElement.getAttribute("positionRaw")
			var contentLengthRaw = doc.documentElement.getAttribute("contentLengthRaw")
					
			oUploadProgressBar.style.width = ((positionRaw / contentLengthRaw) * oUploadProgressContainer.offsetWidth) + "px";
			
			if (state == "Complete") {
				iCurrentUploadStatus = STATUS_COMPLETE;
				oUploadStatus.innerHTML = "Complete";	
				bUploadComplete = true;
			}
			else if (iCurrentUploadStatus == STATUS_INITIALIZING) {
                iCurrentUploadStatus = STATUS_UPLOADING;
				oUploadStatus.innerHTML = "In progress";				
			}
		} else {
			var oUploadError = document.getElementById("UploadError");
			switch (state)
			{
				case "Error":
					oUploadErrorMessage.innerHTML = doc.documentElement.getAttribute("errorMessage");
					oUploadError.style.display = "block";
                    oUploadArea.style.display = "none";
	                oUploadProgress.style.display = "none";
					isError = true;
					break;
				case "ErrorMaxRequestLengthExceeded":
					oUploadErrorMessage.innerHTML = "Maximum request length exceeded.";
					oUploadError.style.display = "block";
                    oUploadArea.style.display = "none";
	                oUploadProgress.style.display = "none";
					isError = true;
					break;
			}

			bUploadComplete = true;
		}
	}
	
	if (bUploadComplete) {
		iCurrentUploadStatus = STATUS_COMPLETE;
	}
	
	if (iCurrentUploadStatus != STATUS_COMPLETE) {
		window.setTimeout("progressUpdate()", 1000);
    }
}

/*
 * Validate the file extension 
 */
function filevalidate(frameNameID, files) {
  var oUploadDocument      = window.frames[frameNameID].document;				
  var oUploadInput         = oUploadDocument.getElementById("oFile");

  return fileValidateExtension(oUploadInput.value, files);
}
