/* ******************************************************************************
  JavaScript scroller Transition controller
	
 	Copyright (c) 2008  ()
 	Date: 30/07/2008	 
		 
****************************************************************************** */
var scrller_transitionDuration = 750;
var scrller_transitionDelay = 5000;

jQuery(document).ready(function(){
	
	if(IE!=6){
		jQuery('div.scrollerWidget').each(function(v,ob_scrollerWidget){
			
			if(jQuery(ob_scrollerWidget).find('.scrollItem').size()>2 ){
				//wms_setupPrevScrollItem(ob_scrollerWidget);
			};
			
			
			var current = jQuery(ob_scrollerWidget).find('div.pagination li.selected').prevAll('li').size();
			
			//set all items to active
			jQuery(ob_scrollerWidget).find('div.scrollItem').addClass('active');
			//set left offset
			obCurrent = jQuery(ob_scrollerWidget).find('div.scrollItem')[current];
	
			jQuery(ob_scrollerWidget).find('div.scrollContainer').css('left',-jQuery(obCurrent).position()['left']+'px');
	
			//events`
			jQuery(ob_scrollerWidget).find('div.scrollerWidget_nav div.pagination li a.page').click( 
				
				function(event){ wms_scrollerWidgetSelect(event,ob_scrollerWidget,jQuery(this).find('.pageNumber').html())} 
		
			).blur().css('outline','none');		
			jQuery(ob_scrollerWidget).find('div.scrollerWidget_nav div.controls a.prev').click( function(event){ wms_scrollerWidgetSelect(event,ob_scrollerWidget,'prev')} ).blur().css('outline','none');
			jQuery(ob_scrollerWidget).find('div.scrollerWidget_nav div.controls a.next').click( function(event){ wms_scrollerWidgetSelect(event,ob_scrollerWidget,'next')} ).blur().css('outline','none');
			
			
		if( jQuery(ob_scrollerWidget).find('div.controls').hasClass('autoplay')){
			//console.log('auto play on');
			//add play/pause button
			jQuery(ob_scrollerWidget).find('div.controls a.prev').after('<a class="playPause pause" href="#">Pause</a>');
			
			if( !jQuery(ob_scrollerWidget).find('div.controls').hasClass('pause'))jQuery(ob_scrollerWidget).find('div.controls a.playPause').removeClass('pause');
			
			jQuery(ob_scrollerWidget).find('div.controls a.playPause').click( 
				function(event){ 
					event.preventDefault();
					if(jQuery(this).hasClass('pause')){
						// set button state to play
						jQuery(this).removeClass('pause');
						//pause slideshow
						jQuery(ob_scrollerWidget).find('div.controls').addClass('pause');
					}else{
						// set button state to pause
						jQuery(this).addClass('pause');
						//play slideshow
						jQuery(ob_scrollerWidget).find('div.controls').removeClass('pause');
					}
				}).css('outline','none');
	
			
			
			wms_scrollerWidgetAutoPlay(ob_scrollerWidget,scrller_transitionDelay);
			
		}
			
		
		});
	}
});

function wms_scrollerWidgetAutoPlay(obWidget,delay){
		//console.info(obWidget);
		jQuery(this).oneTime(delay, function(){
																				 
			if(jQuery(obWidget).hasClass('delay')){
				jQuery(obWidget).removeClass('delay');
				wms_scrollerWidgetAutoPlay(obWidget,delay);
			}else{
				if(!jQuery(obWidget).hasClass('transitioning') && !jQuery(obWidget).find('div.controls a.playPause').hasClass('pause')){	
					 wms_scrollerWidgetSelect('auto',obWidget,'next');
				}
				wms_scrollerWidgetAutoPlay(obWidget,delay);
			}
																				 
		});

}

function wms_scrollerWidgetSelect(str_event,scrollerWidget,request){

	// add delay and remove default event when click request
	if(str_event != "auto"){
		jQuery(scrollerWidget).addClass('delay');
		str_event.preventDefault();
	}	
			
	// find current and next scroller item
	var current = jQuery(scrollerWidget).find('div.pagination li.selected').prevAll('li').size()+1;
	var total = jQuery(scrollerWidget).find('div.pagination li').size();
	request = request+"";  // make sure it is a string

	//console.log(current+' ==> '+total+' ==> '+request);
	
	// set request item number
	switch(request)
	{
		
		case 'next':
			if(current < total){
				request = current+1;	
			}else{
				request = 1;	
			}
			wms_setupNextScrollItem(scrollerWidget);
		break;
		
		case 'prev':
			if(current > 1){
				request = current-1;
			}else{
				request = total;
			}
			wms_setupPrevScrollItem(scrollerWidget);
		break;
		
		default:
			if(request.match(/^[0-9]+/)){
				request = request.match(/^[0-9]+/)[0]*1;
			}
		break;
	}
	
	if(!jQuery(scrollerWidget).hasClass('transitioning') && !jQuery(jQuery(scrollerWidget).find('div.pagination li')[request-1]).hasClass('selected')){
		
		//
		jQuery(this).addClass('transitioning');
		jQuery(scrollerWidget).find('div.pagination li.selected').removeClass('selected');
		jQuery(jQuery(scrollerWidget).find('div.pagination li')[request-1]).addClass('selected');
		jQuery(scrollerWidget).find('div.scrollerWidget_nav .current').html(''+request);
		jQuery(scrollerWidget).find('div.scrollItem.selected').removeClass('selected');
		
		if(jQuery(scrollerWidget).hasClass('fade')){
			jQuery(scrollerWidget).find('div.scrollItem').fadeOut(scrller_transitionDuration,function()
				{ 
					if(IE>0){ this.style.removeAttribute("filter");  }
					jQuery(scrollerWidget).find('div.scrollContainer').css({'left':'-'+jQuery(jQuery(scrollerWidget).find('div.scrollItem.item_'+request+'')).position()['left']+'px'})
				}
			).fadeIn(scrller_transitionDuration,function(){ if(IE>0){ this.style.removeAttribute("filter");  }} );
		}else{
			jQuery(scrollerWidget).find('div.scrollContainer').animate(
				{'left':'-'+jQuery(jQuery(scrollerWidget).find('div.scrollItem.item_'+request+'')).position()['left']+'px'},
				scrller_transitionDuration
			).removeClass('transitioning');			
		}
		jQuery(scrollerWidget).find('div.scrollItem.item_'+request+'').addClass('selected');
		if(jQuery.isFunction( window.__afterScrollerWidgetChange)){
			__afterScrollerWidgetChange();
		}
	}
}


function wms_setupPrevScrollItem(scrollerWidget){
	//console.log('prev setup');
	if(jQuery(scrollerWidget).find('.scrollContainer .scrollItem.selected').first().prevAll().size()<1){
		
		jQuery(scrollerWidget).find('.scrollContainer')
			.first()
			.prepend( jQuery(scrollerWidget).find('.scrollContainer .scrollItem').last() )
			.css({'left':'-'+jQuery(scrollerWidget).find('.scrollContainer .scrollItem.selected').first().position()['left']+'px'});
			
	}
}

function wms_setupNextScrollItem(scrollerWidget){
	//console.log('next setup');
	if(jQuery(scrollerWidget).find('.scrollContainer .scrollItem.selected').first().nextAll().size()<1){
		
		jQuery(scrollerWidget).find('.scrollContainer')
			.first()
			.append( jQuery(scrollerWidget).find('.scrollContainer .scrollItem').first() )
			.css({'left':'-'+jQuery(scrollerWidget).find('.scrollContainer .scrollItem.selected').first().position()['left']+'px'});
			
	}
}
