summaryrefslogtreecommitdiffstats
path: root/pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js')
-rw-r--r--pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js b/pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js
new file mode 100644
index 000000000..35ab19c48
--- /dev/null
+++ b/pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js
@@ -0,0 +1,137 @@
+/*
+---
+
+name: Overlay
+
+authors:
+ - David Walsh (http://davidwalsh.name)
+
+license:
+ - MIT-style license
+
+requires: [Core/Class, Core/Element.Style, Core/Element.Event, Core/Element.Dimensions, Core/Fx.Tween]
+
+provides:
+ - Overlay
+...
+*/
+
+var Overlay = new Class({
+
+ Implements: [Options, Events],
+
+ options: {
+ id: 'overlay',
+ color: '#000',
+ duration: 500,
+ opacity: 0.5,
+ zIndex: 5000/*,
+ onClick: function(){},
+ onClose: function(){},
+ onHide: function(){},
+ onOpen: function(){},
+ onShow: function(){}
+ */
+ },
+
+ initialize: function(container, options){
+ this.setOptions(options);
+ this.container = document.id(container);
+
+ this.bound = {
+ 'window': {
+ resize: this.resize.bind(this),
+ scroll: this.scroll.bind(this)
+ },
+ overlayClick: this.overlayClick.bind(this),
+ tweenStart: this.tweenStart.bind(this),
+ tweenComplete: this.tweenComplete.bind(this)
+ };
+
+ this.build().attach();
+ },
+
+ build: function(){
+ this.overlay = new Element('div', {
+ id: this.options.id,
+ styles: {
+ position: (Browser.ie6) ? 'absolute' : 'fixed',
+ background: this.options.color,
+ left: 0,
+ top: 0,
+ 'z-index': this.options.zIndex,
+ opacity: 0
+ }
+ }).inject(this.container);
+ this.tween = new Fx.Tween(this.overlay, {
+ duration: this.options.duration,
+ link: 'cancel',
+ property: 'opacity'
+ });
+ return this;
+ }.protect(),
+
+ attach: function(){
+ window.addEvents(this.bound.window);
+ this.overlay.addEvent('click', this.bound.overlayClick);
+ this.tween.addEvents({
+ onStart: this.bound.tweenStart,
+ onComplete: this.bound.tweenComplete
+ });
+ return this;
+ },
+
+ detach: function(){
+ var args = Array.prototype.slice.call(arguments);
+ args.each(function(item){
+ if(item == 'window') window.removeEvents(this.bound.window);
+ if(item == 'overlay') this.overlay.removeEvent('click', this.bound.overlayClick);
+ }, this);
+ return this;
+ },
+
+ overlayClick: function(){
+ this.fireEvent('click');
+ return this;
+ },
+
+ tweenStart: function(){
+ this.overlay.setStyles({
+ width: '100%',
+ height: this.container.getScrollSize().y,
+ visibility: 'visible'
+ });
+ return this;
+ },
+
+ tweenComplete: function(){
+ var event = this.overlay.getStyle('opacity') == this.options.opacity ? 'show' : 'hide';
+ if (event == 'hide') this.overlay.setStyle('visibility', 'hidden');
+ return this;
+ },
+
+ open: function(){
+ this.fireEvent('open');
+ this.tween.start(this.options.opacity);
+ return this;
+ },
+
+ close: function(){
+ this.fireEvent('close');
+ this.tween.start(0);
+ return this;
+ },
+
+ resize: function(){
+ this.fireEvent('resize');
+ this.overlay.setStyle('height', this.container.getScrollSize().y);
+ return this;
+ },
+
+ scroll: function(){
+ this.fireEvent('scroll');
+ if (Browser.ie6) this.overlay.setStyle('left', window.getScroll().x);
+ return this;
+ }
+
+});