//Javascript door Sjoerd Wenker
var lastrule;
var playing_id;
var error_id;
var liedjes = [];
var liedjes_array = [];
var query;
var datum;
var overlayed;
var overlayElem;
var new_window = false;
var fouten = [];
var preferqual = 'default';
fouten[1] = 'Dit topic bestaat niet.';
fouten[2] = 'Je hebt geen rechten om in dit topic te posten.';
fouten[3] = 'Dit topic is gesloten, je kunt geen berichten meer plaatsen.';
fouten[4] = 'Je kunt maximaal 1 bericht per 10 seconden plaatsen.';
fouten[5] = 'Je hebt geen bericht getypt.';
fouten[6] = 'Je bericht is te kort of te lang (2-30.000 tekens).';
fouten[7] = 'Je bericht is geplaatst!';
fouten[8] = 'Je bericht is gewijzigd!';
var statisch = 'http://static.slamfm-playlist.nl/';

function updateHTML(elmId, value)
{
	document.getElementById(elmId).innerHTML = value;
}
function get_query()
{
	var query_part;
	query_part = '';
	if(query !== undefined && query !== null && query !== '')
	{
		query_part = '&query=' + query;
	}
	if(datum !== undefined && datum !== null && datum !== '')
	{
		query_part = '&datum=' + datum;
	}
	return query_part;
}
function autoplay()
{
	auto_play = true;
	$.get('/ajax.php?random=1&zender=' + zender + get_query() + '&lastajax=' + lastajax + '&id=' + Math.random(),
	function(data)
	{
		ajax_verwerk(data);
	});
}
function onYouTubePlayerReady(playerId)
{
	ytplayer = document.getElementById("speler");
	ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
	ytplayer.addEventListener("onError", "onPlayerError");
	$("#speler").width(0).height(0);
	$("overlay").css('display', 'block');
	$("speler").css('display', 'block');
	if(auto_play === true)
	{
		autoplay();
	}
}
function onytplayerStateChange(newState)
{
	var newHTML = document.getElementById('playerstate').innerHTML;
	switch (newState)
	{
		case 0:
			newHTML = 'Afgelopen';
			if(auto_play === true)
			{
				autoplay();
			}
			break;
		case 1:
			newHTML = 'Afspelen';
			break;
		case 2:
			newHTML = 'Pauze';
			break;
		case 3:
			newHTML = 'Laden..';
			/*quality = ytplayer.getAvailableQualityLevels().toString().split(',')[0];
			if(quality == 'hd1080')
			{
				quality = 'hd720';
			}
			if(ytplayer.getPlaybackQuality() !== quality)
			{
				ytplayer.setPlaybackQuality(quality);
			}*/
			break;
		case 5:
			newHTML = 'Gestopt';
			break;
	}
	updateHTML("playerstate", newHTML);
}
function onPlayerError(errorCode)
{
	error_id = playing_id;
	if(auto_play === true)
	{
		autoplay();
	}
	else
	{
		var newHTML;
		if(errorCode === 100)
		{
			newHTML = 'Liedje niet gevonden.';
		}
		else
		{
			newHTML = 'Fout opgetreden';
		}
		updateHTML("playerstate", newHTML);
	}
	$.get('/ajax.php?track=' + error_id + '&foutcode=' + errorCode + '&id=' + Math.random(),
	function(data)
	{
		ajax_verwerk(data);
	});
}
function play(id, track)
{
	if (ytplayer)
	{
		ytplayer.loadVideoById(id, '0', preferqual);
		playing_id = id;
		document.getElementById('playerstate').innerHTML = track;

		$.get('/ajax.php?track=' + id + '&id=' + Math.random(),
		function(data)
		{
			ajax_verwerk(data);
		});
	}
}
function playsong(id)
{
	if(ytplayer)
	{
		if(id !== '')
		{
			liedje_id = $.inArray(id, liedjes);
			if(liedje_id !== -1)
			{
				playing_id = id;
				ytplayer.loadVideoById(id, '0', preferqual);
				updateHTML('playerartist', liedjes_array[liedje_id].artiest);
				updateHTML('playertitel', liedjes_array[liedje_id].titel);
				$.get('/ajax.php?track=' + id + '&id=' + Math.random(),
				function(data)
				{
					ajax_verwerk(data);
				});
				if(overlayed !== true || overlayed === null)
				{
					overlayed = true;
					$("li a[rel]").click();
				}
			}
			else
			{
				$.get('/ajax.php?loadsong=' + id + '&id=' + Math.random(),
				function(data)
				{
					ajax_verwerk(data);
				});
			}
		}
		else
		{
			if(auto_play === true)
			{
				autoplay();
			}
		}
	}
}
function add_song(id, liedjesding)
{
	liedje_id = $.inArray(id, liedjes);
	if(liedje_id === -1)
	{
		liedjes.push(id);
		liedjes_array.push(liedjesding);
	}
}
function ajax_verwerk(data)
{
	var JSON = $.parseJSON(data);
	$.each(JSON,
	function(i, item)
	{
		switch(i)
		{
			case 'error':
				alert('Er is een fout opgetreden:' + item);
				break;
			case 'lastajax':
				lastajax = item;
				break;
			case 'loadsong':
			case 'random':
				$.each(item,
				function(it, itemt)
				{
					add_song(it, itemt);
					playsong(it);
				});
				break;
			case 'radio_stats':
				updateHTML('radio_stats', item);
				break;
			case 'logs':
				$('tr').remove('.log');
				$.each(item,
				function(it, itemt)
				{
					$('#loghead').after('<tr class="'+($('#loghead').next().hasClass('wit') === true ? 'blauw' : 'wit')+' log"><td style="text-align: center;"><a href="javascript:playsong(\'' + itemt.video_id + '\')" title="Start Track"><img src="'+ statisch +'images/playbutton.png" alt="play" title="Speel het nummer ' + itemt.artiest + ' - ' + itemt.titel + ' af" /></a></td><td>' + itemt.artiest + '</td><td>' + itemt.titel + '</td><td>' + itemt.datum + '</td><td style="text-align: center;"><a href="http://youtu.be/results?search_query=' + itemt.artiest + '%20-%20 ' + itemt.titel + '"><img src="' + statisch + 'images/youtube.png" alt="youtube" /></a></td><td style="text-align: center;"><img src="'+ statisch +'images/plus.png" class="addicon" onclick="overlayElem=$(this);add_plsong();" id="'+itemt.lied_id+'" /></td></tr>');
				});
				break;
			case 'pagina':
				huidigepagina = item;
				break;
			case 'totaal_pagina':
				pagetotal = item;
				break;
			case 'update_menu':
				rebuild_menu();
				break;
			case 'update_page':
				if(huidigepagina === 1)
				{
					var lastone = lastrule;
					$.each(item,
					function(it, itemt)
					{
						if(lastrule < itemt.id || lastone < itemt.id || lastrule === null || lastone === null || lastrule === undefined || lastrule === 0)
						{
							var newrule = '<tr class="'+($('#loghead').next().hasClass('wit') ? 'blauw' : 'wit')+' log"><td style="text-align: center;"><a href="javascript:playsong(\'' + itemt.video_id + '\')" title="Start Track"><img src="'+statisch+'images/playbutton.png" alt="play" title="Speel het nummer ' + itemt.artiest + ' - ' + itemt.titel + ' af" /></a></td><td>' + itemt.artiest + '</td><td>' + itemt.titel + '</td><td>' + itemt.datum + '</td><td style="text-align: center;"><a href="http://youtu.be/results?search_query=' + itemt.artiest + '%20-%20 ' + itemt.titel + '"><img src="'+statisch+'images/youtube.png" alt="youtube" /></a></td><td style="text-align: center;"><img src="'+statisch+'images/plus.png" class="addicon" onclick="overlayElem=$(this);add_plsong();" id="'+itemt.lied_id+'" /></td></tr>'; 
							lastrule = (itemt.id <= lastrule ? lastrule : itemt.id);
							if($('#logtable tr').size() >= 25)
							{
								$('#logtable tr:last').remove();
							}
							$('#loghead').after(newrule);
						}
					});
				}
				break;
			case 'set_url':
				if(typeof( history.pushState ) == 'function')
				{
					history.pushState({page: 'new'}, "page "+item, item);
				}
				/*else
				{
					document.location.hash = '!'+item;
				}*/
				break;
			case 'news':
				if(pagina == 'nieuws' && topic_id !== null)
				{
					$.each(item,
					function(it, itemt)
					{
						switch(it)
						{
							case 'add':
								$('#add_error').show();
								if(itemt == '7')
								{
									$('#add_error').removeClass('rederror').addClass('greenerror');
									$('#bericht').val('');
									renew_stats();
								}
								else
								{
									$('#add_error').removeClass('greenerror').addClass('rederror');
								}
								$('#add_error').html(fouten[itemt]);
								break;
							case 'delete':
								renew_stats();
								break;
							case 'report':
								if($('.reactie_box_'+itemt).length)
								{
									$('.reactie_box_'+itemt).html('<div class="greenerror">Bericht succesvol gerapporteerd.</div>'+$('.reactie_box_'+itemt).html());
								}
								break;
							case 'update_posts':
								$.each(itemt,
								function(ik, itemk)
								{
									if ($('.reactie_'+ik).length)
									{
										if(itemk == 'deleted')
										{
											$('.reactie_'+ik).remove();
										}
										else
										{
											$('.reactie_'+ik).html(itemk);
										}
									}
									else
									{
										if ($('#announcement').length)
										{
											$('#announcement').remove();
										}
										itemk = '<div id="main" class="reactie_'+ik+'">'+itemk+'</div>';
										var kindjes = $('#nieuws_reacties').children();
										var geplaatst = false;
										if(kindjes.length > 0)
										{
											var divnu;
											divnu = kindjes.last();
											if(divnu.length > 0)
											{
												if(parseInt(divnu.children().first('a').attr('name'), 10) < parseInt(ik, 10))
												{
													divnu.after(itemk);
												}
												else
												{
													kindjes.each(
													function (i)
													{
														if(!geplaatst && parseInt($(this).children().first('a').attr('name'), 10) > parseInt(ik, 10)) {
														  $(this).before(itemk);
														  geplaatst = true;
														}
													});
													if(!geplaatst)
													{
														$('#nieuws_reacties').append(itemk);
													}
												}
											}
											else
											{
												$('#nieuws_reacties').html(itemk);
											}
										}
										else
										{
											$('#nieuws_reacties').html(itemk);
										}
									}
								});
								break;
							case 'quote':
								if($('#bericht').length)
								{
									var oldvar = $('#bericht').val();
									$('#bericht').val((oldvar === '' ? '' : oldvar + "\n") + itemt);
									$('html, body').animate({scrollTop: $('#container').height()}, 800);
								}
								break;
							case 'edit':
								if($('.reactie_box_'+itemt.id).length)
								{
									if(itemt.bericht == '1')
									{
										$('#edit_error_'+itemt.id).show();
										$('#edit_error_'+itemt.id).removeClass('rederror').addClass('greenerror');
										$('#edit_error_'+itemt.id).html(fouten[8]);
										renew_stats();
									}
									else if(itemt.bericht == '0')
									{
										$('.reactie_box_'+itemt.id).html('<div class="center"><img src="'+ statisch +'images/warning.png" onclick="news_handle('+itemt.id+', \'ophalen\')" /><br /><br /><b>Je hebt geen rechten om dit bericht te wijzigen.</b></a></div>');
									}
									else if(itemt.bericht == '2' && itemt.error !== undefined && itemt.error !== null && itemt.error > 0)
									{
										$('#edit_error_'+itemt.id).show();
										$('#edit_error_'+itemt.id).removeClass('greenerror').addClass('rederror');
										$('#edit_error_'+itemt.id).html(fouten[itemt.error]);
									}
									else
									{
										$('.reactie_box_'+itemt.id).html('<div id="edit_error_'+itemt.id+'"></div><textarea style="height: 200px; width: 98%;" name="bericht_'+itemt.id+'" id="bericht_'+itemt.id+'" tabindex="2">'+itemt.bericht+'</textarea><input type="button" onclick="news_handle('+itemt.id+', \'edit\')" value="Wijzig!" /> <input type="button" onclick="news_handle('+itemt.id+', \'ophalen\')" value="Annuleer" />');
									}
								}
								break;
						}
					});
				}
				break;
			case 'playlay':
				$('#playcontent').html('<div class="center">'+item+'</div>');
				break;
		}
	});
}
function playc()
{
	if (ytplayer)
	{
		ytplayer.playVideo();
	}
}
function pause()
{
	if (ytplayer)
	{
		ytplayer.pauseVideo();
	}
}

function stop()
{
	if (ytplayer)
	{
		ytplayer.seekTo(0, true);
		ytplayer.stopVideo();
	}
}
function mute()
{
	if (ytplayer)
	{
		ytplayer.mute();
	}
}
function unMute()
{
	if (ytplayer)
	{
		ytplayer.unMute();
	}
}
function _run()
{
	$("overlay").css('display', 'none');
	$("speler").css('display', 'none');
	var params = { allowScriptAccess: "always", bgcolor: "#FFFFFF" };
	var atts = { id: "speler" };
	swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer&version=3", 
					   "speler", "1", "1", "8", null, null, params, atts);
	$("speler").css('display', 'none');
}
function go_page(page_id)
{
	if(pagina == 'zender')
	{
		if(page_id == huidigepagina)
		{
			return false;
		}
		$.get('/ajax.php?zender=' + zender + get_query() + '&lastajax=' + lastajax + '&page=' + page_id + '&id=' + Math.random(),
		function(data)
		{
			ajax_verwerk(data);
		});
		return false;
	}
}
function renew_stats()
{
	if(pagina == 'zender')
	{
		$.get('/ajax.php?zender=' + zender + get_query() + '&lastajax=' + lastajax + '&id=' + Math.random(),
		function(data)
		{
			ajax_verwerk(data);
		});
	}
	if(pagina == 'nieuws')
	{
		$.get('/ajax.php?actie=nieuws_reacties&topic_id='+topic_id+'&lastajax=' + lastajax + '&id=' + Math.random(),
		function(data)
		{
			ajax_verwerk(data);
		});
	}
}
setInterval(function(){renew_stats();}, 15000);
function rebuild_menu()
{
	if(pagina == 'zender')
	{
		var vz = (zender=='luisterlog' ? '/leden/luisterlog' : '/playlists/'+zender);
		var newmenu = '';
		if (huidigepagina != 1)
		{
			newmenu += '<a href="'+vz+'.html" onclick="go_page(1); return false">&laquo;</a> ';
		}
		var ervoor = (pagetotal - huidigepagina) < 2 ? 4 - (pagetotal - huidigepagina) : 2;
		for (i = (huidigepagina - ervoor > 0 ? huidigepagina - ervoor : 1), zien = 5; i <= pagetotal && zien > 0; i++, zien--)
		{
			newmenu += i == huidigepagina ? '<b>' + i + '</b> ' : '<a href="' + vz + (i != 1 ? '-'+i : '') + '.html" onclick="go_page(' + i + '); return false">' + i + '</a> ';
		}
		if (pagetotal != huidigepagina && pagetotal !== 0)
		{
			newmenu += ' <a href="' + vz + '-' + pagetotal + '.html" onclick="go_page(' + pagetotal + '); return false">&raquo;</a>';
		}
		updateHTML('menu', newmenu);
	}
}
function go_yt()
{
	if(playing_id !== null && playing_id !== undefined)
	{
		window.open('http://www.youtube.com/watch?v=' + playing_id);
	}
}
function go_yt_search()
{
	if(playing_id !== null && playing_id !== undefined)
	{
		window.open('http://www.youtube.com/results?search_query=' + liedjes_array[liedje_id].artiest + ' - ' + liedjes_array[liedje_id].titel);
	}
}
function open_content(id_field)
{
	if (new_window)
	{
		new_window.close();
	}
	data = document.getElementById(id_field).innerHTML;
	new_window = window.open('', 'code_window', 'location=no,menubar=no,resizable=yes,scrollbars=yes,status=0,toolbar=no');
	new_window.document.write('<html><head><title>Code weergave</title></head><body><nobr>' + data + '</nobr></body></html>');
}
function addubb(sUBB, eUBB)
{
	var objTxtArea = document.getElementById('bericht');
	if (!eUBB)
	{
		eUBB = ' '+sUBB+' ';
		sUBB = '';
	}
	if (objTxtArea.selectionStart || objTxtArea.selectionStart === 0)
	{
		var ss = objTxtArea.selectionStart;
		var se = objTxtArea.selectionEnd;
		objTxtArea.value = objTxtArea.value.substring(0, ss) + sUBB + objTxtArea.value.substring(ss, se) + eUBB + objTxtArea.value.substring(se, objTxtArea.value.length);
		if (sUBB.length !== 0)
		{
			objTxtArea.selectionStart = ss;
			objTxtArea.selectionEnd = se + sUBB.length + eUBB.length;
		}
		else
		{
			objTxtArea.selectionStart = se + sUBB.length + eUBB.length;
			objTxtArea.selectionEnd = objTxtArea.selectionStart;
		}
		objTxtArea.focus();
	}
	else if (objTxtArea.createTextRange)
	{
		objTxtArea.focus();
		document.selection.createRange().text = sUBB + document.selection.createRange().text + eUBB;
	}
	else
	{
		objTxtArea.value = objTxtArea.value + sUBB + eUBB;
	}
}
function insertEmoticon(smiley)
{
	return addubb('', smiley);
}
function sendPost(bericht)
{
	if(pagina == 'nieuws' && topic_id !== undefined && topic_id > 0)
	{
		if(bericht === undefined || bericht === null || bericht === '')
		{
			$('#add_error').show();
			$('#add_error').removeClass('greenerror').addClass('rederror');
			$('#add_error').html('Je hebt geen bericht getypt.');
		}
		else
		{
			bericht = btoa(bericht.replace('€', '&#8364;'));
			$.post('/ajax.php?actie=nieuws_reageer&id=' + Math.random(), { t: topic_id, b: bericht },
				function(data)
				{
					ajax_verwerk(data);
				});
			return;
		}
	}
}
function news_handle(message_id, method)
{
	if(pagina == 'nieuws' && topic_id !== undefined && topic_id > 0 && message_id !== null && message_id > 0)
	{
		if(method == 'quote' && $('.reactie_'+message_id).length)
		{
			$.post('/ajax.php?actie=nieuws_quote&id=' + Math.random(), { t: topic_id, m: message_id },
				function(data)
				{
					ajax_verwerk(data);
				});
		}
		if(method == 'edit' && $('.reactie_box_'+message_id).length)
		{
			if($('#bericht_'+message_id).length)
			{
				$.post('/ajax.php?actie=nieuws_edit&id=' + Math.random(), { t: topic_id, m: message_id, b: encodeURIComponent($('#bericht_'+message_id).val()) },
				function(data)
				{
					ajax_verwerk(data);
				});
			}
			else
			{
				$.post('/ajax.php?actie=nieuws_edit&id=' + Math.random(), { t: topic_id, m: message_id },
					function(data)
					{
						ajax_verwerk(data);
					});
				$('.reactie_box_'+message_id).html('<div class="center"><img src="'+ statisch +'images/load.gif" onclick="news_handle('+message_id+', \'edit\');" style="cursor: pointer;" /><br /><br /><em>Klik op het laadicoon als het te lang duurt</em></a></div>');
			}
		}
		if(method == 'ophalen' && $('.reactie_'+message_id).length)
		{
			$.post('/ajax.php?actie=nieuws_get&id=' + Math.random(), { t: topic_id, m: message_id },
				function(data)
				{
					ajax_verwerk(data);
				});
		}
		if(method == 'delete' && $('.reactie_'+message_id).length)
		{
			$.post('/ajax.php?actie=nieuws_delete&id=' + Math.random(), { t: topic_id, m: message_id },
				function(data)
				{
					ajax_verwerk(data);
				});
		}
		if(method == 'report' && $('.reactie_'+message_id).length)
		{
			$.post('/ajax.php?actie=nieuws_report&id=' + Math.random(), { t: topic_id, m: message_id },
				function(data)
				{
					ajax_verwerk(data);
				});
		}
	}
	return;
}
function add_plsong()
{
	if(overlayElem.length)
	{
		if($('#add_list').length)
		{
			$.get('/ajax.php?addsong=' + overlayElem.attr('id') + '&playlist='+$('#add_list').val()+'&id=' + Math.random(),
				function(data)
				{
					ajax_verwerk(data);
				});
		}
		else
		{
			$('#playlay').attr('style', 'top: '+(($(window).height()-$('#overlay').height())/2)+'px; left: '+(($(window).width()-$('#overlay').width())/2)+'px; position: fixed; display: block;');
			$('#playcontent').html('<div class="center"><img src="'+ statisch +'images/load.gif" /></a></div>');
			$.get('/ajax.php?addsong=' + overlayElem.attr('id') + '&id=' + Math.random(),
				function(data)
				{
					ajax_verwerk(data);
				});
		}
	}
}
var gestemd = [];
function set_votes(widget, avg)
{
	$(widget).find('.star_' + avg).prevAll().andSelf().addClass('ratings_vote');
	$(widget).find('.star_' + avg).nextAll().removeClass('ratings_vote'); 
}
function play_playlist(pl_id)
{
    auto_play = true;
    zender = 'playlist-'+pl_id;
    pagina = 'playlist';
	autoplay();
}
function init()
{
	lastrule = 0;
	if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent) === false)
	{
		$("li a[rel]").overlay({
			onLoad: function() {
				$('#overlay').removeClass('overlay').addClass('overlay_open');
				$('#overlay').css('left', (($(window).width()-$('#overlay').width())/2)-35);
				$('#overlay').css('top', (($(window).height()-$('#overlay').height())/2)-35);
				$('#speler').width(586).height(353);
				//set video size etc.
			},
			onBeforeClose: function() {
				$('#overlay').removeClass('overlay_open').addClass('overlay');
				$('#speler').width(0).height(0);
				$('#overlay').attr('id', 'nietsluiten');
			},
			onClose: function()
			{
				$('#nietsluiten').attr('id', 'overlay');
			}
		});
	}
	$(".deleteicon[rel]").click(function() { overlayElem = $(this); });
	$(".deleteicon[rel]").overlay({
		onBeforeLoad: function() {
			$('#playcontent').html('<div class="center"><img src="'+ statisch +'images/load.gif" /></a></div>');
		},
		onLoad: function() {
			$.get('/ajax.php?deletesong=' + overlayElem.attr('id') + '&id=' + Math.random(),
			function(data)
			{
				ajax_verwerk(data);
			});
			setTimeout(function(){$('#playlay').attr('style', 'display: none;');}, 10000);
		},
		closeOnClick: false
	});
	$(".addicon[rel]").click(function() { overlayElem = $(this); });
	$(".addicon[rel]").overlay({
		onBeforeLoad: function() {
			$('#playcontent').html('<div class="center"><img src="'+ statisch +'images/load.gif" /></a></div>');
		},
		onLoad: function() {
			$.get('/ajax.php?addsong=' + overlayElem.attr('id') + '&id=' + Math.random(),
			function(data)
			{
				ajax_verwerk(data);
			});
		}
	});
	$('.rate_widget').each(function(i) {
		var widget = this;
		set_votes(widget, 0);
	});


	$('.ratings_stars').hover(
		// Handles the mouseover
		function() {
			if(gestemd[$(this).attr('id')] === undefined)
			{
				$(this).prevAll().andSelf().addClass('ratings_over');
				$(this).nextAll().removeClass('ratings_vote');
			}
		},
		// Handles the mouseout
		function() {
			$(this).prevAll().andSelf().removeClass('ratings_over');
			set_votes($(this).parent(), (gestemd[$(this).attr('id')] === -1 ? 0 : gestemd[$(this).attr('id')]));
		}
	);
	// This actually records the vote
	$('.ratings_stars').bind('click', function() {
			var star = this;
			var widget = $(this).parent();
			
			var clicked_data = {
				clicked_on : $(star).attr('class'),
				widget_id : $(star).parent().attr('id')
			};
		if(gestemd[widget.attr('id')] === undefined)
		{
			$.post(
				'o2ajax.php',
				clicked_data,
				function(INFO) {
					if(INFO.stem != 0)
					{
						set_votes(widget, INFO.stem);
						gestemd[widget.attr('id')] = INFO.stem;
					}
					if(INFO.message !== undefined)
					{
						alert(INFO.message);
					}
				},
				'json'
			);
		}
	});
}
window.onload = init;
