//----------------------------------------------------------------------
// Start her up

document.observe( 'dom:loaded', _initPage );


//----------------------------------------------------------------------
// initPage

function _initPage()
{
	// Navigation subnav menus
	_initDropDownIE6('main-nav');
	_initDropDownIE6('language-menu');
	
	// External links
	_initExternalLinks();
	
	// Search Form
	_initSearchForm();
	
	// Button opacity handlers
	_initBtnOpacity();
	
	// Home Features Slideshow
	_initHomeFeatures();
}


//----------------------------------------------------------------------
// _initDropDownIE6

function _initDropDownIE6( id )
{	
	if (!$(id)) return;
	
	var navNodes = $(id).select('ul.level-1')[0].childElements();
	
	for ( var i = 0; i < navNodes.length; i++ )
	{
		navNodes[i].observe( 'mouseenter', function( event )
		{
			this.addClassName( 'hover' );
		});
		
		navNodes[i].observe( 'mouseleave', function( event )
		{
			this.removeClassName( 'hover' );
		});
	}
}


//----------------------------------------------------------------------
// _initExternalLinks

function _initExternalLinks()
{	
	// set any external links to target='_blank'
	var hostname = window.location.hostname.sub('www.','').toLowerCase();
	if ( hostname.empty() ) return;
	var aLinks = $$('a');
	
	for ( var i = 0; i < aLinks.length; i++ )
	{
		var aLink = aLinks[i];
		var url = aLink.readAttribute('href').toLowerCase();
		
		if ( url.startsWith('http://') || url.startsWith('https://') )
		{
			if ( url.startsWith('http://') ) url = url.sub('http://','');
			else if ( url.startsWith('https://') ) url = url.sub('https://','');
			if ( url.startsWith('www.') ) url = url.sub('www.','');
			if ( !url.startsWith( hostname ) ) aLink.writeAttribute('target', '_blank');
		}
		else if ( aLink.hasClassName('pop-up') )
		{
			aLink.writeAttribute('target', '_blank');
		}
	}
}

//----------------------------------------------------------------------
// _initSearchForm

function _initSearchForm()
{	
	if ( !$('search-form') ) return;
	
	var labels = $('search-form').select('label');
	for ( var i = 0; i < labels.length; i++ )
	{
		var inputId = labels[i].readAttribute('for');
		var label = labels[i].innerHTML;
		var input = $(inputId)
		input._label = label;
		if( input.value.blank() ) input.value = input._label;
		input.observe( 'focus', _onFormElFocus );
		input.observe( 'blur', _onFormElBlur );
	}
}
function _onFormElFocus( event )
{
	//Event.stop( event );
	var input =  $(event.element());
	var curVal = input.getValue();
	if ( curVal == input._label ) input.clear();
}
function _onFormElBlur( event )
{
	//Event.stop( event );
	var input = $(event.element());
	var curVal = input.getValue();
	if ( curVal.blank() ) input.value = input._label;
}


//----------------------------------------------------------------------
// _initBtnOpacity

function _initBtnOpacity()
{
	var buttons = $$('.btn-opacity');
	for ( var i = 0; i < buttons.length; i++ )
	{
		buttons[i].observe( 'mouseover', _onBtnOpacityOver );
		buttons[i].observe( 'mouseout', _onBtnOpacityOut );
	}
}
function _onBtnOpacityOver( event )
{
	Event.stop( event );
	var btn = event.findElement('.btn-opacity');
	btn.setOpacity( 0.7 );
}
function _onBtnOpacityOut( event )
{
	Event.stop( event );
	var btn = event.findElement('.btn-opacity');
	btn.setOpacity( 1.0 );
}


//----------------------------------------------------------------------
// _initHomeFeatures

function _initHomeFeatures()
{
	if ( !$('home-features') ) return;
	var features = $('home-features').select('.home-feature');
	var ulControls = new Element('ul', { 'id': 'home-feature-ctrls' });
	
	$('home-features')._length = features.length;
	$('home-features')._selected = -1;
	$('home-features')._isRotating = true;
	
	// create tabs
	for ( var i = 0; i < $('home-features')._length; i++ )
	{
		var title = features[i].select('h2')[0].innerHTML.stripTags();
		var liButton = new Element('li');
		var aButton = new Element('a', { href:'#' }).update( title );
		
		if ( i == 0 ) liButton.addClassName('first-of-type');
		else if ( i == features.length - 1 && features.length == 6 ) liButton.addClassName('last-of-type');
		
		aButton._i = i;
		aButton.observe( 'click', _onFeatureClick );
		
		liButton.insert( aButton );
		ulControls.insert( liButton );
		
		features[i].removeClassName('selected');
		features[i].setOpacity( 0.0 );
	}
	$('home-features').insert( ulControls );
	
	// if home feature video exists, set it up
	if ( $('home-feature-video') ) _startVideo();
	else _startRotation();
	
	_setFeature( 0 );
}
function _onFeatureClick( event )
{
	Event.stop( event );
	$('home-features')._isRotating = false;
	var aButton = event.findElement('a');
	if ( aButton._i != $('home-features')._selected ) _setFeature( aButton._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('a');
	
	if ( $('home-features')._video )
	{
		if( $('home-features')._selected == 0 ) $('home-features')._video.stop();
		else if( iSel == 0 && !$('home-features')._isRotating ) $('home-features')._video.unload();
	}
	
	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: 1.0,
			duration: 1.0 - opacity,
			transition: Effect.Transitions.sinoidal,
			queue: { position: 'end', scope: 'home-features-scope' },
			afterSetup: function( effect ) { effect.element.addClassName('selected'); }
		});
	}
}
function _setNextFeature()
{
	var iSel = ( $('home-features')._selected + 1 ) % $('home-features')._length;
	_setFeature( iSel );
}
function _startRotation()
{
	$('home-features')._loop = new PeriodicalExecuter( function( pe )
	{
		if ( $('home-features')._isRotating )
		{
			if ( $('home-features')._selected + 1 >= $('home-features')._length ) $('home-features')._isRotating = false;
			_setNextFeature();
		}
		else
		{
			pe.stop();
		}
			
	}, 6.0 );
}
function _startVideo()
{
	$('home-features')._video = flowplayer( 'home-feature-video',
			   
		// flashvars		   
		{ 
			src: '/media/arcserve_r15_homepage_video/video/flowplayer.commercial-3.1.5.swf',
			wmode: 'opaque'
		},
		
		// config
		{
			// key for arcserve.com
			key: '#$2f6670a42343342823e',
							
			// disable controls from each player 
			plugins:
			{ 
				controls:
				{
					fullscreen: false,
					autoHide: 'always',
					hideDelay: 1000,
					time: false
				} 
			},
			
			// a clip object 
			clip:
			{ 
			 	// a clip event is defined inside clip object 
				onFinish: function()
				{ 
					if ( $('home-features')._isRotating )
					{
						_startRotation();
						_setNextFeature();
					}
				}  
			}
		}
	);
	$('home-features')._video.load();
}