﻿
/* This is an example of how to cancel all the files queued up.  It's made somewhat generic.  Just pass your SWFUpload
object in to this method and it loops through cancelling the uploads. */
function cancelQueue(instance) {
	document.getElementById(instance.customSettings.cancelButtonId).disabled = true;
	instance.stopUpload();
	var stats;
	
	do {
		stats = instance.getStats();
		instance.cancelUpload();
	} while (stats.files_queued !== 0);
	
}

/* **********************
   Event Handlers
   These are my custom event handlers to make my
   web application behave the way I went when SWFUpload
   completes different tasks.  These aren't part of the SWFUpload
   package.  They are part of my application.  Without these none
   of the actions SWFUpload makes will show up in my application.
   ********************** */
function fileDialogStart() {
	/* I don't need to do anything here */
}
function fileQueued(file) {
	try {
		// You might include code here that prevents the form from being submitted while the upload is in
		// progress.  Then you'll want to put code in the Queue Complete handler to "unblock" the form
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setStatus("Pending...");
		progress.toggleCancel(true, this);
		//kfping
		if(isExistFile(file)){
			E("msgDiv").innerHTML=file.name+"文件已存在！";
			window.setInterval("showMsgDiv()",2000);
			this.cancelUpload(file.id);
		}	
		//kfping
		//alert("fileName:"+file.name+" fileSize:"+file.size);
	} catch (ex) {
		this.debug(ex);
	}

}

function fileQueueError(file, errorCode, message) {
	try {
		if (errorCode === 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.")));
			//kfping
			alert("一次只能上传"+this.settings.file_upload_limit+"张图片！");
			return;
		}

		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode) {
		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
			progress.setStatus("File is too big.");
			this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			//kfping
			uploadTotal=uploadTotal-file.size;
			break;
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
			progress.setStatus("Cannot upload Zero Byte files.");
			this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
			progress.setStatus("Invalid File Type.");
			this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
			alert("You have selected too many files.  " +  (message > 1 ? "You may only add " +  message + " more files" : "You cannot add any more files."));
			break;
		default:
			if (file !== null) {
				progress.setStatus("Unhandled Error");
			}
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
	} catch (ex) {
        this.debug(ex);
    }
}

function fileDialogComplete(numFilesSelected, numFilesQueued) {
	try {
		if (this.getStats().files_queued > 0) {
			document.getElementById(this.customSettings.cancelButtonId).disabled = false;
			//kfping
			E("uploadNum").innerHTML=uploadFileArray.length;
			var uploadSize=Math.ceil(uploadTotal/1024);
			E("uploadSize").innerHTML=getShowFileSize(uploadSize);
			overLimitSize();
		}
		
		/* I want auto start and I can do that here */
		//this.startUpload();
	} catch (ex)  {
        this.debug(ex);
	}
}

function uploadStart(file) {
	try {
		/* I don't want to do any file validation or anything,  I'll just update the UI and return true to indicate that the upload should start */
		//kfping
		
		//this.addPostParam("fileSize", file.size);
		//var fileName=encodeURI(file.name);
		//this.addPostParam("fileName",fileName);
		//this.setUseQueryString("true");
		
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setStatus("Uploading...");
		progress.toggleCancel(true, this);
	}
	catch (ex) {
	}
	
	return true;
}

function uploadProgress(file, bytesLoaded, bytesTotal) {

	try {
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);

		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setProgress(percent);
		progress.setStatus("Uploading...");
	} catch (ex) {
		this.debug(ex);
	}
}

function uploadSuccess(file, serverData) {
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setComplete();
		progress.setStatus("Complete.");
		progress.toggleCancel(false);
		//kfping
		var nowNum=parseInt(E("uploadNum").innerHTML)-1;
		E("uploadNum").innerHTML=nowNum;
		uploadTotal=uploadTotal-file.size;
		E("uploadSize").innerHTML=getShowFileSize(Math.ceil(uploadTotal/1024));	

	} catch (ex) {
		this.debug(ex);
	}
}

function uploadComplete(file) {
	try {
		/*  I want the next upload to continue automatically so I'll call startUpload here */
		if (this.getStats().files_queued === 0) {
			document.getElementById(this.customSettings.cancelButtonId).disabled = true;
			//kfping
			if(this.getStats().upload_errors == 0)
				if(uploadModel=="upload")
					E("doUpload").innerHTML="<div style='font-size:14px;'><img src='"+basePath+"/common/img/icon_confirm.jpg'>上传成功！</div><div style='font-size:14px;margin-top:5px'>接下来<a  href='batchEditor.jsf?t="+uploadTime+"'>添加标题、描述</a>，或者<a  href='#' onclick='window.location.reload();'>继续上传</a>。</div>";
				else{
					E("doUpload").innerHTML="<div style='font-size:14px;'><img src='"+basePath+"/common/img/icon_confirm.jpg'>上传成功！正在插入图片，请稍后...</div>";
					insertSwfuploadPic();
				}
			else if(this.getStats().successful_uploads>0&&this.getStats().upload_errors>0 ){
				if(uploadModel=="upload")
					E("doUpload").innerHTML="<div style='font-size:14px;'><img src='"+basePath+"/common/img/icon_error.jpg'>部分图片上传失败！</div><div style='font-size:14px;margin-top:5px'>可能文件名太长或其他原因！</div><div style='font-size:14px;margin-top:5px'><a  href='batchEditor.jsf?t="+uploadTime+"'>编辑已上传图片</a>，或者<a  href='batchUpload.jsf'>继续上传</a></div>";
				else{
					E("doUpload").innerHTML="<div style='font-size:14px;'><img src='"+basePath+"/common/img/icon_error.jpg'>部分图片上传失败！正在插入图片，请稍后...</div>";	
					insertSwfuploadPic();
				}
			}else{
				E("doUpload").innerHTML="<div style='font-size:14px;'><img src='"+basePath+"/common/img/icon_error.jpg'>呃...上传失败了。 可能网络繁忙，请试一下<a href='"+basePath+"/pic/uploadByEmail.jsf'>邮件上传</a>吧。</div>";
			}
		} else {	
			this.startUpload();
		}
	} catch (ex) {
		this.debug(ex);
	}

}

function uploadError(file, errorCode, message) {
	try {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			progress.setStatus("Upload Error: " + message);
			this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
			progress.setStatus("Configuration Error");
			this.debug("Error Code: No backend file, 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.UPLOAD_LIMIT_EXCEEDED:
			progress.setStatus("Upload limit exceeded.");
			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
			progress.setStatus("File not found.");
			this.debug("Error Code: The file was not found, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
			progress.setStatus("Failed Validation.  Upload skipped.");
			this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			if (this.getStats().files_queued === 0) {
				document.getElementById(this.customSettings.cancelButtonId).disabled = true;
			}
			progress.setStatus("Cancelled");
			//kfping
			progress.setCancelled(file);
			//progress.setCancelled();
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			progress.setStatus("Stopped");
			break;
		default:
			progress.setStatus("Unhandled Error: " + error_code);
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
	} catch (ex) {
        this.debug(ex);
    }
}
//kfping
//kfping 
//over limit
function overLimitSize(){
	if(canUpload==0){
		if(uploadTotal>0)
			E("btnUpload").disabled = false;
		else
			E("btnUpload").disabled = true;		
		return ;
	}else if(canUpload < 0){
		upload1.setButtonDisabled(true);
		E("btnUpload").disabled = true;
		E("msgDiv").innerHTML="本月空间已用完，请到上传页面使用积分或升级VIP！";
		E("warringImg").style.display="";
		window.setInterval("showMsgDiv()",8000);
		return ;
	}
	var uploadSize=Math.ceil(uploadTotal/1024);
	if(uploadSize>canUpload){
		//E("btnSelect").disabled = true;
		upload1.setButtonDisabled(true);
		E("btnUpload").disabled = true;
		E("msgDiv").innerHTML="可用空间不足，请减少上传数！";
		E("warringImg").style.display="";
		window.setInterval("showMsgDiv()",5000);
	}else{
		E("warringImg").style.display="none";
		//E("btnSelect").disabled = false;
		upload1.setButtonDisabled(false);
		if(uploadTotal>0)
			E("btnUpload").disabled = false;
		else
			E("btnUpload").disabled = true;	
	}
}
//fileSize kb
function getShowFileSize(fileSize){
	var size=ForDight(parseFloat(fileSize/1024),2);
	if(size>1)
		return size+"MB";
	else
		return fileSize+"KB";	
}
function ForDight(Dight,How){
	Dight = Math.round (Dight*Math.pow(10,How))/Math.pow(10,How);
	return Dight;
}
function showMsgDiv(){
	//E("msgDiv").style.display="none";
	E("msgDiv").innerHTML="";
}
function isExistFile(file){	
	for(var i=0,len=uploadFileArray.length;i<len;i++){
		if(uploadFileArray[i].name==file.name){			
			return true;
		}
	}
	uploadFileArray[uploadFileArray.length]=file;
	return false;	
}
function rmUploadFile(fileID){
	var tmpArray=new Array();
	for(var i=0,len=uploadFileArray.length;i<len;i++){
		if(uploadFileArray[i].id!=fileID){				
			tmpArray[tmpArray.length]=uploadFileArray[i];
		}
	}
	uploadFileArray=tmpArray;
}  