var blnUpload = true;
var intTotalUploadSize = 0;
var strCurrentParentWindowId = '';

// Check the upload.
function uploadCheck(strParentWindowId)
{
	document.getElementById('upload_button').disabled = false;
	if (strParentWindowId !== undefined)
	{
		strCurrentParentWindowId = strParentWindowId;
	}
	uploadInit();
}

// Link the upload.
function uploadInit(strParentWindowId)
{
	if (strParentWindowId !== undefined)
	{
		strCurrentParentWindowId = strParentWindowId;
	}
	dualTransitionEffect('upload_file', 'upload_details', 'opacity', 1, 0, 10, 0.1, 400);
	document.getElementById('upload_button').disabled = true;
	ajax.open('GET', '/ajax/upload.php?action=link_upload');
	ajax.onreadystatechange = function()
	{
		if (ajax.readyState == 4 && ajax.status == 200)
		{
			var strUploadId = ajax.responseText;
			var objForm = document.getElementById('upload_form_1');
			objForm.setAttribute('action', '/cgi-bin/upload.pl?upload_id=' + strUploadId);
			objForm.submit();
			ajax1.open('GET', '/ajax/upload.php?action=set_progress&upload_id=' + strUploadId);
			ajax1.onreadystatechange = function()
			{
				if (ajax1.readyState == 4 && ajax1.status == 200)
				{
					var arrResponse = ajax1.responseText.split('|');
					intTotalUploadSize = arrResponse[0];
					total_kbytes = Math.round(intTotalUploadSize / 1024);
					uploadGetProgress(strUploadId, arrResponse[1], intTotalUploadSize);
				}
			}
			ajax1.send(null);
		}
	}
	ajax.send(null);
}

// Get the progress of this upload.
function uploadGetProgress(strUploadId, intStartTime, intTotalUploadSize)
{
	if (blnUpload)
	{
		ajax2.open('GET', '/ajax/upload.php?action=get_progress&upload_id=' + strUploadId + '&start_time=' + intStartTime + '&total_upload_size=' + intTotalUploadSize);
		ajax2.onreadystatechange = function()
		{
			if (ajax2.readyState == 4 && ajax2.status == 200)
			{
				var arrResponse = ajax2.responseText.split('|');
				if (arrResponse[0] == 1)
				{
					uploadSetProgress(arrResponse[1], arrResponse[2]);
					setTimeout("uploadGetProgress('" + strUploadId + "','" + intStartTime + "','" + intTotalUploadSize + "')", 1000);
				}
				else
				{
					blnUpload = false;
				}
			}
		}
		ajax2.send(null);
	}
}

// Calculate and display upload information
function uploadSetProgress(intTotalBytesRead, intLapsedTime)
{
	var intByteSpeed = 0;
	var intTimeRemaining = 0;

	if (intLapsedTime > 0)
	{
		intByteSpeed = intTotalBytesRead / intLapsedTime;
	}
	if (intByteSpeed > 0)
	{
		intTimeRemaining = Math.round((intTotalUploadSize - intTotalBytesRead) / intByteSpeed);
	}

	// Calculate time remaining.
	var intRemainingSeconds = (intTimeRemaining % 60);
	var intRemainingMinutes = (((intTimeRemaining - intRemainingSeconds) % 3600) / 60);
	var intRemainingHours = ((((intTimeRemaining - intRemainingSeconds) - (intRemainingMinutes * 60)) % 86400) / 3600);

	if (intRemainingSeconds < 10)
	{
		intRemainingSeconds = '0' + intRemainingSeconds;
	}
	if (intRemainingMinutes < 10)
	{
		intRemainingMinutes = '0' + intRemainingMinutes;
	}
	if (intRemainingHours < 10)
	{
		intRemainingHours = '0' + intRemainingHours;
	}

	document.getElementById('upload_progress_bar').style.width = Math.floor(380 * (parseInt(intTotalBytesRead, 10) / parseInt(intTotalUploadSize, 10))) + 'px';
	document.getElementById('upload_est_time_left').innerHTML = intRemainingHours + ':' + intRemainingMinutes + ':' + intRemainingSeconds;
	document.getElementById('upload_est_speed').innerHTML = Math.round(intByteSpeed / 1024);
}

function uploadCleanUp ()
{
	if (strCurrentParentWindowId != '')
	{
		parent.updateWindowContent(strCurrentParentWindowId);
		parent.subTaskKill(strCurrentParentWindowId);
	}
	else
	{
		document.getElementById('upfile_1').value = '';
		dualTransitionEffect('upload_details', 'upload_file', 'opacity', 1, 0, 10, 0.1, 400);
		document.getElementById('upload_button').disabled = false;
		blnUpload = false;
	}
}
