diff options
Diffstat (limited to 'pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js')
| -rw-r--r-- | pyload/webui/themes/Default/lib/MooTools/MooDialog/Overlay.js | 137 | 
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; +	} + +}); | 
