public/assets/js/core/fineuploader/jquery.fineuploader-3.4.1.min.js

Summary

Maintainability
A
0 mins
Test Coverage
var qq=function(a){return{hide:function(){a.style.display="none";return this},attach:function(b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c);return function(){qq(a).detach(b,c)}},detach:function(b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.attachEvent&&a.detachEvent("on"+b,c);return this},contains:function(b){return a===b?!0:a.contains?a.contains(b):!!(b.compareDocumentPosition(a)&8)},insertBefore:function(b){b.parentNode.insertBefore(a,b);
return this},remove:function(){a.parentNode.removeChild(a);return this},css:function(b){null!==b.opacity&&("string"!==typeof a.style.opacity&&"undefined"!==typeof a.filters)&&(b.filter="alpha(opacity="+Math.round(100*b.opacity)+")");qq.extend(a.style,b);return this},hasClass:function(b){return RegExp("(^| )"+b+"( |$)").test(a.className)},addClass:function(b){qq(a).hasClass(b)||(a.className+=" "+b);return this},removeClass:function(b){a.className=a.className.replace(RegExp("(^| )"+b+"( |$)")," ").replace(/^\s+|\s+$/g,
"");return this},getByClass:function(b){var c,d=[];if(a.querySelectorAll)return a.querySelectorAll("."+b);c=a.getElementsByTagName("*");qq.each(c,function(a,c){qq(c).hasClass(b)&&d.push(c)});return d},children:function(){for(var b=[],c=a.firstChild;c;)1===c.nodeType&&b.push(c),c=c.nextSibling;return b},setText:function(b){a.innerText=b;a.textContent=b;return this},clearText:function(){return qq(a).setText("")}}};
qq.log=function(a,b){if(window.console)if(!b||"info"===b)window.console.log(a);else if(window.console[b])window.console[b](a);else window.console.log("<"+b+"> "+a)};qq.isObject=function(a){return null!==a&&a&&"object"===typeof a&&a.constructor===Object};qq.isFunction=function(a){return"function"===typeof a};qq.isString=function(a){return"[object String]"===Object.prototype.toString.call(a)};qq.trimStr=function(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")};
qq.isFileOrInput=function(a){if(qq.isBlob(a)&&window.File&&a instanceof File)return!0;if(window.HTMLInputElement){if(a instanceof HTMLInputElement&&a.type&&"file"===a.type.toLowerCase())return!0}else if(a.tagName&&"input"===a.tagName.toLowerCase()&&a.type&&"file"===a.type.toLowerCase())return!0;return!1};qq.isBlob=function(a){return window.Blob&&a instanceof Blob};
qq.isXhrUploadSupported=function(){var a=document.createElement("input");a.type="file";return void 0!==a.multiple&&"undefined"!==typeof File&&"undefined"!==typeof FormData&&"undefined"!==typeof(new XMLHttpRequest).upload};qq.isFolderDropSupported=function(a){return a.items&&a.items[0].webkitGetAsEntry};qq.isFileChunkingSupported=function(){return!qq.android()&&qq.isXhrUploadSupported()&&(File.prototype.slice||File.prototype.webkitSlice||File.prototype.mozSlice)};
qq.extend=function(a,b,c){qq.each(b,function(b,e){c&&qq.isObject(e)?(void 0===a[b]&&(a[b]={}),qq.extend(a[b],e,!0)):a[b]=e})};qq.indexOf=function(a,b,c){if(a.indexOf)return a.indexOf(b,c);var c=c||0,d=a.length;for(0>c&&(c+=d);c<d;c+=1)if(a.hasOwnProperty(c)&&a[c]===b)return c;return-1};qq.getUniqueId=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0;return("x"==a?b:b&3|8).toString(16)})};qq.ie=function(){return-1!==navigator.userAgent.indexOf("MSIE")};
qq.ie10=function(){return-1!==navigator.userAgent.indexOf("MSIE 10")};qq.safari=function(){return void 0!==navigator.vendor&&-1!==navigator.vendor.indexOf("Apple")};qq.chrome=function(){return void 0!==navigator.vendor&&-1!==navigator.vendor.indexOf("Google")};qq.firefox=function(){return-1!==navigator.userAgent.indexOf("Mozilla")&&void 0!==navigator.vendor&&""===navigator.vendor};qq.windows=function(){return"Win32"===navigator.platform};qq.android=function(){return-1!==navigator.userAgent.toLowerCase().indexOf("android")};
qq.preventDefault=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};qq.toElement=function(){var a=document.createElement("div");return function(b){a.innerHTML=b;b=a.firstChild;a.removeChild(b);return b}}();qq.each=function(a,b){var c,d;if(a)for(c in a)if(Object.prototype.hasOwnProperty.call(a,c)&&(d=b(c,a[c]),!1===d))break};
qq.obj2url=function(a,b,c){var d,e=[],f="&",g=function(a,c){var d=b?/\[\]$/.test(b)?b:b+"["+c+"]":c;"undefined"!==d&&"undefined"!==c&&e.push("object"===typeof a?qq.obj2url(a,d,!0):"[object Function]"===Object.prototype.toString.call(a)?encodeURIComponent(d)+"="+encodeURIComponent(a()):encodeURIComponent(d)+"="+encodeURIComponent(a))};if(!c&&b)f=/\?/.test(b)?/\?$/.test(b)?"":"&":"?",e.push(b),e.push(qq.obj2url(a));else if("[object Array]"===Object.prototype.toString.call(a)&&"undefined"!==typeof a){d=
-1;for(c=a.length;d<c;d+=1)g(a[d],d)}else if("undefined"!==typeof a&&null!==a&&"object"===typeof a)for(d in a)a.hasOwnProperty(d)&&g(a[d],d);else e.push(encodeURIComponent(b)+"="+encodeURIComponent(a));return b?e.join(f):e.join(f).replace(/^&/,"").replace(/%20/g,"+")};qq.obj2FormData=function(a,b,c){b||(b=new FormData);qq.each(a,function(a,e){a=c?c+"["+a+"]":a;qq.isObject(e)?qq.obj2FormData(e,b,a):qq.isFunction(e)?b.append(a,e()):b.append(a,e)});return b};
qq.obj2Inputs=function(a,b){var c;b||(b=document.createElement("form"));qq.obj2FormData(a,{append:function(a,e){c=document.createElement("input");c.setAttribute("name",a);c.setAttribute("value",e);b.appendChild(c)}});return b};qq.setCookie=function(a,b,c){var d=new Date,e="";c&&(d.setTime(d.getTime()+864E5*c),e="; expires="+d.toGMTString());document.cookie=a+"="+b+e+"; path=/"};
qq.getCookie=function(a){for(var a=a+"=",b=document.cookie.split(";"),c,d=0;d<b.length;d++){for(c=b[d];" "==c.charAt(0);)c=c.substring(1,c.length);if(0===c.indexOf(a))return c.substring(a.length,c.length)}};qq.getCookieNames=function(a){var b=document.cookie.split(";"),c=[];qq.each(b,function(b,e){var e=qq.trimStr(e),f=e.indexOf("=");e.match(a)&&c.push(e.substr(0,f))});return c};qq.deleteCookie=function(a){qq.setCookie(a,"",-1)};
qq.areCookiesEnabled=function(){var a="qqCookieTest:"+1E5*Math.random();qq.setCookie(a,1);return qq.getCookie(a)?(qq.deleteCookie(a),!0):!1};qq.parseJson=function(a){return window.JSON&&qq.isFunction(JSON.parse)?JSON.parse(a):eval("("+a+")")};qq.DisposeSupport=function(){var a=[];return{dispose:function(){var b;do(b=a.shift())&&b();while(b)},attach:function(){this.addDisposer(qq(arguments[0]).attach.apply(this,Array.prototype.slice.call(arguments,1)))},addDisposer:function(b){a.push(b)}}};
qq.Promise=function(){var a,b,c,d,e=0;return{then:function(f,g){0===e?(c=f,d=g):-1===e&&g?g(b):f&&f(a)},success:function(b){e=1;a=b;c&&c(b);return this},failure:function(a){e=-1;b=a;d&&d(a);return this}}};
qq.UploadButton=function(a){function b(){var a=document.createElement("input");e.multiple&&a.setAttribute("multiple","multiple");e.acceptFiles&&a.setAttribute("accept",e.acceptFiles);a.setAttribute("type","file");a.setAttribute("name",e.name);qq(a).css({position:"absolute",right:0,top:0,fontFamily:"Arial",fontSize:"118px",margin:0,padding:0,cursor:"pointer",opacity:0});e.element.appendChild(a);d.attach(a,"change",function(){e.onChange(a)});d.attach(a,"mouseover",function(){qq(e.element).addClass(e.hoverClass)});
d.attach(a,"mouseout",function(){qq(e.element).removeClass(e.hoverClass)});d.attach(a,"focus",function(){qq(e.element).addClass(e.focusClass)});d.attach(a,"blur",function(){qq(e.element).removeClass(e.focusClass)});window.attachEvent&&a.setAttribute("tabIndex","-1");return a}var c,d=new qq.DisposeSupport,e={element:null,multiple:!1,acceptFiles:null,name:"file",onChange:function(){},hoverClass:"qq-upload-button-hover",focusClass:"qq-upload-button-focus"};qq.extend(e,a);qq(e.element).css({position:"relative",
overflow:"hidden",direction:"ltr"});c=b();return{getInput:function(){return c},reset:function(){c.parentNode&&qq(c).remove();qq(e.element).removeClass(e.focusClass);c=b()}}};
qq.PasteSupport=function(a){var b;b={targetElement:null,callbacks:{log:function(){},pasteReceived:function(){}}};qq.extend(b,a);(function(){qq(b.targetElement).attach("paste",function(a){(a=a.clipboardData)&&qq.each(a.items,function(a,c){if(c.type&&0===c.type.indexOf("image/")){var f=c.getAsFile();b.callbacks.pasteReceived(f)}})})})();return{reset:function(){}}};
qq.FineUploaderBasic=function(a){this._options={debug:!1,button:null,multiple:!0,maxConnections:3,disableCancelForFormUploads:!1,autoUpload:!0,request:{endpoint:"/server/upload",params:{},paramsInBody:!0,customHeaders:{},forceMultipart:!0,inputName:"qqfile",uuidName:"qquuid",totalFileSizeName:"qqtotalfilesize"},validation:{allowedExtensions:[],sizeLimit:0,minSizeLimit:0,itemLimit:0,stopOnFirstInvalidFile:!0},callbacks:{onSubmit:function(){},onSubmitted:function(){},onComplete:function(){},onCancel:function(){},
onUpload:function(){},onUploadChunk:function(){},onResume:function(){},onProgress:function(){},onError:function(){},onAutoRetry:function(){},onManualRetry:function(){},onValidateBatch:function(){},onValidate:function(){},onSubmitDelete:function(){},onDelete:function(){},onDeleteComplete:function(){},onPasteReceived:function(){return(new qq.Promise).success()}},messages:{typeError:"{file} has an invalid extension. Valid extension(s): {extensions}.",sizeError:"{file} is too large, maximum file size is {sizeLimit}.",
minSizeError:"{file} is too small, minimum file size is {minSizeLimit}.",emptyError:"{file} is empty, please select files again without it.",noFilesError:"No files to upload.",tooManyItemsError:"Too many items ({netItems}) would be uploaded.  Item limit is {itemLimit}.",retryFailTooManyItems:"Retry failed - you have reached your file limit.",onLeave:"The files are being uploaded, if you leave now the upload will be cancelled."},retry:{enableAuto:!1,maxAutoAttempts:3,autoAttemptDelay:5,preventRetryResponseProperty:"preventRetry"},
classes:{buttonHover:"qq-upload-button-hover",buttonFocus:"qq-upload-button-focus"},chunking:{enabled:!1,partSize:2E6,paramNames:{partIndex:"qqpartindex",partByteOffset:"qqpartbyteoffset",chunkSize:"qqchunksize",totalFileSize:"qqtotalfilesize",totalParts:"qqtotalparts",filename:"qqfilename"}},resume:{enabled:!1,id:null,cookiesExpireIn:7,paramNames:{resuming:"qqresume"}},formatFileName:function(a){33<a.length&&(a=a.slice(0,19)+"..."+a.slice(-14));return a},text:{sizeSymbols:"kB MB GB TB PB EB".split(" ")},
deleteFile:{enabled:!1,endpoint:"/server/upload",customHeaders:{},params:{}},cors:{expected:!1,sendCredentials:!1},blobs:{defaultName:"misc_data",paramNames:{name:"qqblobname"}},paste:{targetElement:null,defaultName:"pasted_image"}};qq.extend(this._options,a,!0);this._wrapCallbacks();this._disposeSupport=new qq.DisposeSupport;this._filesInProgress=[];this._storedIds=[];this._autoRetries=[];this._retryTimeouts=[];this._preventRetries=[];this._netFilesUploadedOrQueued=0;this._paramsStore=this._createParamsStore("request");
this._deleteFileParamsStore=this._createParamsStore("deleteFile");this._endpointStore=this._createEndpointStore("request");this._deleteFileEndpointStore=this._createEndpointStore("deleteFile");this._handler=this._createUploadHandler();this._deleteHandler=this._createDeleteHandler();this._options.button&&(this._button=this._createUploadButton(this._options.button));this._options.paste.targetElement&&(this._pasteHandler=this._createPasteHandler());this._preventLeaveInProgress()};
qq.FineUploaderBasic.prototype={log:function(a,b){this._options.debug&&(!b||"info"===b)?qq.log("[FineUploader] "+a):b&&"info"!==b&&qq.log("[FineUploader] "+a,b)},setParams:function(a,b){null==b?this._options.request.params=a:this._paramsStore.setParams(a,b)},setDeleteFileParams:function(a,b){null==b?this._options.deleteFile.params=a:this._deleteFileParamsStore.setParams(a,b)},setEndpoint:function(a,b){null==b?this._options.request.endpoint=a:this._endpointStore.setEndpoint(a,b)},getInProgress:function(){return this._filesInProgress.length},
uploadStoredFiles:function(){for(var a;this._storedIds.length;)a=this._storedIds.shift(),this._filesInProgress.push(a),this._handler.upload(a)},clearStoredFiles:function(){this._storedIds=[]},retry:function(a){return this._onBeforeManualRetry(a)?(this._netFilesUploadedOrQueued++,this._handler.retry(a),!0):!1},cancel:function(a){this._handler.cancel(a)},cancelAll:function(){var a=[],b=this;qq.extend(a,this._storedIds);qq.each(a,function(a,d){b.cancel(d)});this._handler.cancelAll()},reset:function(){this.log("Resetting uploader...");
this._handler.reset();this._filesInProgress=[];this._storedIds=[];this._autoRetries=[];this._retryTimeouts=[];this._preventRetries=[];this._button.reset();this._paramsStore.reset();this._endpointStore.reset();this._netFilesUploadedOrQueued=0;this._pasteHandler&&this._pasteHandler.reset()},addFiles:function(a){var b=[],c,d;if(a){if(!window.FileList||!(a instanceof FileList))a=[].concat(a);for(c=0;c<a.length;c+=1)d=a[c],qq.isFileOrInput(d)?b.push(d):this.log(d+" is not a File or INPUT element!  Ignoring!",
"warn");this.log("Processing "+b.length+" files or inputs...");this._uploadFileOrBlobDataList(b)}},addBlobs:function(a){if(a){var a=[].concat(a),b=[],c=this;qq.each(a,function(a,e){qq.isBlob(e)&&!qq.isFileOrInput(e)?b.push({blob:e,name:c._options.blobs.defaultName}):qq.isObject(e)&&e.blob&&e.name?b.push(e):c.log("addBlobs: entry at index "+a+" is not a Blob or a BlobData object","error")});this._uploadFileOrBlobDataList(b)}else this.log("undefined or non-array parameter passed into addBlobs","error")},
getUuid:function(a){return this._handler.getUuid(a)},getResumableFilesData:function(){return this._handler.getResumableFilesData()},getSize:function(a){return this._handler.getSize(a)},getName:function(a){return this._handler.getName(a)},getFile:function(a){return this._handler.getFile(a)},deleteFile:function(a){this._onSubmitDelete(a)},setDeleteFileEndpoint:function(a,b){null==b?this._options.deleteFile.endpoint=a:this._deleteFileEndpointStore.setEndpoint(a,b)},getPromissoryCallbackNames:function(){return["onPasteReceived"]},
_createUploadButton:function(a){var b=this,c=new qq.UploadButton({element:a,multiple:this._options.multiple&&qq.isXhrUploadSupported(),acceptFiles:this._options.validation.acceptFiles,onChange:function(a){b._onInputChange(a)},hoverClass:this._options.classes.buttonHover,focusClass:this._options.classes.buttonFocus});this._disposeSupport.addDisposer(function(){c.dispose()});return c},_createUploadHandler:function(){var a=this;return new qq.UploadHandler({debug:this._options.debug,forceMultipart:this._options.request.forceMultipart,
maxConnections:this._options.maxConnections,customHeaders:this._options.request.customHeaders,inputName:this._options.request.inputName,uuidParamName:this._options.request.uuidName,totalFileSizeParamName:this._options.request.totalFileSizeName,cors:this._options.cors,demoMode:this._options.demoMode,paramsInBody:this._options.request.paramsInBody,paramsStore:this._paramsStore,endpointStore:this._endpointStore,chunking:this._options.chunking,resume:this._options.resume,blobs:this._options.blobs,log:function(b,
c){a.log(b,c)},onProgress:function(b,c,d,e){a._onProgress(b,c,d,e);a._options.callbacks.onProgress(b,c,d,e)},onComplete:function(b,c,d,e){a._onComplete(b,c,d,e);a._options.callbacks.onComplete(b,c,d)},onCancel:function(b,c){a._onCancel(b,c);a._options.callbacks.onCancel(b,c)},onUpload:function(b,c){a._onUpload(b,c);a._options.callbacks.onUpload(b,c)},onUploadChunk:function(b,c,d){a._options.callbacks.onUploadChunk(b,c,d)},onResume:function(b,c,d){return a._options.callbacks.onResume(b,c,d)},onAutoRetry:function(b,
c,d,e){a._preventRetries[b]=d[a._options.retry.preventRetryResponseProperty];return a._shouldAutoRetry(b,c,d)?(a._maybeParseAndSendUploadError(b,c,d,e),a._options.callbacks.onAutoRetry(b,c,a._autoRetries[b]+1),a._onBeforeAutoRetry(b,c),a._retryTimeouts[b]=setTimeout(function(){a._onAutoRetry(b,c,d)},1E3*a._options.retry.autoAttemptDelay),!0):!1}})},_createDeleteHandler:function(){var a=this;return new qq.DeleteFileAjaxRequestor({maxConnections:this._options.maxConnections,customHeaders:this._options.deleteFile.customHeaders,
paramsStore:this._deleteFileParamsStore,endpointStore:this._deleteFileEndpointStore,demoMode:this._options.demoMode,cors:this._options.cors,log:function(b,c){a.log(b,c)},onDelete:function(b){a._onDelete(b);a._options.callbacks.onDelete(b)},onDeleteComplete:function(b,c,d){a._onDeleteComplete(b,c,d);a._options.callbacks.onDeleteComplete(b,c,d)}})},_createPasteHandler:function(){var a=this;return new qq.PasteSupport({targetElement:this._options.paste.targetElement,callbacks:{log:function(b,c){a.log(b,
c)},pasteReceived:function(b){var c=a._options.callbacks.onPasteReceived,c=c(b);c.then?c.then(function(c){a._handlePasteSuccess(b,c)},function(b){a.log("Ignoring pasted image per paste received callback.  Reason = '"+b+"'")}):a.log("Promise contract not fulfilled in pasteReceived callback handler!  Ignoring pasted item.","error")}}})},_handlePasteSuccess:function(a,b){var c=a.type.split("/")[1],d=b;null==d&&(d=this._options.paste.defaultName);this.addBlobs({name:d+("."+c),blob:a})},_preventLeaveInProgress:function(){var a=
this;this._disposeSupport.attach(window,"beforeunload",function(b){if(a._filesInProgress.length)return b=b||window.event,b.returnValue=a._options.messages.onLeave})},_onSubmit:function(a){this._netFilesUploadedOrQueued++;this._options.autoUpload&&this._filesInProgress.push(a)},_onProgress:function(){},_onComplete:function(a,b,c,d){c.success||this._netFilesUploadedOrQueued--;this._removeFromFilesInProgress(a);this._maybeParseAndSendUploadError(a,b,c,d)},_onCancel:function(a){this._netFilesUploadedOrQueued--;
this._removeFromFilesInProgress(a);clearTimeout(this._retryTimeouts[a]);a=qq.indexOf(this._storedIds,a);!this._options.autoUpload&&0<=a&&this._storedIds.splice(a,1)},_isDeletePossible:function(){return this._options.deleteFile.enabled&&(!this._options.cors.expected||this._options.cors.expected&&(qq.ie10()||!qq.ie()))},_onSubmitDelete:function(a){if(this._isDeletePossible())!1!==this._options.callbacks.onSubmitDelete(a)&&this._deleteHandler.sendDelete(a,this.getUuid(a));else return this.log("Delete request ignored for ID "+
a+", delete feature is disabled or request not possible due to CORS on a user agent that does not support pre-flighting.","warn"),!1},_onDelete:function(){},_onDeleteComplete:function(a,b,c){var d=this._handler.getName(a);c?(this.log("Delete request for '"+d+"' has failed.","error"),this._options.callbacks.onError(a,d,"Delete request failed with response code "+b.status,b)):(this._netFilesUploadedOrQueued--,this.log("Delete request for '"+d+"' has succeeded."))},_removeFromFilesInProgress:function(a){a=
qq.indexOf(this._filesInProgress,a);0<=a&&this._filesInProgress.splice(a,1)},_onUpload:function(){},_onInputChange:function(a){qq.isXhrUploadSupported()?this.addFiles(a.files):this.addFiles(a);this._button.reset()},_onBeforeAutoRetry:function(a,b){this.log("Waiting "+this._options.retry.autoAttemptDelay+" seconds before retrying "+b+"...")},_onAutoRetry:function(a,b){this.log("Retrying "+b+"...");this._autoRetries[a]++;this._handler.retry(a)},_shouldAutoRetry:function(a){return!this._preventRetries[a]&&
this._options.retry.enableAuto?(void 0===this._autoRetries[a]&&(this._autoRetries[a]=0),this._autoRetries[a]<this._options.retry.maxAutoAttempts):!1},_onBeforeManualRetry:function(a){var b=this._options.validation.itemLimit;if(this._preventRetries[a])return this.log("Retries are forbidden for id "+a,"warn"),!1;if(this._handler.isValid(a)){var c=this._handler.getName(a);if(!1===this._options.callbacks.onManualRetry(a,c))return!1;if(0<b&&this._netFilesUploadedOrQueued+1>b)return this._itemError("retryFailTooManyItems",
""),!1;this.log("Retrying upload for '"+c+"' (id: "+a+")...");this._filesInProgress.push(a);return!0}this.log("'"+a+"' is not a valid file ID","error");return!1},_maybeParseAndSendUploadError:function(a,b,c,d){if(!c.success)if(d&&200!==d.status&&!c.error)this._options.callbacks.onError(a,b,"XHR returned response code "+d.status,d);else this._options.callbacks.onError(a,b,c.error?c.error:"Upload failure reason unknown",d)},_uploadFileOrBlobDataList:function(a){var b;if(this._isBatchValid(this._getValidationDescriptors(a)))if(0<
a.length)for(b=0;b<a.length;b++)if(this._validateFileOrBlobData(a[b]))this._upload(a[b]);else{if(this._options.validation.stopOnFirstInvalidFile)break}else this._itemError("noFilesError","")},_upload:function(a){var a=this._handler.add(a),b=this._handler.getName(a);!1!==this._options.callbacks.onSubmit(a,b)&&(this._onSubmit(a,b),this._options.callbacks.onSubmitted(a,b),this._options.autoUpload?this._handler.upload(a):this._storeForLater(a))},_storeForLater:function(a){this._storedIds.push(a)},_isBatchValid:function(a){var b;
b=this._options.validation.itemLimit;var c=this._netFilesUploadedOrQueued+a.length;if(a=!1!==this._options.callbacks.onValidateBatch(a))0===b||c<=b?a=!0:(a=!1,b=this._options.messages.tooManyItemsError.replace(/\{netItems\}/g,c).replace(/\{itemLimit\}/g,b),this._batchError(b));return a},_validateFileOrBlobData:function(a){var b,c,d;b=this._getValidationDescriptor(a);c=b.name;d=b.size;return!1===this._options.callbacks.onValidate(b)?!1:qq.isFileOrInput(a)&&!this._isAllowedExtension(c)?(this._itemError("typeError",
c),!1):0===d?(this._itemError("emptyError",c),!1):d&&this._options.validation.sizeLimit&&d>this._options.validation.sizeLimit?(this._itemError("sizeError",c),!1):d&&d<this._options.validation.minSizeLimit?(this._itemError("minSizeError",c),!1):!0},_itemError:function(a,b){function c(a,b){d=d.replace(a,b)}var d=this._options.messages[a],e=[],f;qq.each(this._options.validation.allowedExtensions,function(a,b){qq.isString(b)&&e.push(b)});f=e.join(", ").toLowerCase();c("{file}",this._options.formatFileName(b));
c("{extensions}",f);c("{sizeLimit}",this._formatSize(this._options.validation.sizeLimit));c("{minSizeLimit}",this._formatSize(this._options.validation.minSizeLimit));this._options.callbacks.onError(null,b,d);return d},_batchError:function(a){this._options.callbacks.onError(null,null,a)},_isAllowedExtension:function(a){var b=this._options.validation.allowedExtensions,c=!1;if(!b.length)return!0;qq.each(b,function(b,e){if(qq.isString(e)&&null!=a.match(RegExp("\\."+e+"$","i")))return c=!0,!1});return c},
_formatSize:function(a){var b=-1;do a/=1024,b++;while(99<a);return Math.max(a,0.1).toFixed(1)+this._options.text.sizeSymbols[b]},_wrapCallbacks:function(){var a,b;a=this;b=function(b,c,f){try{return c.apply(a,f)}catch(g){a.log("Caught exception in '"+b+"' callback - "+g.message,"error")}};for(var c in this._options.callbacks)(function(){var d,e;d=c;e=a._options.callbacks[d];a._options.callbacks[d]=function(){return b(d,e,arguments)}})()},_parseFileOrBlobDataName:function(a){return qq.isFileOrInput(a)?
a.value?a.value.replace(/.*(\/|\\)/,""):null!==a.fileName&&void 0!==a.fileName?a.fileName:a.name:a.name},_parseFileOrBlobDataSize:function(a){var b;qq.isFileOrInput(a)?a.value||(b=null!==a.fileSize&&void 0!==a.fileSize?a.fileSize:a.size):b=a.blob.size;return b},_getValidationDescriptor:function(a){var b,c;c={};b=this._parseFileOrBlobDataName(a);a=this._parseFileOrBlobDataSize(a);c.name=b;a&&(c.size=a);return c},_getValidationDescriptors:function(a){var b=this,c=[];qq.each(a,function(a,e){c.push(b._getValidationDescriptor(e))});
return c},_createParamsStore:function(a){var b={},c=this;return{setParams:function(a,c){var f={};qq.extend(f,a);b[c]=f},getParams:function(d){var e={};null!=d&&b[d]?qq.extend(e,b[d]):qq.extend(e,c._options[a].params);return e},remove:function(a){return delete b[a]},reset:function(){b={}}}},_createEndpointStore:function(a){var b={},c=this;return{setEndpoint:function(a,c){b[c]=a},getEndpoint:function(d){return null!=d&&b[d]?b[d]:c._options[a].endpoint},remove:function(a){return delete b[a]},reset:function(){b=
{}}}}};
qq.DragAndDrop=function(a){function b(){k===l&&!i&&(g.callbacks.log("Grabbed "+m.length+" files after tree traversal."),n.dropDisabled(!1),g.callbacks.dropProcessing(!1,m))}function c(a){var d;k+=1;a.isFile?a.file(function(a){m.push(a);l+=1;b()}):a.isDirectory&&(i=!0,a=a.createReader(),a.readEntries(function(a){l+=1;for(d=0;d<a.length;d+=1)c(a[d]);i=!1;a.length||b()}))}function d(a){n=new qq.UploadDropZone({element:a,onEnter:function(b){qq(a).addClass(g.classes.dropActive);b.stopPropagation()},onLeaveNotDescendants:function(){qq(a).removeClass(g.classes.dropActive)},
onDrop:function(d){g.hideDropzones&&qq(a).hide();qq(a).removeClass(g.classes.dropActive);var d=d.dataTransfer,e,f;g.callbacks.dropProcessing(!0);n.dropDisabled(!0);if(1<d.files.length&&!g.multiple)g.callbacks.dropProcessing(!1),g.callbacks.error("tooManyFilesError",""),n.dropDisabled(!1);else if(m=[],l=k=0,qq.isFolderDropSupported(d)){e=d.items;for(d=0;d<e.length;d+=1)if(f=e[d].webkitGetAsEntry())f.isFile?(m.push(e[d].getAsFile()),d===e.length-1&&b()):c(f)}else g.callbacks.dropProcessing(!1,d.files),
n.dropDisabled(!1)}});t.addDisposer(function(){n.dispose()});g.hideDropzones&&qq(a).hide()}function e(a){var b;qq.each(a.dataTransfer.types,function(a,c){if("Files"===c)return b=!0,!1});return b}function f(){g.dropArea&&g.extraDropzones.push(g.dropArea);var a,b=g.extraDropzones;for(a=0;a<b.length;a+=1)d(b[a]);g.dropArea&&(!qq.ie()||qq.ie10())&&t.attach(document,"dragenter",function(c){if(!n.dropDisabled()&&e(c)&&!qq(g.dropArea).hasClass(g.classes.dropDisabled)){g.dropArea.style.display="block";for(a=
0;a<b.length;a+=1)b[a].style.display="block"}});t.attach(document,"dragleave",function(c){if(g.hideDropzones&&qq.FineUploader.prototype._leaving_document_out(c))for(a=0;a<b.length;a+=1)qq(b[a]).hide()});t.attach(document,"drop",function(c){if(g.hideDropzones)for(a=0;a<b.length;a+=1)qq(b[a]).hide();c.preventDefault()})}var g,n,i,m=[],k=0,l=0,t=new qq.DisposeSupport;g={dropArea:null,extraDropzones:[],hideDropzones:!0,multiple:!0,classes:{dropActive:null},callbacks:{dropProcessing:function(){},error:function(){},
log:function(){}}};qq.extend(g,a);return{setup:function(){f()},setupExtraDropzone:function(a){g.extraDropzones.push(a);d(a)},removeExtraDropzone:function(a){var b,c=g.extraDropzones;for(b in c)if(c[b]===a)return c.splice(b,1)},dispose:function(){t.dispose();n.dispose()}}};
qq.UploadDropZone=function(a){function b(){return qq.safari()||qq.firefox()&&qq.windows()}function c(a){if(qq.ie()&&!qq.ie10())return!1;var b=a.dataTransfer,c=qq.safari(),a=qq.ie10()?!0:"none"!==b.effectAllowed;return b&&a&&(b.files||!c&&b.types.contains&&b.types.contains("Files"))}function d(a){void 0!==a&&(g=a);return g}var e,f,g,n,i=new qq.DisposeSupport;e={element:null,onEnter:function(){},onLeave:function(){},onLeaveNotDescendants:function(){},onDrop:function(){}};qq.extend(e,a);f=e.element;
(function(){n||(b?i.attach(document,"dragover",function(a){a.preventDefault()}):i.attach(document,"dragover",function(a){a.dataTransfer&&(a.dataTransfer.dropEffect="none",a.preventDefault())}),n=!0)})();(function(){i.attach(f,"dragover",function(a){if(c(a)){var b=qq.ie()?null:a.dataTransfer.effectAllowed;a.dataTransfer.dropEffect="move"===b||"linkMove"===b?"move":"copy";a.stopPropagation();a.preventDefault()}});i.attach(f,"dragenter",function(a){if(!d()&&c(a))e.onEnter(a)});i.attach(f,"dragleave",
function(a){if(c(a)){e.onLeave(a);var b=document.elementFromPoint(a.clientX,a.clientY);if(!qq(this).contains(b))e.onLeaveNotDescendants(a)}});i.attach(f,"drop",function(a){!d()&&c(a)&&(a.preventDefault(),e.onDrop(a))})})();return{dropDisabled:function(a){return d(a)},dispose:function(){i.dispose()}}};
qq.FineUploader=function(a){qq.FineUploaderBasic.apply(this,arguments);qq.extend(this._options,{element:null,listElement:null,dragAndDrop:{extraDropzones:[],hideDropzones:!0,disableDefaultDropzone:!1},text:{uploadButton:"Upload a file",cancelButton:"Cancel",retryButton:"Retry",deleteButton:"Delete",failUpload:"Upload failed",dragZone:"Drop files here to upload",dropProcessing:"Processing dropped files...",formatProgress:"{percent}% of {total_size}",waitingForResponse:"Processing..."},template:'<div class="qq-uploader">'+
(!this._options.dragAndDrop||!this._options.dragAndDrop.disableDefaultDropzone?'<div class="qq-upload-drop-area"><span>{dragZoneText}</span></div>':"")+(!this._options.button?'<div class="qq-upload-button"><div>{uploadButtonText}</div></div>':"")+'<span class="qq-drop-processing"><span>{dropProcessingText}</span><span class="qq-drop-processing-spinner"></span></span>'+(!this._options.listElement?'<ul class="qq-upload-list"></ul>':"")+"</div>",fileTemplate:'<li><div class="qq-progress-bar"></div><span class="qq-upload-spinner"></span><span class="qq-upload-finished"></span><span class="qq-upload-file"></span><span class="qq-upload-size"></span><a class="qq-upload-cancel" href="#">{cancelButtonText}</a><a class="qq-upload-retry" href="#">{retryButtonText}</a><a class="qq-upload-delete" href="#">{deleteButtonText}</a><span class="qq-upload-status-text">{statusText}</span></li>',
classes:{button:"qq-upload-button",drop:"qq-upload-drop-area",dropActive:"qq-upload-drop-area-active",dropDisabled:"qq-upload-drop-area-disabled",list:"qq-upload-list",progressBar:"qq-progress-bar",file:"qq-upload-file",spinner:"qq-upload-spinner",finished:"qq-upload-finished",retrying:"qq-upload-retrying",retryable:"qq-upload-retryable",size:"qq-upload-size",cancel:"qq-upload-cancel",deleteButton:"qq-upload-delete",retry:"qq-upload-retry",statusText:"qq-upload-status-text",success:"qq-upload-success",
fail:"qq-upload-fail",successIcon:null,failIcon:null,dropProcessing:"qq-drop-processing",dropProcessingSpinner:"qq-drop-processing-spinner"},failedUploadTextDisplay:{mode:"default",maxChars:50,responseProperty:"error",enableTooltip:!0},messages:{tooManyFilesError:"You may only drop one file"},retry:{showAutoRetryNote:!0,autoRetryNote:"Retrying {retryNum}/{maxAuto}...",showButton:!1},deleteFile:{forceConfirm:!1,confirmMessage:"Are you sure you want to delete {filename}?",deletingStatusText:"Deleting...",
deletingFailedText:"Delete failed"},display:{fileSizeOnSubmit:!1},paste:{promptForName:!1,namePromptMessage:"Please name this image"},showMessage:function(a){setTimeout(function(){window.alert(a)},0)},showConfirm:function(a,c,d){setTimeout(function(){window.confirm(a)?c():d&&d()},0)},showPrompt:function(a,c){var d=new qq.Promise,e=window.prompt(a,c);null!=e&&0<qq.trimStr(e).length?d.success(e):d.failure("Undefined or invalid user-supplied value.");return d}},!0);qq.extend(this._options,a,!0);this._wrapCallbacks();
this._options.template=this._options.template.replace(/\{dragZoneText\}/g,this._options.text.dragZone);this._options.template=this._options.template.replace(/\{uploadButtonText\}/g,this._options.text.uploadButton);this._options.template=this._options.template.replace(/\{dropProcessingText\}/g,this._options.text.dropProcessing);this._options.fileTemplate=this._options.fileTemplate.replace(/\{cancelButtonText\}/g,this._options.text.cancelButton);this._options.fileTemplate=this._options.fileTemplate.replace(/\{retryButtonText\}/g,
this._options.text.retryButton);this._options.fileTemplate=this._options.fileTemplate.replace(/\{deleteButtonText\}/g,this._options.text.deleteButton);this._options.fileTemplate=this._options.fileTemplate.replace(/\{statusText\}/g,"");this._element=this._options.element;this._element.innerHTML=this._options.template;this._listElement=this._options.listElement||this._find(this._element,"list");this._classes=this._options.classes;this._button||(this._button=this._createUploadButton(this._find(this._element,
"button")));this._bindCancelAndRetryEvents();this._dnd=this._setupDragAndDrop();this._options.paste.targetElement&&this._options.paste.promptForName&&this._setupPastePrompt()};qq.extend(qq.FineUploader.prototype,qq.FineUploaderBasic.prototype);
qq.extend(qq.FineUploader.prototype,{clearStoredFiles:function(){qq.FineUploaderBasic.prototype.clearStoredFiles.apply(this,arguments);this._listElement.innerHTML=""},addExtraDropzone:function(a){this._dnd.setupExtraDropzone(a)},removeExtraDropzone:function(a){return this._dnd.removeExtraDropzone(a)},getItemByFileId:function(a){for(var b=this._listElement.firstChild;b;){if(b.qqFileId==a)return b;b=b.nextSibling}},reset:function(){qq.FineUploaderBasic.prototype.reset.apply(this,arguments);this._element.innerHTML=
this._options.template;this._listElement=this._options.listElement||this._find(this._element,"list");this._options.button||(this._button=this._createUploadButton(this._find(this._element,"button")));this._bindCancelAndRetryEvents();this._dnd.dispose();this._dnd=this._setupDragAndDrop()},_removeFileItem:function(a){a=this.getItemByFileId(a);qq(a).remove()},_setupDragAndDrop:function(){var a=this,b=this._find(this._element,"dropProcessing"),c,d;d=function(a){a.preventDefault()};this._options.dragAndDrop.disableDefaultDropzone||
(c=this._find(this._options.element,"drop"));c=new qq.DragAndDrop({dropArea:c,extraDropzones:this._options.dragAndDrop.extraDropzones,hideDropzones:this._options.dragAndDrop.hideDropzones,multiple:this._options.multiple,classes:{dropActive:this._options.classes.dropActive},callbacks:{dropProcessing:function(c,f){var g=a._button.getInput();c?(qq(b).css({display:"block"}),qq(g).attach("click",d)):(qq(b).hide(),qq(g).detach("click",d));f&&a.addFiles(f)},error:function(b,c){a._itemError(b,c)},log:function(b,
c){a.log(b,c)}}});c.setup();return c},_leaving_document_out:function(a){return(qq.chrome()||qq.safari()&&qq.windows())&&0==a.clientX&&0==a.clientY||qq.firefox()&&!a.relatedTarget},_storeForLater:function(a){qq.FineUploaderBasic.prototype._storeForLater.apply(this,arguments);var b=this.getItemByFileId(a);qq(this._find(b,"spinner")).hide()},_find:function(a,b){var c=qq(a).getByClass(this._options.classes[b])[0];if(!c)throw Error("element not found "+b);return c},_onSubmit:function(a,b){qq.FineUploaderBasic.prototype._onSubmit.apply(this,
arguments);this._addToList(a,b)},_onProgress:function(a,b,c,d){qq.FineUploaderBasic.prototype._onProgress.apply(this,arguments);var e,f,g,n;e=this.getItemByFileId(a);f=this._find(e,"progressBar");g=Math.round(100*(c/d));c===d?(n=this._find(e,"cancel"),qq(n).hide(),qq(f).hide(),qq(this._find(e,"statusText")).setText(this._options.text.waitingForResponse),this._displayFileSize(a)):(this._displayFileSize(a,c,d),qq(f).css({display:"block"}));qq(f).css({width:g+"%"})},_onComplete:function(a,b,c,d){qq.FineUploaderBasic.prototype._onComplete.apply(this,
arguments);var e=this.getItemByFileId(a);qq(this._find(e,"statusText")).clearText();qq(e).removeClass(this._classes.retrying);qq(this._find(e,"progressBar")).hide();(!this._options.disableCancelForFormUploads||qq.isXhrUploadSupported())&&qq(this._find(e,"cancel")).hide();qq(this._find(e,"spinner")).hide();c.success?(this._isDeletePossible()&&this._showDeleteLink(a),qq(e).addClass(this._classes.success),this._classes.successIcon&&(this._find(e,"finished").style.display="inline-block",qq(e).addClass(this._classes.successIcon))):
(qq(e).addClass(this._classes.fail),this._classes.failIcon&&(this._find(e,"finished").style.display="inline-block",qq(e).addClass(this._classes.failIcon)),this._options.retry.showButton&&!this._preventRetries[a]&&qq(e).addClass(this._classes.retryable),this._controlFailureTextDisplay(e,c))},_onUpload:function(a,b){qq.FineUploaderBasic.prototype._onUpload.apply(this,arguments);this._showSpinner(a)},_onCancel:function(a,b){qq.FineUploaderBasic.prototype._onCancel.apply(this,arguments);this._removeFileItem(a)},
_onBeforeAutoRetry:function(a){var b,c,d,e,f;qq.FineUploaderBasic.prototype._onBeforeAutoRetry.apply(this,arguments);b=this.getItemByFileId(a);c=this._find(b,"progressBar");this._showCancelLink(b);c.style.width=0;qq(c).hide();this._options.retry.showAutoRetryNote&&(c=this._find(b,"statusText"),d=this._autoRetries[a]+1,e=this._options.retry.maxAutoAttempts,f=this._options.retry.autoRetryNote.replace(/\{retryNum\}/g,d),f=f.replace(/\{maxAuto\}/g,e),qq(c).setText(f),1===d&&qq(b).addClass(this._classes.retrying))},
_onBeforeManualRetry:function(a){var b=this.getItemByFileId(a);if(qq.FineUploaderBasic.prototype._onBeforeManualRetry.apply(this,arguments))return this._find(b,"progressBar").style.width=0,qq(b).removeClass(this._classes.fail),qq(this._find(b,"statusText")).clearText(),this._showSpinner(a),this._showCancelLink(b),!0;qq(b).addClass(this._classes.retryable);return!1},_onSubmitDelete:function(a){if(this._isDeletePossible())!1!==this._options.callbacks.onSubmitDelete(a)&&(this._options.deleteFile.forceConfirm?
this._showDeleteConfirm(a):this._sendDeleteRequest(a));else return this.log("Delete request ignored for file ID "+a+", delete feature is disabled.","warn"),!1},_onDeleteComplete:function(a,b,c){qq.FineUploaderBasic.prototype._onDeleteComplete.apply(this,arguments);var d=this.getItemByFileId(a),e=this._find(d,"spinner"),d=this._find(d,"statusText");qq(e).hide();c?(qq(d).setText(this._options.deleteFile.deletingFailedText),this._showDeleteLink(a)):this._removeFileItem(a)},_sendDeleteRequest:function(a){var b=
this.getItemByFileId(a),c=this._find(b,"deleteButton"),b=this._find(b,"statusText");qq(c).hide();this._showSpinner(a);qq(b).setText(this._options.deleteFile.deletingStatusText);this._deleteHandler.sendDelete(a,this.getUuid(a))},_showDeleteConfirm:function(a){var b=this._options.deleteFile.confirmMessage.replace(/\{filename\}/g,this._handler.getName(a));this.getUuid(a);var c=this;this._options.showConfirm(b,function(){c._sendDeleteRequest(a)})},_addToList:function(a,b){var c=qq.toElement(this._options.fileTemplate);
if(this._options.disableCancelForFormUploads&&!qq.isXhrUploadSupported()){var d=this._find(c,"cancel");qq(d).remove()}c.qqFileId=a;d=this._find(c,"file");qq(d).setText(this._options.formatFileName(b));qq(this._find(c,"size")).hide();this._options.multiple||(this._handler.cancelAll(),this._clearList());this._listElement.appendChild(c);this._options.display.fileSizeOnSubmit&&qq.isXhrUploadSupported()&&this._displayFileSize(a)},_clearList:function(){this._listElement.innerHTML="";this.clearStoredFiles()},
_displayFileSize:function(a,b,c){var d=this.getItemByFileId(a),a=this._formatSize(this.getSize(a)),d=this._find(d,"size");void 0!==b&&void 0!==c&&(a=this._formatProgress(b,c));qq(d).css({display:"inline"});qq(d).setText(a)},_bindCancelAndRetryEvents:function(){var a=this;this._disposeSupport.attach(this._listElement,"click",function(b){var b=b||window.event,c=b.target||b.srcElement;if(qq(c).hasClass(a._classes.cancel)||qq(c).hasClass(a._classes.retry)||qq(c).hasClass(a._classes.deleteButton)){qq.preventDefault(b);
for(b=c.parentNode;void 0===b.qqFileId;)b=c=c.parentNode;qq(c).hasClass(a._classes.deleteButton)?a.deleteFile(b.qqFileId):qq(c).hasClass(a._classes.cancel)?a.cancel(b.qqFileId):(qq(b).removeClass(a._classes.retryable),a.retry(b.qqFileId))}})},_formatProgress:function(a,b){var c=this._options.text.formatProgress,d=Math.round(100*(a/b)),c=c.replace("{percent}",d),d=this._formatSize(b);return c=c.replace("{total_size}",d)},_controlFailureTextDisplay:function(a,b){var c,d,e,f;c=this._options.failedUploadTextDisplay.mode;
d=this._options.failedUploadTextDisplay.maxChars;e=this._options.failedUploadTextDisplay.responseProperty;"custom"===c?((c=b[e])?c.length>d&&(f=c.substring(0,d)+"..."):(c=this._options.text.failUpload,this.log("'"+e+"' is not a valid property on the server response.","warn")),qq(this._find(a,"statusText")).setText(f||c),this._options.failedUploadTextDisplay.enableTooltip&&this._showTooltip(a,c)):"default"===c?qq(this._find(a,"statusText")).setText(this._options.text.failUpload):"none"!==c&&this.log("failedUploadTextDisplay.mode value of '"+
c+"' is not valid","warn")},_showTooltip:function(a,b){a.title=b},_showSpinner:function(a){this._find(this.getItemByFileId(a),"spinner").style.display="inline-block"},_showCancelLink:function(a){if(!this._options.disableCancelForFormUploads||qq.isXhrUploadSupported())a=this._find(a,"cancel"),qq(a).css({display:"inline"})},_showDeleteLink:function(a){a=this._find(this.getItemByFileId(a),"deleteButton");qq(a).css({display:"inline"})},_itemError:function(a,b){this._options.showMessage(qq.FineUploaderBasic.prototype._itemError.apply(this,
arguments))},_batchError:function(a){qq.FineUploaderBasic.prototype._batchError.apply(this,arguments);this._options.showMessage(a)},_setupPastePrompt:function(){var a=this;this._options.callbacks.onPasteReceived=function(){return a._options.showPrompt(a._options.paste.namePromptMessage,a._options.paste.defaultName)}}});
qq.AjaxRequestor=function(a){function b(a){var b=qq.indexOf(i,a),d=k.maxConnections;delete m[a];i.splice(b,1);i.length>=d&&b<d&&(a=i[d-1],c(a))}function c(a){var b=new XMLHttpRequest,c=f(),i={},r;k.onSend(a);k.paramsStore.getParams&&(i=k.paramsStore.getParams(a));r=i;var s=k.endpointStore.getEndpoint(a),z=m[a].addToPath;void 0!==z&&(s+="/"+z);r=n&&r?qq.obj2url(r,s):s;m[a].xhr=b;b.onreadystatechange=d(a);b.open(c,r,!0);k.cors.expected&&k.cors.sendCredentials&&(b.withCredentials=!0);e(a);g("Sending "+
c+" request for "+a);!n&&i?b.send(qq.obj2url(i,"")):b.send()}function d(a){var c=m[a].xhr;return function(){if(4===c.readyState){var d=m[a].xhr,e=f(),i=!1;b(a);0<=qq.indexOf(k.successfulResponseCodes,d.status)||(i=!0,g(e+" request for "+a+" has failed - response code "+d.status,"error"));k.onComplete(a,d,i)}}}function e(a){var b=m[a].xhr,a=k.customHeaders;b.setRequestHeader("X-Requested-With","XMLHttpRequest");b.setRequestHeader("Cache-Control","no-cache");qq.each(a,function(a,c){b.setRequestHeader(a,
c)})}function f(){return k.demoMode?"GET":k.method}var g,n,i=[],m=[],k={method:"POST",maxConnections:3,customHeaders:{},endpointStore:{},paramsStore:{},successfulResponseCodes:[200],demoMode:!1,cors:{expected:!1,sendCredentials:!1},log:function(){},onSend:function(){},onComplete:function(){},onCancel:function(){}};qq.extend(k,a);g=k.log;n="GET"===f()||"DELETE"===f();return{send:function(a,b){m[a]={addToPath:b};i.push(a)<=k.maxConnections&&c(a)},cancel:function(a){var c=m[a].xhr,d=f();c?(c.onreadystatechange=
null,c.abort(),b(a),g("Cancelled "+d+" for "+a),k.onCancel(a),a=!0):a=!1;return a}}};
qq.DeleteFileAjaxRequestor=function(a){var b,c={endpointStore:{},maxConnections:3,customHeaders:{},paramsStore:{},demoMode:!1,cors:{expected:!1,sendCredentials:!1},log:function(){},onDelete:function(){},onDeleteComplete:function(){}};qq.extend(c,a);b=new qq.AjaxRequestor({method:"DELETE",endpointStore:c.endpointStore,paramsStore:c.paramsStore,maxConnections:c.maxConnections,customHeaders:c.customHeaders,successfulResponseCodes:[200,202,204],demoMode:c.demoMode,log:c.log,onSend:c.onDelete,onComplete:c.onDeleteComplete});
return{sendDelete:function(a,e){b.send(a,e);c.log("Submitted delete file request for "+a)}}};qq.WindowReceiveMessage=function(a){var b={};qq.extend({log:function(){}},a);return{receiveMessage:function(a,d){var e=function(a){d(a.data)};window.postMessage?b[a]=qq(window).attach("message",e):log("iframe message passing not supported in this browser!","error")},stopReceivingMessages:function(a){window.postMessage&&(a=b[a])&&a()}}};
qq.UploadHandler=function(a){var b=[],c,d,e,f;c={debug:!1,forceMultipart:!0,paramsInBody:!1,paramsStore:{},endpointStore:{},cors:{expected:!1,sendCredentials:!1},maxConnections:3,uuidParamName:"qquuid",totalFileSizeParamName:"qqtotalfilesize",chunking:{enabled:!1,partSize:2E6,paramNames:{partIndex:"qqpartindex",partByteOffset:"qqpartbyteoffset",chunkSize:"qqchunksize",totalParts:"qqtotalparts",filename:"qqfilename"}},resume:{enabled:!1,id:null,cookiesExpireIn:7,paramNames:{resuming:"qqresume"}},blobs:{paramNames:{name:"qqblobname"}},
log:function(){},onProgress:function(){},onComplete:function(){},onCancel:function(){},onUpload:function(){},onUploadChunk:function(){},onAutoRetry:function(){},onResume:function(){}};qq.extend(c,a);d=c.log;e=function(a){var a=qq.indexOf(b,a),d=c.maxConnections;0<=a&&(b.splice(a,1),b.length>=d&&a<d&&(a=b[d-1],f.upload(a)))};f=qq.isXhrUploadSupported()?new qq.UploadHandlerXhr(c,e,d):new qq.UploadHandlerForm(c,e,d);return{add:function(a){return f.add(a)},upload:function(a){if(b.push(a)<=c.maxConnections)return f.upload(a)},
retry:function(a){return 0<=qq.indexOf(b,a)?f.upload(a,!0):this.upload(a)},cancel:function(a){d("Cancelling "+a);c.paramsStore.remove(a);f.cancel(a);e(a)},cancelAll:function(){var a=this,c=[];qq.extend(c,b);qq.each(c,function(b,c){a.cancel(c)});b=[]},getName:function(a){return f.getName(a)},getSize:function(a){if(f.getSize)return f.getSize(a)},getFile:function(a){if(f.getFile)return f.getFile(a)},getQueue:function(){return b},reset:function(){d("Resetting upload handler");b=[];f.reset()},getUuid:function(a){return f.getUuid(a)},
isValid:function(a){return f.isValid(a)},getResumableFilesData:function(){return f.getResumableFilesData?f.getResumableFilesData():[]}}};
qq.UploadHandlerForm=function(a,b,c){function d(a){void 0!==l[a]&&(l[a](),delete l[a])}function e(a,b){var c=a.id;r[k[c]]=b;l[c]=qq(a).attach("load",function(){m[c]&&(o("Received iframe load event for CORS upload request (file id "+c+")"),t[c]=setTimeout(function(){var a="No valid message received from loaded iframe for file id "+c;o(a,"error");b({error:a})},1E3))});x.receiveMessage(c,function(a){o("Received the following window message: '"+a+"'");var b=qq.parseJson(a),e=b.uuid;e&&r[e]?(clearTimeout(t[c]),
delete t[c],d(c),a=r[e],delete r[e],x.stopReceivingMessages(c),a(b)):e||o("'"+a+"' does not contain a UUID - ignoring.")})}function f(a,b){i.cors.expected?e(a,b):l[a.id]=qq(a).attach("load",function(){o("Received response for "+a.id);if(a.parentNode){try{if(a.contentDocument&&a.contentDocument.body&&"false"==a.contentDocument.body.innerHTML)return}catch(c){o("Error when attempting to access iframe during handling of upload response ("+c+")","error")}b()}})}function g(a){var b=qq.toElement('<iframe src="javascript:false;" name="'+
a+'" />');b.setAttribute("id",a);b.style.display="none";document.body.appendChild(b);return b}function n(a,b){var c=i.paramsStore.getParams(a),d=qq.toElement('<form method="'+(i.demoMode?"GET":"POST")+'" enctype="multipart/form-data"></form>'),e=i.endpointStore.getEndpoint(a),f=e;c[i.uuidParamName]=k[a];i.paramsInBody?qq.obj2Inputs(c,d):f=qq.obj2url(c,e);d.setAttribute("action",f);d.setAttribute("target",b.name);d.style.display="none";document.body.appendChild(d);return d}var i=a,m=[],k=[],l={},t=
{},o=c,x=new qq.WindowReceiveMessage({log:o}),r={},s;return s={add:function(a){a.setAttribute("name",i.inputName);var b=m.push(a)-1;k[b]=qq.getUniqueId();a.parentNode&&qq(a).remove();return b},getName:function(a){if(s.isValid(a))return m[a].value.replace(/.*(\/|\\)/,"");o(a+" is not a valid item ID.","error")},isValid:function(a){return void 0!==m[a]},reset:function(){m=[];k=[];l={}},getUuid:function(a){return k[a]},cancel:function(a){i.onCancel(a,this.getName(a));delete m[a];delete k[a];delete l[a];
i.cors.expected&&(clearTimeout(t[a]),delete t[a],x.stopReceivingMessages(a));if(a=document.getElementById(a))a.setAttribute("src","java"+String.fromCharCode(115)+"cript:false;"),qq(a).remove()},upload:function(a){var c=m[a],e=s.getName(a),l=g(a),h;if(!c)throw Error("file with passed id was not added, or already uploaded or cancelled");i.onUpload(a,this.getName(a));h=n(a,l);h.appendChild(c);f(l,function(c){o("iframe loaded");if(!c){var f;try{var h=l.contentDocument||l.contentWindow.document,g=h.body.innerHTML;
o("converting iframe's innerHTML to JSON");o("innerHTML = "+g);g&&g.match(/^<pre/i)&&(g=h.body.firstChild.firstChild.nodeValue);f=qq.parseJson(g)}catch(j){o("Error when attempting to parse form upload response ("+j+")","error"),f={success:!1}}c=f}d(a);i.cors.expected||qq(l).remove();if(c.success||!i.onAutoRetry(a,e,c))i.onComplete(a,e,c),b(a)});o("Sending upload request for "+a);h.submit();qq(h).remove();return a}}};
qq.UploadHandlerXhr=function(a,b,c){function d(a,b,c){var d=p.getSize(a),a=p.getName(a);b[j.chunking.paramNames.partIndex]=c.part;b[j.chunking.paramNames.partByteOffset]=c.start;b[j.chunking.paramNames.chunkSize]=c.size;b[j.chunking.paramNames.totalParts]=c.count;b[j.totalFileSizeParamName]=d;w&&(b[j.chunking.paramNames.filename]=a)}function e(a,b){var c=j.chunking.partSize,d=p.getSize(a),e=h[a].file||h[a].blobData.blob,g=c*b,c=g+c>=d?d:g+c,d=f(a),l;e.slice?l=e.slice(g,c):e.mozSlice?l=e.mozSlice(g,
c):e.webkitSlice&&(l=e.webkitSlice(g,c));return{part:b,start:g,end:c,count:d,blob:l,size:c-g}}function f(a){a=p.getSize(a);return Math.ceil(a/j.chunking.partSize)}function g(a){var b=new XMLHttpRequest;return h[a].xhr=b}function n(a,b,c,d){var e=new FormData,f=j.demoMode?"GET":"POST",g=j.endpointStore.getEndpoint(d),l=g,i=p.getName(d),o=p.getSize(d),k=h[d].blobData;a[j.uuidParamName]=h[d].uuid;w&&(a[j.totalFileSizeParamName]=o,k&&(a[j.blobs.paramNames.name]=k.name));j.paramsInBody||(w||(a[j.inputName]=
i),l=qq.obj2url(a,g));b.open(f,l,!0);j.cors.expected&&j.cors.sendCredentials&&(b.withCredentials=!0);return w?(j.paramsInBody&&qq.obj2FormData(a,e),e.append(j.inputName,c),e):c}function i(a,b){var c=j.customHeaders,d=h[a].file||h[a].blobData.blob;b.setRequestHeader("X-Requested-With","XMLHttpRequest");b.setRequestHeader("Cache-Control","no-cache");w||(b.setRequestHeader("Content-Type","application/octet-stream"),b.setRequestHeader("X-Mime-Type",d.type));qq.each(c,function(a,c){b.setRequestHeader(a,
c)})}function m(a,b,c){var d=p.getName(a),e=p.getSize(a);h[a].attemptingResume=!1;j.onProgress(a,d,e,e);j.onComplete(a,d,b,c);delete h[a].xhr;B(a)}function k(a){var b=h[a].remainingChunkIdxs[0],c=e(a,b),f=g(a),l=p.getSize(a),k=p.getName(a),m;void 0===h[a].loaded&&(h[a].loaded=0);v&&h[a].file&&x(a,c);f.onreadystatechange=o(a,f);f.upload.onprogress=function(c){if(c.lengthComputable){var d=c.loaded+h[a].loaded,c=c.total,f=e(a,b),c=c-f.size,g=p.getSize(a),f=f.count,l=c-h[a].initialRequestOverhead;h[a].lastRequestOverhead=
c;if(b===0){h[a].lastChunkIdxProgress=0;h[a].initialRequestOverhead=c;h[a].estTotalRequestsSize=g+f*c}else if(h[a].lastChunkIdxProgress!==b){h[a].lastChunkIdxProgress=b;h[a].estTotalRequestsSize=h[a].estTotalRequestsSize+l}j.onProgress(a,k,d,h[a].estTotalRequestsSize)}};j.onUploadChunk(a,k,t(c));m=j.paramsStore.getParams(a);d(a,m,c);h[a].attemptingResume&&(m[j.resume.paramNames.resuming]=!0);m=n(m,f,c.blob,a);i(a,f);u("Sending chunked upload request for item "+a+": bytes "+(c.start+1)+"-"+c.end+" of "+
l);f.send(m)}function l(a){u("Server has ordered chunking effort to be restarted on next attempt for item ID "+a,"error");v&&(r(a),h[a].attemptingResume=!1);h[a].remainingChunkIdxs=[];delete h[a].loaded;delete h[a].estTotalRequestsSize;delete h[a].initialRequestOverhead}function t(a){return{partIndex:a.part,startByte:a.start+1,endByte:a.end,totalParts:a.count}}function o(a,b){return function(){if(4===b.readyState){var c;if(h[a]){u("xhr - server response received for "+a);u("responseText = "+b.responseText);
try{c=qq.parseJson(b.responseText)}catch(d){u("Error when attempting to parse xhr response text ("+d+")","error"),c={}}if(200!==b.status||!c.success||c.reset)if(c.reset&&l(a),h[a].attemptingResume&&c.reset)h[a].attemptingResume=!1,u("Server has declared that it cannot handle resume for item ID "+a+" - starting from the first chunk","error"),l(a),p.upload(a,!0);else{var f=p.getName(a);j.onAutoRetry(a,f,c,b)||m(a,c,b)}else if(A){var f=h[a].remainingChunkIdxs.shift(),g=e(a,f);h[a].attemptingResume=!1;
var f=h[a],i=f.loaded,g=g.size,o;o=w?h[a].lastRequestOverhead:0;f.loaded=i+(g+o);0<h[a].remainingChunkIdxs.length?k(a):(v&&r(a),m(a,c,b))}else m(a,c,b)}}}}function x(a,b){var c=p.getUuid(a),d=h[a].loaded,e=h[a].initialRequestOverhead,f=h[a].estTotalRequestsSize,g=s(a);qq.setCookie(g,c+q+b.part+q+d+q+e+q+f,j.resume.cookiesExpireIn)}function r(a){h[a].file&&(a=s(a),qq.deleteCookie(a))}function s(a){var b=p.getName(a),a=p.getSize(a),c=j.chunking.partSize,b="qqfilechunk"+q+encodeURIComponent(b)+q+a+q+
c;void 0!==y&&(b+=q+y);return b}function z(a){var b=h[a].file||h[a].blobData.blob,c=p.getName(a),d,e;h[a].loaded=0;d=g(a);d.upload.onprogress=function(b){b.lengthComputable&&(h[a].loaded=b.loaded,j.onProgress(a,c,b.loaded,b.total))};d.onreadystatechange=o(a,d);e=j.paramsStore.getParams(a);b=n(e,d,b,a);i(a,d);u("Sending upload request for "+a);d.send(b)}var j=a,B=b,u=c,h=[],q="|",A=j.chunking.enabled&&qq.isFileChunkingSupported(),v=j.resume.enabled&&A&&qq.areCookiesEnabled(),y;y=null!==j.resume.id&&
void 0!==j.resume.id&&!qq.isFunction(j.resume.id)&&!qq.isObject(j.resume.id)?j.resume.id:void 0;var w=j.forceMultipart||j.paramsInBody,p;return p={add:function(a){if(a instanceof File)a=h.push({file:a})-1;else if(a.blob instanceof Blob)a=h.push({blobData:a})-1;else throw Error("Passed obj in not a File or BlobData (in qq.UploadHandlerXhr)");h[a].uuid=qq.getUniqueId();return a},getName:function(a){if(p.isValid(a)){var b=h[a].file,a=h[a].blobData;return b?null!==b.fileName&&void 0!==b.fileName?b.fileName:
b.name:a.name}u(a+" is not a valid item ID.","error")},getSize:function(a){a=h[a].file||h[a].blobData.blob;return qq.isFileOrInput(a)?null!=a.fileSize?a.fileSize:a.size:a.size},getFile:function(a){if(h[a])return h[a].file||h[a].blobData.blob},getLoaded:function(a){return h[a].loaded||0},isValid:function(a){return void 0!==h[a]},reset:function(){h=[]},getUuid:function(a){return h[a].uuid},upload:function(a,b){var c=this.getName(a);j.onUpload(a,c);if(A){var d=p.getName(a),c=0,g,l;if(!h[a].remainingChunkIdxs||
0===h[a].remainingChunkIdxs.length){h[a].remainingChunkIdxs=[];if(v&&!b&&h[a].file){a:{g=qq.getCookie(s(a));l=p.getName(a);var i,o,m;if(g){g=g.split(q);if(5===g.length){l=g[0];i=parseInt(g[1],10);o=parseInt(g[2],10);m=parseInt(g[3],10);g=parseInt(g[4],10);g={uuid:l,part:i,lastByteSent:o,initialRequestOverhead:m,estTotalRequestsSize:g};break a}u("Ignoring previously stored resume/chunk cookie for "+l+" - old cookie format","warn")}g=void 0}g&&(l=e(a,g.part),!1!==j.onResume(a,d,t(l))&&(c=g.part,h[a].uuid=
g.uuid,h[a].loaded=g.lastByteSent,h[a].estTotalRequestsSize=g.estTotalRequestsSize,h[a].initialRequestOverhead=g.initialRequestOverhead,h[a].attemptingResume=!0,u("Resuming "+d+" at partition index "+c)))}for(d=f(a)-1;d>=c;d-=1)h[a].remainingChunkIdxs.unshift(d)}k(a)}else z(a)},cancel:function(a){var b=h[a].xhr;j.onCancel(a,this.getName(a));b&&(b.onreadystatechange=null,b.abort());v&&r(a);delete h[a]},getResumableFilesData:function(){var a=[],b=[];return A&&v?(a=void 0===y?qq.getCookieNames(RegExp("^qqfilechunk\\"+
q+".+\\"+q+"\\d+\\"+q+j.chunking.partSize+"=")):qq.getCookieNames(RegExp("^qqfilechunk\\"+q+".+\\"+q+"\\d+\\"+q+j.chunking.partSize+"\\"+q+y+"=")),qq.each(a,function(a,c){var d=c.split(q),e=qq.getCookie(c).split(q);b.push({name:decodeURIComponent(d[1]),size:d[2],uuid:e[0],partIdx:e[1]})}),b):[]}}};
(function(a){var b,c,d,e,f,g,n,i,m,k;g=["uploaderType"];d=function(a){a&&(a=i(a),n(a),"basic"===f("uploaderType")?b(new qq.FineUploaderBasic(a)):b(new qq.FineUploader(a)));return c};e=function(a,b){var d=c.data("fineuploader");if(b)void 0===d&&(d={}),d[a]=b,c.data("fineuploader",d);else return void 0===d?null:d[a]};b=function(a){return e("uploader",a)};f=function(a,b){return e(a,b)};n=function(b){var d=b.callbacks={},e=new qq.FineUploaderBasic;a.each(e._options.callbacks,function(b,f){var g,l;g=/^on(\w+)/.exec(b)[1];
g=g.substring(0,1).toLowerCase()+g.substring(1);l=c;d[b]=function(){var c=Array.prototype.slice.call(arguments),c=l.triggerHandler(g,c);return void 0===c&&0<=a.inArray(b,e.getPromissoryCallbackNames())?f():c}})};i=function(b,d){var e,k;e=void 0===d?"basic"!==b.uploaderType?{element:c[0]}:{}:d;a.each(b,function(b,c){0<=a.inArray(b,g)?f(b,c):c instanceof a?e[b]=c[0]:a.isPlainObject(c)?(e[b]={},i(c,e[b])):a.isArray(c)?(k=[],a.each(c,function(b,c){c instanceof a?a.merge(k,c):k.push(c)}),e[b]=k):e[b]=
c});if(void 0===d)return e};m=function(c){return"string"===a.type(c)&&!c.match(/^_/)&&void 0!==b()[c]};k=function(a){var c=[],d=Array.prototype.slice.call(arguments,1);i(d,c);return b()[a].apply(b(),c)};a.fn.fineUploader=function(e){var f=this,g=arguments,i=[];this.each(function(n,s){c=a(s);if(b()&&m(e)){if(i.push(k.apply(f,g)),1===f.length)return!1}else"object"===typeof e||!e?d.apply(f,g):a.error("Method "+e+" does not exist on jQuery.fineUploader")});return 1===i.length?i[0]:1<i.length?i:this}})(jQuery);