//------------------------------------
//	YTPlayer v.1.0 - 2009/11/02
//	
//	Requires:
//		SWFObject - http://code.google.com/p/swfobject/
//		MooTools - http://mootools.net/download
//	
//	Use:
//		window.addEvent('domready', function(){
//			//TODO - InitializeFlash(?)
//		});
//------------------------------------

function DEBUG(sMessage) {
	if ($('DEBUG') != null) {
		var currentDate = new Date();
		var min = currentDate.getMinutes();
		var sec;
		if (currentDate.getSeconds() < 10) {
			sec = '0' + currentDate.getSeconds();
		} else {
			sec = currentDate.getSeconds();
		}
		var timestamp = min + ':' +  sec;
		sMessage = timestamp + ' : ' + sMessage;
		sMessage = sMessage + '<br>' + $('DEBUG').get('html');
		$('DEBUG').set('html',sMessage);
	}
}//DEBUG()

//------------------------------------
//Settings
var sPlayerIdPrefix = 'FlashPlayerObj';
var iPlayerUpdateInterval = 2000;
var sInstalledPath = 'scripts/ytplayer/';
//------------------------------------

window.addEvent('domready', function(){
	//------------------------------------
	//Player controls
	$$('.VideoControls a').addEvent('click', function(event) {
		event.stop(); //Prevents the default event from loading a new page.
		PlayerControler(this);
	});
	//------------------------------------
});//window.addEvent domready

function PlayerControler(oElement) {
	DEBUG('PlayerControler()');
	oElement.blur(); //Remove cursor focus border
	var sControlsId = $(oElement).getParent('.VideoControls').get('id');
	var iPlayerNum = sControlsId.substr(sControlsId.length - 1)
	if (PlayerReady(iPlayerNum)) {
		var oPlayer = $(sPlayerIdPrefix + iPlayerNum);
		var sControlClass = oElement.get('class');
		if (sControlClass == 'Rewind') {
			RewindVideo(oPlayer,oElement);
		} else if (sControlClass == 'PausePlay') {
			TogglePlayState(oPlayer,oElement)
		} else if (sControlClass == 'MuteUnMute') {
			ToggleMuteVideo(oPlayer,oElement)
		}
	}
}//PlayerControler()

function RewindVideo(oPlayer,oElement) {
	DEBUG('RewindVideo()');
	oPlayer.seekTo(0,true);
	//PlayVideo(oPlayer,oElement);
	oPlayer.playVideo();
}//RewindVideo()

function TogglePlayState(oPlayer,oElement) {
	DEBUG('TogglePlayState()');
	var iPlayState = oPlayer.getPlayerState();
	DEBUG('iPlayState='+iPlayState);
	
	switch (iPlayState) {
		case -1: //unstarted
			PlayVideo(oPlayer,oElement);
			break;
		case 0: //ended
			PlayVideo(oPlayer,oElement);
			break;
		case 1: //playing
			PauseVideo(oPlayer,oElement);
			break;
		case 2: //paused
			PlayVideo(oPlayer,oElement);
			break;
		case 3: //buffering
			//nothing
			break;
		case 5: //video stopped/cued
			PlayVideo(oPlayer,oElement);
			break;
		default :
			//nothing
	}
}//TogglePlayState()

function PlayVideo(oPlayer,oElement) {
	DEBUG('PlayVideo()');
	oPlayer.playVideo();
	oElement.set('title','Pause');
	oElement.set('html','Pause');
	oElement.setStyle('background-image','url("'+sInstalledPath+'shell_playercontrols_pause.gif")');
}//PlayVideo()

function PauseVideo(oPlayer,oElement) {
	DEBUG('PauseVideo()');
	oPlayer.pauseVideo();
	oElement.set('title','Play');
	oElement.set('html','Play');
	oElement.setStyle('background-image','url("'+sInstalledPath+'shell_playercontrols_play.gif")');
}//PauseVideo()

function ToggleMuteVideo(oPlayer,oElement) {
	DEBUG('ToggleMuteVideo()');
	if (oPlayer.isMuted()) {
		oPlayer.unMute();
		oElement.set('title','Mute');
		oElement.set('html','Mute');
		oElement.setStyle('background-image','url("'+sInstalledPath+'shell_playercontrols_unmute.gif")');
		/*
		pageTracker._trackEvent('Video Player Controls', 'Unmute', 'Video Player '+FlashPlayerNumber(oPlayer.id)) //Google Analytics 1
		pageTracker._trackEvent('Video Player '+FlashPlayerNumber(oPlayer.id), 'Unmute') //Google Analytics 2
		//DEBUG('Video Player Controls, Unmute, Video Player '+FlashPlayerNumber(oPlayer.id));
		*/
	} else {
		oPlayer.mute();
		oElement.set('title','Unmute');
		oElement.set('html','Unmute');
		oElement.setStyle('background-image','url("'+sInstalledPath+'shell_playercontrols_mute.gif")');
		/*
		pageTracker._trackEvent('Video Player Controls', 'Mute', 'Video Player '+FlashPlayerNumber(oPlayer.id)) //Google Analytics 1
		pageTracker._trackEvent('Video Player '+FlashPlayerNumber(oPlayer.id), 'Mute') //Google Analytics 2
		//DEBUG('Video Player Controls, Mute, Video Player '+FlashPlayerNumber(oPlayer.id));
		*/
	}
}//ToggleMuteVideo()

function onYouTubePlayerReady(sPlayerApiId) {
//This funtion is called each time a YouTube Player is ready. This is only called for visible Flash Players in Firefox...maybe others.
	DEBUG('onYouTubePlayerReady('+sPlayerApiId+')');
	var i = sPlayerApiId.substr(sPlayerApiId.length - 1);
	eval('bPlayerReady' + i + ' = true');
	var oPlayer = $(sPlayerApiId);
	oPlayer.addEventListener('onStateChange', 'function(event) {onytplayerStateChange(event,"' + sPlayerApiId + '");}');
	var sTempVideoId = eval('sVideoId' + i);
	/*
	if (i == 1) {
	//first video
		oPlayer.loadVideoById(sTempVideoId, 0);
		//pageTracker._trackEvent('Navigation', 'Navigation Click', 'Segment 1 (page load)') //Google Analytics
	} else {
		oPlayer.cueVideoById(sTempVideoId, 0);
	}
	*/
	oPlayer.cueVideoById(sTempVideoId, 0);
	oPlayer.setVolume(100);
	//------------------------------------
	//Setup interval for updating player status
	setInterval('updateytplayerInfo("' + sPlayerApiId + '")', iPlayerUpdateInterval);
	updateytplayerInfo(sPlayerApiId);
	//------------------------------------
}//onYouTubePlayerReady()

function updateytplayerInfo(sPlayerApiId) {
	DEBUG('updateytplayerInfo('+sPlayerApiId+')');
	var oPlayer = $(sPlayerApiId);
	var iPlayerNum = sPlayerApiId.substr(sPlayerApiId.length - 1);
	var iProgressBuffer = PlayerProgressPrecent(oPlayer.getVideoBytesLoaded(),oPlayer.getVideoBytesTotal());
	var iProgressPlay = PlayerProgressPrecent(oPlayer.getCurrentTime(),oPlayer.getDuration());
	AnimateProgress(iPlayerNum,'Play',iProgressPlay);
	AnimateProgress(iPlayerNum,'Buffer',iProgressBuffer);	
	//AnimateButton(iPlayerNum,iProgressPlay);
	//RecordPlayProgress(iPlayerNum,iProgressPlay);
	//ShowHeaderButton(iPlayerNum,iProgressPlay);
}//updateytplayerInfo()

function PlayerProgressPrecent(iCurrent,iTotal) {
	//DEBUG('PlayerProgressPrecent('+iCurrent+','+iTotal+')');
	var iReturn = 0;
	if (parseInt(iCurrent) >= 0 && parseInt(iTotal) > 0) {
		iReturn = Math.round((iCurrent / iTotal) * 100);
	}
	return iReturn
}//PlayerProgressPrecent()

function AnimateProgress(iPlayerNum,sClassName,iProgress) {
	//DEBUG('AnimateProgress('+iPlayerNum+','+sClassName+','+iProgress+')');
	$$('#VideoControls' +iPlayerNum + ' .'+sClassName).setStyle('width',iProgress+'%');
}//AnimateProgress()

function onytplayerStateChange(newState, sPlayerApiId) {
//You can use this function to act uppon different Player events ex. Play, Stop, Pause, etc.
	DEBUG('onytplayerStateChange('+newState+','+sPlayerApiId+')');
	switch (iPlayState) {
		case -1: //unstarted
			//nothing yet
			break;
		case 0: //ended
			//nothing yet
			break;
		case 1: //playing
			//nothing yet
			break;
		case 2: //paused
			//nothing yet
			break;
		case 3: //buffering
			//nothing yet
			break;
		case 5: //video stopped/cued
			//nothing yet
			break;
		default :
			//nothing yet
	}
}//onytplayerStateChange()

function PlayerReady(iPlayerNum) {
//Determines if player is ready to be interacted with
	var bReturn = false;
	if (eval('bPlayerReady' + iPlayerNum)) {
		bReturn = true;
	}
	return bReturn;
}//PlayerReady()

function InitializeFlash(sTempDivId, sPlayerObjId, sVideoWidth, sVideoHeigth) {
//Initializes Flash Players using SWFObject
	DEBUG('InitializeFlash('+sTempDivId+','+sPlayerObjId+')');
	var sPlayerApiId = sPlayerObjId;
	//var sVideoWidth = 601; //272
	//var sVideoHeigth = 361; //220
	var sMinFlashVer = '8';
	var params = {
		allowScriptAccess: "always", //Allows JavaScript to talk to YouTube player on another domain.
		wmode: "transparent" //Ensures Flash Player will not render outside "Media_Stage_Mask".
	};
	var atts = {};
	atts.id = sPlayerObjId
	/*
	if (sPlayerObjId != 'FlashPlayerObj1') {
	//All but first Flash Players
		atts.styleclass = "Hidden" //Adds initial class 'Hidden' to Flash Players.
	}
	*/
	//rel=0 - Don't show related videos
	//enablejsapi=1 - Enables API so JavaScript can controll player.
	//playerapiid - Used to identify Players that are ready.
	//&autoplay=1 - Auto play video after player loads
	swfobject.embedSWF('http://www.youtube.com/apiplayer?&rel=0&enablejsapi=1&playerapiid=' + sPlayerApiId, sTempDivId, sVideoWidth, sVideoHeigth, sMinFlashVer, null, null, params, atts);
}//InitializeFlash()