Element.implement({ 
	innerfade: function(options) {
		var el = this;
		
		var settings = new Hash({
            'speed' : 1000,
            'type' : 'sequence',
            'timeout' : 1000,
			'loop': true
        });
		
		settings.extend(options);
		var counter = 0;
		
		var elements = el.getChildren();
		
		if(elements.length > 1) {
			$(el).set('styles',{'position':'relative','height':el.getSize().y});

			elements.each(function(child, i, hash) {
				$(child).set('styles',{
					'position' : 'absolute',
					'z-index' : 7+ (hash.length - i),
					'opacity' : 0
				});
			})
			
			if (settings.type == "sequence") {
                setTimeout(function() {
                    next(elements, settings, 1, 0);
                }, settings.timeout);
                $(elements[0]).set('opacity', 1);
            } else if (settings.type == "random") {
            	var last = Math.floor ( Math.random () * ( elements.length ) );
				setTimeout(function() {
					do { 
						current = Math.floor ( Math.random ( ) * ( elements.length ) );
					} while (last == current );             
					next(elements, settings, current, last);
                }, settings.timeout);
            	$(elements[last]).set('opacity', 1);
			} else if ( settings.type == 'random_start' ) {
				settings.type = 'sequence';
				var current = Math.floor ( Math.random () * ( elements.length ) );
				setTimeout(function(){
					next(elements, settings, (current + 1) %  elements.length, current);
				}, settings.timeout);
				$(elements[current]).set('opacity', 1);
			}
		}
		
		var next = function (elements, settings, current, last) {
			$(elements[last]).set('tween', { 'duration' :settings.speed});
			$(elements[last]).tween('opacity', 0);
			$(elements[current]).tween('opacity', 1)
			if (settings.type == "sequence") {
            if ((current + 1) < elements.length) {
					current = current + 1;
					last = current - 1;
				} else {
					current = 0;
					last = elements.length - 1;
				}
			} else if (settings.type == "random") {
				last = current;
				while (current == last)
					current = Math.floor(Math.random() * elements.length);
			}
			
			nexttimeout = setTimeout((function() {
				next(elements, settings, current, last);
			}), settings.timeout);
			
			
			if(!settings.loop) {
				counter++
				if(counter == elements.length-1) {
					clearTimeout(nexttimeout);
				}
			}
		}
	}
});

function glow(nav) {
	var links = $(nav).getElements('a');
	$$(links).each(function(nav, i, links){
		nav.addEvent('mouseover', function(){
			$(nav).tween('background-color', '#C2A7D4', '#B368E4');
		})
		nav.addEvent('mouseout', function(){
			$(nav).set('tween', {
				'onComplete' : function() {
					nav.removeProperty('style');
				}
			}).tween('background-color', '#B368E4', '#C2A7D4');
		})
	});
}
