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);