//----------------------------------------------------------------------
// Start her up

document.observe( 'dom:loaded', _initHomeFeatures );


//----------------------------------------------------------------------
// _initHomeFeatures

function _initHomeFeatures()
{
	if ( !$('home-features') ) return;
	var features = $('home-features').select('.home-feature');
	var divControls = new Element('div', { 'id': 'home-feature-ctrls' });
	var ulControls = new Element('ul');
	
	
	$('home-features')._isRotating = true;
	$('home-features')._selected = -1;
	
	for ( var i = 0; i < features.length; i++ )
	{
		// var title = features[i].select('.title')[0].innerHTML.stripTags();
		var liButton = new Element('li'); // .update( title );
		liButton._i = i;
		liButton.observe( 'click', _onFeatureClick );
		liButton.observe( 'mouseover', _onFeatureOver );
		liButton.observe( 'mouseout', _onFeatureOut );
		ulControls.insert( liButton );
		
		features[i].removeClassName('selected');
		features[i].setOpacity( 0.0 );
	}
	
	divControls.insert( ulControls );
	$('home-features').insert( divControls );
	
	_setFeature( 0 );
	
	$('home-features')._loop = new PeriodicalExecuter( function( pe )
	{
	 	if ( $('home-features')._isRotating ) _setNextFeature();
		else pe.stop();
	}, 6.0 );

}
function _onFeatureOver( event )
{
	Event.stop( event );
	var liButton = event.findElement('li');
	liButton.addClassName('hover');
}
function _onFeatureOut( event )
{
	Event.stop( event );
	var liButton = event.findElement('li');
	liButton.removeClassName('hover');
}
function _onFeatureClick( event )
{
	Event.stop( event );
	var liButton = event.findElement('li');
	
	if ( $('home-features')._isRotating )
	{
		$('home-features')._isRotating = false;
		$('home-features')._loop.stop();
	}
	_setFeature( liButton._i );
}
function _setFeature( iSel )
{
	var queue = Effect.Queues.get('home-features-scope');
	queue.each( function( effect ) { effect.cancel(); })
	
	var features = $('home-features').select('.home-feature');
	var buttons = $('home-feature-ctrls').select('li');
	
	for ( var i = 0; i < features.length; i++ )
	{
		if ( i != iSel )
		{
			buttons[i].removeClassName('selected');
			var opacity = features[i].getStyle('opacity');
			if ( opacity > 0 )
			{	
				new Effect.Opacity( features[i],
				{
					to: 0.0,
					duration: opacity,
					transition: Effect.Transitions.sinoidal,
					queue: { scope: 'home-features-scope' },
					afterFinish: function( effect ) { effect.element.removeClassName('selected'); }
				});
			}
		}
	}
	
	$('home-features')._selected = iSel;
	buttons[ iSel ].addClassName('selected');
	var opacity = features[ iSel ].getStyle('opacity');
	if ( opacity < 1 )
	{	
		new Effect.Opacity( features[ iSel ],
		{
			to: 3.0,
			duration: 2.0 - opacity,
			transition: Effect.Transitions.sinoidal,
			queue: { position: 'end', scope: 'home-features-scope' },
			afterSetup: function( effect ) { effect.element.addClassName('selected'); }
		});
	}
}

function _setNextFeature()
{
	var features = $('home-features').select('.home-feature');
	var iSel = ( $('home-features')._selected + 1 ) % features.length;
	_setFeature( iSel );
}
