/*
 * Uploadify v1.6.2 Copyright (C) 2009 by Ronnie Garcia Co-developed by Travis
 * Nickels This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option) any
 * later version. This program is distributed in the hope that it will be
 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
 * Public License for more details. You should have received a copy of the GNU
 * General Public License along with this program. If not, see
 * <http://www.gnu.org/licenses/>.
 */

var flashVer = -1;
if (navigator.plugins != null && navigator.plugins.length > 0) {
	if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
		var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
		var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
		var descArray = flashDescription.split(" ");
		var tempArrayMajor = descArray[2].split(".");
		var versionMajor = tempArrayMajor[0];
		var versionMinor = tempArrayMajor[1];
		var versionRevision = descArray[3];
		if (versionRevision == "") {
			versionRevision = descArray[4]
		}
		if (versionRevision[0] == "d") {
			versionRevision = versionRevision.substring(1)
		} else {
			if (versionRevision[0] == "r") {
				ersionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"))
				}
			}
		}
		var flashVer = versionMajor + "." + versionMinor + "." + versionRevision
	}
} else {
	if ($.browser.msie) {
		var version;
		var axo;
		var e;
		try {
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			version = axo.GetVariable("$version")
		} catch (e) {
		}
		flashVer = version.replace("WIN ", "").replace(",", ".")
	}
}
flashVer = flashVer.split(".")[0];
if (jQuery) {
	(function(a) {
		a.extend(a.fn, {
			fileUpload : function(b) {
				if (flashVer >= 9) {
					a(this).each(function() {
						settings = a.extend( {
							uploader : "uploader.swf",
							script : "uploader.php",
							folder : "",
							height : 30,
							width : 110,
							cancelImg : "cancel.png",
							wmode : "opaque",
							scriptAccess : "sameDomain",
							fileDataName : "Filedata",
							displayData : "percentage",
							onInit : function() {
							},
							onSelect : function() {
							},
							onCheck : function() {
							},
							onCancel : function() {
							},
							onError : function() {
							},
							onProgress : function() {
							},
							onComplete : function() {
							}
						}, b);
						var d = location.pathname;
						d = d.split("/");
						d.pop();
						d = d.join("/") + "/";
						var f = "&pagepath=" + d;
						if (settings.buttonImg) {
							f += "&buttonImg=" + escape(settings.buttonImg)
						}
						if (settings.buttonText) {
							f += "&buttonText=" + escape(settings.buttonText)
						}
						if (settings.rollover) {
							f += "&rollover=true"
						}
						f += "&script=" + settings.script;
						f += "&folder=" + escape(settings.folder);
						if (settings.scriptData) {
							var g = "";
							for ( var c in settings.scriptData) {
								g += "&" + c + "=" + settings.scriptData[c]
							}
							f += "&scriptData=" + escape(g)
						}
						f += "&btnWidth=" + settings.width;
						f += "&btnHeight=" + settings.height;
						f += "&wmode=" + settings.wmode;
						if (settings.hideButton) {
							f += "&hideButton=true"
						}
						if (settings.fileDesc) {
							f += "&fileDesc=" + settings.fileDesc + "&fileExt=" + settings.fileExt
						}
						if (settings.multi) {
							f += "&multi=true"
						}
						if (settings.auto) {
							f += "&auto=true"
						}
						if (settings.sizeLimit) {
							f += "&sizeLimit=" + settings.sizeLimit
						}
						if (settings.simUploadLimit) {
							f += "&simUploadLimit=" + settings.simUploadLimit
						}
						if (settings.checkScript) {
							f += "&checkScript=" + settings.checkScript
						}
						if (settings.fileDataName) {
							f += "&fileDataName=" + settings.fileDataName
						}
						if (a.browser.msie) {
							flashElement = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + settings.width + '" height="' + settings.height + '" id="' + a(this).attr("id") + 'Uploader" class="fileUploaderBtn"><param name="movie" value="' + settings.uploader + "?fileUploadID=" + a(this).attr("id") + f + '" /><param name="quality" value="high" /><param name="wmode" value="' + settings.wmode + '" /><param name="allowScriptAccess" value="' + settings.scriptAccess + '"><param name="swfversion" value="9.0.0.0" /></object>'
						} else {
							flashElement = '<embed src="' + settings.uploader + "?fileUploadID=" + a(this).attr("id") + f + '" quality="high" width="' + settings.width + '" height="' + settings.height + '" id="' + a(this).attr("id") + 'Uploader" class="fileUploaderBtn" name="' + a(this).attr("id") + 'Uploader" allowScriptAccess="' + settings.scriptAccess + '" wmode="' + settings.wmode + '" type="application/x-shockwave-flash" />'
						}
						if (settings.onInit() !== false) {
							a(this).css("display", "none");
							if (a.browser.msie) {
								a(this).after('<div id="' + a(this).attr("id") + 'Uploader"></div>');
								document.getElementById(a(this).attr("id") + "Uploader").outerHTML = flashElement
							} else {
								a(this).after(flashElement)
							}
							a("#" + a(this).attr("id") + "Uploader").after('<div id="' + a(this).attr("id") + 'Queue" class="fileUploadQueue"></div>')
						}
						a(this).bind("rfuSelect", {
							action : settings.onSelect
						}, function(j, h, i) {
							if (j.data.action(j, h, i) !== false) {
								var k = Math.round(i.size / 1024 * 100) * 0.01;
								var l = "KB";
								if (k > 1000) {
									k = Math.round(k * 0.001 * 100) * 0.01;
									l = "MB"
								}
								var m = k.toString().split(".");
								if (m.length > 1) {
									k = m[0] + "." + m[1].substr(0, 2)
								} else {
									k = m[0]
								}
								if (i.name.length > 20) {
									fileName = i.name.substr(0, 20) + "..."
								} else {
									fileName = i.name
								}
								a("#" + a(this).attr("id") + "Queue").append('<div id="' + a(this).attr("id") + h + '" class="fileUploadQueueItem"><div class="cancel"><a href="javascript:$(\'#' + a(this).attr("id") + "').fileUploadCancel('" + h + '\')"><img src="' + settings.cancelImg + '" border="0" /></a></div><span class="fileName">' + fileName + " (" + k + l + ')</span><span class="percentage">&nbsp;</span><div class="fileUploadProgress" style="width: 100%;"><div id="' + a(this).attr("id") + h + 'ProgressBar" class="fileUploadProgressBar" style="width: 1px; height: 3px;"></div></div></div>')
							}
						});
						if (typeof (settings.onSelectOnce) == "function") {
							a(this).bind("rfuSelectOnce", settings.onSelectOnce)
						}
						a(this).bind("rfuCheckExist", {
							action : settings.onCheck
						}, function(m, l, j, k, o) {
							var i = new Object();
							i.folder = d + k;
							for ( var h in j) {
								i[h] = j[h];
								if (o) {
									var n = h
								}
							}
							a.post(l, i, function(r) {
								for ( var p in r) {
									if (m.data.action(m, l, j, k, o) !== false) {
										var q = confirm("Do you want to replace the file '" + r[p] + "'?");
										if (!q) {
											document.getElementById(a(m.target).attr("id") + "Uploader").cancelFileUpload(p)
										}
									}
								}
								if (o) {
									document.getElementById(a(m.target).attr("id") + "Uploader").startFileUpload(n, true)
								} else {
									document.getElementById(a(m.target).attr("id") + "Uploader").startFileUpload(null, true)
								}
							}, "json")
						});
						a(this).bind("rfuCancel", {
							action : settings.onCancel
						}, function(j, h, i, k) {
							if (j.data.action(j, h, i, k) !== false) {
								a("#" + a(this).attr("id") + h).fadeOut(250, function() {
									a("#" + a(this).attr("id") + h).remove()
								})
							}
						});
						a(this).bind("rfuClearQueue", {
							action : settings.onClearQueue
						}, function() {
							if (event.data.action() !== false) {
								a("#" + a(this).attr("id") + "Queue").contents().fadeOut(250, function() {
									a("#" + a(this).attr("id") + "Queue").empty()
								})
							}
						});
						a(this).bind("rfuError", {
							action : settings.onError
						}, function(k, h, j, i) {
							if (k.data.action(k, h, j, i) !== false) {
								a("#" + a(this).attr("id") + h + " .fileName").text(i.type + " Error - " + j.name);
								a("#" + a(this).attr("id") + h).css( {
									border : "3px solid #FBCBBC",
									"background-color" : "#FDE5DD"
								})
							}
						});
						a(this).bind("rfuProgress", {
							action : settings.onProgress,
							toDisplay : settings.displayData
						}, function(j, h, i, k) {
							if (j.data.action(j, h, i, k) !== false) {
								a("#" + a(this).attr("id") + h + "ProgressBar").css("width", k.percentage + "%");
								if (j.data.toDisplay == "percentage") {
									displayData = " - " + k.percentage + "%"
								}
								if (j.data.toDisplay == "speed") {
									displayData = " - " + k.speed + "KB/s"
								}
								if (j.data.toDisplay == null) {
									displayData = " "
								}
								a("#" + a(this).attr("id") + h + " .percentage").text(displayData)
							}
						});
						a(this).bind("rfuComplete", {
							action : settings.onComplete
						}, function(k, h, j, i, l) {
							if (k.data.action(k, h, j, unescape(i), l) !== false) {
								a("#" + a(this).attr("id") + h).fadeOut(250, function() {
									a("#" + a(this).attr("id") + h).remove()
								});
								a("#" + a(this).attr("id") + h + " .percentage").text(" - Completed")
							}
						});
						if (typeof (settings.onAllComplete) == "function") {
							a(this).bind("rfuAllComplete", settings.onAllComplete)
						}
						else {
							alert(typeof (settings.onAllComplete));
						}
					})
				}
			},
			fileUploadSettings : function(b, c) {
				a(this).each(function() {
					document.getElementById(a(this).attr("id") + "Uploader").updateSettings(b, c)
				})
			},
			fileUploadStart : function(b) {
				a(this).each(function() {
					document.getElementById(a(this).attr("id") + "Uploader").startFileUpload(b, false)
				})
			},
			fileUploadCancel : function(b) {
				a(this).each(function() {
					document.getElementById(a(this).attr("id") + "Uploader").cancelFileUpload(b)
				})
			},
			fileUploadClearQueue : function() {
				a(this).each(function() {
					document.getElementById(a(this).attr("id") + "Uploader").clearFileUploadQueue()
				})
			}
		})
	})(jQuery)
};