//setup references, variables to control fade out when movie plays, pause playing movies
var video_players	= $$('div.video_player'); //grab all of the videos on a page
var video_playing 	= false;
var playerListeners = {};
var idleTime    	= 5500;
var timeOut     	= '';

//function that returns a PlayerState of a youTube video, expecting an object reference
function getPlayerState(elementtoget){
	if(elementtoget){
		return elementtoget.getPlayerState();
	}
}

//function that attaches onStateChange event listener to each youTube video
function onYouTubePlayerReady(playerId){
		playerListeners[playerId] = function (state) {
			//pause any playing videos
			if(state == 1){
				video_players.each(function(item) {
					if(playerId != item.id){
						$(item.id).pauseVideo();
					}
				});
			} else if(state == 0){
				resetIdle();
				hideOverlay();
			}
			
			/*
			else if(state == 0 && playerId == item.id){
				resetIdle();
			}
			*/
		};
		$(playerId).addEventListener("onStateChange", "playerListeners." + playerId);
}

//function to show overlay layer (fade out background)
function showOverlay(){
		if(!ff2){
				if($('fade_layer').getOpacity() < 0.90){
						//alert($('fade_layer').getOpacity());
						$('fade_layer').setStyle({ display: 'block' });
						$('fade_layer').fade({ from: 0, to:.90, duration: 2.5 });
				}
		}
}

//function to hide overlay layer (fade in background)
function hideOverlay(){
		if(!ff2){
				$('fade_layer').setStyle({ display: 'none' });
				$('fade_layer').setOpacity(0);
				//if this is the product page, and the infoLayersOff function exists, 
				//call it to hide the info layers when the mouse moves from video playback
				//if(infoLayersOff){
				if(typeof infoLayersOff == 'function'){
						infoLayersOff();	
				}
		}
}

//function to make overlay appear instantly, for product page layers
function showOverlayInstant(){
		$('fade_layer').setOpacity(0.90);
		$('fade_layer').setStyle({ display: 'block' });
		//$('fade_layer').fade({ from: 0, to:.85, duration: 3.0 });
}
function hideOverlayInstant(){
		$('fade_layer').setStyle({ display: 'none' });
		$('fade_layer').setOpacity(0);
}



//function that returns true if any youTube videos are currently playing, otherwise false
function anyPlaying(){
	var res = false;
	video_players.each(
		function(vid_item){
			if($(vid_item.id).getPlayerState){
				if($(vid_item.id).getPlayerState() == 1){
					res = true;
				}
			}
	});
	return res;
}

//detect mousemove
function init() {
    Event.observe(document.body, 'mousemove', resetIdle, true);
    setIdle();
}

//function called when mouse has been idle for idleTime mseconds
function onIdleFunction(){
	var cp = anyPlaying();
	if(cp){
		showOverlay();
	}
}

//function to reset the idle timer
function resetIdle(){
    window.clearTimeout(timeOut);
	var cp = anyPlaying();
	if(cp){
		hideOverlay();
	}
    setIdle();
}

//set the timeOut variable
function setIdle(){
    timeOut = window.setTimeout("onIdleFunction()", idleTime );
}

//Event.observe(window, 'load', init, false);
//Event.observe(window, 'load', setDimensions, false); 

var height = $('site_container').getHeight();
$('fade_layer').setOpacity(0);

//set the height of the overlay image (varies page to page)
function setDimensions(){
		var body_height = $('site_container').getHeight();
		$('fade_layer').setStyle({
		  height: body_height+'px'
		});
}

//Firefox 2 mac fix, no fade
function detectMacXFF2() {
  var userAgent = navigator.userAgent.toLowerCase();
  if (/firefox[\/\s](\d+\.\d+)/.test(userAgent)) {
    var ffversion = new Number(RegExp.$1);
    if (ffversion < 3 && userAgent.indexOf('mac') != -1) {
      return true;
    }
  }
}
var ff2 = detectMacXFF2();

//function to move absolutely positioned videos over placeholder divs (IE z-index interpretation is poor; this way they're all on the same level)
function getCoords(){
	var arLen = video_players.length;
	for(var i = 1,len = arLen; i <= len; i++){
		var coords = $('placeholder_'+i).cumulativeOffset();
		$('ytapiplayer'+i+'_wrap').setStyle({ top:coords.top+'px', left:coords.left+5+'px' });
	}
}

//Event.observe(window, 'load', getCoords);

/*
function pageLoad(){
	init();
	setDimensions();
}


function domLoad(){
	getCoords();
	var wrappers = $$('div.video_wrapper');
	wrappers.each(
		function(wrap){
			wrap.setStyle({ visibility:'visible' });
	});
}
*/



function pageLoad(){
	init();
	setDimensions();
	getCoords();
	var wrappers = $$('div.video_wrapper');
	wrappers.each(
		function(wrap){
			wrap.setStyle({ visibility:'visible' });
	});
}


function domLoad(){	

}

//setup event listeners
Event.observe(document, 'dom:loaded', domLoad);
Event.observe(window, 'load', pageLoad);