var globalProgress, transactionId, storageServer, fileName;
function OnSucceededConfirm(result, eventArgs)
{
    var linkDiv = document.getElementById('linkDiv');            
    globalProgress.SetStatus(labelsArray[0]);
    linkDiv.innerHTML = "<a href=\""+result+"\" target=\"_blank\" class='average_blue'>"+fileName+"</a>";    
}

function OnSucceeded(result, eventArgs)
{
    // Page element to display feedback.            
    transactionId = result.TransactionId; 
    storageServer = result.ServerUrl;
    swfu.setUploadTargetURL("http://"+result.ServerUrl+"/upload_file.aspx?transactionId="+result.TransactionId);
    swfu.startUpload();       
}

function fileUploadStrat(fileObj)
{
    swfu.startUpload();
}
function fileQueued(fileObj) {
	try {
		fileName = fileObj.name;
		var selectedFileDiv = document.getElementById("selectedFileDiv");
		var isAllowPublication = document.getElementById("isAllowPublication");
		selectedFileDiv.innerHTML = fileObj.name;
		
		Floomby.MainService.GetFreeDataServerForWeb(fileObj.size, fileObj.name,"",isAllowPublication.checked,OnSucceeded)
		this.addFileParam(fileObj.id, "file_id", fileObj.id);		
	} catch (ex) { this.debugMessage(ex); }

}

function fileProgress(fileObj, bytesLoaded) {

	try {
		var percent = Math.ceil((bytesLoaded / fileObj.size) * 100)

		var progress = new FileProgress(fileObj,  this.getSetting("upload_target"));
		progress.SetProgress(percent);
		if (percent === 100) {
			globalProgress = progress;
			progress.SetStatus(labelsArray[1]);
//			progress.ToggleCancel(false, this);
		} else {
			progress.SetStatus(labelsArray[2]);
			progress.ToggleCancel(true, this);
		}
	} catch (ex) { this.debugMessage(ex); }
}

function fileComplete(fileObj, server_data) {
	try {
		var progress = new FileProgress(fileObj,  this.getSetting("upload_target"));
		//progress.SetComplete();		
//		progress.ToggleCancel(false);
	    Floomby.MainService.MsConfirm(transactionId, storageServer, OnSucceededConfirm);		
	} catch (ex) { this.debugMessage(ex); }
}


function fileCancelled(fileObj) {
	try {
		var progress = new FileProgress(fileObj,  this.getSetting("upload_target"));
		progress.SetCancelled();
		progress.SetStatus(labelsArray[3]);
		progress.ToggleCancel(false);
	}
	catch (ex) { this.debugMessage(ex); }
}

function queueComplete() {
	try {
        var progress = new FileProgress({ name: labelsArray[4] },  this.getSetting("upload_target"));
        progress.SetComplete();        
        progress.ToggleCancel(false);
    } catch (ex) { this.debugMessage(ex); }
}

function uploadError(error_code, fileObj, message) {
	try {
		var error_name = "";
		switch(error_code) {
			case SWFUpload.ERROR_CODE_QUEUE_LIMIT_EXCEEDED:
				error_name = labelsArray[5];
			break;
		}

		if (error_name !== "") {
			alert(error_name);
			return;
		}

		switch(error_code) {
			case SWFUpload.ERROR_CODE_ZERO_BYTE_FILE:
				image_name = "zerobyte.gif";
			break;
			case SWFUpload.ERROR_CODE_UPLOAD_LIMIT_EXCEEDED:
				image_name = "uploadlimit.gif";
			break;
			case SWFUpload.ERROR_CODE_FILE_EXCEEDS_SIZE_LIMIT:
				image_name = "toobig.gif";
			break;
			case SWFUpload.ERROR_CODE_HTTP_ERROR:
			case SWFUpload.ERROR_CODE_MISSING_UPLOAD_TARGET:
			case SWFUpload.ERROR_CODE_UPLOAD_FAILED:
			case SWFUpload.ERROR_CODE_IO_ERROR:
			case SWFUpload.ERROR_CODE_SECURITY_ERROR:
			default:
				//alert(message);
				image_name = "error.gif";
			break;
		}

		AddImage("images/" + image_name);
		
        var progress = new FileProgress(fileObj,  this.getSetting("upload_target"));
		progress.SetStatus(labelsArray[6]);
		progress.ToggleCancel(false);
		

	} catch (ex) { this.debugMessage(ex); }

}


/* ******************************************
 *	FileProgress Object
 *	Control object for displaying file info
 * ****************************************** */

function FileProgress(fileObj, target_id) {
	this.file_progress_id = "divFileProgress";

	this.fileProgressWrapper = document.getElementById(this.file_progress_id);
	if (!this.fileProgressWrapper) {
		this.fileProgressWrapper = document.createElement("div");
		this.fileProgressWrapper.className = "progressWrapper";
		this.fileProgressWrapper.id = this.file_progress_id;

		this.fileProgressElement = document.createElement("div");
		this.fileProgressElement.className = "progressContainer";

		var progressCancel = document.createElement("a");
		progressCancel.className = "progressCancel";
		progressCancel.href = "#";
		progressCancel.style.visibility = "hidden";
		progressCancel.appendChild(document.createTextNode(" "));

		var progressText = document.createElement("div");
		progressText.className = "progressName";
		progressText.appendChild(document.createTextNode(fileObj.name));

		var progressBar = document.createElement("div");
		progressBar.className = "progressBarInProgress";

		var progressStatus = document.createElement("div");
		progressStatus.className = "progressBarStatus";
		progressStatus.innerHTML = "&nbsp;";

		this.fileProgressElement.appendChild(progressCancel);
		this.fileProgressElement.appendChild(progressText);
		this.fileProgressElement.appendChild(progressStatus);
		this.fileProgressElement.appendChild(progressBar);

		this.fileProgressWrapper.appendChild(this.fileProgressElement);

		document.getElementById(target_id).appendChild(this.fileProgressWrapper);
		//FadeIn(this.fileProgressWrapper, 0);

	} else {
		this.fileProgressElement = this.fileProgressWrapper.firstChild;
		this.fileProgressElement.childNodes[1].firstChild.nodeValue = fileObj.name;
	}

	this.height = this.fileProgressWrapper.offsetHeight;

}
FileProgress.prototype.SetProgress = function(percentage) {
	this.fileProgressElement.className = "progressContainer green";
	this.fileProgressElement.childNodes[3].className = "progressBarInProgress";
	this.fileProgressElement.childNodes[3].style.width = percentage + "%";
}
FileProgress.prototype.SetComplete = function() {
	this.fileProgressElement.className = "progressContainer blue";
	this.fileProgressElement.childNodes[3].className = "progressBarComplete";
	this.fileProgressElement.childNodes[3].style.width = "";

}
FileProgress.prototype.SetError = function() {
	this.fileProgressElement.className = "progressContainer red";
	this.fileProgressElement.childNodes[3].className = "progressBarError";
	this.fileProgressElement.childNodes[3].style.width = "";

}
FileProgress.prototype.SetCancelled = function() {
	this.fileProgressElement.className = "progressContainer";
	this.fileProgressElement.childNodes[3].className = "progressBarError";
	this.fileProgressElement.childNodes[3].style.width = "";

}
FileProgress.prototype.SetStatus = function(status) {
	this.fileProgressElement.childNodes[2].innerHTML = status;
}

FileProgress.prototype.ToggleCancel = function(show, upload_obj) {
	this.fileProgressElement.childNodes[0].style.visibility = show ? "visible" : "hidden";
	if (upload_obj) {
		var file_id = this.file_progress_id;
		this.fileProgressElement.childNodes[0].onclick = function() { upload_obj.cancelUpload(file_id); return false; };
	}
}
