var banners;
var allow_restart = false;
function start_banners() {
  if( !$('slidebanner') )
	return;
  banners = new RotatingBanner( $('slidebanner'), {
    delay: 5.00,
    duration: 1.0
  });
  banners.start();
  
  if( !$('ctsc_left_nav') )
	return;
	
  $$('#ctsc_left_nav li a').invoke( 'observe', 'mouseover', show_banner );
  $$('#ctsc_left_nav li a').invoke( 'observe', 'mouseout', restore_banner );
  
  $$('#slidebanner li').invoke( 'observe', 'mouseover', pause_banner );
  $$('#slidebanner li').invoke( 'observe', 'mouseout', restore_banner );
}

function show_banner(e) {
	var li = $(e.target);
	while(li.tagName != "LI")
		li = li.up('li');
	
	var siblings = li.previousSiblings();
	var siblingCount = siblings.length;
	for(n = 0; n < siblings.length; n++)
	{
		//don't include siblings that are headers
		if(siblings[n].className.indexOf("header") >= 0)
		{
			siblingCount--;
		}
	}
	banners.show_banner(siblingCount);
}

function pause_banner(e) {
	banners.pause_banner();
}

function restore_banner() {
	t = setTimeout("restart_banner()", 3000);
	allow_restart = true;
}

function restart_banner()
{
	if(allow_restart)
		banners.restart()
}

RotatingBanner = Class.create({
  initialize: function( element, options ) {
    this.element = element;
    this.options = options;
    this.elements = element.childElements();
    this.current_element = element.down('.default') || this.elements[0];
    this.next_element = this.current_element.next() || this.elements[0];
    this.current_element.setStyle({ display: 'block' });
    this.current_element.removeClassName('default');
  },
  start: function() {
    if( this.current_element == this.next_element )
      return;

    if( this.effect ) {
      this.effect.finish_effect();
      this.next_effect.finish_effect();
    }
    this.init_effects();
    this.effect.start_effect();
    this.next_effect.start_effect();
  },
  restart: function() {
	if(!this.current_element)
		this.current_element = this.elements[0];  
	this.next_element = this.current_element.next() || this.elements[0];
	this.start();
  },
  init_effects: function() {
	this.effect = new Effect.Style( this.current_element, 'opacity', {
      start: 0.99,
      end: 0.0,
      unit: '',
      delay: this.options.delay,
      duration: this.options.duration,
      afterFinish: this._effect_finish.bind(this) } );
    this.next_effect = new Effect.Style( this.next_element, 'opacity', {
      start: 0.0,
      end: 0.99,
      unit: '',
      delay: this.options.delay,
      duration: this.options.duration,
      beforeStart: this._next_effect_start.bind(this) } );  
  },  
  init_effects2: function() {
	this.effect = new Effect.Style( this.current_element, 'opacity', {
      start: 0.99,
      end: 0.0,
      unit: '',
      delay: 0,
      duration: this.options.duration,
      afterFinish: this._effect_finish2.bind(this) } ); 
    this.next_effect = new Effect.Style( this.next_element, 'opacity', {
      start: 0.0,
      end: 0.99,
      unit: '',
      delay: 0,
      duration: this.options.duration,
      beforeStart: this._next_effect_start.bind(this) } );  
  },    
  stop: function() {
    if( this.effect ) {
      this.effect.finish_effect();
      this.next_effect.finish_effect();
    }    
  },
  pause_banner: function(index) {
		if( this.effect ) {
      this.effect.finish_effect();
      this.next_effect.finish_effect();
      
			if(this.current_element.getOpacity() > .5)
			{
				this.current_element.setStyle( { display: 'block', opacity: 1 } );
				this.next_element.setStyle( { display: 'none' } );
			}
			else
			{
				this.current_element.setStyle( { display: 'none' } );
				this.next_element.setStyle( { display: 'block', opacity: 1  } );
				
				this.current_element = this.current_element.next() || this.elements[0];
				this.next_element = this.current_element.next() || this.elements[0];
			}
			allow_restart = false;
		}
  },
  show_banner: function(index) {
	if(index >= this.elements.length)
		return;
	
	allow_restart = false;
	this.stop();
		
    this.elements[index].setStyle( { display: 'block', opacity: 1 } );
    for(k = 0; k < this.elements.length; k++)
    {
		if(k != index)
			this.elements[k].setStyle( { display: 'none' } );
    }
    this.current_element = this.elements[index];
    this.next_element = this.current_element.next() || this.elements[0];
  },
  _effect_finish: function() {
    this.current_element.setStyle({ display: 'none' });
    this.current_element = this.next_element;
    this.next_element = this.current_element.next() || this.elements[0];
    this.start();
  },
  _effect_finish2: function() {
    this.current_element.setStyle({ display: 'none' });
    this.current_element = this.next_element;
    this.next_element = this.current_element.next() || this.elements[0];
  },
  _next_effect_start: function() {
    this.next_element.setStyle({ display: 'block', opacity: 0 });
  }
  
});