/*
SWFObject v2.2
is released under the MIT License
*/
;
var swfobject = function () {
var D = "undefined",
r = "object",
S = "Shockwave Flash",
W = "ShockwaveFlash.ShockwaveFlash",
q = "application/x-shockwave-flash",
R = "SWFObjectExprInst",
x = "onreadystatechange",
O = window,
j = document,
t = navigator,
T = false,
U = [h],
o = [],
N = [],
I = [],
l,
Q,
E,
B,
J = false,
a = false,
n,
G,
m = true,
M = function () {
var aa = typeof j.getElementById != D && typeof j.getElementsByTagName != D && typeof j.createElement != D,
ah = t.userAgent.toLowerCase(),
Y = t.platform.toLowerCase(),
ae = Y ? /win/.test(Y) : /win/.test(ah),
ac = Y ? /mac/.test(Y) : /mac/.test(ah),
af = /webkit/.test(ah) ? parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false,
X = ! +"\v1",
ag = [0, 0, 0],
ab = null;
if (typeof t.plugins != D && typeof t.plugins[S] == r) {
ab = t.plugins[S].description;
if (ab && !(typeof t.mimeTypes != D && t.mimeTypes[q] && !t.mimeTypes[q].enabledPlugin)) {
T = true;
X = false;
ab = ab.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
ag[0] = parseInt(ab.replace(/^(.*)\..*$/, "$1"), 10);
ag[1] = parseInt(ab.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
ag[2] = /[a-zA-Z]/.test(ab) ? parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
}
} else {
if (typeof O.ActiveXObject != D) {
try {
var ad = new ActiveXObject(W);
if (ad) {
ab = ad.GetVariable("$version");
if (ab) {
X = true;
ab = ab.split(" ")[1].split(",");
ag = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)];
}
}
} catch (Z) { }
}
}
return {
w3: aa,
pv: ag,
wk: af,
ie: X,
win: ae,
mac: ac
};
}
(),
k = function () {
if (!M.w3) {
return;
}
if ((typeof j.readyState != D && j.readyState == "complete") || (typeof j.readyState == D && (j.getElementsByTagName("body")[0] || j.body))) {
f();
}
if (!J) {
if (typeof j.addEventListener != D) {
j.addEventListener("DOMContentLoaded", f, false);
}
if (M.ie && M.win) {
j.attachEvent(x, function () {
if (j.readyState == "complete") {
j.detachEvent(x, arguments.callee);
f();
}
});
if (O == top) {
(function () {
if (J) {
return;
}
try {
j.documentElement.doScroll("left");
} catch (X) {
setTimeout(arguments.callee, 0);
return;
}
f();
})();
}
}
if (M.wk) {
(function () {
if (J) {
return;
}
if (!/loaded|complete/.test(j.readyState)) {
setTimeout(arguments.callee, 0);
return;
}
f();
})();
}
s(f);
}
}
();
function f() {
if (J) {
return;
}
try {
var Z = j.getElementsByTagName("body")[0].appendChild(C("span"));
Z.parentNode.removeChild(Z);
} catch (aa) {
return;
}
J = true;
var X = U.length;
for (var Y = 0; Y < X; Y++) {
U[Y]();
}
}
function K(X) {
if (J) {
X();
} else {
U[U.length] = X;
}
}
function s(Y) {
if (typeof O.addEventListener != D) {
O.addEventListener("load", Y, false);
} else {
if (typeof j.addEventListener != D) {
j.addEventListener("load", Y, false);
} else {
if (typeof O.attachEvent != D) {
i(O, "onload", Y);
} else {
if (typeof O.onload == "function") {
var X = O.onload;
O.onload = function () {
X();
Y();
};
} else {
O.onload = Y;
}
}
}
}
}
function h() {
if (T) {
V();
} else {
H();
}
}
function V() {
var X = j.getElementsByTagName("body")[0];
var aa = C(r);
aa.setAttribute("type", q);
var Z = X.appendChild(aa);
if (Z) {
var Y = 0;
(function () {
if (typeof Z.GetVariable != D) {
var ab = Z.GetVariable("$version");
if (ab) {
ab = ab.split(" ")[1].split(",");
M.pv = [parseInt(ab[0], 10), parseInt(ab[1], 10), parseInt(ab[2], 10)];
}
} else {
if (Y < 10) {
Y++;
setTimeout(arguments.callee, 10);
return;
}
}
X.removeChild(aa);
Z = null;
H();
})();
} else {
H();
}
}
function H() {
var ag = o.length;
if (ag > 0) {
for (var af = 0; af < ag; af++) {
var Y = o[af].id;
var ab = o[af].callbackFn;
var aa = {
success: false,
id: Y
};
if (M.pv[0] > 0) {
var ae = c(Y);
if (ae) {
if (F(o[af].swfVersion) && !(M.wk && M.wk < 312)) {
w(Y, true);
if (ab) {
aa.success = true;
aa.ref = z(Y);
ab(aa);
}
} else {
if (o[af].expressInstall && A()) {
var ai = {};
ai.data = o[af].expressInstall;
ai.width = ae.getAttribute("width") || "0";
ai.height = ae.getAttribute("height") || "0";
if (ae.getAttribute("class")) {
ai.styleclass = ae.getAttribute("class");
}
if (ae.getAttribute("align")) {
ai.align = ae.getAttribute("align");
}
var ah = {};
var X = ae.getElementsByTagName("param");
var ac = X.length;
for (var ad = 0; ad < ac; ad++) {
if (X[ad].getAttribute("name").toLowerCase() != "movie") {
ah[X[ad].getAttribute("name")] = X[ad].getAttribute("value");
}
}
P(ai, ah, Y, ab);
} else {
p(ae);
if (ab) {
ab(aa);
}
}
}
}
} else {
w(Y, true);
if (ab) {
var Z = z(Y);
if (Z && typeof Z.SetVariable != D) {
aa.success = true;
aa.ref = Z;
}
ab(aa);
}
}
}
}
}
function z(aa) {
var X = null;
var Y = c(aa);
if (Y && Y.nodeName == "OBJECT") {
if (typeof Y.SetVariable != D) {
X = Y;
} else {
var Z = Y.getElementsByTagName(r)[0];
if (Z) {
X = Z;
}
}
}
return X;
}
function A() {
return !a && F("6.0.65") && (M.win || M.mac) && !(M.wk && M.wk < 312);
}
function P(aa, ab, X, Z) {
a = true;
E = Z || null;
B = {
success: false,
id: X
};
var ae = c(X);
if (ae) {
if (ae.nodeName == "OBJECT") {
l = g(ae);
Q = null;
} else {
l = ae;
Q = X;
}
aa.id = R;
if (typeof aa.width == D || (!/%$/.test(aa.width) && parseInt(aa.width, 10) < 310)) {
aa.width = "310";
}
if (typeof aa.height == D || (!/%$/.test(aa.height) && parseInt(aa.height, 10) < 137)) {
aa.height = "137";
}
j.title = j.title.slice(0, 47) + " - Flash Player Installation";
var ad = M.ie && M.win ? "ActiveX" : "PlugIn",
ac = "MMredirectURL=" + O.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + ad + "&MMdoctitle=" + j.title;
if (typeof ab.flashvars != D) {
ab.flashvars += "&" + ac;
} else {
ab.flashvars = ac;
}
if (M.ie && M.win && ae.readyState != 4) {
var Y = C("div");
X += "SWFObjectNew";
Y.setAttribute("id", X);
ae.parentNode.insertBefore(Y, ae);
ae.style.display = "none";
(function () {
if (ae.readyState == 4) {
try {
ae.parentNode.removeChild(ae);
} catch (ignore) { }
} else {
setTimeout(arguments.callee, 10);
}
})();
}
u(aa, ab, X);
}
}
function p(Y) {
if (M.ie && M.win && Y.readyState != 4) {
var X = C("div");
Y.parentNode.insertBefore(X, Y);
X.parentNode.replaceChild(g(Y), X);
Y.style.display = "none";
(function () {
if (Y.readyState == 4) {
try {
Y.parentNode.removeChild(Y);
} catch (ignore) { }
} else {
setTimeout(arguments.callee, 10);
}
})();
} else {
Y.parentNode.replaceChild(g(Y), Y);
}
}
function g(ab) {
var aa = C("div");
if (M.win && M.ie) {
aa.innerHTML = ab.innerHTML;
} else {
var Y = ab.getElementsByTagName(r)[0];
if (Y) {
var ad = Y.childNodes;
if (ad) {
var X = ad.length;
for (var Z = 0; Z < X; Z++) {
if (!(ad[Z].nodeType == 1 && ad[Z].nodeName == "PARAM") && !(ad[Z].nodeType == 8)) {
aa.appendChild(ad[Z].cloneNode(true));
}
}
}
}
}
return aa;
}
function u(ai, ag, Y) {
var X,
aa = c(Y);
if (M.wk && M.wk < 312) {
return X;
}
if (aa) {
if (typeof ai.id == D) {
ai.id = Y;
}
if (M.ie && M.win) {
var ah = "";
for (var ae in ai) {
if (ai[ae] != Object.prototype[ae]) {
if (ae.toLowerCase() == "data") {
ag.movie = ai[ae];
} else {
if (ae.toLowerCase() == "styleclass") {
ah += ' class="' + ai[ae] + '"';
} else {
if (ae.toLowerCase() != "classid") {
ah += " " + ae + '="' + ai[ae] + '"';
}
}
}
}
}
var af = "";
for (var ad in ag) {
if (ag[ad] != Object.prototype[ad]) {
af += '';
}
}
aa.outerHTML = '";
N[N.length] = ai.id;
X = c(ai.id);
} else {
var Z = C(r);
Z.setAttribute("type", q);
for (var ac in ai) {
if (ai[ac] != Object.prototype[ac]) {
if (ac.toLowerCase() == "styleclass") {
Z.setAttribute("class", ai[ac]);
} else {
if (ac.toLowerCase() != "classid") {
Z.setAttribute(ac, ai[ac]);
}
}
}
}
for (var ab in ag) {
if (ag[ab] != Object.prototype[ab] && ab.toLowerCase() != "movie") {
e(Z, ab, ag[ab]);
}
}
aa.parentNode.replaceChild(Z, aa);
X = Z;
}
}
return X;
}
function e(Z, X, Y) {
var aa = C("param");
aa.setAttribute("name", X);
aa.setAttribute("value", Y);
Z.appendChild(aa);
}
function y(Y) {
var X = c(Y);
if (X && X.nodeName == "OBJECT") {
if (M.ie && M.win) {
X.style.display = "none";
(function () {
if (X.readyState == 4) {
try {
b(Y);
} catch (ignore) { }
} else {
setTimeout(arguments.callee, 10);
}
})();
} else {
X.parentNode.removeChild(X);
}
}
}
function b(Z) {
var Y = c(Z);
if (Y) {
for (var X in Y) {
if (typeof Y[X] == "function") {
Y[X] = null;
}
}
Y.parentNode.removeChild(Y);
}
}
function c(Z) {
var X = null;
try {
X = j.getElementById(Z);
} catch (Y) { }
return X;
}
function C(X) {
return j.createElement(X);
}
function i(Z, X, Y) {
Z.attachEvent(X, Y);
I[I.length] = [Z, X, Y];
}
function F(Z) {
var Y = M.pv,
X = Z.split(".");
X[0] = parseInt(X[0], 10);
X[1] = parseInt(X[1], 10) || 0;
X[2] = parseInt(X[2], 10) || 0;
return (Y[0] > X[0] || (Y[0] == X[0] && Y[1] > X[1]) || (Y[0] == X[0] && Y[1] == X[1] && Y[2] >= X[2])) ? true : false;
}
function v(ac, Y, ad, ab) {
if (M.ie && M.mac) {
return;
}
var aa = j.getElementsByTagName("head")[0];
if (!aa) {
return;
}
var X = (ad && typeof ad == "string") ? ad : "screen";
if (ab) {
n = null;
G = null;
}
if (!n || G != X) {
var Z = C("style");
Z.setAttribute("type", "text/css");
Z.setAttribute("media", X);
n = aa.appendChild(Z);
if (M.ie && M.win && typeof j.styleSheets != D && j.styleSheets.length > 0) {
n = j.styleSheets[j.styleSheets.length - 1];
}
G = X;
}
if (M.ie && M.win) {
if (n && typeof n.addRule == r) {
n.addRule(ac, Y);
}
} else {
if (n && typeof j.createTextNode != D) {
n.appendChild(j.createTextNode(ac + " {" + Y + "}"));
}
}
}
function w(Z, X) {
if (!m) {
return;
}
var Y = X ? "visible" : "hidden";
if (J && c(Z)) {
c(Z).style.visibility = Y;
} else {
v("#" + Z, "visibility:" + Y);
}
}
function L(Y) {
var Z = /[\\\"<>\.;]/;
var X = Z.exec(Y) != null;
return X && typeof encodeURIComponent != D ? encodeURIComponent(Y) : Y;
}
var d = function () {
if (M.ie && M.win) {
window.attachEvent("onunload", function () {
var ac = I.length;
for (var ab = 0; ab < ac; ab++) {
I[ab][0].detachEvent(I[ab][1], I[ab][2]);
}
var Z = N.length;
for (var aa = 0; aa < Z; aa++) {
y(N[aa]);
}
for (var Y in M) {
M[Y] = null;
}
M = null;
for (var X in swfobject) {
swfobject[X] = null;
}
swfobject = null;
});
}
}
();
return {
registerObject: function (ab, X, aa, Z) {
if (M.w3 && ab && X) {
var Y = {};
Y.id = ab;
Y.swfVersion = X;
Y.expressInstall = aa;
Y.callbackFn = Z;
o[o.length] = Y;
w(ab, false);
} else {
if (Z) {
Z({
success: false,
id: ab
});
}
}
},
getObjectById: function (X) {
if (M.w3) {
return z(X);
}
},
embedSWF: function (ab, ah, ae, ag, Y, aa, Z, ad, af, ac) {
var X = {
success: false,
id: ah
};
if (M.w3 && !(M.wk && M.wk < 312) && ab && ah && ae && ag && Y) {
w(ah, false);
K(function () {
ae += "";
ag += "";
var aj = {};
if (af && typeof af === r) {
for (var al in af) {
aj[al] = af[al];
}
}
aj.data = ab;
aj.width = ae;
aj.height = ag;
var am = {};
if (ad && typeof ad === r) {
for (var ak in ad) {
am[ak] = ad[ak];
}
}
if (Z && typeof Z === r) {
for (var ai in Z) {
if (typeof am.flashvars != D) {
am.flashvars += "&" + ai + "=" + Z[ai];
} else {
am.flashvars = ai + "=" + Z[ai];
}
}
}
if (F(Y)) {
var an = u(aj, am, ah);
if (aj.id == ah) {
w(ah, true);
}
X.success = true;
X.ref = an;
} else {
if (aa && A()) {
aj.data = aa;
P(aj, am, ah, ac);
return;
} else {
w(ah, true);
}
}
if (ac) {
ac(X);
}
});
} else {
if (ac) {
ac(X);
}
}
},
switchOffAutoHideShow: function () {
m = false;
},
ua: M,
getFlashPlayerVersion: function () {
return {
major: M.pv[0],
minor: M.pv[1],
release: M.pv[2]
};
},
hasFlashPlayerVersion: F,
createSWF: function (Z, Y, X) {
if (M.w3) {
return u(Z, Y, X);
} else {
return undefined;
}
},
showExpressInstall: function (Z, aa, X, Y) {
if (M.w3 && A()) {
P(Z, aa, X, Y);
}
},
removeSWF: function (X) {
if (M.w3) {
y(X);
}
},
createCSS: function (aa, Z, Y, X) {
if (M.w3) {
v(aa, Z, Y, X);
}
},
addDomLoadEvent: K,
addLoadEvent: s,
getQueryParamValue: function (aa) {
var Z = j.location.search || j.location.hash;
if (Z) {
if (/\?/.test(Z)) {
Z = Z.split("?")[1];
}
if (aa == null) {
return L(Z);
}
var Y = Z.split("&");
for (var X = 0; X < Y.length; X++) {
if (Y[X].substring(0, Y[X].indexOf("=")) == aa) {
return L(Y[X].substring((Y[X].indexOf("=") + 1)));
}
}
}
return "";
},
expressInstallCallback: function () {
if (a) {
var X = c(R);
if (X && l) {
X.parentNode.replaceChild(l, X);
if (Q) {
w(Q, true);
if (M.ie && M.win) {
l.style.display = "block";
}
}
if (E) {
E(B);
}
}
a = false;
}
}
};
}
();
/*
SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/, http://www.vinterwebb.se/
SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzén and Mammon Media and is released under the MIT License:
http://www.opensource.org/licenses/mit-license.php
SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
http://www.opensource.org/licenses/mit-license.php
*/
var SWFUpload;
if (SWFUpload == undefined) {
SWFUpload = function (a) {
this.initSWFUpload(a)
}
}
SWFUpload.prototype.initSWFUpload = function (b) {
try {
this.customSettings = {};
this.settings = b;
this.eventQueue = [];
this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
this.movieElement = null;
SWFUpload.instances[this.movieName] = this;
this.initSettings();
this.loadFlash();
this.displayDebugInfo()
} catch (a) {
delete SWFUpload.instances[this.movieName];
throw a
}
};
SWFUpload.instances = {};
SWFUpload.movieCount = 0;
SWFUpload.version = "2.2.0 2009-03-25";
SWFUpload.QUEUE_ERROR = {
QUEUE_LIMIT_EXCEEDED: -100,
FILE_EXCEEDS_SIZE_LIMIT: -110,
ZERO_BYTE_FILE: -120,
INVALID_FILETYPE: -130
};
SWFUpload.UPLOAD_ERROR = {
HTTP_ERROR: -200,
MISSING_UPLOAD_URL: -210,
IO_ERROR: -220,
SECURITY_ERROR: -230,
UPLOAD_LIMIT_EXCEEDED: -240,
UPLOAD_FAILED: -250,
SPECIFIED_FILE_ID_NOT_FOUND: -260,
FILE_VALIDATION_FAILED: -270,
FILE_CANCELLED: -280,
UPLOAD_STOPPED: -290
};
SWFUpload.FILE_STATUS = {
QUEUED: -1,
IN_PROGRESS: -2,
ERROR: -3,
COMPLETE: -4,
CANCELLED: -5
};
SWFUpload.BUTTON_ACTION = {
SELECT_FILE: -100,
SELECT_FILES: -110,
START_UPLOAD: -120
};
SWFUpload.CURSOR = {
ARROW: -1,
HAND: -2
};
SWFUpload.WINDOW_MODE = {
WINDOW: "window",
TRANSPARENT: "transparent",
OPAQUE: "opaque"
};
SWFUpload.completeURL = function (a) {
if (typeof (a) !== "string" || a.match(/^https?:\/\//i) || a.match(/^\//)) {
return a
}
var c = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");
var b = window.location.pathname.lastIndexOf("/");
if (b <= 0) {
path = "/"
} else {
path = window.location.pathname.substr(0, b) + "/"
}
return path + a
};
SWFUpload.prototype.initSettings = function () {
this.ensureDefault = function (b, a) {
this.settings[b] = (this.settings[b] == undefined) ? a : this.settings[b]
};
this.ensureDefault("upload_url", "");
this.ensureDefault("preserve_relative_urls", false);
this.ensureDefault("file_post_name", "Filedata");
this.ensureDefault("post_params", {});
this.ensureDefault("use_query_string", false);
this.ensureDefault("requeue_on_error", false);
this.ensureDefault("http_success", []);
this.ensureDefault("assume_success_timeout", 0);
this.ensureDefault("file_types", "*.*");
this.ensureDefault("file_types_description", "All Files");
this.ensureDefault("file_size_limit", 0);
this.ensureDefault("file_upload_limit", 0);
this.ensureDefault("file_queue_limit", 0);
this.ensureDefault("flash_url", "swfupload.swf");
this.ensureDefault("prevent_swf_caching", true);
this.ensureDefault("button_image_url", "");
this.ensureDefault("button_width", 1);
this.ensureDefault("button_height", 1);
this.ensureDefault("button_text", "");
this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
this.ensureDefault("button_text_top_padding", 0);
this.ensureDefault("button_text_left_padding", 0);
this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
this.ensureDefault("button_disabled", false);
this.ensureDefault("button_placeholder_id", "");
this.ensureDefault("button_placeholder", null);
this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
this.ensureDefault("debug", false);
this.settings.debug_enabled = this.settings.debug;
this.settings.return_upload_start_handler = this.returnUploadStart;
this.ensureDefault("swfupload_loaded_handler", null);
this.ensureDefault("file_dialog_start_handler", null);
this.ensureDefault("file_queued_handler", null);
this.ensureDefault("file_queue_error_handler", null);
this.ensureDefault("file_dialog_complete_handler", null);
this.ensureDefault("upload_start_handler", null);
this.ensureDefault("upload_progress_handler", null);
this.ensureDefault("upload_error_handler", null);
this.ensureDefault("upload_success_handler", null);
this.ensureDefault("upload_complete_handler", null);
this.ensureDefault("debug_handler", this.debugMessage);
this.ensureDefault("custom_settings", {});
this.customSettings = this.settings.custom_settings;
if (!!this.settings.prevent_swf_caching) {
this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime()
}
if (!this.settings.preserve_relative_urls) {
this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url)
}
delete this.ensureDefault
};
SWFUpload.prototype.loadFlash = function () {
var a,
b;
if (document.getElementById(this.movieName) !== null) {
throw "ID " + this.movieName + " is already in use. The Flash Object could not be added"
}
a = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;
if (a == undefined) {
throw "Could not find the placeholder element: " + this.settings.button_placeholder_id
}
b = document.createElement("div");
b.innerHTML = this.getFlashHTML();
a.parentNode.replaceChild(b.firstChild, a);
if (window[this.movieName] == undefined) {
window[this.movieName] = this.getMovieElement()
}
};
SWFUpload.prototype.getFlashHTML = function () {
return ['"].join("")
};
SWFUpload.prototype.getFlashVars = function () {
var b = this.buildParamString();
var a = this.settings.http_success.join(",");
return ["movieName=", encodeURIComponent(this.movieName), "&uploadURL=", encodeURIComponent(this.settings.upload_url), "&useQueryString=", encodeURIComponent(this.settings.use_query_string), "&requeueOnError=", encodeURIComponent(this.settings.requeue_on_error), "&httpSuccess=", encodeURIComponent(a), "&assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout), "¶ms=", encodeURIComponent(b), "&filePostName=", encodeURIComponent(this.settings.file_post_name), "&fileTypes=", encodeURIComponent(this.settings.file_types), "&fileTypesDescription=", encodeURIComponent(this.settings.file_types_description), "&fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit), "&fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit), "&fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit), "&debugEnabled=", encodeURIComponent(this.settings.debug_enabled), "&buttonImageURL=", encodeURIComponent(this.settings.button_image_url), "&buttonWidth=", encodeURIComponent(this.settings.button_width), "&buttonHeight=", encodeURIComponent(this.settings.button_height), "&buttonText=", encodeURIComponent(this.settings.button_text), "&buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding), "&buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding), "&buttonTextStyle=", encodeURIComponent(this.settings.button_text_style), "&buttonAction=", encodeURIComponent(this.settings.button_action), "&buttonDisabled=", encodeURIComponent(this.settings.button_disabled), "&buttonCursor=", encodeURIComponent(this.settings.button_cursor)].join("")
};
SWFUpload.prototype.getMovieElement = function () {
if (this.movieElement == undefined) {
this.movieElement = document.getElementById(this.movieName)
}
if (this.movieElement === null) {
throw "Could not find Flash element"
}
return this.movieElement
};
SWFUpload.prototype.buildParamString = function () {
var c = this.settings.post_params;
var b = [];
if (typeof (c) === "object") {
for (var a in c) {
if (c.hasOwnProperty(a)) {
b.push(encodeURIComponent(a.toString()) + "=" + encodeURIComponent(c[a].toString()))
}
}
}
return b.join("&")
};
SWFUpload.prototype.destroy = function () {
try {
this.cancelUpload(null, false);
var a = null;
a = this.getMovieElement();
if (a && typeof (a.CallFunction) === "unknown") {
for (var c in a) {
try {
if (typeof (a[c]) === "function") {
a[c] = null
}
} catch (e) { }
}
try {
a.parentNode.removeChild(a)
} catch (b) { }
}
window[this.movieName] = null;
SWFUpload.instances[this.movieName] = null;
delete SWFUpload.instances[this.movieName];
this.movieElement = null;
this.settings = null;
this.customSettings = null;
this.eventQueue = null;
this.movieName = null;
return true
} catch (d) {
return false
}
};
SWFUpload.prototype.displayDebugInfo = function () {
this.debug(["---SWFUpload Instance Info---\n", "Version: ", SWFUpload.version, "\n", "Movie Name: ", this.movieName, "\n", "Settings:\n", "\t", "upload_url: ", this.settings.upload_url, "\n", "\t", "flash_url: ", this.settings.flash_url, "\n", "\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n", "\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n", "\t", "http_success: ", this.settings.http_success.join(", "), "\n", "\t", "assume_success_timeout: ", this.settings.assume_success_timeout, "\n", "\t", "file_post_name: ", this.settings.file_post_name, "\n", "\t", "post_params: ", this.settings.post_params.toString(), "\n", "\t", "file_types: ", this.settings.file_types, "\n", "\t", "file_types_description: ", this.settings.file_types_description, "\n", "\t", "file_size_limit: ", this.settings.file_size_limit, "\n", "\t", "file_upload_limit: ", this.settings.file_upload_limit, "\n", "\t", "file_queue_limit: ", this.settings.file_queue_limit, "\n", "\t", "debug: ", this.settings.debug.toString(), "\n", "\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n", "\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n", "\t", "button_placeholder: ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n", "\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n", "\t", "button_width: ", this.settings.button_width.toString(), "\n", "\t", "button_height: ", this.settings.button_height.toString(), "\n", "\t", "button_text: ", this.settings.button_text.toString(), "\n", "\t", "button_text_style: ", this.settings.button_text_style.toString(), "\n", "\t", "button_text_top_padding: ", this.settings.button_text_top_padding.toString(), "\n", "\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n", "\t", "button_action: ", this.settings.button_action.toString(), "\n", "\t", "button_disabled: ", this.settings.button_disabled.toString(), "\n", "\t", "custom_settings: ", this.settings.custom_settings.toString(), "\n", "Event Handlers:\n", "\t", "swfupload_loaded_handler assigned: ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n", "\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n", "\t", "file_queued_handler assigned: ", (typeof this.settings.file_queued_handler === "function").toString(), "\n", "\t", "file_queue_error_handler assigned: ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n", "\t", "upload_start_handler assigned: ", (typeof this.settings.upload_start_handler === "function").toString(), "\n", "\t", "upload_progress_handler assigned: ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n", "\t", "upload_error_handler assigned: ", (typeof this.settings.upload_error_handler === "function").toString(), "\n", "\t", "upload_success_handler assigned: ", (typeof this.settings.upload_success_handler === "function").toString(), "\n", "\t", "upload_complete_handler assigned: ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n", "\t", "debug_handler assigned: ", (typeof this.settings.debug_handler === "function").toString(), "\n"].join(""))
};
SWFUpload.prototype.addSetting = function (b, c, a) {
if (c == undefined) {
return (this.settings[b] = a)
} else {
return (this.settings[b] = c)
}
};
SWFUpload.prototype.getSetting = function (a) {
if (this.settings[a] != undefined) {
return this.settings[a]
}
return ""
};
SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
argumentArray = argumentArray || [];
var movieElement = this.getMovieElement();
var returnValue,
returnString;
try {
returnString = movieElement.CallFunction('' + __flash__argumentsToXML(argumentArray, 0) + "");
returnValue = eval(returnString)
} catch (ex) {
throw "Call to " + functionName + " failed"
}
if (returnValue != undefined && typeof returnValue.post === "object") {
returnValue = this.unescapeFilePostParams(returnValue)
}
return returnValue
};
SWFUpload.prototype.selectFile = function () {
this.callFlash("SelectFile")
};
SWFUpload.prototype.selectFiles = function () {
this.callFlash("SelectFiles")
};
SWFUpload.prototype.startUpload = function (a) {
this.callFlash("StartUpload", [a])
};
SWFUpload.prototype.cancelUpload = function (a, b) {
if (b !== false) {
b = true
}
this.callFlash("CancelUpload", [a, b])
};
SWFUpload.prototype.stopUpload = function () {
this.callFlash("StopUpload")
};
SWFUpload.prototype.getStats = function () {
return this.callFlash("GetStats")
};
SWFUpload.prototype.setStats = function (a) {
this.callFlash("SetStats", [a])
};
SWFUpload.prototype.getFile = function (a) {
if (typeof (a) === "number") {
return this.callFlash("GetFileByIndex", [a])
} else {
return this.callFlash("GetFile", [a])
}
};
SWFUpload.prototype.addFileParam = function (a, b, c) {
return this.callFlash("AddFileParam", [a, b, c])
};
SWFUpload.prototype.removeFileParam = function (a, b) {
this.callFlash("RemoveFileParam", [a, b])
};
SWFUpload.prototype.setUploadURL = function (a) {
this.settings.upload_url = a.toString();
this.callFlash("SetUploadURL", [a])
};
SWFUpload.prototype.setPostParams = function (a) {
this.settings.post_params = a;
this.callFlash("SetPostParams", [a])
};
SWFUpload.prototype.addPostParam = function (a, b) {
this.settings.post_params[a] = b;
this.callFlash("SetPostParams", [this.settings.post_params])
};
SWFUpload.prototype.removePostParam = function (a) {
delete this.settings.post_params[a];
this.callFlash("SetPostParams", [this.settings.post_params])
};
SWFUpload.prototype.setFileTypes = function (a, b) {
this.settings.file_types = a;
this.settings.file_types_description = b;
this.callFlash("SetFileTypes", [a, b])
};
SWFUpload.prototype.setFileSizeLimit = function (a) {
this.settings.file_size_limit = a;
this.callFlash("SetFileSizeLimit", [a])
};
SWFUpload.prototype.setFileUploadLimit = function (a) {
this.settings.file_upload_limit = a;
this.callFlash("SetFileUploadLimit", [a])
};
SWFUpload.prototype.setFileQueueLimit = function (a) {
this.settings.file_queue_limit = a;
this.callFlash("SetFileQueueLimit", [a])
};
SWFUpload.prototype.setFilePostName = function (a) {
this.settings.file_post_name = a;
this.callFlash("SetFilePostName", [a])
};
SWFUpload.prototype.setUseQueryString = function (a) {
this.settings.use_query_string = a;
this.callFlash("SetUseQueryString", [a])
};
SWFUpload.prototype.setRequeueOnError = function (a) {
this.settings.requeue_on_error = a;
this.callFlash("SetRequeueOnError", [a])
};
SWFUpload.prototype.setHTTPSuccess = function (a) {
if (typeof a === "string") {
a = a.replace(" ", "").split(",")
}
this.settings.http_success = a;
this.callFlash("SetHTTPSuccess", [a])
};
SWFUpload.prototype.setAssumeSuccessTimeout = function (a) {
this.settings.assume_success_timeout = a;
this.callFlash("SetAssumeSuccessTimeout", [a])
};
SWFUpload.prototype.setDebugEnabled = function (a) {
this.settings.debug_enabled = a;
this.callFlash("SetDebugEnabled", [a])
};
SWFUpload.prototype.setButtonImageURL = function (a) {
if (a == undefined) {
a = ""
}
this.settings.button_image_url = a;
this.callFlash("SetButtonImageURL", [a])
};
SWFUpload.prototype.setButtonDimensions = function (c, a) {
this.settings.button_width = c;
this.settings.button_height = a;
var b = this.getMovieElement();
if (b != undefined) {
b.style.width = c + "px";
b.style.height = a + "px"
}
this.callFlash("SetButtonDimensions", [c, a])
};
SWFUpload.prototype.setButtonText = function (a) {
this.settings.button_text = a;
this.callFlash("SetButtonText", [a])
};
SWFUpload.prototype.setButtonTextPadding = function (b, a) {
this.settings.button_text_top_padding = a;
this.settings.button_text_left_padding = b;
this.callFlash("SetButtonTextPadding", [b, a])
};
SWFUpload.prototype.setButtonTextStyle = function (a) {
this.settings.button_text_style = a;
this.callFlash("SetButtonTextStyle", [a])
};
SWFUpload.prototype.setButtonDisabled = function (a) {
this.settings.button_disabled = a;
this.callFlash("SetButtonDisabled", [a])
};
SWFUpload.prototype.setButtonAction = function (a) {
this.settings.button_action = a;
this.callFlash("SetButtonAction", [a])
};
SWFUpload.prototype.setButtonCursor = function (a) {
this.settings.button_cursor = a;
this.callFlash("SetButtonCursor", [a])
};
SWFUpload.prototype.queueEvent = function (b, c) {
if (c == undefined) {
c = []
} else {
if (!(c instanceof Array)) {
c = [c]
}
}
var a = this;
if (typeof this.settings[b] === "function") {
this.eventQueue.push(function () {
this.settings[b].apply(this, c)
});
setTimeout(function () {
a.executeNextEvent()
}, 0)
} else {
if (this.settings[b] !== null) {
throw "Event handler " + b + " is unknown or is not a function"
}
}
};
SWFUpload.prototype.executeNextEvent = function () {
var a = this.eventQueue ? this.eventQueue.shift() : null;
if (typeof (a) === "function") {
a.apply(this)
}
};
SWFUpload.prototype.unescapeFilePostParams = function (c) {
var e = /[$]([0-9a-f]{4})/i;
var f = {};
var d;
if (c != undefined) {
for (var a in c.post) {
if (c.post.hasOwnProperty(a)) {
d = a;
var b;
while ((b = e.exec(d)) !== null) {
d = d.replace(b[0], String.fromCharCode(parseInt("0x" + b[1], 16)))
}
f[d] = c.post[a]
}
}
c.post = f
}
return c
};
SWFUpload.prototype.testExternalInterface = function () {
try {
return this.callFlash("TestExternalInterface")
} catch (a) {
return false
}
};
SWFUpload.prototype.flashReady = function () {
var a = this.getMovieElement();
if (!a) {
this.debug("Flash called back ready but the flash movie can't be found.");
return
}
this.cleanUp(a);
this.queueEvent("swfupload_loaded_handler")
};
SWFUpload.prototype.cleanUp = function (a) {
try {
if (this.movieElement && typeof (a.CallFunction) === "unknown") {
this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
for (var c in a) {
try {
if (typeof (a[c]) === "function") {
a[c] = null
}
} catch (b) { }
}
}
} catch (d) { }
window.__flash__removeCallback = function (e, f) {
try {
if (e) {
e[f] = null
}
} catch (g) { }
}
};
SWFUpload.prototype.fileDialogStart = function () {
this.queueEvent("file_dialog_start_handler")
};
SWFUpload.prototype.fileQueued = function (a) {
a = this.unescapeFilePostParams(a);
this.queueEvent("file_queued_handler", a)
};
SWFUpload.prototype.fileQueueError = function (a, c, b) {
a = this.unescapeFilePostParams(a);
this.queueEvent("file_queue_error_handler", [a, c, b])
};
SWFUpload.prototype.fileDialogComplete = function (b, c, a) {
this.queueEvent("file_dialog_complete_handler", [b, c, a])
};
SWFUpload.prototype.uploadStart = function (a) {
a = this.unescapeFilePostParams(a);
this.queueEvent("return_upload_start_handler", a)
};
SWFUpload.prototype.returnUploadStart = function (a) {
var b;
if (typeof this.settings.upload_start_handler === "function") {
a = this.unescapeFilePostParams(a);
b = this.settings.upload_start_handler.call(this, a)
} else {
if (this.settings.upload_start_handler != undefined) {
throw "upload_start_handler must be a function"
}
}
if (b === undefined) {
b = true
}
b = !!b;
this.callFlash("ReturnUploadStart", [b])
};
SWFUpload.prototype.uploadProgress = function (a, c, b) {
a = this.unescapeFilePostParams(a);
this.queueEvent("upload_progress_handler", [a, c, b])
};
SWFUpload.prototype.uploadError = function (a, c, b) {
a = this.unescapeFilePostParams(a);
this.queueEvent("upload_error_handler", [a, c, b])
};
SWFUpload.prototype.uploadSuccess = function (b, a, c) {
b = this.unescapeFilePostParams(b);
this.queueEvent("upload_success_handler", [b, a, c])
};
SWFUpload.prototype.uploadComplete = function (a) {
a = this.unescapeFilePostParams(a);
this.queueEvent("upload_complete_handler", a)
};
SWFUpload.prototype.debug = function (a) {
this.queueEvent("debug_handler", a)
};
SWFUpload.prototype.debugMessage = function (c) {
if (this.settings.debug) {
var a,
d = [];
if (typeof c === "object" && typeof c.name === "string" && typeof c.message === "string") {
for (var b in c) {
if (c.hasOwnProperty(b)) {
d.push(b + ": " + c[b])
}
}
a = d.join("\n") || "";
d = a.split("\n");
a = "EXCEPTION: " + d.join("\nEXCEPTION: ");
SWFUpload.Console.writeLine(a)
} else {
SWFUpload.Console.writeLine(c)
}
}
};
SWFUpload.Console = {};
SWFUpload.Console.writeLine = function (d) {
var b,
a;
try {
b = document.getElementById("SWFUpload_Console");
if (!b) {
a = document.createElement("form");
document.getElementsByTagName("body")[0].appendChild(a);
b = document.createElement("textarea");
b.id = "SWFUpload_Console";
b.style.fontFamily = "monospace";
b.setAttribute("wrap", "off");
b.wrap = "off";
b.style.overflow = "auto";
b.style.width = "700px";
b.style.height = "350px";
b.style.margin = "5px";
a.appendChild(b)
}
b.value += d + "\n";
b.scrollTop = b.scrollHeight - b.clientHeight
} catch (c) {
alert("Exception: " + c.name + " Message: " + c.message)
}
};
/*
Uploadify v3.2
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License
*/
(function ($) {
// These methods can be called by adding them as the first argument in the uploadify plugin call
var methods = {
init: function (options, swfUploadOptions) {
return this.each(function () {
// Create a reference to the jQuery DOM object
var $this = $(this);
// Clone the original DOM object
var $clone = $this.clone();
// Setup the default options
var settings = $.extend({
// Required Settings
id: $this.attr('id'), // The ID of the DOM object
swf: 'uploadify.swf', // The path to the uploadify SWF file
uploader: 'uploadify.php', // The path to the server-side upload script
// Options
auto: true, // Automatically upload files when added to the queue
buttonClass: '', // A class name to add to the browse button DOM object
buttonCursor: 'hand', // The cursor to use with the browse button
buttonImage: null, // (String or null) The path to an image to use for the Flash browse button if not using CSS to style the button
buttonText: 'SELECT FILES', // The text to use for the browse button
checkExisting: false, // The path to a server-side script that checks for existing files on the server
debug: false, // Turn on swfUpload debugging mode
fileObjName: 'Filedata', // The name of the file object to use in your server-side script
fileSizeLimit: 0, // The maximum size of an uploadable file in KB (Accepts units B KB MB GB if string, 0 for no limit)
fileTypeDesc: 'All Files', // The description for file types in the browse dialog
fileTypeExts: '*.*', // Allowed extensions in the browse dialog (server-side validation should also be used)
height: 30, // The height of the browse button
itemTemplate: false, // The template for the file item in the queue
method: 'post', // The method to use when sending files to the server-side upload script
multi: true, // Allow multiple file selection in the browse dialog
formData: {}, // An object with additional data to send to the server-side upload script with every file upload
preventCaching: true, // Adds a random value to the Flash URL to prevent caching of it (conflicts with existing parameters)
progressData: 'percentage', // ('percentage' or 'speed') Data to show in the queue item during a file upload
queueID: false, // The ID of the DOM object to use as a file queue (without the #)
queueSizeLimit: 999, // The maximum number of files that can be in the queue at one time
removeCompleted: true, // Remove queue items from the queue when they are done uploading
removeTimeout: 3, // The delay in seconds before removing a queue item if removeCompleted is set to true
requeueErrors: false, // Keep errored files in the queue and keep trying to upload them
successTimeout: 30, // The number of seconds to wait for Flash to detect the server's response after the file has finished uploading
uploadLimit: 0, // The maximum number of files you can upload
width: 120, // The width of the browse button
// Events
overrideEvents: []// (Array) A list of default event handlers to skip
/*
onCancel // Triggered when a file is cancelled from the queue
onClearQueue // Triggered during the 'clear queue' method
onDestroy // Triggered when the uploadify object is destroyed
onDialogClose // Triggered when the browse dialog is closed
onDialogOpen // Triggered when the browse dialog is opened
onDisable // Triggered when the browse button gets disabled
onEnable // Triggered when the browse button gets enabled
onFallback // Triggered is Flash is not detected
onInit // Triggered when Uploadify is initialized
onQueueComplete // Triggered when all files in the queue have been uploaded
onSelectError // Triggered when an error occurs while selecting a file (file size, queue size limit, etc.)
onSelect // Triggered for each file that is selected
onSWFReady // Triggered when the SWF button is loaded
onUploadComplete // Triggered when a file upload completes (success or error)
onUploadError // Triggered when a file upload returns an error
onUploadSuccess // Triggered when a file is uploaded successfully
onUploadProgress // Triggered every time a file progress is updated
onUploadStart // Triggered immediately before a file upload starts
*/
}, options);
// Prepare settings for SWFUpload
var swfUploadSettings = {
assume_success_timeout: settings.successTimeout,
button_placeholder_id: settings.id,
button_width: settings.width,
button_height: settings.height,
button_text: null,
button_text_style: null,
button_text_top_padding: 0,
button_text_left_padding: 0,
button_action: (settings.multi ? SWFUpload.BUTTON_ACTION.SELECT_FILES : SWFUpload.BUTTON_ACTION.SELECT_FILE),
button_disabled: false,
button_cursor: (settings.buttonCursor == 'arrow' ? SWFUpload.CURSOR.ARROW : SWFUpload.CURSOR.HAND),
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
debug: settings.debug,
requeue_on_error: settings.requeueErrors,
file_post_name: settings.fileObjName,
file_size_limit: settings.fileSizeLimit,
file_types: settings.fileTypeExts,
file_types_description: settings.fileTypeDesc,
file_queue_limit: settings.queueSizeLimit,
file_upload_limit: settings.uploadLimit,
flash_url: settings.swf,
prevent_swf_caching: settings.preventCaching,
post_params: settings.formData,
upload_url: settings.uploader,
use_query_string: (settings.method == 'get'),
// Event Handlers
file_dialog_complete_handler: handlers.onDialogClose,
file_dialog_start_handler: handlers.onDialogOpen,
file_queued_handler: handlers.onSelect,
file_queue_error_handler: handlers.onSelectError,
swfupload_loaded_handler: settings.onSWFReady,
upload_complete_handler: handlers.onUploadComplete,
upload_error_handler: handlers.onUploadError,
upload_progress_handler: handlers.onUploadProgress,
upload_start_handler: handlers.onUploadStart,
upload_success_handler: handlers.onUploadSuccess
}
// Merge the user-defined options with the defaults
if (swfUploadOptions) {
swfUploadSettings = $.extend(swfUploadSettings, swfUploadOptions);
}
// Add the user-defined settings to the swfupload object
swfUploadSettings = $.extend(swfUploadSettings, settings);
// Detect if Flash is available
var playerVersion = swfobject.getFlashPlayerVersion();
var flashInstalled = (playerVersion.major >= 9);
if (flashInstalled) {
// Create the swfUpload instance
window['uploadify_' + settings.id] = new SWFUpload(swfUploadSettings);
var swfuploadify = window['uploadify_' + settings.id];
// Add the SWFUpload object to the elements data object
$this.data('uploadify', swfuploadify);
// Wrap the instance
var $wrapper = $('', {
'id': settings.id,
'class': 'uploadify',
'css': {
'height': settings.height + 'px',
'width': settings.width + 'px'
}
});
$('#' + swfuploadify.movieName).wrap($wrapper);
// Recreate the reference to wrapper
$wrapper = $('#' + settings.id);
// Add the data object to the wrapper
$wrapper.data('uploadify', swfuploadify);
// Create the button
var $button = $('', {
'id': settings.id + '-button',
'class': 'uploadify-button ' + settings.buttonClass
});
if (settings.buttonImage) {
$button.css({
'background-image': "url('" + settings.buttonImage + "')",
'text-indent': '-9999px'
});
}
$button.html('' + settings.buttonText + '')
.css({
'height': settings.height + 'px',
'line-height': settings.height + 'px',
'width': settings.width + 'px'
});
// Append the button to the wrapper
$wrapper.append($button);
// Adjust the styles of the movie
$('#' + swfuploadify.movieName).css({
'position': 'absolute',
'z-index': 1
});
// Create the file queue
if (!settings.queueID) {
var $queue = $('', {
'id': settings.id + '-queue',
'class': 'uploadify-queue'
});
$wrapper.after($queue);
swfuploadify.settings.queueID = settings.id + '-queue';
swfuploadify.settings.defaultQueue = true;
}
// Create some queue related objects and variables
swfuploadify.queueData = {
files: {}, // The files in the queue
filesSelected: 0, // The number of files selected in the last select operation
filesQueued: 0, // The number of files added to the queue in the last select operation
filesReplaced: 0, // The number of files replaced in the last select operation
filesCancelled: 0, // The number of files that were cancelled instead of replaced
filesErrored: 0, // The number of files that caused error in the last select operation
uploadsSuccessful: 0, // The number of files that were successfully uploaded
uploadsErrored: 0, // The number of files that returned errors during upload
averageSpeed: 0, // The average speed of the uploads in KB
queueLength: 0, // The number of files in the queue
queueSize: 0, // The size in bytes of the entire queue
uploadSize: 0, // The size in bytes of the upload queue
queueBytesUploaded: 0, // The size in bytes that have been uploaded for the current upload queue
uploadQueue: [], // The files currently to be uploaded
errorMsg: 'Some files were not added to the queue:'
};
// Save references to all the objects
swfuploadify.original = $clone;
swfuploadify.wrapper = $wrapper;
swfuploadify.button = $button;
swfuploadify.queue = $queue;
// Call the user-defined init event handler
if (settings.onInit)
settings.onInit.call($this, swfuploadify);
} else {
// Call the fallback function
if (settings.onFallback)
settings.onFallback.call($this);
}
});
},
// Stop a file upload and remove it from the queue
cancel: function (fileID, supressEvent) {
var args = arguments;
this.each(function () {
// Create a reference to the jQuery DOM object
var $this = $(this),
swfuploadify = $this.data('uploadify'),
settings = swfuploadify.settings,
delay = -1;
if (args[0]) {
// Clear the queue
if (args[0] == '*') {
var queueItemCount = swfuploadify.queueData.queueLength;
$('#' + settings.queueID).find('.uploadify-queue-item').each(function () {
delay++;
if (args[1] === true) {
swfuploadify.cancelUpload($(this).attr('id'), false);
} else {
swfuploadify.cancelUpload($(this).attr('id'));
}
$(this).find('.data').removeClass('data').html(' - Cancelled');
$(this).find('.uploadify-progress-bar').remove();
$(this).delay(1000 + 100 * delay).fadeOut(500, function () {
$(this).remove();
});
});
swfuploadify.queueData.queueSize = 0;
swfuploadify.queueData.queueLength = 0;
// Trigger the onClearQueue event
if (settings.onClearQueue)
settings.onClearQueue.call($this, queueItemCount);
} else {
for (var n = 0; n < args.length; n++) {
swfuploadify.cancelUpload(args[n]);
$('#' + args[n]).find('.data').removeClass('data').html(' - Cancelled');
$('#' + args[n]).find('.uploadify-progress-bar').remove();
$('#' + args[n]).delay(1000 + 100 * n).fadeOut(500, function () {
$(this).remove();
});
}
}
} else {
var item = $('#' + settings.queueID).find('.uploadify-queue-item').get(0);
$item = $(item);
swfuploadify.cancelUpload($item.attr('id'));
$item.find('.data').removeClass('data').html(' - Cancelled');
$item.find('.uploadify-progress-bar').remove();
$item.delay(1000).fadeOut(500, function () {
$(this).remove();
});
}
});
},
// Revert the DOM object back to its original state
destroy: function () {
this.each(function () {
// Create a reference to the jQuery DOM object
var $this = $(this),
swfuploadify = $this.data('uploadify'),
settings = swfuploadify.settings;
// Destroy the SWF object and
swfuploadify.destroy();
// Destroy the queue
if (settings.defaultQueue) {
$('#' + settings.queueID).remove();
}
// Reload the original DOM element
$('#' + settings.id).replaceWith(swfuploadify.original);
// Call the user-defined event handler
if (settings.onDestroy)
settings.onDestroy.call(this);
delete swfuploadify;
});
},
// Disable the select button
disable: function (isDisabled) {
this.each(function () {
// Create a reference to the jQuery DOM object
var $this = $(this),
swfuploadify = $this.data('uploadify'),
settings = swfuploadify.settings;
// Call the user-defined event handlers
if (isDisabled) {
swfuploadify.button.addClass('disabled');
if (settings.onDisable)
settings.onDisable.call(this);
} else {
swfuploadify.button.removeClass('disabled');
if (settings.onEnable)
settings.onEnable.call(this);
}
// Enable/disable the browse button
swfuploadify.setButtonDisabled(isDisabled);
});
},
// Get or set the settings data
settings: function (name, value, resetObjects) {
var args = arguments;
var returnValue = value;
this.each(function () {
// Create a reference to the jQuery DOM object
var $this = $(this),
swfuploadify = $this.data('uploadify'),
settings = swfuploadify.settings;
if (typeof (args[0]) == 'object') {
for (var n in value) {
setData(n, value[n]);
}
}
if (args.length === 1) {
returnValue = settings[name];
} else {
switch (name) {
case 'uploader':
swfuploadify.setUploadURL(value);
break;
case 'formData':
if (!resetObjects) {
value = $.extend(settings.formData, value);
}
swfuploadify.setPostParams(settings.formData);
break;
case 'method':
if (value == 'get') {
swfuploadify.setUseQueryString(true);
} else {
swfuploadify.setUseQueryString(false);
}
break;
case 'fileObjName':
swfuploadify.setFilePostName(value);
break;
case 'fileTypeExts':
swfuploadify.setFileTypes(value, settings.fileTypeDesc);
break;
case 'fileTypeDesc':
swfuploadify.setFileTypes(settings.fileTypeExts, value);
break;
case 'fileSizeLimit':
swfuploadify.setFileSizeLimit(value);
break;
case 'uploadLimit':
swfuploadify.setFileUploadLimit(value);
break;
case 'queueSizeLimit':
swfuploadify.setFileQueueLimit(value);
break;
case 'buttonImage':
swfuploadify.button.css('background-image', settingValue);
break;
case 'buttonCursor':
if (value == 'arrow') {
swfuploadify.setButtonCursor(SWFUpload.CURSOR.ARROW);
} else {
swfuploadify.setButtonCursor(SWFUpload.CURSOR.HAND);
}
break;
case 'buttonText':
$('#' + settings.id + '-button').find('.uploadify-button-text').html(value);
break;
case 'width':
swfuploadify.setButtonDimensions(value, settings.height);
break;
case 'height':
swfuploadify.setButtonDimensions(settings.width, value);
break;
case 'multi':
if (value) {
swfuploadify.setButtonAction(SWFUpload.BUTTON_ACTION.SELECT_FILES);
} else {
swfuploadify.setButtonAction(SWFUpload.BUTTON_ACTION.SELECT_FILE);
}
break;
}
settings[name] = value;
}
});
if (args.length === 1) {
return returnValue;
}
},
// Stop the current uploads and requeue what is in progress
stop: function () {
this.each(function () {
// Create a reference to the jQuery DOM object
var $this = $(this),
swfuploadify = $this.data('uploadify');
// Reset the queue information
swfuploadify.queueData.averageSpeed = 0;
swfuploadify.queueData.uploadSize = 0;
swfuploadify.queueData.bytesUploaded = 0;
swfuploadify.queueData.uploadQueue = [];
swfuploadify.stopUpload();
});
},
// Start uploading files in the queue
upload: function () {
var args = arguments;
this.each(function () {
// Create a reference to the jQuery DOM object
var $this = $(this),
swfuploadify = $this.data('uploadify');
// Reset the queue information
swfuploadify.queueData.averageSpeed = 0;
swfuploadify.queueData.uploadSize = 0;
swfuploadify.queueData.bytesUploaded = 0;
swfuploadify.queueData.uploadQueue = [];
// Upload the files
if (args[0]) {
if (args[0] == '*') {
swfuploadify.queueData.uploadSize = swfuploadify.queueData.queueSize;
swfuploadify.queueData.uploadQueue.push('*');
swfuploadify.startUpload();
} else {
for (var n = 0; n < args.length; n++) {
swfuploadify.queueData.uploadSize += swfuploadify.queueData.files[args[n]].size;
swfuploadify.queueData.uploadQueue.push(args[n]);
}
swfuploadify.startUpload(swfuploadify.queueData.uploadQueue.shift());
}
} else {
swfuploadify.startUpload();
}
});
}
}
// These functions handle all the events that occur with the file uploader
var handlers = {
// Triggered when the file dialog is opened
onDialogOpen: function () {
// Load the swfupload settings
var settings = this.settings;
// Reset some queue info
this.queueData.errorMsg = 'Some files were not added to the queue:';
this.queueData.filesReplaced = 0;
this.queueData.filesCancelled = 0;
// Call the user-defined event handler
if (settings.onDialogOpen)
settings.onDialogOpen.call(this);
},
// Triggered when the browse dialog is closed
onDialogClose: function (filesSelected, filesQueued, queueLength) {
// Load the swfupload settings
var settings = this.settings;
// Update the queue information
this.queueData.filesErrored = filesSelected - filesQueued;
this.queueData.filesSelected = filesSelected;
this.queueData.filesQueued = filesQueued - this.queueData.filesCancelled;
this.queueData.queueLength = queueLength;
// Run the default event handler
if ($.inArray('onDialogClose', settings.overrideEvents) < 0) {
if (this.queueData.filesErrored > 0) {
alert(this.queueData.errorMsg);
}
}
// Call the user-defined event handler
if (settings.onDialogClose)
settings.onDialogClose.call(this, this.queueData);
// Upload the files if auto is true
if (settings.auto)
$('#' + settings.id).uploadify('upload', '*');
},
// Triggered once for each file added to the queue
onSelect: function (file) {
// Load the swfupload settings
var settings = this.settings;
// Check if a file with the same name exists in the queue
var queuedFile = {};
for (var n in this.queueData.files) {
queuedFile = this.queueData.files[n];
if (queuedFile.uploaded != true && queuedFile.name == file.name) {
var replaceQueueItem = confirm('The file named "' + file.name + '" is already in the queue.\nDo you want to replace the existing item in the queue?');
if (!replaceQueueItem) {
this.cancelUpload(file.id);
this.queueData.filesCancelled++;
return false;
} else {
$('#' + queuedFile.id).remove();
this.cancelUpload(queuedFile.id);
this.queueData.filesReplaced++;
}
}
}
// Get the size of the file
var fileSize = Math.round(file.size / 1024);
var suffix = 'KB';
if (fileSize > 1000) {
fileSize = Math.round(fileSize / 1000);
suffix = 'MB';
}
var fileSizeParts = fileSize.toString().split('.');
fileSize = fileSizeParts[0];
if (fileSizeParts.length > 1) {
fileSize += '.' + fileSizeParts[1].substr(0, 2);
}
fileSize += suffix;
// Truncate the filename if it's too long
var fileName = file.name;
if (fileName.length > 25) {
fileName = fileName.substr(0, 25) + '...';
}
// Create the file data object
itemData = {
'fileID': file.id,
'instanceID': settings.id,
'fileName': fileName,
'fileSize': fileSize
}
// Create the file item template
if (settings.itemTemplate == false) {
settings.itemTemplate = '