/**
 * Auteur: Mathieu Kooiman 
 * http://www.scriptorama.nl/
 */

var uploading = false;
var colorSwitchThreshold = 50;

function attachUploadHandlers()
{
	$("#upload_form").submit ( beginUpload );

	if ($.browser.msie)
		$("#upload_iframe").bind('readystatechange', completeUpload );
	else
		$("#upload_iframe").bind('load', completeUpload);

}

/*
 * Update de visuele kant van de progress bar met de waarde in 'percentage'. Als
 * deze waarde groter is dan de waarde in colorSwitchThreshold (standaard 50) dan
 * wordt de klasse .progress-50-percent toegepast op de tekst. Zo kan de kleur
 * wijzigen van wit naar zwart, wat duidelijker is.
 */
function updateProgressBarGUI(percentage)
{
	$(".progress-bar .progress-bar-bg").width(percentage + "%");
	$(".progress-bar .progress-bar-text").text(percentage + "%");

	if (percentage > colorSwitchThreshold)
	{
		if (!$(".progress-bar .progress-bar-text").is(".progress-50-percent"))
		{
			$(".progress-bar .progress-bar-text").addClass('progress-50-percent');
		}
	} else if (percentage == 0) {
		$(".progress-bar .progress-bar-text").removeClass('progress-50-percent');
	}
}

/**
 * Initialiseer het upload systeem en zet de upload progress bar op 0.
 */
function beginUpload()
{
	uploading = true;

	updateProgressBarGUI(0);
	getUploadProgress();

	return true;
}

function completeUpload(ev)
{
	if ( uploading && ( ev.type && ( ev.type == 'load' || ev.type == "readystatechange" ) ) )
	{
		uploading = false;
		updateProgressBarGUI(100);
	}
}

function getUploadProgress()
{
	var upload_id = $('#UPLOAD_IDENTIFIER').val();
	var timestamp = new Date().getTime();

	$.getJSON ( 
		"report-progress.php",
		{ id: upload_id, t: timestamp },
		updateProgressBar
	);

	if (uploading)
	{
		window.setTimeout(getUploadProgress, 1000);
	}	
}

function updateProgressBar(jsonData)
{

	if (jsonData != null) {

		if (jsonData.errorCode == 0) 
		{
			var progress_text  = $(".progress-bar .progress-bar-text");
			var progress_bg    = $(".progress-bar .progress-bar-bg");

			var bytes_uploaded = parseInt(jsonData.progressData.bytes_uploaded);
			var bytes_total    = parseInt(jsonData.progressData.bytes_total);
			var percentage     = parseInt( (bytes_uploaded / bytes_total) * 100 );

			updateProgressBarGUI(percentage);
		}
	}
}

$(document).ready(attachUploadHandlers);

