var K_Fade = new Class({

	Implements: [Options,Events],

	options: {
		'childClass': 'child',
		'delay': 8000,
		'duration': 1250,
		'fxOut': Fx.Transitions.Circ.easeOut,
		'fxIn': Fx.Transitions.Circ.easeIn,
		'path': ''
	},

	initialize: function (container, options) {
		if (!document.id(container)) {
			return false;
		}

		this.setOptions(options);

		this.children = [];
		this.container = document.id(container);
		this.container.setStyle('position', 'relative');

		this.container.getChildren().each(function (child, index) {
			child.setStyles({
				'display': 'block',
				'position': 'absolute'
			});

			this.children.push(child);
		}.bind(this));

		var fade = this.fade.pass([], this);
		this.periodical = fade.periodical(this.options.delay);
	},

	fade: function () {
		this.children.each(function (child, index) {
			child.setStyle('zIndex', index + 1);
		}.bind(this));

		var sister = this.children.pop();
		var child = sister.clone().cloneEvents(sister);
		this.children.unshift(child);

		child.setStyle('z-index', 0);
		child.inject(this.container, 'bottom');

		sister.set('tween', {
			duration: this.options.duration,
			transition: this.options.fxOut,
			onComplete: function () {
				sister.destroy();
			}.bind(this)
		}).tween('opacity', 0);

		return this;
	}
});
