/*
---
name: MooDialog.Fx
description: Overwrite the default events so the Dialogs are using Fx on open and close
authors: Arian Stolwijk
license: MIT-style license
requires: [Core/Fx.Tween, Overlay]
provides: MooDialog.Fx
...
*/


MooDialog.implement('options', {

	duration: 400,
	closeOnOverlayClick: true,

	onInitialize: function(wrapper){
		this.fx = new Fx.Tween(wrapper, {
			property: 'opacity',
			duration: this.options.duration
		}).set(0);
		this.overlay = new Overlay(this.options.inject, {
			duration: this.options.duration
		});
		if (this.options.closeOnOverlayClick) this.overlay.addEvent('click', this.close.bind(this));

		this.addEvent('hide', function(){
			if (this.options.destroyOnHide) this.overlay.overlay.destroy();
		}.bind(this));
	},

	onBeforeOpen: function(wrapper){
		this.overlay.open();
		this.fx.start(1).chain(function(){
			this.fireEvent('show');
		}.bind(this));
	},

	onBeforeClose: function(wrapper){
		this.overlay.close();
		this.fx.start(0).chain(function(){
			this.fireEvent('hide');
		}.bind(this));
	}

});