var ZZXUpload = function(form, url, complete,noprocess) {
	if (url === null || url === '') {
		alert('url 不能为空！');
		return false;
	}
	var _self = this;

	var ZZXUpload, formData;
	_self.formData = $(form).length > 0 ?  new FormData($(form)[0]) : new FormData();

	_self.url = url;
	_self.put = function(key, val) {
		_self.formData.append(key, val);
	}
	_self.upload = function(files) {
		uploadFiles(files);
		/*
		 * _self.files = files; _self.files.length > 0 ?
		 * uploadFile(_self.files.shift()) : '';
		 */
	}
	var processFiles = function(files) {
		var file, _i, _len;
		for (_i = 0, _len = files.length; _i < _len; _i++) {
			file = files[_i];
			file.processing = true;
			file.status = Dropzone.UPLOADING;
			$(file.previewTemplate).addClass("dz-processing");
		}
		return uploadFiles(files);
	}

	var uploadFiles = function(files) {
		var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;
		xhr = new XMLHttpRequest();
		for (_i = 0, _len = files.length; _i < _len; _i++) {
			file = files[_i];
			file.xhr = xhr;
		}
		xhr.open('post', _self.url, true);
		response = null;
		handleError = (function(_this) {
			return function() {
				var _j, _len1, _results;
				_results = [];
				for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
					file = files[_j];
				}
				return _results;
			};
		})(this);
		updateProgress = (function(_this) {
			return function(e) {
				var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;
				if (e != null) {
					progress = 100 * e.loaded / e.total;
					for (_j = 0, _len1 = files.length; _j < _len1; _j++) {
						file = files[_j];
						file.upload = {
							progress : progress,
							total : e.total,
							bytesSent : e.loaded
						};
					}
				} else {
					allFilesFinished = true;
					progress = 100;
					for (_k = 0, _len2 = files.length; _k < _len2; _k++) {
						file = files[_k];
						if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {
							allFilesFinished = false;
						}
						file.upload.progress = progress;
						file.upload.bytesSent = file.upload.total;
					}
					if (allFilesFinished) {
						return;
					}
				}
				_results = [];
				for (_l = 0, _len3 = files.length; _l < _len3; _l++) {
					file = files[_l];
					_results.push(uploadprogress(file, progress,
							file.upload.bytesSent));
				}
				return _results;
			};
		})(this);
		xhr.onload = (function(_this) {
			return function(e) {
				var _ref;
				if(files.length > 0){
					if (files[0].status === Dropzone.CANCELED) {
						return;
					}
				}
				if (xhr.readyState !== 4) {
					return;
				}
				response = xhr.responseText;
				if (xhr.getResponseHeader("content-type")
						&& ~xhr.getResponseHeader("content-type").indexOf(
								"application/json")) {
					try {
						response = JSON.parse(response);
					} catch (_error) {
						e = _error;
						response = "Invalid JSON response from server.";
					}
				}
				if(!noprocess){
					updateProgress();
				}
				typeof complete == 'function' ? complete(xhr.status,xhr.responseText) : '';
				
				if (!((200 <= (_ref = xhr.status) && _ref < 300))) {
					return handleError();
				} else {
					return true;
				}
			};
		})(this);
		xhr.onerror = (function(_this) {
			return function() {
				if (files[0].status === Dropzone.CANCELED) {
					return;
				}
				return handleError();
			};
		})(this);
		progressObj = (_ref = xhr.upload) != null ? _ref : xhr;
		progressObj.onprogress = updateProgress;
		headers = {
			"Accept" : "application/json",
			"Cache-Control" : "no-cache",
			"X-Requested-With" : "XMLHttpRequest"
		};
		for (headerName in headers) {
			headerValue = headers[headerName];
			xhr.setRequestHeader(headerName, headerValue);
		}
		formData = _self.formData;
		if(files.length > 0){
			for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {
				
				var paramName = files[i].paramName == null ? files[i].name : files[i].paramName;
				paramName = paramName + '_' + i;
				formData.append(paramName, files[i]);
			}
		}
		return xhr.send(formData);
	};
	var uploadprogress = function(file, progress, bytesSent) {
		var node, _i, _len, _ref, _results;
		if (file.previewElement) {
			_ref = $(file.previewElement).find('[data-dz-uploadprogress]');
			_results = [];
			for (_i = 0, _len = _ref.length; _i < _len; _i++) {
				node = _ref[_i];
				if (node.nodeName === 'PROGRESS') {
					_results.push(node.value = progress);
				} else {
					_results.push(node.style.width = "" + progress + "%");
				}
			}
			return _results;
		}
	}

	var uploadFile = function(file) {
		var formData, handleError, input, inputElement, inputName, progressObj, xhr, _i, _len, _ref, _ref1, _this = this;
		xhr = new XMLHttpRequest();
		formData = new FormData();
		formData.append(file.name, file);
		xhr.open("POST", _self.url, true);
		handleError = function() {
			return _this.errorProcessing(file, xhr.responseText
					|| ("Server responded with " + xhr.status + " code."));
		};
		xhr.onload = function(e) {
			var response;
			if (xhr.status !== 200) {
				return handleError();
			} else {
				var $preview = $(file.previewTemplate).find(
						".progress-bar-success");
				$(file.previewTemplate).find(".progress-bar-success").css({
					width : "" + 100 + "%"
				});
				response = xhr.responseText;
				if (~xhr.getResponseHeader("content-type").indexOf(
						"application/json")) {
					response = $.parseJSON(response);
				}
				$(file.previewTemplate).addClass("success");
				previewTemplate: "<div class=\"preview file-preview\">\n  <div class=\"details\">\n   <div class=\"filename\"><span></span></div>\n  </div>\n  <div class=\"progress\"><span class=\"upload\"></span></div>\n  <div class=\"success-mark\"><span>✔</span></div>\n  <div class=\"error-mark\"><span>✘</span></div>\n  <div class=\"error-message\"><span></span></div>\n</div>"
				_self.files.length > 0 ? uploadFile(_self.files.shift()) : '';
				return true;
			}
		};
		xhr.onerror = function() {
			return handleError();
		};
		progressObj = (_ref1 = xhr.upload) != null ? _ref1 : xhr;
		progressObj.onprogress = function(e) {
			var progress = Math.min(100, (e.loaded / e.total) * 100);
			var $preview = $(file.previewTemplate)
					.find(".progress-bar-success").css({
						width : "" + Math.max(0, progress + "%")
					});
			return true;
		};
		xhr.setRequestHeader("Accept", "application/json");
		xhr.setRequestHeader("Cache-Control", "no-cache");
		xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
		xhr.setRequestHeader("X-File-Name", file.name);
		return xhr.send(formData);
	};
};
/*document.write("<script src='assets/js/jquery.colorbox-min.js'></script>");
$(function($) {
	
	var $overflow = '';
	var colorbox_params = {
		rel: 'colorbox',
		reposition:true,
		scalePhotos:true,
		scrolling:false,
		previous:'<i class="ace-icon fa fa-arrow-left"></i>',
		next:'<i class="ace-icon fa fa-arrow-right"></i>',
		close:'&times;',
		current:'{current} of {total}',
		maxWidth:'100%',
		maxHeight:'100%',
		onOpen:function(){
			$overflow = document.body.style.overflow;
			document.body.style.overflow = 'hidden';
		},
		onClosed:function(){
			document.body.style.overflow = $overflow;
		},
		onComplete:function()	{
			$.colorbox.resize();
		}
	};
	$('.ace-thumbnails [data-rel="colorbox"]').colorbox(colorbox_params);
	//let's add a custom loading icon
	$("#cboxLoadingGraphic").html("<i class='ace-icon fa fa-spinner orange'></i>");
 });*/

function delFile(fileid){
	if(fileid!=undefined && fileid!="" && confirm('您确定要删除吗？')){
		$("#"+fileid).remove();
		var ids = $("#delFileIds").val();
		if(ids==undefined || ids==""){
			ids=fileid;
			$("#delFileIds").val(ids);
		}else{
			var tmp=ids+","+fileid;
			$("#delFileIds").val(tmp);
		}
	}
}