var PlaylistContents = new Object;
var PlaylistProperties = new Object;
var PlaylistSyncronized = false;
var PlayAudioVideoPlaylist = false;
var PreviousContent = new Array();

Object.prototype.length = function()
{
	var len = 0;
	for(var content in this)
	{
		if(content != 'length')
		{
			len ++;
		}
	}
	
	return len;
}

var request = false;
try 
{
	request = new XMLHttpRequest();
}
catch (trymicrosoft) 
{
	try 
	{
		request = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (othermicrosoft)
	{
		try
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (failed) 
		{
			request = false;
		}
	}
}

function SwitchPlaylist()
{
	var playlist_select = document.getElementById('playlist_select');
	playlist_id = playlist_select.options[playlist_select.selectedIndex].
		value;
	var playlist_content = document.getElementById('playlist_content_block');
	var playlist_title = document.
		getElementById('playlist_content_title_block');
	var playlist_property = document.getElementById('playlist_propery_block');
	
	if(playlist_id != '')
	{
		GetPlaylistInfo(playlist_id);
		playlist_content.style.display = 'block';
		playlist_title.style.display = 'block';
		playlist_property.style.display = 'block';
	}
	else
	{
		playlist_content.innerHTML = '';
		playlist_content.style.display = 'none';
		playlist_title.style.display = 'none';
		playlist_property.style.display = 'none';
	}
}
function TakePlaylistInfo()
{
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			ParsePlaylistInfo(request.responseText);
		}
	}
}
function ParsePlaylistInfo(contents_str)
{
	var position = 0;
	var previous_position = 0;
	var contents = new Array();
	PlaylistContents = new Object;
	PlaylistProperties = new Object;

	while(position != -1)
	{
		//alert(position);
		position = contents_str.indexOf('<|>', position);
		
		if(position != -1)
		{
			contents.push(contents_str.substr(previous_position, position - 
				previous_position));
			
			position += 3;
			previous_position = position;
		}
	}
	
	if(contents.length)
	{
		for(var i = 0; i < contents.length; i ++)
		{
			content_id = contents[i].substr(0, contents[i].indexOf('<,>'));
			content_name = contents[i].substr(contents[i].indexOf('<,>') + 3,
				contents[i].length);
				
			PlaylistContents[content_id] = content_name;
		}
	}
	
	pl_info_tag = contents_str.indexOf('<pl_info>') + 9;
	property_length = contents_str.indexOf('</pl_info>') - pl_info_tag;
	
	var playlist_properties = contents_str.substr(pl_info_tag, property_length);
	var properties_array = playlist_properties.split(',');
	
	PlaylistProperties['play_round'] = properties_array[0];
	PlaylistProperties['play_random'] = properties_array[1];
	PlaylistProperties['display_interval'] = properties_array[2];
	
	DisplayPlaylistInfo();
}
function DisplayPlaylistInfo()
{
	var playlist_block = document.getElementById('playlist_content_block');
	var display_interval = document.getElementById('display_interval');
	var play_round = document.getElementById('play_round');
	var play_random = document.getElementById('play_random');
	
	if(PlaylistContents.length())
	{
		playlist_block.innerHTML = '';
		for(var content_id in PlaylistContents)
		{
			var prefix = '';
			var suffixes = '';
				
			if(content_id == PlayNow)
			{
				prefix = '<b>';
				suffixes = '</b>';
			}
				
			if(content_id != 'length')
			{
				var content_link = GetPlaylistContentHref(content_id, true, false);
				
				content_link = 'javascript:GoToContent(\'' +
					content_link + '\')';
				
				playlist_block.innerHTML += '<div style="padding:2px;">';
				playlist_block.innerHTML += prefix + 
					'<a class=usual_link href="' + content_link + '">' + 
					PlaylistContents[content_id] + 
					'</a><br>' + suffixes;
				playlist_block.innerHTML += '</div>';
			}
		}
	}
	
	if(ContentType == 'picture')
	{
		if(DisplayInterval)
		{
			display_interval.options.selectedIndex = DisplayInterval - 1;
		}
		else
		{ 
			display_interval.options.selectedIndex = 
				PlaylistProperties['display_interval'] - 1;
		}
	}
	
	if(Repeat == 0 || Repeat == 1)
	{
		if(Repeat)
			play_round.checked = true;
		else
			play_round.checked = false;
	}
	else
	{ 
		if(PlaylistProperties['play_round'] != 0)
		{
			play_round.checked = true;
		}
		else
		{
			play_round.checked = false;
		}	
	}
	
	if(Shuffle == 1 || Shuffle == 0)
	{
		if(Shuffle)
			play_random.checked = true;
		else
			play_random.checked = false;
	}
	else
	{ 
		if(PlaylistProperties['play_random'] != 0)
		{
			play_random.checked = true;
		}
		else
		{
			play_random.checked = false;
		}
	}
	
	PlaylistSyncronized = true;
	if(PlayPlaylist)
		PlayStop(true);
}
function DoNoting()
{
	return false;
}
function SetPlaylist()
{
	var playlist_select = document.getElementById('playlist_select');
	for(var i = 0; i < playlist_select.options.length; i ++)
	{
		if(playlist_select.options[i].value == playlist_id)
		{
			playlist_select.selectedIndex = i;
		}
	}
	SwitchPlaylist();
}

var PlaylistTimer = 0; //use as timer for picture and as bool for aduio/video
var SetPlaylistTimer = false;

function PlayAudioVideo()
{
	if(PlaylistTimer)
	{
		if(SetPlaylistTimer)
		{
			var play_round = document.getElementById('play_round');
			var play_random = document.getElementById('play_random');

			round = play_round.checked ? 1 : 0;
			random = play_random.checked ? 1 : 0;		
			
			var PlayNext;
			if(random)
			{
				PlayNext = GetRandomContentId();
			}
			else
			{
				PlayNext = GetNextContentId();
			}
			
			if(!PlayNext && round)
			{
				PlayNext = GetFirstContentId();
			}
			
			if(PlayNext)
			{
				var loc = GetPlaylistContentHref(PlayNext, false, true);
				GoToContent(loc);
				return;
			}
			return;
		}

		if(PlaylistSyncronized)
		{
			SetPlaylistTimer = true;
			clearTimeout(PlaylistTimer);
			PlaylistTimer = true;
			PlayAudioVideo();
		}
		else
		{
			SetPlaylistTimer = false;
			PlaylistTimer = setTimeout('PlayAudioVideo()', 500);
		}
	}
}
function SlideShow()
{
	var display_interval = document.getElementById('display_interval');
	var play_round = document.getElementById('play_round');
	var play_random = document.getElementById('play_random');
	
	display = display_interval.options[display_interval.selectedIndex].value *
		1000;
	round = play_round.checked ? 1 : 0;
	random = play_random.checked ? 1 : 0;
	
	if(SetPlaylistTimer)
	{
		var PlayNext;
		if(random)
		{
			PlayNext = GetRandomContentId();
		}
		else
		{
			PlayNext = GetNextContentId();
		}
		
		if(!PlayNext && round)
		{
			PlayNext = GetFirstContentId();
		}
		
		if(PlayNext)
		{
			var loc = GetPlaylistContentHref(PlayNext, false, true);
			GoToContent(loc);
			return;
		}
		return;
	}

	if(PlaylistSyncronized)
	{
		PlaylistTimer = setTimeout('SlideShow()', display);
		SetPlaylistTimer = true;
	}
	else
	{
		SetPlaylistTimer = false;
		PlaylistTimer = setTimeout('SlideShow()', 500);
	}
}
function GetNextContentId()
{
	var play_round = document.getElementById('play_round');
	var round = play_round.checked ? 1 : 0;
	var new_content_id = 0;
	
	var found = false;
	for(var content_id in PlaylistContents)
	{
		if(found && content_id != 'length')
		{	
			new_content_id = content_id;
			break;
		}
		if(content_id == PlayNow)
		{
			found = true;
		}
	}
	
	if(round && !new_content_id)
	{
		new_content_id = GetFirstContentId();
	}
	
	if(new_content_id)
		AddToPreviousContent(PlayNow);
	return new_content_id;
}
function GetPreviousContentId()
{
	var play_round = document.getElementById('play_round');
	var play_random = document.getElementById('play_random');
	
	var round = play_round.checked ? 1 : 0;	
	var random = play_random.checked ? 1 : 0;
	
	previous_id = 0;
	
	if(PreviousContent.length)
	{
		previous_id = PreviousContent.pop();
	}
	else if(!random)
	{
		var found = false;
		var previous = 0;
		for(var content_id in PlaylistContents)
		{
			if(content_id == PlayNow && previous)
			{
				previous_id = previous;
			}
			previous = content_id;
		}
		
		if(!previous_id && round)
		{
			previous_id = GetLastContentId();
		}
	}
	else if(random)
	{
		previous_id = GetRandomContentId(true);
	}
	
	return previous_id;
}
function GetFirstContentId()
{
	for(var content_id in PlaylistContents)
	{
		return content_id;
	}
}
function GetLastContentId()
{
	var previous_id = 0;
	for(var content_id in PlaylistContents)
	{
		if(content_id == 'length')
		{
			return previous_id;
		}
		previous_id = content_id;
	}
}
function GetRandomContentId(not_add_to_history)
{
	var length = PlaylistContents.length();
	var random = Math.floor(Math.random() * length);
	var new_content_id = 0;

	if(length == random)
		random --;
		
	var j = 0;
	for(var content_id in PlaylistContents)
	{
		if(j == random)
		{
			if(content_id != PlayNow)
			{
				if(PreviousContent[PreviousContent.length - 1] == content_id &&
					PlaylistContents.length() > 2)
				{
					new_content_id = GetRandomContentId(true);
				}
				else
				{
					new_content_id = content_id;
				}
				
				break;
			}
			else
			{
				if(PlaylistContents.length() > 1)
				{
					new_content_id = GetRandomContentId(true);
					break;
				}
				else
				{
					new_content_id =  content_id;
					break;
				}
			}
		}
		
		j ++;
	}
	
	if(!not_add_to_history)
		AddToPreviousContent(PlayNow);
		
	return new_content_id;
}
function DisplayContentByDemand(type)
{
	var play_random = document.getElementById('play_random');
	var random = play_random.checked ? 1 : 0;
	
	var PlayNow;
	if(type == 'next')
	{
		if(random)
		{
			PlayNow = GetRandomContentId();
		}
		else
		{
			PlayNow = GetNextContentId();
		}
	}
	else
	{
		PlayNow = GetPreviousContentId();
	}
	

	if(PlayNow)
	{
		var loc = GetPlaylistContentHref(PlayNow, false, true)
		GoToContent(loc);
	}
}
function AddToPreviousContent(content_id)
{
	PreviousContent.push(content_id);
	
	if(PreviousContent.length > 10)
		PreviousContent.shift();
}
function GetPlaylistContentHref(content_id, current_content_to_history, add_tale)
{
	var location_str = '/?res=root&content_id=' + content_id + 
		'&playlist_id=' + playlist_id;
	
	if(RegisteredUser == '' && add_tale)
	{
		location_str += NotRegisteredUserTale();
	}
 	
	if(PreviousContent.length)
	{
		for(var i = 0; i < PreviousContent.length; i ++)
		{
			location_str += '&history[]=' + PreviousContent[i];
		}
	}
	
	if(current_content_to_history)
	{
		location_str += '&history[]=' + PlayNow;
	}
	
	return location_str;
}
function NotRegisteredUserTale()
{
	str = '';
	if(DisplayInterval)
		str += '&display_interval=' + DisplayInterval;
		
	if(Repeat != -1)
		str += '&repeat=' + Repeat;
		
	if(Shuffle != -1)
		str += '&shuffle=' + Shuffle;
		
	return str;
}
function GoToContent(loc)
{
	if(RegisteredUser == '')
	{
		loc += NotRegisteredUserTale();
	}
	
	loc += '&playplaylist=' + PlayPlaylist;
	loc += '#content';
	
	window.location = loc;
}
function PlayIsEnded()
{
	PlayAudioVideo();
}
