var total = 0;
var done = 0;
var percent = 0;
var filename = "";

function fileQueueError(file, errorCode, message) {
	try {
		var imageName = "error.gif";
		var errorName = "";
		if (errorCode === SWFUpload.errorCode_QUEUE_LIMIT_EXCEEDED) {
			errorName = "You have attempted to queue too many files.";
		}

		if (errorName !== "") {
			alert(errorName);
			return;
		}

		switch (errorCode) {
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
			imageName = "zerobyte.gif";
			break;
		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
			imageName = "toobig.gif";
			break;
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
		default:
			alert(message);
			break;
		}

		addImage("images/" + imageName);

	} catch (ex) {
		this.debug(ex);
	}

}

function fileDialogComplete(numFilesSelected, numFilesQueued) {
	total += numFilesSelected;
	
	// Start uploading:
	if (numFilesQueued > 0)
	{
		document.getElementById("progress").style.display = "block";
		this.startUpload();
	}
}

function uploadProgress(file, bytesLoaded) {
	filename = file;
	percent = Math.ceil((bytesLoaded / file.size) * 100);
	
	updateProgress();
}

function uploadSuccess(file, serverData) {
	percent = 0;
	done++;
	updateProgress();
	addImage("thumbnail.php?id=" + serverData);
}

function uploadComplete(file)
{
	// Start uploading again or stop it:
	if (this.getStats().files_queued > 0)
		this.startUpload();
	else
		updateProgress(1);
}

function updateProgress(complete)
{
	if(complete)
	{
		document.getElementById("state").innerHTML = 100 +"%";
		document.getElementById("process").style.width = 100 +"%";
		document.getElementById("file").innerHTML = "";
		
		document.getElementById("state2").innerHTML = 100 +"%";
		document.getElementById("process2").style.width = 100 +"%";
		document.getElementById("done").innerHTML = "Voltooid!";
	}
	else
	{
		document.getElementById("state").innerHTML = percent +"%";
		document.getElementById("process").style.width = percent +"%";
		document.getElementById("file").innerHTML = filename.name;
		
		var percent2 = Math.floor(percent / total) + Math.floor((done / total) * 100);
		document.getElementById("state2").innerHTML = percent2 +"%";
		document.getElementById("process2").style.width = percent2 +"%";
		document.getElementById("done").innerHTML = done + " van de " + total + " voltooid.";
	}
}

function uploadError(file, errorCode, message) {
	var imageName =  "error.gif";
	var progress;
	try {
		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			// Cancelled
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			// Stopped
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			imageName = "uploadlimit.gif";
			break;
		default:
			alert(message + "|" + errorCode + "|" + file);
			for(var x in file)
			{
				alert(x +"|" + file[x]);
			}
			break;
		}

		addImage("images/" + imageName);

	} catch (ex3) {
		this.debug(ex3);
	}

}


function addImage(src) {
	var newImg = document.createElement("img");
	newImg.style.margin = "5px";

	document.getElementById("thumbnails").appendChild(newImg);
	if (newImg.filters) {
		try {
			newImg.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 0;
		} catch (e) {
			// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
			newImg.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + 0 + ')';
		}
	} else {
		newImg.style.opacity = 0;
	}

	newImg.onload = function () {
		fadeIn(newImg, 0);
	};
	newImg.src = src;
}

function fadeIn(element, opacity) {
	var reduceOpacityBy = 5;
	var rate = 30;	// 15 fps


	if (opacity < 100) {
		opacity += reduceOpacityBy;
		if (opacity > 100) {
			opacity = 100;
		}

		if (element.filters) {
			try {
				element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
			} catch (e) {
				// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
				element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';
			}
		} else {
			element.style.opacity = opacity / 100;
		}
	}

	if (opacity < 100) {
		setTimeout(function () {
			fadeIn(element, opacity);
		}, rate);
	}
}
