var swf_upload_control=null;
function load_swf_uploader(libfile_id, pageID, subpageID){
	swf_upload_control = new SWFUpload({
		// Backend settings
		upload_url: "/special/libfile_files/libfile_form.php",	// Relative to the SWF file, you can use an absolute URL as well.
		file_post_name: "libfile_file",
		
		post_params : {
			"libfile_id" : libfile_id.toString(),
			"pageID" : pageID.toString(),
			"subpageID" : subpageID.toString(),
			"action" : "receive_upload"
		},
		
		button_placeholder_id: "spanButtonPlaceHolder",
 		button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES, button_disable : false, 
		button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT, 
		button_width : 100, 
		button_height : 25, 
		button_image_url: "/images/select_file.png",
		
		// Flash file settings
		file_size_limit : "102400",	// 10 MB
		file_types : "*.pdf;*.mp3;*.mpg;*.mpeg;*.wmv;*.mov;*.wav",	// or you could use something like: "*.doc;*.wpd;*.pdf",
		file_types_description : "All Files",
		file_upload_limit : "0", // Even though I only want one file I want the user to be able to try again if an upload fails
		file_queue_limit : "0", // this isn't needed because the upload_limit will automatically place a queue limit

		file_dialog_start_handler : fileDialogStart,
		file_queued_handler : fileQueued,
		file_queue_error_handler : fileQueueError,
		
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,

		// Flash Settings
		flash_url : "/include/swfUpload/swfupload_f9.swf",	// Relative to this file

		custom_settings : {
			upload_successful : false
		},
		
		// Debug settings
		debug: true
	});
}
function fileQueueError(fileObj, error_code, message)  {
//	try {
		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch(error_code) {
			case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
				alert("You have attempted to queue too many files.\n" + (message == 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
				return;
				break;
			case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
				alert("The file you selected is too big.");
				this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				return;
				break;
			case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
				alert("The file you selected is empty.  Please select another file.");
				this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				return;
				break;
			case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
				alert("The file you choose is not an allowed file type.");
				this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				return;
				break;
			default:
				alert("An error occurred in the upload. Try again later.");
				this.debug("Error Code: " + error_code + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				return;
				break;
		}
//	} catch (e) {}
}

function fileDialogStart (){

}
	
	function fileQueued(fileObj) {
//	try {
		var txtFileName = document.getElementById("txtFileName");
		txtFileName.value = fileObj.name;
//	} catch (e) { }

}

function uploadProgress(fileObj, bytesLoaded, bytesTotal) {
//	try {
		document.getElementById('progress_box').style.display='block';
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100)
		document.getElementById('progress_text').innerHTML="Uploading "+fileObj.name+" ("+percent.toString()+"%)...";
		document.getElementById('progress_bar').style.width=percent.toString() + '%';
//	} catch (e) { }
}

function uploadSuccess(fileObj, server_data) {
//	try {
		document.getElementById('progress_box').style.display='none';
		if(server_data.replace(/[\s]/,'')==''){
			this.customSettings.upload_successful=false;
		}else{
			this.customSettings.upload_successful=true;
			document.getElementById('hidFileID').value=server_data;
		}
//	} catch (e) { }
}

function uploadComplete(fileObj) {
//	try {
	document.getElementById('upload_form').style.display='block';
	document.getElementById('progress_box').style.display='none';
		if (this.customSettings.upload_successful) {
		  document.getElementById("txtFileName").value='';
		  edit_window.setOnLoad('');
		  edit_window.submit_form('libfile_form');
		} else {
			var txtFileName = document.getElementById("txtFileName");
			txtFileName.value = "";
			alert("There was a problem with the upload.\nThe server did not accept it.");
		}
//	} catch (e) {  }
}
function uploadError(fileObj, error_code, message) {
//	try {
	document.getElementById('upload_form').style.display='block';
	document.getElementById('progress_box').style.display='none';
		var txtFileName = document.getElementById("txtFileName");
		txtFileName.value = "";
	
		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch(error_code) {
			case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
				alert("There was a configuration error.  You will not be able to upload a resume at this time.");
				this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
				return;
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
				alert("You may only upload 1 file.");
				this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				return;
				break;
			case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
				break;
			default:
				alert("An error occurred in the upload. Try again later.");
				this.debug("Error Code: " + error_code + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				return;
				break;
		}


		switch(error_code) {
			case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
				progress.SetStatus("Upload Error");
				this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
				progress.SetStatus("Upload Failed.");
				this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.IO_ERROR:
				progress.SetStatus("Server (IO) Error");
				this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
				progress.SetStatus("Security Error");
				this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
				progress.SetStatus("Upload Cancelled");
				this.debug("Error Code: Upload Cancelled, File name: " + file.name + ", Message: " + message);
				break;
			case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
				progress.SetStatus("Upload Stopped");
				this.debug("Error Code: Upload Stopped, File name: " + file.name + ", Message: " + message);
				break;
		}
//	} catch (e) {}
}
