text: /*set handlers here*/
  var swfuploadhandler={
  	init:function(settings,index){
  		settings=$.extend(true,{},swfuploadefaults,settings);
  		swfuploadhandler["SWFUPLOAD_"+settings.custom_settings.form.attr("id")+"_"+index]=new SWFUpload(settings);
  	},
  	
  	swfUploadLoaded:function(){
  			
  	},
  	
  	uploadStart:function(){
  		//this.customSettings.form.find(".fsUploadprogress").show();
  	},
  	
  	uploadDone:function(){
  		//this.customSettings.form.find(".fsUploadprogress").hide();
  		this.customSettings.showmsg("已成功上传文件！",2);
  		//this.customSettings.form.submit();
  	},
  	
  	fileDialogStart:function(){
  		this.customSettings.form.find("input[plugin='swfupload']").val("");
  		this.cancelUpload();
  	},
  	
  	fileQueueError:function(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:
  				this.customSettings.showmsg("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.")),3);
  				return;
  			case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
  				this.customSettings.showmsg("The file you selected is too big.",3);
  				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:
  				this.customSettings.showmsg("The file you selected is empty.  Please select another file.",3);
  				this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  				return;
  			case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
  				this.customSettings.showmsg("The file you choose is not an allowed file type.",3);
  				this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  				return;
  			default:
  				swfu.customSettings.showmsg("An error occurred in the upload. Try again later.",3);
  				this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  				return;
  			}
  		} catch (e) {}	
  	},
  	
  	fileQueued:function(file){
  		try {
  			this.customSettings.form.find("input[plugin='swfupload']").val(file.name);
  		} catch (e) {}
  	},
  	
  	fileDialogComplete:function(numFilesSelected, numFilesQueued){
  		this.startUpload();
  	},
  	
  	uploadprogress:function(file, bytesLoaded, bytesTotal){
  		try {
  			var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
  			this.customSettings.showmsg("已上传："+percent+"%",1);
  			//this.customSettings.form.find(".fsUploadprogress").text("已上传："+percent+"%");
  		} catch (e) {}
  	},
  	
  	uploadSuccess:function(file, serverData){
  		try {
  			if (serverData === " ") {
  				this.customSettings.upload_successful = false;
  			} else {
  				this.customSettings.upload_successful = true;
  				this.customSettings.form.find("input[pluginhidden='swfupload']").val(serverData);
  			}
  		} catch (e) {}
  	},
  	
  	uploadComplete:function(file){
  		try {
  			if (this.customSettings.upload_successful) {
  				//this.setButtonDisabled(true);
  				swfuploadhandler.uploadDone.call(this);
  			} else {
  				this.customSettings.form.find("input[plugin='swfupload']").val("");
  				this.customSettings.showmsg("There was a problem with the upload.\nThe server did not accept it.",3);
  			}
  		} catch (e) {}	
  	},
  	
  	uploadError:function(file, errorCode, message){
  		try {
  			if (errorCode === SWFUpload.UPLOAD_ERROR.FILE_CANCELLED) {
  				// Don't show cancelled error boxes
  				return;
  			}
  			this.customSettings.form.find("input[plugin='swfupload']").val("");
  	
  			// 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:
  				this.customSettings.showmsg("There was a configuration error.  You will not be able to upload a resume at this time.",3);
  				this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
  				return;
  			case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
  				this.customSettings.showmsg("You may only upload 1 file.",3);
  				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:
  				this.customSettings.showmsg("An error occurred in the upload. Try again later.",3);
  				this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
  				return;
  			}
  		} catch (ex) {}
  	}
  	
  }
  
  var swfuploadefaults={
  	file_size_limit : "10 MB",
  	file_types : "*.*",
  	file_types_description : "All Files",
  	file_upload_limit : "0",
  	file_queue_limit : "10",
  	button_placeholder_id : "spanButtonPlaceholder",
  	
  	file_post_name: "resume_file",
  	upload_url: "demo/plugin/swfupload/upload.php",
  	button_image_url: "demo/plugin/swfupload/XPButtonUploadText_61x22.png",
  	button_width: 61,
  	button_height: 22,
  	flash_url: "demo/plugin/swfupload/swfupload.swf",
  	
  	swfupload_loaded_handler : swfuploadhandler.swfUploadLoaded,
  	file_dialog_start_handler: swfuploadhandler.fileDialogStart,
  	file_queued_handler : swfuploadhandler.fileQueued,
  	file_queue_error_handler : swfuploadhandler.fileQueueError,
  	file_dialog_complete_handler : swfuploadhandler.fileDialogComplete,
  	upload_start_handler : swfuploadhandler.uploadStart,
  	upload_progress_handler : swfuploadhandler.uploadprogress,
  	upload_error_handler : swfuploadhandler.uploadError,
  	upload_success_handler : swfuploadhandler.uploadSuccess,
  	upload_complete_handler : swfuploadhandler.uploadComplete,
  
  	custom_settings:{},
  	debug: false
  }
  
  //$(function(){
  	//独立触发事件;
  	//var custom={
  	//	custom_settings:{
  	//		form:$this,
  	//		showmsg:function(msg){
  	//			alert(msg);	
  	//		}	
  	//	}	
  	//}
  	//swfuploadhandler.init(custom);	
  //})
  