/***************************************************************************************
*
* Main Carousel Module JavaScript Functions. Requires YUI library to function properly.
* Copyright (c) 2008 Walt Disney Internet Group.  All Rights Reserved.
*
****************************************************************************************/

WDPRO_LOADER.require("dom");
WDPRO_LOADER.require("event");
WDPRO_LOADER.require("carousel");


WDPRO_LOADER.addCallback(
	function(){		
		YAHOO.util.Event.onDOMReady( CarouselSelect.init );
		YAHOO.util.Event.onDOMReady( CarouselConfig );		
	}
);

/* fade the buttons */
/*
function fadeNavButtons( strClassName, strOpacity, intOpacityValue ) {
	var $D = WDPRO.util.Dom;
	var fadeButtons = $D.setStyle( strClassName, strOpacity, intOpacityValue )
	return fadeButtons;
}
*/

CarouselSelect = {
	contentItems: null,
	contentItemsTotal: null,
	
	contentSpotlightItems: null,
	contentSpotlightItemsTotal: null,
	
	init:function(){		
			var $D = WDPRO.util.Dom;
			var $E = YAHOO.util.Event;			
			var listDiv	= $D.get("myCarouselListTarget");
			var listItem = listDiv.getElementsByTagName("li")[0];
			var incrementTotal = $D.getElementsByClassName('contentItem', 'div', listItem).length;	// previously (var endNumofGroup = 4)

			CarouselSelect.contentItems	= $D.getElementsByClassName('contentItem', 'div');
			CarouselSelect.contentItemsTotal = CarouselSelect.contentItems.length;
		
			/*
			$D.setStyle( 'listPrev', 'opacity', 0.2 );				//hide previous and next buttons if there are 4 or less items
			$D.setStyle( 'listPrev', 'cursor', 'default' );
			
			if ( CarouselSelect.contentItemsTotal <= 2 ) {
				$D.setStyle( 'listNext', 'opacity', 0.0 );
				$D.setStyle( 'listPrev', 'opacity', 0.0 );
			}
			*/
	}
}



/******** start main carousel ********/
function CarouselConfig() {			
		var $D = WDPRO.util.Dom;
		var $E = YAHOO.util.Event;
		
		var prev = $D.get("listPrev");
		var next = $D.get("listNext");
		var startNumofGroup = 1;
		var endNumofGroup = 2;
		
		var listDiv = $D.get("myCarouselListTarget");
		var list = listDiv.getElementsByTagName("ul")[0];
		var listItem = listDiv.getElementsByTagName("li")[0];
		var contentItems = $D.getElementsByClassName('contentItem', 'div');
		var contentItemsTotal = contentItems.length;		

		var incrementTotal = $D.getElementsByClassName('contentItem', 'div', listItem).length;
		var totalWidth = list.offsetWidth;
		//alert('listItem.offsetWidth=' + listItem.offsetWidth);
		//alert('contentItemsTotal=' + contentItemsTotal);
		var adjustedMargins = 0;// parseInt( $D.getStyle( contentItems,'margin-left' ) ) + parseInt( $D.getStyle( contentItems,'margin-right' ) );
		//var totalItemsWidth = (listItem.offsetWidth * (contentItemsTotal - 3) ) - adjustedMargins;	
		var totalItemsWidth = (listItem.offsetWidth * (contentItemsTotal) ) - adjustedMargins;	
		//alert("adjustedMargins=" + adjustedMargins);
		//alert('totalItemsWidth=' + totalItemsWidth);

		
		var startXY = $D.getXY( listItem );		
		var moveX = (listItem.offsetWidth * 1) - adjustedMargins;
		//alert(totalWidth);
		
		try {
			moveX = moveX + adjustedMargins;
		}
		catch(e) {}
		
		var config = {
			target: listDiv
			, triggers: [				
				{
					// NEXT DIRECTION
					element: next													
					, eventType:"click"				
					, movement: {by: [-(moveX),0]}
					, duration: 0.5
					, easing: YAHOO.util.Easing.easeBoth
					, onBeforeAnim:function() {
						var curXY = $D.getXY(listItem);
						
						if ( endNumofGroup >= contentItemsTotal ) { return false; }
						
						// previously
						// if ( (Math.abs( curXY[0] - startXY[0]) + moveX ) >= totalItemsWidth ) { return false; }
						
						startNumofGroup = startNumofGroup + incrementTotal;		// increment pagination number by 2 if showing 2 items; we currently show 1 group with 2 items
						endNumofGroup = endNumofGroup + incrementTotal;
						
						// Reset fade and pointer
						/*
						$D.setStyle( 'listNext', 'opacity', 1 );
						$D.setStyle( 'listPrev', 'opacity', 1 );
						*/
						$D.setStyle( 'listPrev', 'cursor', 'pointer' );
						$D.setStyle( 'listNext', 'cursor', 'pointer' );
						
						// REMAINDER ITEMS EXIST
						if ( endNumofGroup > contentItemsTotal ) {
							//fadeNavButtons('listNext', 'opacity', 0.2);		// hide next arrow if at the end of carousel							
							$D.setStyle( 'listNext', 'cursor', 'default' );
						} else {
						// NO REMAINDER ITEMS EXIST
						if ( contentItemsTotal == endNumofGroup ) {				// hide previous arrow if displaying last section
							//fadeNavButtons('listNext', 'opacity', 0.2);
							$D.setStyle( 'listNext', 'cursor', 'default' );
						}
					}
					
					//alert('curXY=' + curXY + '\n' + 'startXY=' + startXY + '\n' + 'totalsofar=' +  (Math.abs( curXY[0] - startXY[0]) + moveX ) + '\n' + 'totalItemsWidth=' + totalItemsWidth);
					//alert(moveX);
				}
			},
			{
					// PREVIOUS DIRECTION
					element: prev
					, eventType:"click"
					, movement: {by: [moveX,0]}
					, duration: 0.5
					, easing: YAHOO.util.Easing.easeBoth
					, onBeforeAnim:function() {
						var curXY = $D.getXY(listItem);
						
						if ( startNumofGroup <= incrementTotal  ) { return false; }
						
						// previously
						//if( curXY[0] >= startXY[0] ) { return false; }
						
						startNumofGroup = startNumofGroup - incrementTotal;	
						
						// increment pagination number by 4 if 4 displayed; we currently show 1 group with 4 items
						endNumofGroup = endNumofGroup - incrementTotal;
						
						// reset fade and pointer
						/*
						$D.setStyle( 'listPrev', 'opacity', 1 );
						$D.setStyle( 'listNext', 'opacity', 1 );
						*/
						$D.setStyle( 'listNext', 'cursor', 'pointer' );
						
						/*
						if( startNumofGroup <= incrementTotal ) {					// hide previous arrow when showing start group
							fadeNavButtons('listPrev', 'opacity', 0.2);
						}*/
						
						if( startNumofGroup == 1 ) {
							$D.setStyle( 'listPrev', 'cursor', 'default' );
							$D.setStyle( 'listNext', 'cursor', 'pointer' );
						}
					}								
				}
			
		]
	}
	var carousel = new WDPRO.widgets.Carousel(config);	
	
}
/******** end main carousel ********/

