// JavaScript Document

var listStartItem = 0;
var listItemCount = 10;
var listNextActive = false;

var lichtkrantFirstStart = true;
var krantTimer;

function doLichtkrant()
{
	clearTimeout(krantTimer);
	
	if(!lichtkrantFirstStart)
	{
		artistCount = $('lichtkrant').getElementsByTagName('li').length;
		move = $('lichtkrant').scrollTop;
		
		if(move == ((artistCount-1) * 30))
		{
			move = 0;
		}
		else
		{
			move += 30;
		}
		
		var lichtkrantFx = new Fx.Scroll($('lichtkrant'), {duration: 250, transition: Fx.Transitions.Quad.easeInOut}).start(0, move);
	}
	
	if(!lichtkrantFirstStart && artistCount == 0)
	{
		return;
	}
	
	lichtkrantFirstStart = false;
	krantTimer = setTimeout('doLichtkrant()', 10000);
}

var abriFirstStart = true;
var abriTimer;

function doAbris()
{
	clearTimeout(abriTimer);
	
	if(!abriFirstStart)
	{
		abriCount = $('abris').getElementsByTagName('li').length;
		move = $('abris').scrollLeft;
		
		if(move == (abriCount-1)*228)
		{
			move = 0;
		}
		else
		{
			move += 228;
		}
		
		var abriFx = new Fx.Scroll($('abris'), {duration: 600, transition: Fx.Transitions.Quad.easInOut}).start(move, 0);
	}
	
	if(!abriFirstStart && abriCount == 0)
	{
		return;
	}
	
	abriFirstStart = false;
	abriTimer = setTimeout('doAbris()', 20000);
}

function showArtist(stageId, id)
{
	location.href='../info/index.php?page=lineup&stage='+stageId+'#'+id;
}

function getScrollY (element)
{
	var obj = $(element);
	var scrOfY = 0;

	//Netscape
	if (typeof(obj.pageYOffset) == 'number')
	{
		 scrOfY = obj.pageYOffset;
	}

	//DOM en IE6
	else if (obj.scrollTop >= 0)
	{
		 scrOfY = obj.scrollTop;
	}

	return(scrOfY);
}

function loadVideo(id, ytid)
{
	if(videoId != id)
	{
		videoId = id;
	}
	
	if(id == 1)
	{
		getVideolist();
	}
	
	updateComments();
	
	
	if(ytid != undefined)
	{
		loadNewVideo(ytid);
	}
	
	// load video in player!
	getVideoInfo();
	//getParent();
	getVideoTitle();
}


function listNextPage()
{
	if(!listNextActive) return;
	
	listStartItem += listItemCount;
	getVideolist();
}

function listPrevPage()
{
	listStartItem -= listItemCount;
	listStartItem = (listStartItem < 0)?0:listStartItem;
	getVideolist();
}

var listTimer;

function getVideolist()
{
	sendRequest('videolist', 'ajax.php?action=list&s='+listStartItem+'&c='+listItemCount+'&vid='+1, handleListResponse);
	
	clearTimeout(listTimer);
	listTimer = setTimeout('getVideolist()', 20000); 
}

function getParent()
{
	// sendRequest('videoParent', 'ajax.php?action=parent&vid='+videoId, handleParentResponse);
}

function getVideoInfo()
{
	sendRequest('info', 'ajax.php?action=info&vid='+videoId, handleInfoResponse);
}

function getVideoTitle()
{
	sendRequest('videoTitle', 'ajax.php?action=title&vid='+videoId, handleTitleResponse);
}

function updateComments()
{
	if(videoId == undefined || videoId == 0) return;
	
	sendRequest('comments', 'ajax.php?action=comment&do=list&vid='+videoId, handleCommentResponse);
	
	clearTimeout(chatTimer);
	chatTimer = setTimeout('updateComments()', 2000); 
}


function rateVideo(rating)
{
	if(canVote == 0) return;
	if(loggedIn == 0) return;
	
	canVote = 0;
	sendRequest('rate', 'ajax.php?action=rate&vid='+videoId+'&rating='+rating, handleVoteResponse);
}

function addComment(frm)
{
	var data = prepareData('comment', frm.comment.value);
	frm.reset();
	
	sendRequest('comments', 'ajax.php?action=comment&do=add&vid='+videoId, afterCommentAdd, data);
}

function addVideo(frm)
{
	var data = prepareData('youtube', frm.youtube.value);
	frm.reset();
	
	sendRequest('list', 'ajax.php?action=add&vid='+videoId, afterVideoAdd, data);
}

function afterCommentAdd(response, identifier)
{
	updateComments();
}

function afterVideoAdd(response, identifier)
{
	if(response != '' && response.responseText != '')
	{
		var returnObject = eval('(' + response.responseText + ')');
		
		if(returnObject.error && returnObject.error != '')
		{
			if(returnObject.error == 'INVALID_LINK')
			{
				showStatus('Ongeldige youtube url ingevoerd, kopieer de volledige url en probeer opnieuw!', 4000);
				return;
			}
			else if(returnObject.error == 'LOGIN_ERROR')
			{
				showStatus('Om links toe te voegen moet je ingelogged zijn!', 2000);
				return;
			}
			else if(returnObject.error = 'DUBPLICATE')
			{
				showStatus('Het gekozen filmpje staat al in de lijst!', 4000);
				return;
			}
		}
		
		listStartItem = returnObject.pageStart;
		loadVideo(returnObject.id, returnObject.ytid);
		
		getVideolist();
		showStatus('Your video has been added!', 2000);
	}
}

function handleTitleResponse(response, identifier)
{
	if(response != '' && response.responseText != '')
	{
		var returnObject = eval('(' + response.responseText + ')');
		
		if(returnObject.error && returnObject.error != '')
		{
			alert('Response error: ' + returnObject.error);
		}
		else
		{
			lng = returnObject.title.length;

			calc = lng - 8;
			calc = 50 - (calc + 8);
			
			size = (lng < 12)?50:(lng > 40)?14:calc;
			// 11 = 50;
			// 22 = 35; +11 -15
			// 27 = 30; +16 -20
			// 39 = 18; +28 -32
			
			// 50 = 13; +39 -37
			
			text = returnObject.title;
			$('titlefont').src = '../font.php?w=500&h=50&b=f8c80a&s=' + size + '&t=' + escape(text.toUpperCase());
			$('titlefont').alt = returnObject.title;
		}
	}
}

function handleInfoResponse(response, identifier)
{
	if(response != '' && response.responseText != '')
	{
		var returnObject = eval('(' + response.responseText + ')');
		
		if(returnObject.error && returnObject.error != '')
		{
			alert('Response error: ' + returnObject.error);
		}
		else
		{

			var html = '';
			
			currentRating = 0;
			canVote = 0;
			videoOwner = '';
			
			if(returnObject.info != '')
			{
				currentRating = returnObject.rating / 1;
				canVote = returnObject.canvote / 1;
				videoOwner = returnObject.username;
				$('videoOwnerImg').src = '../font.php?w=400&h=12&b=f8c80a&t=TOEGEVOEGD DOOR: ' + videoOwner.toUpperCase();
			}
			
			doClearRater();
		}
	}
}

function handleVoteResponse(response, identifier)
{
	getVideoInfo();
	showStatus('Thanks for voting!', 2000);
}

function handleParentResponse(response, identifier)
{
	if(response != '' && response.responseText != '')
	{
		var returnObject = eval('(' + response.responseText + ')');
		
		if(returnObject.error && returnObject.error != '')
		{
			if(returnObject.error == 'SQL_ERROR')
			{
				alert('SQL Error: ' + returnObject.sql_error);
			}
			else
			{
				alert('Response error: ' + returnObject.error);
			}
		}
		else
		{
			var html = '';
			
			if(returnObject.parent != '')
			{
				server = Math.ceil(Math.random() * 4);
				
				html = '<img src="http://i'+server+'.ytimg.com/vi/'+returnObject.parent[0].youtube+'/default.jpg" onclick="loadVideo('+returnObject.parent[0].vid+', \''+returnObject.parent[0].youtube+'\');" width="90" class="clickable" height="70" /><br>';
				$('replyTo').setStyle('display', 'block');
			}
			else
			{
				$('replyTo').setStyle('display', 'none');
			}
			
			$('videoparent').innerHTML = html;
		}
	}
}

function handleListResponse(response, identifier)
{
	if(response != '' && response.responseText != '')
	{
		var returnObject = eval('(' + response.responseText + ')');
		
		if(returnObject.error && returnObject.error != '')
		{
			alert('Response error: ' + returnObject.error);
		}
		else
		{
			var html = '';
			
			videoCount = (returnObject.videos.length > listItemCount)?listItemCount:returnObject.videos.length;
			
			if(returnObject.videos.length == 0 && listStartItem > 0)
			{
				listPrevPage();
			}
			
			for(var i=0; i<videoCount; i++)
			{
				html += '<img src="http://i2.ytimg.com/vi/'+returnObject.videos[i].youtube+'/default.jpg" onclick="loadVideo('+returnObject.videos[i].vid+', \''+returnObject.videos[i].youtube+'\');" width="90" height="70" class="clickable" /><br>';
			}
			
			$('videolist').innerHTML = html;
			
			// update nav arrows:
			if(returnObject.videos.length > listItemCount)
			{
				// enable next
				$('videoListNext').src = 'images/nextPageActive.gif';
				listNextActive = true;
			}
			else
			{
				$('videoListNext').src = 'images/nextPage.gif';
				listNextActive = false;
			}
			
			if(listStartItem > 0)
			{
				// disable prev
				$('videoListPrev').src = 'images/prevPageActive.gif';
			}
			else
			{
				$('videoListPrev').src = 'images/prevPage.gif';
			}
		}
	}
	
}

function handleCommentResponse(response, identifier)
{
	if(response != '' && response.responseText != '')
	{
		var returnObject = eval('(' + response.responseText + ')');
		
		if(returnObject.error && returnObject.error != '')
		{
		}
		else
		{
			var html = '';
			
			for(var i=0; i<returnObject.comments.length; i++)
			{
				var text = returnObject.comments[i].comment;
				var user = returnObject.comments[i].username;
				
				text = replaceAll('_br_', '<br>', text);
				usertext = (i%2 == 0)?'zegt <b>' + user + '</b>':'<b>' + user + '</b> zegt';
				
				html += '<div class="comment_' + ((i%2 == 0)?'even':'uneven') + '">';
				html += '<div class="username">' + usertext + '</div>';
				html += '<div class="text">' + text + '</div>';
				html += '</div>';
			}
			
			$('comments').innerHTML = html;
		}
	}
}

function replaceAll(needle, replaceBy, source)
{
	while(source.indexOf(needle) > -1)
	{
		source = source.replace(needle, replaceBy);
	}
	return source;
}

/******[ MISC ]******/

function prepareData(key, value)
{
	return key + "=" + escape(value).replace('+', '%2B');
}

function enableForms()
{
	if(!loggedIn) return;
	enableForm(document.forms['add_comment']);
	enableForm(document.forms['add_video']);
}

function disableForms()
{
	if(loggedIn) return;
	disableForm(document.forms['add_comment']);
	disableForm(document.forms['add_video']);
}


/******[ Status popup ]******/
var statusTimer;
function showStatus(text, timer)
{
	var statusFX = new Fx.Tween($('status'), {property: "top", duration: 250});
	
	try
	{
		statusFX.start(getScrollTop());
		
		$('status').innerHTML = text;
		$$('status').display = 'block';
		
		statusTimer = setTimeout('hideStatus()', timer);
	}
	catch(err)
	{
		alert(text);
	}
}

function hideStatus()
{
	clearTimeout(statusTimer);
	var statusFX = new Fx.Tween($('status'), {property: "top", duration: 250, onComplete:clearStatus}).start(getScrollTop()-30);
}

function clearStatus()
{
	$('status').innerHTML = '';
	$$('status').display = '';
}

function rePositionStatus()
{
	posX = ($$('status').display == 'block')?0:30;
	
	$$('status').top = (getScrollTop()-posX)+'px';
}

/******[ Rating functions (hover) ]******/
var timerRateClear;
function clearRater()
{
	timerRateClear = setTimeout('doClearRater()', 500);
}

function doClearRater()
{
	clearTimeout(timerRateClear);
	
	// current rating?
	for(var i=1; i<=5; i++)
	{
		if($('rate_'+i))
		{
			$('rate_'+i).src = "images/white.gif";
		}
	}
	
	if(currentRating > 0)
	{
		for(var i=1; i<=currentRating; i++)
		{
			$('rate_'+i).src = "images/yellow.gif";
		}
	}
}

function hoverRater(img)
{
	clearTimeout(timerRateClear);
	
	if(canVote == 0) return;
	
	value = img.id.replace('rate_', '');
	value = value / 1;
	
	for(var i=1; i<=value; i++)
	{
		$('rate_'+i).src="images/yellow.gif";
	}
	
	for(var i=(value+1); i<6; i++)
	{
		$('rate_'+i).src="images/white.gif";
	}
}