!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery","tmpl","./jquery.fileupload-image","./jquery.fileupload-audio","./jquery.fileupload-video","./jquery.fileupload-validate"],t):t(window.jQuery,window.tmpl)}(function(t,e){"use strict";t.blueimp.fileupload.prototype._specialOptions.push("filesContainer","uploadTemplateId","downloadTemplateId"),t.widget("blueimp.fileupload",t.blueimp.fileupload,{options:{autoUpload:!1,uploadTemplateId:"template-upload",downloadTemplateId:"template-download",filesContainer:void 0,prependFiles:!1,dataType:"json",getNumberOfFiles:function(){return this.filesContainer.children().length},getFilesFromResponse:function(e){return e.result&&t.isArray(e.result.files)?e.result.files:[]},add:function(e,i){var a=t(this),n=a.data("blueimp-fileupload")||a.data("fileupload"),s=n.options,o=i.files;i.process(function(){return a.fileupload("process",i)}).always(function(){i.context=n._renderUpload(o).data("data",i),n._renderPreviews(i),s.filesContainer[s.prependFiles?"prepend":"append"](i.context),n._forceReflow(i.context),n._transition(i.context).done(function(){n._trigger("added",e,i)===!1||!s.autoUpload&&!i.autoUpload||i.autoUpload===!1||i.files.error||i.submit()})})},send:function(e,i){var a=t(this).data("blueimp-fileupload")||t(this).data("fileupload");return i.context&&i.dataType&&"iframe"===i.dataType.substr(0,6)&&i.context.find(".progress").addClass(!t.support.transition&&"progress-animated").attr("aria-valuenow",100).children().first().css("width","100%"),a._trigger("sent",e,i)},done:function(e,i){var a,n,s=t(this).data("blueimp-fileupload")||t(this).data("fileupload"),o=i.getFilesFromResponse||s.options.getFilesFromResponse,r=o(i);i.context?i.context.each(function(o){var l=r[o]||{error:"Empty file upload result"};n=s._addFinishedDeferreds(),s._transition(t(this)).done(function(){var o=t(this);a=s._renderDownload([l]).replaceAll(o),s._forceReflow(a),s._transition(a).done(function(){i.context=t(this),s._trigger("completed",e,i),s._trigger("finished",e,i),n.resolve()})})}):(a=s._renderDownload(r)[s.options.prependFiles?"prependTo":"appendTo"](s.options.filesContainer),s._forceReflow(a),n=s._addFinishedDeferreds(),s._transition(a).done(function(){i.context=t(this),s._trigger("completed",e,i),s._trigger("finished",e,i),n.resolve()}))},fail:function(e,i){var a,n,s=t(this).data("blueimp-fileupload")||t(this).data("fileupload");i.context?i.context.each(function(o){if("abort"!==i.errorThrown){var r=i.files[o];r.error=r.error||i.errorThrown||!0,n=s._addFinishedDeferreds(),s._transition(t(this)).done(function(){var o=t(this);a=s._renderDownload([r]).replaceAll(o),s._forceReflow(a),s._transition(a).done(function(){i.context=t(this),s._trigger("failed",e,i),s._trigger("finished",e,i),n.resolve()})})}else n=s._addFinishedDeferreds(),s._transition(t(this)).done(function(){t(this).remove(),s._trigger("failed",e,i),s._trigger("finished",e,i),n.resolve()})}):"abort"!==i.errorThrown?(i.context=s._renderUpload(i.files)[s.options.prependFiles?"prependTo":"appendTo"](s.options.filesContainer).data("data",i),s._forceReflow(i.context),n=s._addFinishedDeferreds(),s._transition(i.context).done(function(){i.context=t(this),s._trigger("failed",e,i),s._trigger("finished",e,i),n.resolve()})):(s._trigger("failed",e,i),s._trigger("finished",e,i),s._addFinishedDeferreds().resolve())},progress:function(e,i){var a=Math.floor(100*(i.loaded/i.total));i.context&&i.context.each(function(){t(this).find(".progress").attr("aria-valuenow",a).children().first().css("width",a+"%")})},progressall:function(e,i){var a=t(this),n=Math.floor(100*(i.loaded/i.total)),s=a.find(".fileupload-progress"),o=s.find(".progress-extended");o.length&&o.html((a.data("blueimp-fileupload")||a.data("fileupload"))._renderExtendedProgress(i)),s.find(".progress").attr("aria-valuenow",n).children().first().css("width",n+"%")},start:function(e){var i=t(this).data("blueimp-fileupload")||t(this).data("fileupload");i._resetFinishedDeferreds(),i._transition(t(this).find(".fileupload-progress")).done(function(){i._trigger("started",e)})},stop:function(e){var i=t(this).data("blueimp-fileupload")||t(this).data("fileupload"),a=i._addFinishedDeferreds();t.when.apply(t,i._getFinishedDeferreds()).done(function(){i._trigger("stopped",e)}),i._transition(t(this).find(".fileupload-progress")).done(function(){t(this).find(".progress").attr("aria-valuenow","0").children().first().css("width","0%"),t(this).find(".progress-extended").html(" "),a.resolve()})},processstart:function(){t(this).addClass("fileupload-processing")},processstop:function(){t(this).removeClass("fileupload-processing")},destroy:function(e,i){var a=t(this).data("blueimp-fileupload")||t(this).data("fileupload"),n=function(){a._transition(i.context).done(function(){t(this).remove(),a._trigger("destroyed",e,i)})};i.url?(i.dataType=i.dataType||a.options.dataType,t.ajax(i).done(n)):n()}},_resetFinishedDeferreds:function(){this._finishedUploads=[]},_addFinishedDeferreds:function(e){return e||(e=t.Deferred()),this._finishedUploads.push(e),e},_getFinishedDeferreds:function(){return this._finishedUploads},_enableDragToDesktop:function(){var e=t(this),i=e.prop("href"),a=e.prop("download"),n="application/octet-stream";e.bind("dragstart",function(t){try{t.originalEvent.dataTransfer.setData("DownloadURL",[n,a,i].join(":"))}catch(e){}})},_formatFileSize:function(t){return"number"!=typeof t?"":t>=1e9?(t/1e9).toFixed(2)+" GB":t>=1e6?(t/1e6).toFixed(2)+" MB":(t/1e3).toFixed(2)+" KB"},_formatBitrate:function(t){return"number"!=typeof t?"":t>=1e9?(t/1e9).toFixed(2)+" Gbit/s":t>=1e6?(t/1e6).toFixed(2)+" Mbit/s":t>=1e3?(t/1e3).toFixed(2)+" kbit/s":t.toFixed(2)+" bit/s"},_formatTime:function(t){var e=new Date(1e3*t),i=Math.floor(t/86400);return i=i?i+"d ":"",i+("0"+e.getUTCHours()).slice(-2)+":"+("0"+e.getUTCMinutes()).slice(-2)+":"+("0"+e.getUTCSeconds()).slice(-2)},_formatPercentage:function(t){return(100*t).toFixed(2)+" %"},_renderExtendedProgress:function(t){return this._formatBitrate(t.bitrate)+" | "+this._formatTime(8*(t.total-t.loaded)/t.bitrate)+" | "+this._formatPercentage(t.loaded/t.total)+" | "+this._formatFileSize(t.loaded)+" / "+this._formatFileSize(t.total)},_renderTemplate:function(e,i){if(!e)return t();var a=e({files:i,formatFileSize:this._formatFileSize,options:this.options});return a instanceof t?a:t(this.options.templatesContainer).html(a).children()},_renderPreviews:function(e){e.context.find(".preview").each(function(i,a){t(a).append(e.files[i].preview)})},_renderUpload:function(t){return this._renderTemplate(this.options.uploadTemplate,t)},_renderDownload:function(t){return this._renderTemplate(this.options.downloadTemplate,t).find("a[download]").each(this._enableDragToDesktop).end()},_startHandler:function(e){e.preventDefault();var i=t(e.currentTarget),a=i.closest(".template-upload"),n=a.data("data");i.prop("disabled",!0),n&&n.submit&&n.submit()},_cancelHandler:function(e){e.preventDefault();var i=t(e.currentTarget).closest(".template-upload,.template-download"),a=i.data("data")||{};a.jqXHR?a.jqXHR.abort():(a.context=a.context||i,a.errorThrown="abort",this._trigger("fail",e,a))},_deleteHandler:function(e){e.preventDefault();var i=t(e.currentTarget);this._trigger("destroy",e,t.extend({context:i.closest(".template-download"),type:"DELETE"},i.data()))},_forceReflow:function(e){return t.support.transition&&e.length&&e[0].offsetWidth},_transition:function(e){var i=t.Deferred();return t.support.transition&&e.hasClass("fade")&&e.is(":visible")?e.bind(t.support.transition.end,function(a){a.target===e[0]&&(e.unbind(t.support.transition.end),i.resolveWith(e))}).toggleClass("in"):(e.toggleClass("in"),i.resolveWith(e)),i},_initButtonBarEventHandlers:function(){var e=this.element.find(".fileupload-buttonbar"),i=this.options.filesContainer;this._on(e.find(".start"),{click:function(t){t.preventDefault(),i.find(".start").click()}}),this._on(e.find(".cancel"),{click:function(t){t.preventDefault(),i.find(".cancel").click()}}),this._on(e.find(".delete"),{click:function(t){t.preventDefault(),i.find(".toggle:checked").closest(".template-download").find(".delete").click(),e.find(".toggle").prop("checked",!1)}}),this._on(e.find(".toggle"),{change:function(e){i.find(".toggle").prop("checked",t(e.currentTarget).is(":checked"))}})},_destroyButtonBarEventHandlers:function(){this._off(this.element.find(".fileupload-buttonbar").find(".start, .cancel, .delete"),"click"),this._off(this.element.find(".fileupload-buttonbar .toggle"),"change.")},_initEventHandlers:function(){this._super(),this._on(this.options.filesContainer,{"click .start":this._startHandler,"click .cancel":this._cancelHandler,"click .delete":this._deleteHandler}),this._initButtonBarEventHandlers()},_destroyEventHandlers:function(){this._destroyButtonBarEventHandlers(),this._off(this.options.filesContainer,"click"),this._super()},_enableFileInputButton:function(){this.element.find(".fileinput-button input").prop("disabled",!1).parent().removeClass("disabled")},_disableFileInputButton:function(){this.element.find(".fileinput-button input").prop("disabled",!0).parent().addClass("disabled")},_initTemplates:function(){var t=this.options;t.templatesContainer=this.document[0].createElement(t.filesContainer.prop("nodeName")),e&&(t.uploadTemplateId&&(t.uploadTemplate=e(t.uploadTemplateId)),t.downloadTemplateId&&(t.downloadTemplate=e(t.downloadTemplateId)))},_initFilesContainer:function(){var e=this.options;void 0===e.filesContainer?e.filesContainer=this.element.find(".files"):e.filesContainer instanceof t||(e.filesContainer=t(e.filesContainer))},_initSpecialOptions:function(){this._super(),this._initFilesContainer(),this._initTemplates()},_create:function(){this._super(),this._resetFinishedDeferreds(),t.support.fileInput||this._disableFileInputButton()},enable:function(){var t=!1;this.options.disabled&&(t=!0),this._super(),t&&(this.element.find("input, button").prop("disabled",!1),this._enableFileInputButton())},disable:function(){this.options.disabled||(this.element.find("input, button").prop("disabled",!0),this._disableFileInputButton()),this._super()}})});