//Global variables
var playing_fullVideoId = "";
var playing_videoId = "";
var playing_videoTitle = "";
var playing_block = $('#accordion>h3').eq(0);
var startseconds = 0;
var isStopButton = 0;
var isCtrlButton = 0;

var RELATEDLIST_TITLE = "推薦歌曲";
var SEARCHLIST_TITLE = "搜尋結果";

var ERROR_100 = "Sorry! YouTube影片讀取可能遭遇問題，請選擇其他影片或重新整理(F5)瀏覽器。";
var ERROR_150 = "Sorry! YouTube影片已移除或不開放連結，請選擇其他影片。";
var ERROR_RELATED = "請先選擇一首歌曲或影片，hiMedia player才能替您以歌找歌喔!";
var ERROR_ADD = "Sorry! 此歌曲或影片未成功加入播放清單，您可能尚未登入或登入逾時，請使用Google帳號重新登入。";
var ERROR_ADD_NO_INPUT = "請選擇一首歌曲或影片加入播放清單!";
var ERROR_DELETE = "無法刪除此筆資料，原因可能是登入逾時。\n請重新登入或E-mail回報錯誤協助改進hiMedia player。";
var ERROR_SEARCH = "Sorry! 搜尋失敗，請輸入其他關鍵字搜尋。";

function updateHTML(elmId, value) {
	document.getElementById(elmId).innerHTML = value;
}

function setytplayerState(newState) {
	switch (newState){
	case -1:
		updateHTML("player_state", "尚未開始");
		$('#play').show();
		$('#pause').hide();
		break;
	case 0:		
		updateHTML("player_state", "停止");		
		$('#play').show();
		$('#pause').hide();
		
		if(isCtrlButton == 0 && $('#cycle').attr('checked')){
			setTimeout("next()",1000);					
		}
		
		break;
	case 1:
		updateHTML("player_state", "讀取中");
		$('#play').hide();
		$('#pause').show();
		break;
	case 2:
		updateHTML("player_state", "暫停");
		$('#play').show();
		$('#pause').hide();
		break;
	case 3:
		updateHTML("player_state", "正在緩衝");
		$('#play').hide();
		$('#pause').show();
		break;
	case 5:
		updateHTML("player_state", "已插入影片");
		$('#play').hide();
		$('#pause').show();
		break;
	default:
		updateHTML("player_state", "尚未開始");
		break;
	}	
}

function onYouTubePlayerReady(playerId) {
	ytplayer = document.getElementById("myytplayer");
	setInterval(updateytplayerInfo, 250);
	updateytplayerInfo();
	ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
	ytplayer.addEventListener("onError", "onPlayerError");
}

function onytplayerStateChange(newState) {
	setytplayerState(newState);
}

function onPlayerError(errorCode) {
	switch (errorCode){
	case 150:
		alert(ERROR_150);
		break;
	default:
		//alert(ERROR_100);
		break;
	}	
}

function updateytplayerInfo() {	
	//update progress bar
	if (getCurrentTime() < 0){
		$('#progress').slider('option', 'value', 0);
	}else{
		$('#progress').slider('option', 'value', Math.round(getCurrentTime()/getDuration()*100));
	}
	
	//update byteloaded status
	if(getBytesTotal() < 0){
		//$("#bytes_load").progressbar('option', 'value', 0);
		$('#bytes_status').html("0%");
	}else{
		//$("#bytes_load").progressbar("option", "value", Math.round((getBytesLoaded()/getBytesTotal()*100)));
		$('#bytes_status').html(Math.round(getBytesLoaded()/getBytesTotal()*100)+"%");
	}
}

// functions for the api calls
function loadNewVideo(id, startSeconds) {
	if (ytplayer) {
		ytplayer.loadVideoById(id, parseInt(startSeconds));
	}
}

function cueNewVideo(id, startSeconds) {
	if (ytplayer) {
		ytplayer.cueVideoById(id, startSeconds);
	}
}

function play() {
	if (ytplayer) {
		ytplayer.playVideo();		
	}
}

function pause() {
	if (ytplayer) {
		ytplayer.pauseVideo();
	}
}

function stop() {
	if (ytplayer) {
		ytplayer.stopVideo();
		ytplayer.clearVideo();		
		//$("#bytes_load").progressbar('option', 'value', 0);
		
		//Reset
		$('#progress').slider('option', 'value', 0);
		$('#bytes_status').html("0%");		
	}
}

function getPlayerState() {
	if (ytplayer) {
		return ytplayer.getPlayerState();
	}
}

function seekTo(seconds) {
	if (ytplayer) {
		var new_seconds = Math.round(seconds*getDuration()/100);
		$('#progress').slider('option', 'value', seconds);
		ytplayer.seekTo(new_seconds, false);
	}
}

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) {
		if(ytplayer.isMuted() == true){
			ytplayer.unMute();
			$('#unmute').hide();
			$('#mute').show();			
		}else{
			ytplayer.mute();
			$('#mute').hide();
			$('#unmute').show();			
		}			
	}
}

function unMute() {
	if (ytplayer) {
		ytplayer.unMute();
	}
}

function getEmbedCode() {
	return ytplayer.getVideoEmbedCode();
}

function getVideoUrl() {
	return ytplayer.getVideoUrl();
}

function setVolume(newVolume) {
	if (ytplayer) {
		ytplayer.setVolume(newVolume);
		$('#volumeDiv').slider('option', 'value', newVolume);
	}
}

function getVolume() {
	if (ytplayer) {
		return ytplayer.getVolume();
	}
}

function clearVideo() {
	if (ytplayer) {
		ytplayer.clearVideo();
	}
}

function setSize(width, height) {
	if (ytplayer) {
		ytplayer.setSize(width, height);
	}
}
