Event.observe(window,'load',function(e){
	$$('div.promo').each(function(promo){
		promo
		.observe('mouseenter',function(e){
			toggle.bind(this)(1,0);
		}).observe('mouseleave', function(e){
			toggle.bind(this)(0,1);
		});
	});
});
function toggle(a,f)
{
	var el = getElements.bind(this)();
	cancelCurrent.bind(this)();
	appear.bind(this)(el[a]);
	fade.bind(this)(el[f]);
}
function getElements()
{
	var off = this.down('div.promoText');
	var on = this.down('div.promoHover');
	return [ off, on ];
}
function appear(element)
{
	this.appear = new Effect.Appear(element, { duration:0.5, afterFinish: (function(){ this.appear = null; }).bind(this) });
}
function fade(element)
{
	this.fade = new Effect.Fade(element, { duration:0.5, afterFinish: (function(){ this.fade = null; }).bind(this) });
}
function cancelCurrent()
{
	if(this.fade!=null && this.fade.cancel) {
		this.fade.cancel();
		this.fade = null;
	}
	if(this.appear!=null && this.appear.cancel) {
		this.appear.cancel();
		this.appear = null;
	}
}
function cycle()
{
	var d = 0, x = 0.6;
	$$('div.promo').each(function(promo){
		(function()
		{
			var el = getElements.bind(this)();
			appear.bind(this)(el[1]);
			fade.bind(this)(el[0]);
		}).bind(promo).delay(d);
		d+=0.3;
		(function()
		{
			var el = getElements.bind(this)();
			appear.bind(this)(el[0]);
			fade.bind(this)(el[1]);
		}).bind(promo).delay(x);
		x+=0.3;
	});
}
