function swfUploadLoaded() {
	var btnSubmit = document.getElementById("btnSubmit");
	
	btnSubmit.onclick = doSubmit;
	//btnSubmit.disabled = true;
	
	swfu.customSettings['validation']();
}

function validateForm() {
}

function fileBrowse() {
	//this.cancelUpload();
	this.selectFile();
}


// Called by the submit button to start the upload
function doSubmit(e) {
	e = e || window.event;
	if (e.stopPropagation) {
		e.stopPropagation();
	}
	e.cancelBubble = true;
	
	if (swfu.customSettings['validation'] != undefined ) {
		ret = swfu.customSettings['validation']();
		if (ret.length > 0)
		{
			alert(ret);
			return false;
		}
	}
	try {
		if (swfu.getStats().files_queued > 0) {
			$('form_spinner').show();
			beginSending();
		}
	} catch (ex) {
		alert(ex);
	}
	return false;
}

function uploadDone() {
	
}


function fileQueueError(file, errorCode, message)  {
	try {
		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch (errorCode) {
		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;
		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;
		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;
		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;
		default:
			alert("An error occurred in the upload. Try again later.");
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}
	} catch (e) {
	}
}

function fileQueued(file) {
        try {
	        var status = document.getElementById("divStatus");
			queued = swfu.getStats().files_queued;
        	status.innerHTML = "Queued: " + queued;
			
                var progress = new FileProgress(file, this.customSettings.progress_target);
                progress.setStatus("Pending...");
                progress.toggleCancel(true, this);

        } catch (ex) {
                this.debug(ex);
        }

}

//function fileQueued(file) {
//	try {
//		var txtFileName = document.getElementById("txtFileName");
//		txtFileName.value = file.name;
//	} catch (e) {
//	}

//}
function fileDialogComplete(numFilesSelected, numFilesQueued) {
	swfu.customSettings['validation']();
}

function fileDialogStart() {
        //this.cancelUpload();
}
function uploadProgress(file, bytesLoaded, bytesTotal) {

	try {
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);

		var progress = new FileProgress(file, this.customSettings.progress_target);
		progress.setProgress(percent);
		progress.setStatus("Uploading...");
	} catch (e) {
	}
}

function uploadSuccess(file, serverData) {
	try {
		var progress = new FileProgress(file, this.customSettings.progress_target);
		progress.setComplete();
		progress.setStatus("Complete.");
		progress.toggleCancel(false);

		if (serverData.indexOf("success") != -1) {
			this.customSettings.upload_successful = true;
			this.customSettings.failure_message = "";
		} else {
			this.customSettings.upload_successful = false;
			this.customSettings.failure_message = serverData;
			a = this.getStats();
			a.successful_uploads --;
			a.upload_errors ++;
			this.setStats(a);
		}
		
		
	} catch (e) {
	}
}

function uploadComplete(file) {
	try {		
		if (this.customSettings.upload_successful) {
			if (this.getStats().files_queued === 0) {
				//document.getElementById("btnBrowse").disabled = "true";
				uploadDone();
				window.location= swfu.customSettings['success_url'];		
			} else {
				queueComplete(swfu.getStats().successful_uploads);
				if (swfu.customSettings['update_title']) {
					swfu.customSettings['update_title'](file.index+1);
				}
			}
		} else {
			//file.id = "singlefile";	// This makes it so FileProgress only makes a single UI element, instead of one for each file
			if (this.customSettings.progress == undefined || this.customSettings.progress.height == 0) {
				this.customSettings.progress = new FileProgress(file, this.customSettings.progress_target);	
			}
		    var progress = new FileProgress(file, this.customSettings.progress_target);
			progress.setError();
			progress.setStatus(this.customSettings.failure_message);
			progress.toggleCancel(false);
			
			swfu.customSettings['validation']();

			//alert("There was a problem with the upload.\nThe server did not accept it.");
			//window.location= swfu.customSettings['failure_url'];		
			progress.toggleCancel(true);		
			if (this.getStats().files_queued === 0) {
				 if (this.getStats().successful_uploads > 0) {
					//document.getElementById("btnBrowse").disabled = "true";
					uploadDone();
					window.location= swfu.customSettings['success_url'];		
				 }else {
					$('form_spinner').fade('slow');
				 }
			}
		}
	} catch (e) {
	}
}

function uploadError(file, errorCode, message) {
	try {
		swfu.customSettings['validation']();
		
		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch (errorCode) {
		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;
		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;
		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: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}

		//file.id = "singlefile";	// This makes it so FileProgress only makes a single UI element, instead of one for each file
		if (this.customSettings.progress == undefined || this.customSettings.progress.height == 0) {
			this.customSettings.progress = new FileProgress(file, this.customSettings.progress_target);	
		}
		var progress = new FileProgress(file, this.customSettings.progress_target);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode) {
		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 (ex) {
	}
}
function beginSending() {
  elements = document.getElementById(swfu.customSettings['form_name']).elements
  form_values = new Array()
  for(i=0; i < elements.length; i++) {
    name = elements[i].name
    if (name) {
      value = '';
      switch(elements[i].type) {
        case 'select' :
          value = elements[i].options[elements[i].selectedIndex].value
          break;
        case 'radio':
        case 'checkbox':
          value = elements[i].checked ? 1: 0;
          break;
        default:
          value = elements[i].value
          break;
      }
      swfu.addPostParam(name, value);
    }
  }

  swfu.addPostParam('op', 'SWFSubmit');
  swfu.startUpload();
}

// This event comes from the Queue Plugin
function queueComplete(numFilesUploaded) {
        var status = document.getElementById("divStatus");
		queued = swfu.getStats().files_queued;
		success = swfu.getStats().successful_uploads;
		failed = swfu.getStats().upload_errors;
        status.innerHTML = "Queued: " + queued +", Uploaded:" + success +", Failed: " + failed;
}