if (jQuery) {
	(function(a){
		a.extend(a.fn, {
			uploadify: function(b){
				a(this).each(function(){
					var f = a.extend({
						id: a(this).attr("id"),
						uploader: "../css/swf/uploadify.swf",
						script: "../script/uploadify.php",
						expressInstall: "../css/swf/expressInstall.swf",
						folder: "",
						height: 85,
						width: 756,
						cancelImg: "cancel.png",
						wmode: "transparent",
						scriptAccess: "sameDomain",
						fileDataName: "Filedata",
						method: "POST",
						queueSizeLimit: 999,
						simUploadLimit: 1,
						queueID: false,
						displayData: "percentage",
						removeCompleted: true,
						onInit: function(){
						},
						onSelect: function(){
						},
						onSelectOnce: function(){
						},
						onQueueFull: function(){
						},
						onCheck: function(){
						},
						onCancel: function(){
						},
						onClearQueue: function(){
						},
						onError: function(){
						},
						onProgress: function(){
						},
						onComplete: function(){
						},
						onAllComplete: function(){
						}
					}, b);
					a(this).data("settings", f);
					var e = location.pathname;
					e = e.split("/");
					e.pop();
					e = e.join("/") + "/";
					var g = {};
					g.uploadifyID = f.id;
					g.pagepath = e;
					if (f.buttonImg) {
						g.buttonImg = escape(f.buttonImg)
					}
					if (f.buttonText) {
						g.buttonText = escape(f.buttonText)
					}
					if (f.rollover) {
						g.rollover = true
					}
					g.script = f.script;
					g.folder = escape(f.folder);
					if (f.scriptData) {
						var h = "";
						for (var d in f.scriptData) {
							h += "&" + d + "=" + f.scriptData[d]
						}
						g.scriptData = escape(h.substr(1))
					}
					g.width = f.width;
					g.height = f.height;
					g.wmode = f.wmode;
					g.method = f.method;
					g.queueSizeLimit = f.queueSizeLimit;
					g.simUploadLimit = f.simUploadLimit;
					if (f.hideButton) {
						g.hideButton = true
					}
					if (f.fileDesc) {
						g.fileDesc = f.fileDesc
					}
					if (f.fileExt) {
						g.fileExt = f.fileExt
					}
					if (f.multi) {
						g.multi = true
					}
					if (f.auto) {
						g.auto = true
					}
					if (f.sizeLimit) {
						g.sizeLimit = f.sizeLimit
					}
					if (f.checkScript) {
						g.checkScript = f.checkScript
					}
					if (f.fileDataName) {
						g.fileDataName = f.fileDataName
					}
					if (f.queueID) {
						g.queueID = f.queueID
					}
					if (f.onInit() !== false) {
						a(this).css("display", "none");
						a(this).after('<div id="' + a(this).attr("id") + 'Uploader"></div>');
						swfobject.embedSWF(f.uploader, f.id + "Uploader", f.width, f.height, "9.0.24", f.expressInstall, g, {
							quality: "high",
							wmode: f.wmode,
							allowScriptAccess: f.scriptAccess
						}, {}, function(i){
							if (typeof(f.onSWFReady) == "function" && i.success) {
								f.onSWFReady()
							}
						});
						if (f.queueID == false) {
							a("#" + a(this).attr("id") + "Uploader").after('<div id="' + a(this).attr("id") + 'Queue" class="uploadifyQueue"></div>')
						}
						else {
							a("#" + f.queueID).addClass("uploadifyQueue")
						}
					}
					if (typeof(f.onOpen) == "function") {
						a(this).bind("uploadifyOpen", f.onOpen)
					}
					a(this).bind("uploadifySelect", {
						action: f.onSelect,
						queueID: f.queueID
					}, function(k, i, j){
						if (k.data.action(k, i, j) !== false) {
							var l = Math.round(j.size / 1024 * 100) * 0.01;
							var m = "KB";
							if (l > 1000) {
								l = Math.round(l * 0.001 * 100) * 0.01;
								m = "MB"
							}
							var n = l.toString().split(".");
							if (n.length > 1) {
								l = n[0] + "." + n[1].substr(0, 2)
							}
							else {
								l = n[0]
							}
							if (j.name.length > 20) {
								fileName = j.name.substr(0, 20) + "..."
							}
							else {
								fileName = j.name
							}
							queue = "#" + a(this).attr("id") + "Queue";
							if (k.data.queueID) {
								queue = "#" + k.data.queueID
							}
							a(queue).append('<div id="' + a(this).attr("id") + i + '" class="uploadifyQueueItem"><div class="cancel"><a href="javascript:jQuery(\'#' + a(this).attr("id") + "').uploadifyCancel('" + i + '\')"><img src="' + f.cancelImg + '" border="0" /></a></div><span class="fileName">' + fileName + " (" + l + m + ')</span><span class="percentage"></span><div class="uploadifyProgress"><div id="' + a(this).attr("id") + i + 'ProgressBar" class="uploadifyProgressBar"><!--Progress Bar--></div></div></div>')
						}
					});
					a(this).bind("uploadifySelectOnce", {
						action: f.onSelectOnce
					}, function(i, j){
						i.data.action(i, j);
						if (f.auto) {
							if (f.checkScript) {
								a(this).uploadifyUpload(null, false)
							}
							else {
								a(this).uploadifyUpload(null, true)
							}
						}
					});
					a(this).bind("uploadifyQueueFull", {
						action: f.onQueueFull
					}, function(i, j){
						if (i.data.action(i, j) !== false) {
							alert("The queue is full.  The max size is " + j + ".")
						}
					});
					a(this).bind("uploadifyCheckExist", {
						action: f.onCheck
					}, function(n, m, l, k, p){
						var j = new Object();
						j = l;
						j.folder = (k.substr(0, 1) == "/") ? k : e + k;
						if (p) {
							for (var i in l) {
								var o = i
							}
						}
						a.post(m, j, function(s){
							for (var q in s) {
								if (n.data.action(n, s, q) !== false) {
									var r = confirm("Do you want to replace the file " + s[q] + "?");
									if (!r) {
										document.getElementById(a(n.target).attr("id") + "Uploader").cancelFileUpload(q, true, true)
									}
								}
							}
							if (p) {
								document.getElementById(a(n.target).attr("id") + "Uploader").startFileUpload(o, true)
							}
							else {
								document.getElementById(a(n.target).attr("id") + "Uploader").startFileUpload(null, true)
							}
						}, "json")
					});
					a(this).bind("uploadifyCancel", {
						action: f.onCancel
					}, function(n, j, m, o, i, l){
						if (n.data.action(n, j, m, o, l) !== false) {
							if (i) {
								var k = (l == true) ? 0 : 250;
								a("#" + a(this).attr("id") + j).fadeOut(k, function(){
									a(this).remove()
								})
							}
						}
					});
					a(this).bind("uploadifyClearQueue", {
						action: f.onClearQueue
					}, function(k, j){
						var i = (f.queueID) ? f.queueID : a(this).attr("id") + "Queue";
						if (j) {
							a("#" + i).find(".uploadifyQueueItem").remove()
						}
						if (k.data.action(k, j) !== false) {
							a("#" + i).find(".uploadifyQueueItem").each(function(){
								var l = a(".uploadifyQueueItem").index(this);
								a(this).delay(l * 100).fadeOut(250, function(){
									a(this).remove()
								})
							})
						}
					});
					var c = [];
					a(this).bind("uploadifyError", {
						action: f.onError
					}, function(m, i, l, k){
						if (m.data.action(m, i, l, k) !== false) {
							var j = new Array(i, l, k);
							c.push(j);
							a("#" + a(this).attr("id") + i).find(".percentage").text(" - " + k.type + " Error");
							a("#" + a(this).attr("id") + i).find(".uploadifyProgress").hide();
							a("#" + a(this).attr("id") + i).addClass("uploadifyError")
						}
					});
					if (typeof(f.onUpload) == "function") {
						a(this).bind("uploadifyUpload", f.onUpload)
					}
					a(this).bind("uploadifyProgress", {
						action: f.onProgress,
						toDisplay: f.displayData
					}, function(k, i, j, l){
						if (k.data.action(k, i, j, l) !== false) {
							a("#" + a(this).attr("id") + i + "ProgressBar").animate({
								width: l.percentage + "%"
							}, 250, function(){
								if (l.percentage == 100) {
									a(this).closest(".uploadifyProgress").fadeOut(250, function(){
										a(this).remove()
									})
								}
							});
							if (k.data.toDisplay == "percentage") {
								displayData = " - " + l.percentage + "%"
							}
							if (k.data.toDisplay == "speed") {
								displayData = " - " + l.speed + "KB/s"
							}
							if (k.data.toDisplay == null) {
								displayData = " "
							}
							a("#" + a(this).attr("id") + i).find(".percentage").text(displayData)
						}
					});
					a(this).bind("uploadifyComplete", {
						action: f.onComplete
					}, function(l, i, k, j, m){
						if (l.data.action(l, i, k, unescape(j), m) !== false) {
							a("#" + a(this).attr("id") + i).find(".percentage").text(" - Completed");
							if (f.removeCompleted) {
								a("#" + a(l.target).attr("id") + i).fadeOut(250, function(){
									a(this).remove()
								})
							}
							a("#" + a(l.target).attr("id") + i).addClass("completed")
						}
					});
					if (typeof(f.onAllComplete) == "function") {
						a(this).bind("uploadifyAllComplete", {
							action: f.onAllComplete
						}, function(i, j){
							if (i.data.action(i, j) !== false) {
								c = []
							}
						})
					}
				})
			},
			uploadifySettings: function(f, j, c){
				var g = false;
				a(this).each(function(){
					if (f == "scriptData" && j != null) {
						if (c) {
							var i = j
						}
						else {
							var i = a.extend(a(this).data("settings").scriptData, j)
						}
						var l = "";
						for (var k in i) {
							l += "&" + k + "=" + i[k]
						}
						j = escape(l.substr(1))
					}
					g = document.getElementById(a(this).attr("id") + "Uploader").updateSettings(f, j)
				});
				if (j == null) {
					if (f == "scriptData") {
						var b = unescape(g).split("&");
						var e = new Object();
						for (var d = 0; d < b.length; d++) {
							var h = b[d].split("=");
							e[h[0]] = h[1]
						}
						g = e
					}
				}
				return g
			},
			uploadifyUpload: function(b, c){
				a(this).each(function(){
					if (!c) {
						c = false
					}
					document.getElementById(a(this).attr("id") + "Uploader").startFileUpload(b, c)
				})
			},
			uploadifyCancel: function(b){
				a(this).each(function(){
					document.getElementById(a(this).attr("id") + "Uploader").cancelFileUpload(b, true, true, false)
				})
			},
			uploadifyClearQueue: function(){
				a(this).each(function(){
					document.getElementById(a(this).attr("id") + "Uploader").clearFileUploadQueue(false)
				})
			}
		})
	})(jQuery)
};

