/** Google|YouTube API functions **/

function setytplayerState(newState) {
	setHTML("playerstate", newState);
}

function onYouTubePlayerReady(playerId) {
	ytplayer = getElem("YTplayer");
	setInterval(updateytplayerInfo, 250);
	updateytplayerInfo();
	ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
	ytplayer.addEventListener("onError", "onPlayerError");
	// temp, but we could set the value based off of a cookie here!
	ytplayer.setVolume(55);
	setStyle('volume-bar', 'width', parseInt((getVolume()/100)*80) + 'px');
}

function onytplayerStateChange(newState) {
	setytplayerState(newState);
	if (newState == 0) {
		setHTML('playpause-control', '<span onclick="playPause();" id="play">')
	}
}

function onPlayerError(errorCode) {
	//alert("An error occured: " + errorCode);
}

function updateytplayerInfo() {
	setHTML("bytesloaded", getBytesLoaded());
	setHTML("bytestotal", getBytesTotal());
	setHTML("videoduration", getDuration());
	setHTML("videotime", getCurrentTime());
	setHTML("startbytes", getStartBytes());
	setHTML("volume", getVolume());

	if (getBytesTotal() > -1 && getCurrentTime() > 0) {
		var loadstart = parseInt(getStartBytes() / getBytesTotal() * 400);
		var loadend = loadstart + parseInt(getBytesLoaded() / getBytesTotal() * 400);
		setStyle('load-bar', 'left', '0px');
		setStyle('load-bar', 'width', loadend + 'px');

		var playstart = 0;
		var playend = playstart + parseInt(getCurrentTime() / getDuration() * 400);
		setStyle('play-bar', 'left', playstart + 'px');
		setStyle('play-bar', 'width', playend + 'px');
		setStyle('play-bar', 'backgroundPosition', playend - 400  + 'px -85px');

		setHTML('values', loadstart + ', ' + loadend + ' : ' + playstart + ', ' + playend);

		var totalmins = parseInt(getDuration()/60);
		var totalsecs = zeroFill(parseInt(getDuration()%60));

		var playmins = parseInt(getCurrentTime()/60);
		var playsecs = zeroFill(parseInt(getCurrentTime()%60));
	} else {
		var loadstart = 0;
		var loadend = 0;
		setStyle('load-bar', 'left', '0px');
		setStyle('load-bar', 'width', loadend + 'px');
		setStyle('play-bar', 'backgroundPosition', loadend - 400  + 'px -85px');

		var playstart = 0;
		var playend = 0;
		setStyle('play-bar', 'left', playstart + 'px');
		setStyle('play-bar', 'width', playend + 'px');

		var totalmins = 0;
		var totalsecs = '00';

		var playmins = 0;
		var playsecs = '00';
	}

	setHTML('playtime', playmins + ':' + playsecs);
	setHTML('totaltime', totalmins + ':' + totalsecs);
}

// functions for the api calls
function loadNewVideo(id, startSeconds) {
	if (ytplayer) {
		if (getStyle('hint', 'display') != 'none') {
			setStyle('hint', 'display', 'none');
		}
		setHTML('playpause-control', '<span onclick="playPause();" id="pause">')
		ytplayer.loadVideoById(id, parseInt(startSeconds));
		createSeekBar();
	}
}

function cueNewVideo(id, startSeconds) {
	if (ytplayer) {
		ytplayer.cueVideoById(id, startSeconds);
	}
}

function play() {
	if (ytplayer) {
		ytplayer.playVideo();
	}
}

function pause() {
	if (ytplayer) {
		ytplayer.pauseVideo();
	}
}

function playPause() {
	if (ytplayer) {
		if (getHTML('playerstate') == 0 || getHTML('playerstate') == 2 || getHTML('playerstate') == 5) {
			setHTML('playpause-control', '<span onclick="playPause();" id="pause">')
			ytplayer.playVideo();
			createSeekBar();
		} else {
			setHTML('playpause-control', '<span onclick="playPause();" id="play">')
			ytplayer.pauseVideo();
			//removeSeekBar();
		}
	}
}

function stop() {
	if (ytplayer) {
		if (getHTML('playerstate') == 1) {
			setHTML('playpause-control', '<span onclick="playPause();" id="play">')
			ytplayer.stopVideo();
			removeSeekBar();
		}
	}
}

function getPlayerState() {
	if (ytplayer) {
		return ytplayer.getPlayerState();
	}
}

function seekTo(seconds) {
	if (ytplayer) {
		setHTML('playpause-control', '<span onclick="playPause();" id="pause">')
		ytplayer.seekTo(seconds, true);
	}
}

function getBytesLoaded() {
	if (ytplayer) {
		return ytplayer.getVideoBytesLoaded();
	}
}

function getBytesTotal() {
	if (ytplayer) {
		return ytplayer.getVideoBytesTotal();
	}
}

function getCurrentTime() {
	if (ytplayer) {
		return ytplayer.getCurrentTime();
	}
}

function getDuration() {
	if (ytplayer) {
		return ytplayer.getDuration();
	}
}

function getStartBytes() {
	if (ytplayer) {
		return ytplayer.getVideoStartBytes();
	}
}

function mute() {
	if (ytplayer) {
		ytplayer.mute();
		setHTML('mute-control', '<span onclick="unMute();" id="unmute">')
		writeCookie('tg_vm', 1, 365);
	}
}

function unMute() {
	if (ytplayer) {
		ytplayer.unMute();
		setHTML('mute-control', '<span onclick="mute();" id="mute">')
		writeCookie('tg_vm', 0, 365);
	}
}

function getEmbedCode() {
	alert(ytplayer.getVideoEmbedCode());
}

function getVideoUrl() {
	alert(ytplayer.getVideoUrl());
}

function setVolume(newVolume) {
	if (ytplayer) {
		ytplayer.setVolume((newVolume/80)*100);
		setStyle('volume-bar', 'width', parseInt((getVolume()/100)*80) + 'px');
		writeCookie('tg_vv', newVolume, 365);
	}
}

function getVolume() {
	if (ytplayer) {
		return ytplayer.getVolume();
	}
}

function clearVideo() {
	if (ytplayer) {
		ytplayer.clearVideo();
	}
}

function zeroFill(val) {
	if (val < 10) {
		val = '0' + val;
	}
	return val;
}

function removeSeekBar() {
	setHTML('seek-bar', '');
}

function displaySeekTime(location) {
	if (getHTML('playerstate') == 0 || getHTML('playerstate') == 1 || getHTML('playerstate') == 2) {
		var time = (getDuration()/100)*location;
		var mins = parseInt(time/60);
		var secs = zeroFill(parseInt(time%60));
		setStyle('seek-time', 'display', 'block');
		setStyle('seek-time', 'left', (location*4)-16 + 'px');
		setHTML('seek-time-display', mins + ':' + secs);
	}
}

function hideSeekTime() {
	setStyle('seek-time', 'display', 'none');
}

function displayVolumeSeekPc(location) {
	/*
	setStyle('volumeseek-pc', 'display', 'block');
	setStyle('volumeseek-pc', 'left', location-16 + 'px');
	setHTML('volumeseek-pc-display', parseInt((location/80)*100) + '%');
	*/
}

function hideVolumeSeekPc() {
	setStyle('volumeseek-pc', 'display', 'none');
}

function scrollTo(x, y) {
	window.scroll(x, y);
}

function setTitle(title) {
	setStyle('title', 'margin', '0 0 5px 0')
	setHTML('title', unescape(title));
}
