var ytplayer;

var slideshow;

var ytplayerContainer = '#ytplayer-container';
var videoController = '#ytplayer-video';
var soundController = '#ytplayer-sound';

var controlPlayClass = 'ytplayer-play';
var controlPauseClass = 'ytplayer-pause';
var controlMuteClass = 'ytplayer-mute';
var controlUnmuteClass = 'ytplayer-unmute';

var $ytplayerContainer;

var videoId;

$(function() {
	$ytplayerContainer = $(ytplayerContainer);
	
	var $ytplayerContainerEmpty = $ytplayerContainer.clone();
	$ytplayerContainer.remove();
	
	slideshow = $('#slideshow ul').cycle({
		activePagerClass: 'selected',
		after: function() {
			if ($(ytplayerContainer, '#slideshow').length) {
				removeYouTubePlayer();
				$ytplayerContainer = $ytplayerContainerEmpty.clone();
			}
		},
		pager: '#slideshow-pager',
		slideExpr: 'li',
		timeout: 6000
	});
	
	$('#slideshow li.video a.slide-link').click(function(e) {
		e.preventDefault();
		
		videoId = $(this).attr('href');
		videoId = videoId.replace('#', '');
		
		slideshow.cycle('pause');
		$(this).parent().append($ytplayerContainer);
		$ytplayerContainer.show();
		
		initYouTubePlayer();
	});
	
	$(document).delegate(videoController, 'click', function(e) {
		e.preventDefault();
		controlVideo();
	});
	$(document).delegate(soundController, 'click', function(e) {
		e.preventDefault();
		controlSound();
	});
});

function initYouTubePlayer() {
	var params = { allowScriptAccess: 'always', wmode: 'opaque' };
	var atts = { id: 'ytplayer' };
	swfobject.embedSWF('http://www.youtube.com/apiplayer?enablejsapi=1&version=3&playerapiid=ytplayer', 'ytplayer', '930', '420', '8', null, null, params, atts);
}

function onYouTubePlayerReady(playerId) {
	ytplayer = document.getElementById(playerId);
	ytplayer.setVolume(20);
	ytplayer.loadVideoById(videoId);
	ytplayer.addEventListener('onStateChange', 'onytplayerStateChange');
}

function onytplayerStateChange(newState) {
	if (newState == 0) {
		removeYouTubePlayer();
	}
}

function controlVideo() {
	var playerState = ytplayer.getPlayerState()
	
	if (playerState == 1) {
		pauseVideo();
	}
	else {
		playVideo();
	}
}

function controlSound() {
	if (ytplayer.isMuted()) {
		$(soundController).removeClass(controlUnmuteClass).addClass(controlMuteClass);
		ytplayer.unMute();
	}
	else {
		$(soundController).removeClass(controlMuteClass).addClass(controlUnmuteClass);
		ytplayer.mute();
	}
}

function playVideo() {
	$(videoController).removeClass(controlPlayClass).addClass(controlPauseClass);
	ytplayer.playVideo();
}

function pauseVideo() {
	$(videoController).removeClass(controlPauseClass).addClass(controlPlayClass);
	ytplayer.pauseVideo();
}

function removeYouTubePlayer() {
	$ytplayerContainer.remove();
	slideshow.cycle('resume');
}
