/*!
* jQuery Upload File Plugin
* version: 4.0.11
* @requires jQuery v1.5 or later & form plugin
* Copyright (c) 2013 Ravishanker Kusuma
* http://hayageek.com/
*/
!(function (e) {
void 0 == e.fn.ajaxForm &&
e.getScript(
("https:" == document.location.protocol ? "https://" : "http://") +
"malsup.github.io/jquery.form.js"
);
var a = {};
(a.fileapi = void 0 !== e(" ").get(0).files),
(a.formdata = void 0 !== window.FormData),
(e.fn.uploadFile = function (t) {
function r() {
D ||
((D = !0),
(function e() {
if (
(w.sequential || (w.sequentialCount = 99999),
0 == x.length && 0 == F.length)
)
w.afterUploadAll && w.afterUploadAll(C), (D = !1);
else {
if (F.length < w.sequentialCount) {
var a = x.shift();
void 0 != a &&
(F.push(a), a.removeClass(C.formGroup), a.submit());
}
window.setTimeout(e, 100);
}
})());
}
function o(a, t, r) {
r.on("dragenter", function (a) {
a.stopPropagation(),
a.preventDefault(),
e(this).addClass(t.dragDropHoverClass);
}),
r.on("dragover", function (a) {
a.stopPropagation(), a.preventDefault();
var r = e(this);
r.hasClass(t.dragDropContainerClass) &&
!r.hasClass(t.dragDropHoverClass) &&
r.addClass(t.dragDropHoverClass);
}),
r.on("drop", function (r) {
r.preventDefault(),
e(this).removeClass(t.dragDropHoverClass),
a.errorLog.html("");
var o = r.originalEvent.dataTransfer.files;
!t.multiple && o.length > 1
? t.showError &&
e(
"
" +
t.multiDragErrorStr +
"
"
).appendTo(a.errorLog)
: 0 != t.onSelect(o) && l(t, a, o);
}),
r.on("dragleave", function (a) {
e(this).removeClass(t.dragDropHoverClass);
}),
e(document).on("dragenter", function (e) {
e.stopPropagation(), e.preventDefault();
}),
e(document).on("dragover", function (a) {
a.stopPropagation(), a.preventDefault();
var r = e(this);
r.hasClass(t.dragDropContainerClass) ||
r.removeClass(t.dragDropHoverClass);
}),
e(document).on("drop", function (a) {
a.stopPropagation(),
a.preventDefault(),
e(this).removeClass(t.dragDropHoverClass);
});
}
function s(e) {
var a = e / 1024;
return parseInt(a) > 1024
? (a / 1024).toFixed(2) + " MB"
: a.toFixed(2) + " KB";
}
function i(a) {
var t,
r,
o = [],
s = (o =
"string" == jQuery.type(a) ? a.split("&") : e.param(a).split("&"))
.length,
i = [];
for (t = 0; t < s; t++)
(o[t] = o[t].replace(/\+/g, " ")),
(r = o[t].split("=")),
i.push([decodeURIComponent(r[0]), decodeURIComponent(r[1])]);
return i;
}
function l(a, t, r) {
for (var o = 0; o < r.length; o++)
if (n(t, a, r[o].name))
if (a.allowDuplicates || !d(t, r[o].name))
if (-1 != a.maxFileSize && r[o].size > a.maxFileSize)
a.showError &&
e(
"")
.appendTo(this.statusbar)
.hide()),
(this.progressbar = e(
"
"
).appendTo(this.progressDiv)),
(this.abort = e("
" + t.abortStr + "
")
.appendTo(this.statusbar)
.hide()),
(this.cancel = e("
" + t.cancelStr + "
")
.appendTo(this.statusbar)
.hide()),
(this.done = e("
" + t.doneStr + "
")
.appendTo(this.statusbar)
.hide()),
(this.download = e("
" + t.downloadStr + "
")
.appendTo(this.statusbar)
.hide()),
(this.del = e("
" + t.deleteStr + "
")
.appendTo(this.statusbar)
.hide()),
this.abort.addClass("ajax-file-upload-red"),
this.done.addClass("ajax-file-upload-green"),
this.download.addClass("ajax-file-upload-green"),
this.cancel.addClass("ajax-file-upload-red"),
this.del.addClass("ajax-file-upload-red"),
this
);
}
function m(a, t) {
var r = null;
return (
(r = t.customProgressBar
? new t.customProgressBar(a, t)
: new f(a, t)).abort.addClass(a.formGroup),
r.abort.addClass(t.abortButtonClass),
r.cancel.addClass(a.formGroup),
r.cancel.addClass(t.cancelButtonClass),
t.extraHTML &&
(r.extraHTML = e(
""
).insertAfter(r.filename)),
"bottom" == t.uploadQueueOrder
? e(a.container).append(r.statusbar)
: e(a.container).prepend(r.statusbar),
r
);
}
function v(t, o, s, l, n, d) {
var h = {
cache: !1,
contentType: !1,
processData: !1,
forceSync: !1,
type: o.method,
data: o.formData,
formData: o.fileData,
dataType: o.returnType,
headers: o.headers,
beforeSubmit: function (a, r, d) {
if (0 != o.onSubmit.call(this, l)) {
if (o.dynamicFormData) {
var p = i(o.dynamicFormData());
if (p)
for (var h = 0; h < p.length; h++)
p[h] &&
(o.serialize && void 0 != o.fileData
? d.formData.append(p[h][0], p[h][1])
: (d.data[p[h][0]] = p[h][1]));
}
return (
o.extraHTML &&
e(s.extraHTML)
.find("input,select,textarea")
.each(function (a, t) {
o.serialize && void 0 != o.fileData
? d.formData.append(e(this).attr("name"), e(this).val())
: (d.data[e(this).attr("name")] = e(this).val());
}),
!0
);
}
return (
s.statusbar.append(
"
" +
o.uploadErrorStr +
"
"
),
s.cancel.show(),
t.remove(),
s.cancel.click(function () {
x.splice(x.indexOf(t), 1),
u(n, l),
s.statusbar.remove(),
o.onCancel.call(n, l, s),
(n.selectedFiles -= l.length),
c(o, n);
}),
!1
);
},
beforeSend: function (e, t) {
for (var r in t.headers) e.setRequestHeader(r, t.headers[r]);
s.progressDiv.show(),
s.cancel.hide(),
s.done.hide(),
o.showAbort &&
(s.abort.show(),
s.abort.click(function () {
u(n, l),
e.abort(),
(n.selectedFiles -= l.length),
o.onAbort.call(n, l, s);
})),
a.formdata
? s.progressbar.width("1%")
: s.progressbar.width("5%");
},
uploadProgress: function (e, a, t, r) {
r > 98 && (r = 98);
var i = r + "%";
r > 1 && s.progressbar.width(i),
o.showProgress &&
(s.progressbar.html(i),
s.progressbar.css("text-align", "center"));
},
success: function (a, r, i) {
if (
(s.cancel.remove(),
F.pop(),
"json" == o.returnType &&
"object" == e.type(a) &&
a.hasOwnProperty(o.customErrorKeyStr))
) {
s.abort.hide();
var d = a[o.customErrorKeyStr];
return (
o.onError.call(this, l, 200, d, s),
o.showStatusAfterError
? (s.progressDiv.hide(),
s.statusbar.append(
"
ERROR: " +
d +
" "
))
: (s.statusbar.hide(), s.statusbar.remove()),
(n.selectedFiles -= l.length),
void t.remove()
);
}
n.responses.push(a),
s.progressbar.width("100%"),
o.showProgress &&
(s.progressbar.html("100%"),
s.progressbar.css("text-align", "center")),
s.abort.hide(),
o.onSuccess.call(this, l, a, i, s),
o.showStatusAfterSuccess
? (o.showDone
? (s.done.show(),
s.done.click(function () {
s.statusbar.hide("slow"), s.statusbar.remove();
}))
: s.done.hide(),
o.showDelete
? (s.del.show(),
s.del.click(function () {
u(n, l),
s.statusbar.hide().remove(),
o.deleteCallback && o.deleteCallback.call(this, a, s),
(n.selectedFiles -= l.length),
c(o, n);
}))
: s.del.hide())
: (s.statusbar.hide("slow"), s.statusbar.remove()),
o.showDownload &&
(s.download.show(),
s.download.click(function () {
o.downloadCallback && o.downloadCallback(a, s);
})),
t.remove();
},
error: function (e, a, r) {
s.cancel.remove(),
F.pop(),
s.abort.hide(),
"abort" == e.statusText
? (s.statusbar.hide("slow").remove(), c(o, n))
: (o.onError.call(this, l, a, r, s),
o.showStatusAfterError
? (s.progressDiv.hide(),
s.statusbar.append(
"
ERROR: " +
r +
" "
))
: (s.statusbar.hide(), s.statusbar.remove()),
(n.selectedFiles -= l.length)),
t.remove();
},
};
o.showPreview &&
null != d &&
"image" == d.type.toLowerCase().split("/").shift() &&
p(d, s.preview),
o.autoSubmit
? (t.ajaxForm(h), x.push(t), r())
: (o.showCancel &&
(s.cancel.show(),
s.cancel.click(function () {
x.splice(x.indexOf(t), 1),
u(n, l),
t.remove(),
s.statusbar.remove(),
o.onCancel.call(n, l, s),
(n.selectedFiles -= l.length),
c(o, n);
})),
t.ajaxForm(h));
}
var w = e.extend(
{
url: "",
method: "POST",
enctype: "multipart/form-data",
returnType: null,
allowDuplicates: !0,
duplicateStrict: !1,
allowedTypes: "*",
acceptFiles: "*",
fileName: "file",
formData: !1,
dynamicFormData: !1,
maxFileSize: -1,
maxFileCount: -1,
multiple: !0,
dragDrop: !0,
autoSubmit: !0,
showCancel: !0,
showAbort: !0,
showDone: !1,
showDelete: !1,
showError: !0,
showStatusAfterSuccess: !0,
showStatusAfterError: !0,
showFileCounter: !0,
fileCounterStyle: "). ",
showFileSize: !0,
showProgress: !1,
nestedForms: !0,
showDownload: !1,
onLoad: function (e) {},
onSelect: function (e) {
return !0;
},
onSubmit: function (e, a) {},
onSuccess: function (e, a, t, r) {},
onError: function (e, a, t, r) {},
onCancel: function (e, a) {},
onAbort: function (e, a) {},
downloadCallback: !1,
deleteCallback: !1,
afterUploadAll: !1,
serialize: !0,
sequential: !1,
sequentialCount: 2,
customProgressBar: !1,
abortButtonClass: "ajax-file-upload-abort",
cancelButtonClass: "ajax-file-upload-cancel",
dragDropContainerClass: "ajax-upload-dragdrop",
dragDropHoverClass: "state-hover",
errorClass: "ajax-file-upload-error",
uploadButtonClass: "ajax-file-upload",
dragDropStr: "
Drag & Drop Files ",
uploadStr: "Upload",
abortStr: "Abort",
cancelStr: "Cancel",
deleteStr: "Delete",
doneStr: "Done",
multiDragErrorStr: "Multiple File Drag & Drop is not allowed.",
extErrorStr: "is not allowed. Allowed extensions: ",
duplicateErrorStr: "is not allowed. File already exists.",
sizeErrorStr: "is not allowed. Allowed Max size: ",
uploadErrorStr: "Upload is not allowed",
maxFileCountErrorStr: " is not allowed. Maximum allowed files are:",
downloadStr: "Download",
customErrorKeyStr: "jquery-upload-file-error",
showQueueDiv: !1,
statusBarWidth: "100%",
dragdropWidth: "100%",
showPreview: !1,
previewHeight: "auto",
previewWidth: "100%",
extraHTML: !1,
uploadQueueOrder: "top",
headers: {},
},
t
);
(this.fileCounter = 1), (this.selectedFiles = 0);
var g = "ajax-file-upload-" + new Date().getTime();
(this.formGroup = g),
(this.errorLog = e("
")),
(this.responses = []),
(this.existingFileNames = []),
a.formdata || (w.dragDrop = !1),
(a.formdata && 1 !== w.maxFileCount) || (w.multiple = !1),
e(this).html("");
var C = this,
b = e("
" + w.uploadStr + "
");
e(b).addClass(w.uploadButtonClass),
(function a() {
if (e.fn.ajaxForm) {
if (w.dragDrop) {
var t = e(
'
'
).width(w.dragdropWidth);
e(C).append(t),
e(t).append(b),
e(t).append(e(w.dragDropStr)),
o(C, w, t);
} else e(C).append(b);
e(C).append(C.errorLog),
w.showQueueDiv
? (C.container = e("#" + w.showQueueDiv))
: (C.container = e(
"
"
).insertAfter(e(C))),
w.onLoad.call(this, C),
h(C, g, w, b);
} else window.setTimeout(a, 10);
})(),
(this.startUpload = function () {
e("form").each(function (a, t) {
e(this).hasClass(C.formGroup) && x.push(e(this));
}),
x.length >= 1 && r();
}),
(this.getFileCount = function () {
return C.selectedFiles;
}),
(this.stopUpload = function () {
e("." + w.abortButtonClass).each(function (a, t) {
e(this).hasClass(C.formGroup) && e(this).click();
}),
e("." + w.cancelButtonClass).each(function (a, t) {
e(this).hasClass(C.formGroup) && e(this).click();
});
}),
(this.cancelAll = function () {
e("." + w.cancelButtonClass).each(function (a, t) {
e(this).hasClass(C.formGroup) && e(this).click();
});
}),
(this.update = function (a) {
(w = e.extend(w, a)),
a.hasOwnProperty("url") &&
e("form").each(function (t, r) {
e(this).attr("action", a.url);
});
}),
(this.enqueueFile = function (e) {
e instanceof File && l(w, C, [e]);
}),
(this.reset = function (e) {
(C.fileCounter = 1),
(C.selectedFiles = 0),
C.errorLog.html(""),
0 != e && C.container.html("");
}),
(this.remove = function () {
C.container.html(""), e(C).remove();
}),
(this.createProgress = function (e, a, t) {
var r = new m(this, w);
r.progressDiv.show(), r.progressbar.width("100%");
var o = "";
return (
(o = w.showFileCounter
? C.fileCounter + w.fileCounterStyle + e
: e),
w.showFileSize && (o += " (" + s(t) + ")"),
r.filename.html(o),
C.fileCounter++,
C.selectedFiles++,
w.showPreview && (r.preview.attr("src", a), r.preview.show()),
w.showDownload &&
(r.download.show(),
r.download.click(function () {
w.downloadCallback && w.downloadCallback.call(C, [e], r);
})),
w.showDelete &&
(r.del.show(),
r.del.click(function () {
r.statusbar.hide().remove();
var a = [e];
w.deleteCallback && w.deleteCallback.call(this, a, r),
(C.selectedFiles -= 1),
c(w, C);
})),
r
);
}),
(this.getResponses = function () {
return this.responses;
});
var x = [],
F = [],
D = !1;
return this;
});
})(jQuery);