/*---------------------------------------------------------------------
VER 1.0 R1
AUTHOR: CHRIS CHIPPS
DATE:	5/19/2010
NOTES:	JS ROTATOR LIBRARY FOR R1 TEMPLATE
---------------------------------------------------------------------*/

//YOUTUBE HACK
//ADDED 06/29/2010
//AUTH CHRIS CHIPPS
//NOTES: HAS TO HAPPEN OUTSIDE THE MOOTOOLS DOM SO THAT IT CAN TALK TO SWFOBJECT LIBRARY AND THE YOUTUBE API
	
//VIDEO PLAYER FUCNTION HACKAPOLOOZA THAT WILL STOP THE CAROUSEL AND PASS THE PLAY FUNCTION ON TO SWFOBJECT

	var rotateStop = 0;
	var yTubePlaying = 0;
	var yTubeImage1 = 0;
	var yTubeAltImg1 = 0;
	var yTubeParentDiv1 = 0;
	var yTubeIDdiv1 = 0;
	
	function addDiv(yTubeParentDiv,yTubeIDdiv,yTubeImage,yTubeAltImg) {
		yTubePlaying = 1;
		rotateStop = 1;	
		
		yTubeImage1 = yTubeImage;
		yTubeAltImg1 = yTubeAltImg;
		yTubeParentDiv1 = yTubeParentDiv;
		yTubeIDdiv1 = yTubeIDdiv;
		
		swfobject.removeSWF(yTubeIDdiv);
		
		var vidDiv = new Element('div', {
		'id': yTubeIDdiv,
		'title':yTubeAltImg,
		'class':'video'
		});
		
		var parentDiv = document.getElementById(yTubeParentDiv);
			
		parentDiv.grab(vidDiv, 'top');
		
		var vidIDFixed = yTubeIDdiv.substr(1);//&amp;version=3

		var swfparams = {allowScriptAccess:"always", wmode:"transparent", allowFullScreen:"true", quality:"high"};                                	
		var embedparams = {id: yTubeIDdiv, hspace:"45"};
		swfobject.embedSWF("http://www.youtube.com/v/"+vidIDFixed+"&amp;hl=en_US&amp;fs=1&amp;enablejsapi=1&amp;feature=player_embedded&amp;rel=0&amp;playerapiid="+yTubeIDdiv+"", yTubeIDdiv, "560", "340", "8", null, null, swfparams, embedparams);
	}
				
	function onYouTubePlayerReady(playerId) {//as soon as the youTube video is ready this thing fires no matter what.				
		ytplayer = document.getElementById(playerId);		
		ytplayer.addEventListener("onStateChange", "onytplayerStateChange");		
	}

	function onytplayerStateChange(newState) {
	   if(newState==1||newState==3){
			rotateStop = 1;
			yTubePlaying = 1;
	   }else if(newState==0){
			rotateStop = 0;
			replaceVidDiv(yTubeParentDiv1,yTubeIDdiv1,yTubeImage1,yTubeAltImg1);
	   }else if(newState==5){//-1		  
			ytplayer.playVideo();
	   }
	}
				
	function replaceVidDiv(yTubeParentDiv,yTubeIDdiv,yTubeImage,yTubeAltImg){
		yTubePlaying = 0;
		
		swfobject.removeSWF(yTubeIDdiv);
		
		var slideDiv = new Element('div', {
		'title':yTubeAltImg1,
		'id':yTubeIDdiv1,
		'class':'video'						
		});
		
		var slideLink = new Element('a', {
		'title':yTubeAltImg1,
		'href': 'javascript:addDiv("'+yTubeParentDiv1+'","'+yTubeIDdiv1+'","'+ yTubeImage1 +'","'+yTubeAltImg1+'")'
		});
		
		var slideImg = new Element('img', {
		'src':yTubeImage1,
		'alt':yTubeAltImg1,
		'align':'left'
		});	
		
		slideLink.adopt(slideImg);
		slideDiv.adopt(slideLink);
		var theWholeThing = document.getElementById(yTubeParentDiv1);						
		theWholeThing.grab(slideDiv, 'top');					
	}

window.addEvent('domready', function() {	
	var morphContainer = $$('.rotatorWrapper');
	var itemsholder = $$('.elementContainer'); 										//Get array of containers for items
	var items = $$('.slide_item');  												//Get array of elements for sliding	
	var itemNum = 0;																//initialize a variable to hold the current slide index
	var timerCounter = 0;
	var periodical=0;
	var numNavHolder = $$('.num_nav');												//get array of nav containers
	var numNav = new Array();														//create an array to hold our dynamically created number navigation
	var navWrapper = $$('.num_navWrapper');
	var timePeriod = 4000;

//INITIATE ITEMS - PLANT INDEX IN H4 HIDDEN IN DIV - CREATE THE NAVIGATION AND HIDE ITMES THAT ARE NOT AT THE TOP OF THEIR COLLECTION
	
	var deleteLiFromNav = $('clearFromNav');										//clear place holder Li - to pass validation
	deleteLiFromNav.dispose();
	
	items.each(function(el, ind){			
		var slideElTitle = new Element('h4', {
		'style':'display:none',
		'html': (ind)
		});
		
		items[ind].grab(slideElTitle, 'top');			
		
		if(ind > 0){el.fade('hide');}else{el.fade('in');}
		
		var numItem = new Element('li');			
		var numLink = new Element('a', {
		'title': (ind+1),
		'html': (ind+1),
		'opacity': .5
		});
		numNavHolder.each(function(a, o){
			numItem.adopt(numLink);
			numNavHolder[o].adopt(numItem);
			numNav.push(numLink);		
		})			
	});
	
//CREATE MOUSE ENTER STATES FOR BIG CONTAINER
	morphContainer.addEvents({
			'mouseenter': function(){
				$clear(periodical);
				rotateStop = 1;
			},
			'mouseleave': function(){				
				if(yTubePlaying==1){
				 	$clear(periodical);
				 	rotateStop = 1;
				}else{
					rotateStop = 0;
				}						
			},	
			'click': function(){
				$clear(periodical);
				rotateStop = 1;
			}
	});
		
//SET DEFAULT STYLE FOR NAV IN FIRST COLLECTION
		var initNum = numNav[itemNum];
		var origColor = initNum.getStyle('color');		
		initNum.setStyles({
		'background-color':'#333',//#E9E9E9
		'color':'#D47D33',//#FFF #666
		'opacity': .8
		});
		
//SLIDE MOVE
	var slideMove = function(passedID){	
			//get item to slide out
			var curItem = items[itemNum]; 
			var curNumItem =  numNav[itemNum];			
			if(itemNum != passedID){
				itemNum = passedID;
			};	
			//now get item to slide in using new index
			var newItem = items[passedID];
			var newNumItem =  numNav[passedID];
			
			//video check - part of the youTube hacka-polooza
			if(yTubePlaying==1){
				if(curItem.getChildren('div').hasClass('video')){
					replaceVidDiv(yTubeParentDiv1,yTubeIDdiv1,yTubeImage1,yTubeAltImg1);
				}	
			}

			//set up our animation stylings for out and in motions
			newItem.fade('in', {duration: 'short'});	
			curItem.fade('out', {duration: 'short'});
			newNumItem.set('morph', {duration: 'short', transition: Fx.Transitions.linear, link:'ignore'});			
			curNumItem.set('morph', {duration: 'short', transition: Fx.Transitions.linear, link:'ignore'});					
			newNumItem.morph({
				'background-color':'#333',//#E9E9E9
				'color':'#D47D33',//#666
				'opacity': .8
			});			
			curNumItem.morph({
				'background-color':'#999',//#f9f9f9
				'color':origColor,
				'opacity': .5
			});				

		}

//NAVIGATION BUTTONS ARE INITIALIZED
	numNav.each(function(element, index) {
		var origColor = element.getStyle('color');		
		element.addEvents({
			'click' : function(){				
				if(itemNum != index){						
						timerCounter = index;
						//yTubePlaying=0;
						slideMove(index);						
				};
			},
			'mouseenter' : function() {
				if(itemNum != index){						
					this.setStyles({
						'cursor':'pointer',
						'opacity': .8					
					});									
				};
			},
			'mouseout' : function(){
				if(itemNum != index){						
					this.setStyles({
						'cursor':'pointer',
						'opacity': .5					
					});									
				};

			}
		});	
	});	

//TIMER FUNCTION
	var slideMoveTimer = function(){		
		if(itemNum >= items.length-1){
			timerCounter = 0;
		}else{
			timerCounter++;			
		};
		slideMove(timerCounter);
	};
	
	periodical = slideMoveTimer.periodical(timePeriod,slideMoveTimer);
	
	var stopListener = function(){
			if(rotateStop==1){					
			 	$clear(periodical);
				periodical = 0;
			}else if(rotateStop==0){
				if(periodical==0){
					periodical = slideMoveTimer.periodical(timePeriod,slideMoveTimer);	
				}
			}
	}
	
   startListening = stopListener.periodical(1000,stopListener);	
	
});

