You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
4.3 KiB
JavaScript
176 lines
4.3 KiB
JavaScript
3 years ago
|
/* 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 : 'media/downloadify.swf',
|
||
|
downloadImage : '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))
|
||
|
}
|
||
|
})
|
||
|
};
|