/* 
Coder: VC
Date: June 2009
Notes: Banner JS for Breakthrough main site. See /templates/section_index.rm
Requires: JQuery
 */

jQuery(function() {
		
	//Add tabs to banner
	var topbanners = jQuery('.banner_wrapper .banner');
	
	if (topbanners.length > 1){
		//hide banners
		jQuery('.banner_wrapper .banner:gt(0)').hide();
		
		//make tabs
		if (topbanners.length >3 && jQuery('#main-stage.cycle').length){
			pagination='<div class="next"><a href="##">Next</a></div><div class="previous"><a href="##">Previous</a></div>';
			style='width:'+ topbanners.length*180+'px';
		}else{
			pagination='';
			style='';
		}
		jQuery('<div class="banner_tabs_positioner">'+pagination+'<div class="banner_tabs_container"><ul class="banner_tabs" style="'+style+'"></ul></div></div>').appendTo('#main-stage');
		
		jQuery(topbanners).each(function(){
			var tabtitle = jQuery(this).find('h2').text();
			var tablink = jQuery(this).attr('id');
			jQuery('<li id="tab_'+tablink+'"><a href="#'+tablink+'">'+tabtitle+'</a></li>').appendTo('.banner_tabs');
		});
			
		if (topbanners.length > 3){
			//set up serialscroll on tabs, if more than 3 exist
			jQuery('.banner_tabs_container').serialScroll({
				items:'li',
				step:3
			}).addClass("scrolled");
		}

		//click first tab by default
		jQuery("#banner_0").addClass("active");
		bannerTabClick('#banner_0');
	};
	
	//start cycling of banners
	jQuery('#main-stage.cycle').cycle({
		fx: 'fade',
		pause:true,
		slideExpr: '.banner',
		timeout: jQuery('#main-stage').attr("rel")*1000,
		speedIn:1000,
		speedOut:1000,
		next:'.banner_tabs_positioner .next a',
		prev:'.banner_tabs_positioner .previous a',
		pager: '.banner_tabs',
		pagerAnchorBuilder: function(idx, slide) {  
			return '.banner_tabs li:eq(' + idx + ') a'; 
		},
		after:function(currSlideElement, nextSlideElement, options, forwardFlag){
			bannerTabClick('#'+nextSlideElement.id);
			jQuery('.banner_tabs_container').trigger( 'goto', [nextSlideElement.id.replace(/[^0-9]/g,'')] )
		}
	});
	
	if(!jQuery('#main-stage.cycle').length){
		//tab actions
		
		jQuery('.banner_tabs li a').click(function(){
			bannerTabClick('#'+jQuery(this).attr('href').split('#')[1]);
						
			jQuery(this).blur();
			return false;
		});

	}
		
	//make entire banner area clickable
	jQuery('.banner').each(function(){
		if(jQuery(this).find('.standard-link').length && !jQuery(this).find('.video_wrapper').length && !jQuery(this).find('.audio_wrapper').length){
			jQuery(this).addClass("clickenabled");
		}
	});
	
	jQuery('.banner').click(function(){
		$this = jQuery(this);
		if($this.find('a.standard-link').length && !$this.find('.video_wrapper').length && !$this.find('.audio_wrapper').length){
			link = $this.find('a.standard-link');
			if(link.attr("target")=="_blank"){
				window.open(link.attr("href"));
			}else{
				document.location.href = link.attr("href");
			}
		}
		return false;
	});
	
});

function reStartCycle(){
	jQuery('#main-stage').cycle('resume');	
}

function stopCycle(){
	jQuery('#main-stage').cycle('pause');
}

function playerReady(obj) {
	var player = document.getElementById(obj['id']);
	
	//stop all players when click event on bannertabs detected
	$('.banner_tabs li').click(function(){
		player.sendEvent("stop");
		return true;
	});
	
	player.addModelListener('STATE', 'playerChangedState');
}

function playerChangedState(state){
	//make clicks in video/audio stop banners cycling
	if (state.newstate = 'PAUSED') {reStartCycle();}
	if (state.newstate != 'IDLE') {stopCycle();}
}


function bannerTabClick(bannerSelector){
	//remove state from all tabs
	jQuery('.banner_tabs li').removeClass('active');
	//add active state to active tab
	jQuery(bannerSelector.replace('banner', 'tab_banner')).addClass('active');

	if(!jQuery('#main-stage.cycle').length){
		if(('#'+jQuery('.banner_wrapper .banner.active').attr('id')) != bannerSelector){
			//swap banners
			jQuery('.banner_wrapper .banner.active').removeClass('active').fadeOut('500', function(){
				jQuery(bannerSelector).addClass('active').fadeIn(500);
			});
		}else{
			jQuery(bannerSelector).addClass('active').fadeIn(500);
		}
	}	
}

