var uploadTimer = null;
var i = 0;

function AddUpload()	{
	i++;
	$('#Files').append(
		$('<p></p>')
				.attr("id", 'pcontent' + i)
				.append(
					$('<input />')
						.attr("type", 'file')
						.attr("size", 40)
						.attr("name", 'Content[]')
						.attr("id", 'content' + i)
				)
	);
}

function BeginUpload(uuid)
{
	/* Validate they have checked the agreement option */
	if (!document.getElementById('Agree').checked) {
		alert('Please check on the agreement.');
		return false;
	}

	/* Loop through all of the file uploads and get a sum of the filename lengths */
	var fileName = new Array();
	var fileToRemove = new Array();

	var Files = new Array();

	for (var loop = 0; loop <= i; loop++) {
		Files[loop] = document.getElementById('content' + loop);
	}

	var uploads = 0;
	var fileExists = false;

	for (i = 0; i < Files.length; i++) {
		fileExists = false;
		uploads += Files[i].value.length;

		for (j = 0; j < fileName.length; j++) {
			if (fileName[j] == Files[i].value) {
				fileExists = true;
			}
		}

		if (fileExists) {
			fileToRemove[fileToRemove.length] = Files[i];
		} else {
			fileName[fileName.length] = Files[i].value;
		}
	}

	for (i = 0; i < fileToRemove.length; i++) {
		$('p' + fileToRemove[i].id).remove();
	}

	/* If the sum of filename lengths = 0, alert user no file(s) chosen */
	if (!uploads) {
		alert('Please select a file to upload.');
		return false;
	}

	/* Display the "uploading" overlay */
	document.getElementById('Primary').className = 'Hidden';
	document.getElementById('Secondary').className = 'Visible';

	lastTime = new Date().getTime();
	lastRead = 0;
	uniqueId = uuid;

	uploadTimer = setTimeout(UpdateUploadInfo, 2000);
	return true;
}

var lastTime;
var lastRead;
var uniqueId;

function UpdateUploadInfo()
{
	var currentTime = new Date().getTime();

	i++;
	if (i == 10) {
		clearInterval(uploadTimer);
		uploadTimer = setTimeout(UpdateUploadInfo, 5000);
	} else {
		uploadTimer = setTimeout(UpdateUploadInfo, 2000);
	}

	$('#Loading').src = '../shared/images/loading.gif';

	$.ajax({
		url: '/upload-progress',
		dataType: 'json',
		headers: {"X-Progress-ID":uniqueId},
	  	success: function (upload)	{
			switch (upload.state) {
				case 'done':
					window.clearTimeout(uploadTimer);
					break;
				case 'uploading':
					if (upload.size == 0) {
						return;
					}
					var strSpeed = "";
					var strUploaded = "";
					var strTotal = "";
					var secRemaining = 0;
					var percent = 0;
					var strEstTime = "";
					var timeDifference = currentTime - lastTime;
					var uploadedSinceLast = upload.received - lastRead;
					var speed = 0;


					var timeDifference_sec = timeDifference / 1000;//convert interval in millis to sec
					var uploadedSinceLast_kb = uploadedSinceLast / 1024;//convert data read until now to kilobytes

					if (timeDifference_sec > 0) {
						speed = uploadedSinceLast_kb / timeDifference_sec;
					}

					//change global variable before alter data format
					lastRead = upload.received;
					lastTime = new Date().getTime();

					var currentRead = Math.round(upload.received / 1024);
					var total = Math.round(upload.size / 1024);
					speed = Math.round(speed / 1.024);


					var divide = (currentRead < 1024 && total < 1024);

					percent = currentRead / total;

					if (speed < 1024)
						strSpeed = Math.round((speed) * 10) / 10 + ' KB/s';
					else
						strSpeed = Math.round((speed / 1024) * 10) / 10 + ' MB/s';

					if (divide) {
						strUploaded = Math.round((currentRead) * 10) / 10 + ' KB';
						strTotal = Math.round((total) * 10) / 10 + ' KB';
					}
					else {
						strUploaded = Math.round((currentRead / 1024) * 10) / 10 + ' MB';
						strTotal = Math.round((total / 1024) * 10) / 10 + ' MB';
					}

					percent = Math.min(Math.round(percent * 1000) / 10, 100);

					if (speed > 0)
						secRemaining = (total - currentRead) / speed;


					var minutes = Math.max(Math.floor(secRemaining / 60), 0);
					var seconds = Math.round(Math.max(secRemaining % 60, 0));
					var strSec = "" + seconds;
					if (strSec.length < 2)
						strSec = "0" + strSec;

					strEstTime = minutes + ':' + strSec;

					$('#CurrentSpeed').html(strSpeed);
					$('#EstTime').html(strEstTime);
					$('#Progress').html(strUploaded + ' (' + strTotal + ' total)');
					$('#ProgressBarText').html(percent + '%');
					$('#InnerProgressBar').css("width", percent + '%');
					break;
				default:
					break;
			}
		}
	});
}

/*$(document).ready( function()	{
	$(".upload").uploadR(
		{
			uploadUrl 	: "/upload",
			serverProgress 	: true
		}
	);
});
*/
