function updateHTML(elmId, value) {
  document.getElementById(elmId).innerHTML = value;
}


function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("yplayer");
  setInterval(updateytplayerInfo, 250);
  updateytplayerInfo();
  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
  ytplayer.addEventListener("onError", "onPlayerError");
	//console.log("Event hooked");
}


function onPlayerError(errorCode) {
	//console.log('An error occurred, try again ('+errorCode+')');
}

function onytplayerStateChange(newState) {
	currentTime = document.getElementById('yplayer').getCurrentTime();
	totalTime = document.getElementById('yplayer').getDuration();
	difference = totalTime - currentTime;
	if (newState == 0) {
		if (difference < 2 && totalTime > 0) {
			Player.next();
			/*
			$.get('/load-song.php?loadnext', function(data){
				video = data.split('?')[1].split('&')[0].split('v=')[1];
				document.getElementById('yplayer').loadVideoById(video);	
			});
			$.get("/load-song.php?details=true&loadnext=true", function(data){
				document.getElementById('tracktitle').innerHTML = data;
				document.title = data + ' on moof.com';
			});	
			*/
			//$('.slider_time_bar').slider( 'values' , index ,0 )
		}
	}else if (newState == 1 && Math.round(totalTime) == 0) {
		Player.next();
		/*
		$.get('/load-song.php?loadnext', function(data){
			video = data.split('?')[1].split('&')[0].split('v=')[1];
			document.getElementById('yplayer').loadVideoById(video);	
		});
		$.get("/load-song.php?details=true&loadnext=true", function(data){
			document.getElementById('tracktitle').innerHTML = data;
			document.title = data + ' on moof.com';
		});	
		*/
		//$('.slider_time_bar').slider( 'values' , index , 0 )
	}
	//console.log("Play State: Loading from onytplayerStateChange." + newState + " - " + difference + " - " + currentTime + " - " + totalTime );
}


function getCurrentTime() {
	ytplayer = document.getElementById("yplayer");	
	if (ytplayer) {
		return ytplayer.getCurrentTime();
	}
}
function updateytplayerInfo() {
	if(ytplayer.getCurrentTime() > 0 && ytplayer.getPlayerState() == 1 ){
		$('.slider_vol_bar').slider('moveTo', ytplayer.getVolume());
		vidtime = Math.round(ytplayer.getCurrentTime()/ytplayer.getDuration()*100);
		$('.slider_time_bar').slider('moveTo',vidtime);
		//console.log('now ' + vidtime);
	}
}

$(document).ready(function(){



	/* 
	*	Play video on load

	$('#form').submit(function() {
		Player.load($('#url_or_id').val());		
		return false;
	})

	*/


	/* Simple API */
	Player = {
		load: function (song_id)
		{
			// ##### LOAD FOR SEARCH PAGE #####
			if (is_search == true)
			{
				// ##### STORE SONG ID #####
				playing_song_id = song_id;
				
				// ##### SEND TO PLAYER #####
				document.getElementById('yplayer').loadVideoById(song_id);
				var title = $('#song_' + song_id + ' .titling').html();
				$('#tracktitle').html (title);
				$(document).attr('title', title + ' on moof.com');
				$('#play').css('backgroundImage', 'url(./images/button-pause.gif)');
				return false;
			}
			
			// ##### LOAD SONG DETAILS #####
			$.getJSON('/load/song/' + song_id, function(data)
			{
				// ##### STORE SONG ID #####
				playing_song_id = song_id;
				
				// ##### SEND YOUTUBE ID TO PLAYER #####
				document.getElementById('yplayer').loadVideoById(data.youtube);
				
				// ##### UPDATE HTML ELEMENTS
				$('#tracktitle').html (data.keywords);
				$(document).attr('title', data.keywords + ' on moof.com');
				$('#play').css('backgroundImage', 'url(./images/button-pause.gif)');
			});
		},
		play: function() {
			var PlayOrPause = $('#play').css('backgroundImage');
			var PlayButton = PlayOrPause.replace(/pause/, 'play');
			var PauseButton = PlayOrPause.replace(/play/, 'pause');
			if(PlayOrPause == PauseButton)
			{
				document.getElementById('yplayer').pauseVideo();
				$('#play').css('backgroundImage', PlayButton);
				//document.getElementById('play').style.backgroundImage='url(./images/button-play.gif)';
			} else {
				document.getElementById('yplayer').playVideo();
				$('#play').css('backgroundImage', PauseButton);
				//document.getElementById('play').style.backgroundImage='url(./images/button-pause.gif)';
			}
			// else {
			//	document.getElementById('yplayer').playVideo();
			//	document.getElementById('play').style.backgroundImage='url(./images/button-pause.gif)';
			//}
		},
		next: function() {
			var id = $('#song_' + playing_song_id).next().attr('id').split('_');
			Player.load (id[1]);
		},
		prev: function() {
			var id = $('#song_' + playing_song_id).prev().attr('id').split('_');
			Player.load (id[1]);
		},		
		pause: function() {
			document.getElementById('yplayer').pauseVideo();
		},
		stop: function() {
			document.getElementById('yplayer').stopVideo();
		},
		show: function() {
			$('yplayer').show();
		},
		hide: function() {
			$('yplayer').hide();
		},
		mute: function() {
			yplayer.setVolume(0);
		},
		loud: function() {
			yplayer.setVolume(100);
		}
	}

	//var max = 0
	//var time = 0
	// Slider 
  $('.slider_time_bar').slider({ 
	  handle: '.slider_time_handle', 
	  minValue: 0, 
		animate: false,
	  maxValue: 100, 
	  start: function(e, ui) { 
		 // $('#slider_time_callout').fadeIn('fast', function() { calloutVisible = true;}); 
	  }, 
	  stop: function(e, ui) { 
	
	   //   $('#slider_time_callout').fadeOut('fast', function() { calloutVisible = false; });
		//if (ui.value > (getCurrentTime()+2)) {
		//	time = Math.round(Math.floor(ui.value) / (100 / max));
		//}
		//ytplayer.seekTo(time);
		//ytplayer.seekTo(ui.value);
	
	  }, 
	  slide: function(e, ui) { 
		vidtime = Math.round(ytplayer.getCurrentTime()/ytplayer.getDuration()*100);
		if (ui.value != vidtime) {
			time = Math.round(ytplayer.getDuration()*ui.value/100);
			ytplayer.seekTo(time, true);
			//console.log('trigger');
		}
		$('.slider_time_handle').attr("title",vidtime+'%');
		$('.slider_time_handle').attr("alt",vidtime+'%');
		//$('#slider_time_callout').text(Math.round(time / 60) + ':' + (time % 60 < 10 ? "0" + time % 60 : time % 60) ); 
		//ytplayer.seekTo(time);
		//ytplayer.seekTo(ui.value);
	  }

  }); 


	/* Slider */
  $('.slider_vol_bar').slider({ 
	  handle: '.slider_vol_handle', 
	  minValue: 0, 
		animate: false,
	  maxValue: 100, 
	  start: function(e, ui) { 
		ytplayer.setVolume(ui.value);
	  }, 
	  stop: function(e, ui) { 
		ytplayer.setVolume(ui.value);
	  }, 
	  slide: function(e, ui) { 
		ytplayer.setVolume(ui.value);
		//$('.slider_vol_bar').slider('moveTo', ytplayer.getVolume())
		//$('#slider_vol_callout').text(ui.value); 
		$('.slider_vol_handle').attr("title",ytplayer.getVolume()+'%');
		$('.slider_vol_handle').attr("alt",ytplayer.getVolume()+'%');

	  } 
  });


})

// ##### MAIN PLAYER FUNCTIONS #####
var more_results = false;
var is_search = false;
function load_results () 
{
	// ##### CHECK IF WE HAVE MORE RESULTS #####
	if (more_results == false)
	{
		return false;
	}
	
	// ##### SET MORE RESULTS TO FALSE UNTIL WE KNOW WE HAVE MORE #####
	more_results = false;
	$.getJSON('./' + list_type + '/' + list_id + '/' + list_page + '/' + list_sort + '/' + list_direction, function(data)
	{
		// ##### INCREASE PAGE NUMBER #####
		++list_page;
		
		$.each(data, function (i, item)
		{
			// ##### ADD DATA #####
			$("#playlist").append (item);
			more_results = (i == 79) ? true : false;
		});	
		settings();
	});
}

function settings ()
{
	$('#playlist tr').each(function(index)
	{
		$(this).hover(function() {
			$('td.settings a', this).show().click(function ()
			{
				var position = $(this).position();
				$(this).siblings('.submenu').css(
					{
						'top' : (position.top - 7),
						'left' : (position.left - $(this).siblings('.submenu').width() + $(this).width() + 4)
					}
				).slideDown('slow').bind('mouseleave', function()
				{
					$(this).slideUp();
				});
			});
		}, function () {
			$('td.settings a:first', this).hide ();
		});
	});
}

function sort_list (sort_by)
{
	$('html, body').animate({scrollTop:0}, 'slow');
	if (sort_by == list_sort)
	{
		list_direction = (list_direction == 'DESC') ? 'ASC' : 'DESC';
	}
	else
	{
		list_direction = 'DESC';
	}
	list_sort = sort_by;
	list_page = 0;
	$('#playlist').find('tr').remove();
	more_results = true;
	load_results(); 
}

$(document).ready(function()
{
	// ##### LOAD SONGS #####
	load_results ();

	$('a').click (function()
	{
		if ($(this).attr('href') == '#')
		{
			return false;
		}
	});

	$('html, body').animate({scrollTop:0}, 'slow'); 
	$(window).scroll(function()
	{
		if ($(window).scrollTop() > $(document).height() - $(window).height() - 400)
		{
			load_results ();
		}
	});
});