var MovieList = Array();

function appendMovie(Category,ID,YouTubeID,Title,Views,Rating,MyRating)
{
	if( MyRating.length == 0 )
	{
		MyRating = false;
	}
	else
	{
		MyRating = parseIntNaN(MyRating);
	}
	
	MovieList[MovieList.length] = Array(Category,ID,YouTubeID,Title,Views,Rating,MyRating);
}

function getMovieIndexForID(ID)
{
	for( var i = 0; i < MovieList.length; i++ )
	{
		if( MovieList[i][1] == ID )
		{
			return i;
		}
	}
	return false;
}

function getFirstIndexForCategory(Category)
{
	var MovieOverlay = document.getElementById('movieoverlay');
	
	for( i = 0; i < MovieList.length; i++ )
	{
		if(( MovieList[i][0] == Category ) || ( MovieOverlay.browseCategory == false ))
		{
			return i;
		}
	}
	return false;
}

function getLastIndexForCategory(Category)
{
	var LastIndex = false;
	var MovieOverlay = document.getElementById('movieoverlay');
	
	for( i = 0; i < MovieList.length; i++ )
	{
		if(( MovieList[i][0] == Category ) || ( MovieOverlay.browseCategory == false ))
		{
			LastIndex = i;
		}
	}
	return LastIndex;
}

function getNextIndexForCategory(CurrentIndex,Category)
{
	var RetNext = false;
	var MovieOverlay = document.getElementById('movieoverlay');
	
	for( i = 0; i < MovieList.length; i++ )
	{
		if(( MovieList[i][0] == Category ) || ( MovieOverlay.browseCategory == false ))
		{
			if( RetNext == true )
			{
				return i;
			}
			if( CurrentIndex == i )
			{
				RetNext = true;
			}
		}
	}
	return false;
}

function getPreviousIndexForCategory(CurrentIndex,Category)
{
	var PreviousIndex = false;
	var MovieOverlay = document.getElementById('movieoverlay');
	
	for( i = 0; i < MovieList.length; i++ )
	{
		if(( MovieList[i][0] == Category ) || ( MovieOverlay.browseCategory == false ))
		{
			if( CurrentIndex == i )
			{
				return PreviousIndex;
			}
			PreviousIndex = i;
		}
	}
	return false;
}

function changeRating(Rating)
{
	if( MovieList[document.getElementById('movieoverlay').currentIndex][6] === false )
	{
		document.getElementById('rate1').src = "images/ratinginactive.gif";
		document.getElementById('rate2').src = "images/ratinginactive.gif";
		document.getElementById('rate3').src = "images/ratinginactive.gif";
		document.getElementById('rate4').src = "images/ratinginactive.gif";
		document.getElementById('rate5').src = "images/ratinginactive.gif";
		
		switch( Rating ) 
		{
			case 5			: document.getElementById('rate5').src = "images/ratingactive.gif";
			case 4			: document.getElementById('rate4').src = "images/ratingactive.gif";
			case 3			: document.getElementById('rate3').src = "images/ratingactive.gif";
			case 2			: document.getElementById('rate2').src = "images/ratingactive.gif";
			case 1			: document.getElementById('rate1').src = "images/ratingactive.gif";
		}
	}
}

function rate(Rating)
{
	var MovieOverlay = document.getElementById('movieoverlay');
	
	if( MovieList[MovieOverlay.currentIndex][6] === false )
	{
		MovieList[MovieOverlay.currentIndex][6] = Rating;
		document.getElementById('movieratingsaved').innerHTML = "[Opgeslagen]";
		document.getElementById('connecttool').src = BaseURL + "/movie/ratemovie/" + MovieList[document.getElementById('movieoverlay').currentIndex][1] + "/" + Rating + "?";
		document.getElementById('ratingheader').innerHTML = "Jouw oordeel";
	}
	else
	{
		alert("Je hebt deze aflevering al beoordeeld.");
	}
}

function nextMovie()
{
	var CurrentIndex = document.getElementById('movieoverlay').currentIndex;
	var NextIndex = getNextIndexForCategory(CurrentIndex,MovieList[CurrentIndex][0]);
	var MovieOverlay = document.getElementById('movieoverlay');
	
	return openMovieIndex(NextIndex,MovieOverlay.browseCategory);
}

function previousMovie()
{
	var CurrentIndex = document.getElementById('movieoverlay').currentIndex;
	var PreviousIndex = getPreviousIndexForCategory(CurrentIndex,MovieList[CurrentIndex][0]);
	var MovieOverlay = document.getElementById('movieoverlay');
	
	return openMovieIndex(PreviousIndex,MovieOverlay.browseCategory);
}


function openMovieOverlay(ID,BrowseCategory)
{
	var Index = getMovieIndexForID(ID);
	if( Index === false )
	{
		alert("Movie " + ID + " not defined");
		return false;
	}
	
	return openMovieIndex(Index,BrowseCategory);
}

function openMovieIndex(Index,BrowseCategory)
{
	var YouTubeID = MovieList[Index][2];
	var MovieOverlay = document.getElementById('movieoverlay');
	MovieOverlay.currentIndex = Index;
	MovieOverlay.browseCategory = BrowseCategory;

	document.getElementById('movieoverlayback').style.display = "block";
	MovieOverlay.style.display = "block";
	
	updateMovieOverlayBack();
	updateMovieOverlayPosition();
	
	document.getElementById('video').innerHTML = "Een ogenblik geduld AUB. De video wordt geladen...";
	
	switch( MovieList[Index][0] )
	{
		case 0			: document.getElementById('categorytitle').innerHTML = "Groene woud";
						  break;
		case 1			: document.getElementById('categorytitle').innerHTML = "Duurzaamheid";
						  break;
		case 2			: document.getElementById('categorytitle').innerHTML = "Europa";
						  break;
		default			: document.getElementById('categorytitle').innerHTML = "-";
	}
	
	document.getElementById('movietitle').innerHTML = MovieList[Index][3];
	document.getElementById('movieviews').innerHTML = MovieList[Index][4];
	document.getElementById('movieratingsaved').innerHTML = "";
	
	var Rating = parseIntNaN(MovieList[Index][5]);
	var RatingHTML = "";
	// Rating
	for( i = 0; i < Rating; i++ )
	{
		RatingHTML += '<img align="absmiddle" src="images/ratingactive.gif" />';
	}
	for( i = Rating; i < 5; i++ )
	{
		RatingHTML += '<img align="absmiddle" src="images/ratinginactive.gif" />';
	}
	RatingHTML += '<div class="clearer"></div>';
	document.getElementById('movierating').innerHTML = RatingHTML;
	
	// MyRating
	if( MovieList[MovieOverlay.currentIndex][6] !== false )
	{
		var Rating = MovieList[MovieOverlay.currentIndex][6];
		MovieList[MovieOverlay.currentIndex][6] = false;
		changeRating(Rating);
		MovieList[MovieOverlay.currentIndex][6] = Rating;
		document.getElementById('ratingheader').innerHTML = "Jouw oordeel";
	}
	else
	{
		changeRating(0);
		document.getElementById('ratingheader').innerHTML = "Beoordeel deze aflevering";
	}
	
	// < vorige afbeelden?
	var FirstIndex = getFirstIndexForCategory(MovieList[Index][0]);
	if( FirstIndex == Index )
	{
		// Eerste filmpje, vorige niet afbeelden
		document.getElementById('prevmovie').style.display = 'none';
	}
	else
	{
		document.getElementById('prevmovie').style.display = 'inline';
	}
	
	// volgende > afbeelden
	var LastIndex = getLastIndexForCategory(MovieList[Index][0]);
	if( LastIndex == Index )
	{
		// Laatste filmpje, niet afbeelden
		document.getElementById('nextmovie').style.display = 'none';
	}
	else
	{
		document.getElementById('nextmovie').style.display = 'inline';
	}
	
	// Iets later laden omdat ie anders niet zichtbaar is
	setTimeout(loadMovie,500);
	
	return false;
}

function loadMovie()
{
	var YouTubeID = MovieList[document.getElementById('movieoverlay').currentIndex][2];
	
	var s1 = new SWFObject("http://www.youtube.com/v/" + YouTubeID + "&rel=1&autoplay=1","single","480","395","7");
	s1.addVariable("wmode","transparent");
	s1.write("video");
	
	// Verhogen aantal views
	document.getElementById('connecttool').src = BaseURL + "/movie/incview/" + MovieList[document.getElementById('movieoverlay').currentIndex][1] + "?";
}

function closeMovieOverlay()
{
	document.getElementById('movieoverlay').style.display = "none";
	document.getElementById('video').innerHTML = "";
	document.getElementById('movieoverlayback').style.display = "none";
	return false;
}

function updateMovieOverlayPosition()
{
	var MovieOverlay = document.getElementById('movieoverlay');
	
	if( MovieOverlay.style.display == "none" )
	{
		return;
	}
	
	var left = Math.floor((getInnerWindowWidth()/2)-(parseIntNaN(MovieOverlay.offsetWidth)/2))+getPageScrollLeft();
	if( left < 0 )
	{
		left = 0;
	}
	var top = Math.floor((getInnerWindowHeight()/2)-(parseIntNaN(MovieOverlay.offsetHeight)/2))+getPageScrollTop();
	if( top < 0 )
	{
		top = 0;
	}
	
	MovieOverlay.style.left = left + "px";
	MovieOverlay.style.top = top + "px";
}

function updateMovieOverlayBack()
{
	var MovieOverlayBack = document.getElementById('movieoverlayback');
	MovieOverlayBack.style.width = getPageWidth() + "px";
	MovieOverlayBack.style.height = getPageHeight() + "px";
}

function getInnerWindowWidth()
{
	if( self.innerHeight )
	{
		return self.innerWidth;
	}
	else if( document.documentElement && document.documentElement.clientHeight )
	{
		return document.documentElement.clientWidth;
	}
	else if( document.body )
	{
		return document.body.clientWidth;
	}
}

function getInnerWindowHeight()
{
	if( self.innerHeight )
	{
		return self.innerHeight;
	}
	else if( document.documentElement && document.documentElement.clientHeight )
	{
		return document.documentElement.clientHeight;
	}
	else if( document.body )
	{
		return document.body.clientHeight;
	}
}

function getPageScrollLeft()
{
	var x,y;
	if( self.pageYOffset )
	{
		return self.pageXOffset;
	}
	else if( document.documentElement && document.documentElement.scrollTop )
	{
		return document.documentElement.scrollLeft;
	}
	else if( document.body )
	{
		return document.body.scrollLeft;
	}
}

function getPageScrollTop()
{
	if( self.pageYOffset )
	{
		return self.pageYOffset;
	}
	else if( document.documentElement && document.documentElement.scrollTop )
	{
		return document.documentElement.scrollTop;
	}
	else if( document.body )
	{
		return document.body.scrollTop;
	}
}

function parseIntNaN(Value)
{
	Value = parseInt(Value);
	if( isNaN(Value) )
	{
		return 0;
	}
	return Value;
}

function getPageWidth()
{	
	var xScroll;
	
	if( window.innerHeight && window.scrollMaxY )
	{	
		xScroll = window.innerWidth + window.scrollMaxX;
	}
	else if( document.body.scrollHeight > document.body.offsetHeight )
	{
		xScroll = document.body.scrollWidth;
	}
	else
	{
		xScroll = document.body.offsetWidth;
	}
	
	var windowWidth;
	
	if( self.innerHeight )
	{
		if( document.documentElement.clientWidth )
		{
			windowWidth = document.documentElement.clientWidth; 
		}
		else
		{
			windowWidth = self.innerWidth;
		}
	}
	else if( document.documentElement && document.documentElement.clientHeight )
	{
		windowWidth = document.documentElement.clientWidth;
	}
	else if( document.body )
	{
		windowWidth = document.body.clientWidth;
	}	
	
	if( xScroll < windowWidth )
	{	
		pageWidth = xScroll;		
	}
	else
	{
		pageWidth = windowWidth;
	}
	return pageWidth;
}

function getPageHeight()
{
	var yScroll;
	
	if( window.innerHeight && window.scrollMaxY )
	{
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if( document.body.scrollHeight > document.body.offsetHeight)
	{
		yScroll = document.body.scrollHeight;
	}
	else
	{
		yScroll = document.body.offsetHeight;
	}
	
	var windowHeight;
	
	if( self.innerHeight )
	{
		windowHeight = self.innerHeight;
	}
	else if( document.documentElement && document.documentElement.clientHeight )
	{
		windowHeight = document.documentElement.clientHeight;
	}
	else if( document.body )
	{
		windowHeight = document.body.clientHeight;
	}	
	
	if( yScroll < windowHeight )
	{
		pageHeight = windowHeight;
	}
	else
	{ 
		pageHeight = yScroll;
	}
	return pageHeight;
}

function onResize()
{
	updateMovieOverlayBack();
	updateMovieOverlayPosition();
}

window.onscroll = updateMovieOverlayPosition;
window.onresize = onResize;
