ajax_timeout = 10000;

uploads_in_progress = 0;
file_selected = false;
progress_received = false;

timeout_timer = false;
req = false;

function beginUpload(ul, sid) {
	ul.submit();
	uploads_in_progress = uploads_in_progress + 1;

	document.getElementById('progressBar').innerHTML = '<i>Progress Bar loading...</i>';
	setTimeout("updateProgressBar()", 1000);
}

function checkTos(form) {
	if (form.agreetos.checked == true) {
		return true;
	}
	else {
		return false;
	}
}

function checkTosUpload(form) {

	if (document.getElementById(form).agreetos.checked == true) {
		return uploadFiles();
	}
	else {
		return alert("Please read and agree to the Terms of Service.");
	}
}

function handleFileSelect() {
	file_selected = true;
}

// check the submit form
function handleSubmit(frm, sid) {
	if (uploads_in_progress > 0) {
		alert("An upload is already in progress.  Please wait for it to complete.");
	}
	else if (!checkTos(frm)) {
		alert("Please read and agree to the Terms of Service.");
	}
	else if (file_selected == false) {
		alert("Please select a file to be uploaded");
	}
	else {
//		frm.subbutton.disabled = true;
		frm.agreetos.disabled = true;
		beginUpload(frm, sid);
		return true;
	}

	return false;
}

// initiate an AJAX request to grab progress info from the server
function updateProgressBar() {
	url = "fileprogress?sid=" + sid + "&backend=" + current_backend;
	
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
	}
	else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	}

	timeout_timer = setTimeout("checkTimeout()", ajax_timeout);
}

// we received a response from the AJAX request
function processReqChange()  {
	if (req && req.readyState == 4) {
		clearTimeout(timeout_timer);

		if (req.status == 200) {

			if (req.responseText == '-1' && progress_received == true) {
				// do nothing, let the present progress state sit on the page
			}
			else if (req.responseText == 'Connecting...') {
				if (progress_received == false) {
					document.getElementById('progressBar').innerHTML = req.responseText;
				}
			}
			else {
				progress_received = true;
				document.getElementById('progressBar').innerHTML = req.responseText;
			}

		}

		setTimeout("updateProgressBar()", 1000);
	}
}

// the AJAX request did not return on time-- let's clear it and try another one
function checkTimeout() {
	req.abort();
	req = false;

	updateProgressBar();
}