// JQuery File Upload Plugin v1.4.3 by RonnieSan - (C)2009 by Ronnie Garcia
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") {
      versionRevision = versionRevision.substring(1);
      if (versionRevision.indexOf("d") > 0) {
        versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
      }
    }
    var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
  }
}
else if ($j.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($j) {
	  $j.extend($j.fn, {
	    fileUpload: function(options) {
	      if (flashVer >= 8) {
	        $j(this).each(function() {
	          settings = $j.extend({
	            uploader: 'uploader.swf',
	            script: 'uploader.php',
	            folder: '',
	            height: 24,
	            width: 141,
	            //cancelImg: 'cancel.png',
	            wmode: 'opaque',
	            onSelect: function() { },
	            onCancel: function() { },
	            onError: function() { },
	            onProgress: function() { },
	            onComplete: function() { }
	          }, options);
	          var pagePath = location.pathname;
	          pagePath = pagePath.split('/');
	          pagePath.pop();
	          pagePath = pagePath.join('/') + '/';
	          var data = '&pagepath=' + pagePath;
	          if (settings.buttonImg) data += '&buttonImg=' + settings.buttonImg;
	          data += '&script=' + settings.script;
	          data += '&folder=' + escape(settings.folder);
	          if (settings.scriptData) {
	            var scriptDataString = '';
	            for (var name in settings.scriptData) {
	              scriptDataString += '&' + name + '=' + settings.scriptData[name];
	            }
	            data += '&scriptData=' + escape(scriptDataString);
	          }
	          data += '&wmode=' + settings.wmode;
	          if (settings.fileDesc) data += '&fileDesc=' + settings.fileDesc + '&fileExt=' + settings.fileExt;
	          if (settings.multi) data += '&multi=true';
	          if (settings.auto) data += '&auto=true';
	          if (settings.sizeLimit) data += '&sizeLimit=' + settings.sizeLimit;
	          $j(this).css('display', 'none');
	          if ($j.browser.msie) {
	            $j(this).after('<div id="' + $j(this).attr("id") + 'Uploader"></div>');
	            document.getElementById($j(this).attr("id") + 'Uploader').outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + settings.width + '" height="' + settings.height + '" id="' + $j(this).attr("id") + 'Uploader" class="fileUploaderBtn">\
								<param name="movie" value="' + settings.uploader + '?fileUploadID=' + $j(this).attr("id") + data + '" />\
								<param name="quality" value="high" />\
								<param name="wmode" value="' + settings.wmode + '" />\
								<param name="swfversion" value="8.0.35.0" />\
							</object>';
	            $j("#" + $j(this).attr('id') + "Uploader").after('<div id="' + $j(this).attr('id') + 'Queue" class="fileUploadQueue"></div>');
	          } else {
	            $j(this).after('<embed src="' + settings.uploader + '?fileUploadID=' + $j(this).attr("id") + data + '" quality="high" width="' + settings.width + '" height="' + settings.height + '" swLiveConnect="true" id="' + $j(this).attr("id") + 'Uploader" class="fileUploaderBtn" name="' + $j(this).attr("id") + 'Uploader" allowScriptAccess="sameDomain" wmode="' + settings.wmode + '" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /><div id="' + $j(this).attr("id") + 'Queue" class="fileUploadQueue"></div>');
	          }
	          $j(this).bind("rfuSelect", { 'action': settings.onSelect }, function(event, queueID, fileObj) {
	            if (event.data.action(event, queueID, fileObj) !== false) {
	              if ($j("#" + $j(this).attr('id') + queueID).html()) {
	                return;
	              }
	              var byteSize = Math.round(fileObj.size / 1024 * 100) * .01;
	              sizeParts = byteSize.toString().split('.');
	              if (sizeParts.length > 1) {
	                byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0, 2);
	              }
	              else {
	                byteSize = sizeParts[0] + '.0';
	              }
	              $j('#' + $j(this).attr('id') + 'Queue').append('<div id="' + $j(this).attr('id') + queueID + '" class="fileUploadQueueItem">\
									<div class="cancel">\
										<a href="javascript:$j(\'#' + $j(this).attr('id') + '\').fileUploadCancel(\'' + queueID + '\')"></a>\
									</div>\
									<span class="fileName">' + fileObj.name + ' <em style="font-size: x-small;">(' + byteSize + 'KB)</em></span>\
									<div class="fileUploadProgress">\
										<div id="' + $j(this).attr('id') + queueID + 'ProgressBar" class="fileUploadProgressBar"></div>\
									</div>\
								  </div>');
	            }
	          });

	          $j(this).bind("rfuHistory", { 'action': settings.onSelect }, function(event, queueID, fileObj) {
	            if (event.data.action(event, queueID, fileObj) !== false) {
	              if ($j("#" + $j(this).attr('id') + queueID).html()) {
	                return;
	              }
	              var byteSize = Math.round(fileObj.size / 1024 * 100) * .01;
	              sizeParts = byteSize.toString().split('.');
	              byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0, 2);
	              $j('#' + $j(this).attr('id') + 'Queue').prepend('<div id="' + $j(this).attr('id') + queueID + '" class="fileUploadQueueItem">\
									<div class="uploaded">\
										<a></a>\
									</div>\
									<span class="fileName">' + fileObj.name + ' <em style="font-size: x-small;">(' + byteSize + 'KB)</em></span>\
								  </div>');
	            }
	          });
	          if (typeof (settings.onSelectOnce) == 'function') {
	            $j(this).bind("rfuSelectOnce", settings.onSelectOnce);
	          }
	          $j(this).bind("rfuCancel", { 'action': settings.onCancel }, function(event, queueID, fileObj) {
	            if (event.data.action(event, queueID, fileObj) !== false) {
	              $j("#" + $j(this).attr('id') + queueID).fadeOut(250, function() { $j("#" + $j(this).attr('id') + queueID).remove() });
	            }
	          });
	          $j(this).bind("rfuError", { 'action': settings.onError }, function(event, queueID, fileObj, errorObj) {
	            if (event.data.action(event, queueID, fileObj, errorObj) !== false) {
	              $j("#" + $j(this).attr('id') + queueID + " .fileName").html(errorObj.type + " Error - " + fileObj.name);
	              $j("#" + $j(this).attr('id') + queueID).css({ 'border': '3px solid #FBCBBC', 'background-color': '#FDE5DD' });
	            }
	          });
	          $j(this).bind("rfuProgress", { 'action': settings.onProgress }, function(event, queueID, fileObj, statusObj) {
	            if (event.data.action(event, queueID, fileObj, statusObj) !== false) {
	              $j("#" + $j(this).attr('id') + queueID + "ProgressBar").css('width', statusObj.percentage + '%');
	            }
	          });
	          $j(this).bind("rfuComplete", { 'action': settings.onComplete }, function(event, queueID, fileObj) {
	            if (event.data.action(event, queueID, fileObj) !== false) {
	              if (!$j("#" + $j(this).attr('id') + queueID + " > div.uploaded").html()) {
	                $j("#uploadedfiles").attr("value", $j("#uploadedfiles").attr("value") + $j("#" + $j(this).attr('id') + queueID + " > span.fileName").html() + "|");
	              }
	              $j("#" + $j(this).attr('id') + queueID + " > div.cancel > a").removeAttr("href");
	              $j("#" + $j(this).attr('id') + queueID + " > div.cancel > a").css("cursor", "default");
	              $j("#" + $j(this).attr('id') + queueID + " > div.fileUploadProgress").remove();
	              $j("#" + $j(this).attr('id') + queueID + " > div.cancel").addClass("uploaded");
	              $j("#" + $j(this).attr('id') + queueID + " > div.cancel").removeClass("cancel");
	            }
	          });
	          if (typeof (settings.onAllComplete) == 'function') {
	            $j(this).bind("rfuAllComplete", settings.onAllComplete);
	          }
	        });
	      }
	    },
	    fileUploadSettings: function(settingName, settingValue) {
	      $j(this).each(function() {
	        document.getElementById($j(this).attr('id') + 'Uploader').updateSettings(settingName, settingValue);
	      });
	    },
	    fileUploadStart: function() {
	      $j(this).each(function() {
	        document.getElementById($j(this).attr('id') + 'Uploader').startFileUpload();
	      });
	    },
	    fileUploadCancel: function(queueID) {
	      $j(this).each(function() {
	        document.getElementById($j(this).attr('id') + 'Uploader').cancelFileUpload(queueID);
	      });
	    },
	    fileUploadClearQueue: function() {
	      $j(this).each(function() {
	        $j('#' + $j(this).attr('id') + 'Queue').contents().fadeOut(250, function() { $j('#' + $j(this).attr('id') + 'Queue').empty() });
	        document.getElementById($j(this).attr('id') + 'Uploader').clearFileUploadQueue();
	      });
	    }
	  })
	}
)(jQuery);
