text: /* Downloadify 0.2 (c) 2009 by Douglas Neiner. Licensed under the MIT license */
  /* See http://github.com/dcneiner/Downloadify for license and more info */ 
  
  (function () {
      Downloadify = window.Downloadify = {
          queue: {},
          uid: new Date().getTime(),
          getTextForSave: function (a) {
              var b = Downloadify.queue[a];
              if (b) return b.getData();
              return ""
          },
          getFileNameForSave: function (a) {
              var b = Downloadify.queue[a];
              if (b) return b.getFilename();
              return ""
          },
          getDataTypeForSave: function (a) {
              var b = Downloadify.queue[a];
              if (b) return b.getDataType();
              return ""
          },
          saveComplete: function (a) {
              var b = Downloadify.queue[a];
              if (b) b.complete();
              return true
          },
          saveCancel: function (a) {
              var b = Downloadify.queue[a];
              if (b) b.cancel();
              return true
          },
          saveError: function (a) {
              var b = Downloadify.queue[a];
              if (b) b.error();
              return true
          },
          addToQueue: function (a) {
              Downloadify.queue[a.queue_name] = a
          },
          getUID: function (a) {
              if (a.id == "") a.id = 'downloadify_' + Downloadify.uid++;
              return a.id
          }
      };
      Downloadify.create = function (a, b) {
          var c = (typeof (a) == "string" ? document.getElementById(a) : a);
          return new Downloadify.Container(c, b)
      };
      Downloadify.Container = function (d, e) {
          var f = this;
          f.el = d;
          f.enabled = true;
          f.dataCallback = null;
          f.filenameCallback = null;
          f.data = null;
          f.filename = null;
          var g = function () {
              f.options = e;
              if (!f.options.append) f.el.innerHTML = "";
              f.flashContainer = document.createElement('span');
              f.el.appendChild(f.flashContainer);
              f.queue_name = Downloadify.getUID(f.flashContainer);
              if (typeof (f.options.filename) === "function") f.filenameCallback = f.options.filename;
              else if (f.options.filename) f.filename = f.options.filename;
              if (typeof (f.options.data) === "function") f.dataCallback = f.options.data;
              else if (f.options.data) f.data = f.options.data;
              var a = {
                  queue_name: f.queue_name,
                  width: f.options.width,
                  height: f.options.height
              };
              var b = {
                  allowScriptAccess: 'always'
              };
              var c = {
                  id: f.flashContainer.id,
                  name: f.flashContainer.id
              };
              if (f.options.enabled === false) f.enabled = false;
              if (f.options.transparent === true) b.wmode = "transparent";
              if (f.options.downloadImage) a.downloadImage = f.options.downloadImage;
              swfobject.embedSWF(f.options.swf, f.flashContainer.id, f.options.width, f.options.height, "10", null, a, b, c);
              Downloadify.addToQueue(f)
          };
          f.enable = function () {
              var a = document.getElementById(f.flashContainer.id);
              a.setEnabled(true);
              f.enabled = true
          };
          f.disable = function () {
              var a = document.getElementById(f.flashContainer.id);
              a.setEnabled(false);
              f.enabled = false
          };
          f.getData = function () {
              if (!f.enabled) return "";
              if (f.dataCallback) return f.dataCallback();
              else if (f.data) return f.data;
              else return ""
          };
          f.getFilename = function () {
              if (f.filenameCallback) return f.filenameCallback();
              else if (f.filename) return f.filename;
              else return ""
          };
          f.getDataType = function () {
              if (f.options.dataType) return f.options.dataType;
              return "string"
          };
          f.complete = function () {
              if (typeof (f.options.onComplete) === "function") f.options.onComplete()
          };
          f.cancel = function () {
              if (typeof (f.options.onCancel) === "function") f.options.onCancel()
          };
          f.error = function () {
              if (typeof (f.options.onError) === "function") f.options.onError()
          };
          g()
      };
      Downloadify.defaultOptions = {
          swf: 'downloadify/media/downloadify.swf',
          downloadImage: 'downloadify/images/download.png',
          width: 100,
          height: 30,
          transparent: true,
          append: false,
          dataType: "string"
      }
  })();
  if (typeof (jQuery) != "undefined") {
      (function ($) {
          $.fn.downloadify = function (b) {
              return this.each(function () {
                  b = $.extend({}, Downloadify.defaultOptions, b);
                  var a = Downloadify.create(this, b);
                  $(this).data('Downloadify', a)
              })
          }
      })(jQuery)
  };
  if (typeof (MooTools) != 'undefined') {
      Element.implement({
          downloadify: function (a) {
              a = $merge(Downloadify.defaultOptions, a);
              return this.store('Downloadify', Downloadify.create(this, a))
          }
      })
  };