var timer = null;
var uploadURL = null;
var syncWhenFinished = true;
var onFinishSuccessFunction = null;
var onFinishFailFunction = null;

function handleUploadStatus(type, uploadStatus, evt) {
	var x = 1;
	if (uploadStatus.message == "Success") {
		timer.stop();
		var progressBar = dojo.widget.byId("progressBarId");
		progressBar.setProgressValue(100);
		if (syncWhenFinished)
			sync();
		if (onFinishSuccessFunction != null)
			onFinishSuccessFunction();
		//var closeButton = document.getElementById("uploadCloseButton");
		//closeButton.style.display = "block";
		return;
	}
	if (uploadStatus.message.indexOf("Error") == 0) {
		timer.stop();
		//dojo.debug("UploadStatus message:" + uploadStatus.message);
		reportError(uploadStatus.message);
		return;
	}
	var progressBar = dojo.widget.byId("progressBarId");
	var progress = (uploadStatus.bytesProcessed / uploadStatus.sizeTotal) * 100;
	if (progress == 100)
		progress = 99;
	progressBar.setProgressValue(progress);
}

function onTick() {

	var bindArgs = {
		url:        uploadURL,
		mimetype:   "text/json",
		method:		"GET",
		error:      function(type, errObj) {
			reportError(i18n.Error + type + errObj.message);
		},
		load: handleUploadStatus
	};
	var requestObj = dojo.io.bind(bindArgs);
}

function startStatusCheck(aUrl) {
	//dojo.debug("startStatusCheck()");
	uploadURL = aUrl;
	var importButton = document.getElementById('importButton');
	var progressBar = dojo.widget.byId("progressBarId");
	var errorLabel = document.getElementById("errorLabelId");
	var fileName = document.getElementById('fileName');
	var pbContainer = document.getElementById("pbContainer");
	if (fileName.value == "") {
		importButton.disabled = false;
		pbContainer.style.display = "none";
		errorLabel.innerHTML = i18n.uploadMissingFile;
		errorLabel.style.display = "block";
		return true;
	}

	errorLabel.style.display = "none";
	importButton.disabled = true;
	pbContainer.style.display = "block";

	timer = new dojo.lang.timing.Timer(2000);
	timer.onTick = onTick;
	timer.start();

	return true;
}

function reportError(message) {
	timer.stop();
	document.getElementById('importButton').disabled = false;
	
	var errorLabel = document.getElementById("errorLabelId");
	// No, the message is empty on fail JSON parse.
	if (message == "0") {
		errorLabel.innerHTML = i18n.serverReceivedEmptyFile;
	}
	else if (message.indexOf("DOCTYPE") < 0) {
		// index 6 is 6 after Error:
		var i18nValue = i18n[message.substring(6)];
		if (i18nValue == null)
			i18nValue = message.substring(6);
		errorLabel.innerHTML = i18n.Error + ": " + i18nValue;
	}
	else {
		errorLabel.innerHTML = i18n.expiredSession;
	}
	errorLabel.style.display = "block";
	var pbContainer = document.getElementById("pbContainer");
	pbContainer.style.display = "none";
	
	if (onFinishFailFunction != null)
		onFinishFailFunction();
}

