if (document.addEventListener) 
{
    document.addEventListener("DOMContentLoaded", live_uitzending, null);
}

// fallback
window.onload = live_uitzending;

function update_film			(response) {update_id('film', response);process_speaker();	}
function update_fragmenten		(response) {update_id('fragmenten', response);				}
function update_spreker			(response) {update_id('aanhetwoord', response);				}
function update_sprekers		(response) {update_id('sprekers', response); 				}
function agendapunt_documenten	(response) {update_id('agendapunt_documenten', response); 	}
function gekoppelde_informatie	(response) {update_id('meerinformatie', response); 			}

var MEETING		=	0;
var FRAGMENT	=	0;
var SPEAKERS	=	'';
var TIMEINDEXES	=	'';

function live_uitzending()
{
	//make sure we only get here once
	if (arguments.callee.done)
	{
		return;
	}
	arguments.callee.done = true;
	//if(ISLIVE == '1')
	//{
		//var agendapunt = document.getElementsByClassName('play','agendapunten');
		//for(i=0;i<agendapunt.length;i++)
		//{
			//agendapunt[agendapunt.length].removeClassName('play');
		//}
	//}
	//else
	//{
		var f_obj	=	document.getElementById('fragment');
		
		if (f_obj)
			FRAGMENT	=	f_obj.value;
			
		var m_obj	=	document.getElementById('meeting');
		
		if (m_obj)
			MEETING		=	m_obj.value;

		if(typeof(document.MediaPlayer) != "undefined")
		{
			aplx_call_by_uri("/modules/risbis/risbis.php?g=get_json_speakers", MEETING, set_speakers);
			aplx_call_by_uri("/modules/risbis/risbis.php?g=get_json_speaker_fragment&meeting="+MEETING+"&fragment="+FRAGMENT, MEETING, set_timeindexes);
		}
	//}
	if(typeof(ISLIVE) != 'undefined')
	{
		if (ISLIVE == 0)
		{
			do_poll();
			onload_meeting();
		}
		if (ISLIVE == 1)
		{
			get_security_level();
			get_media_status();
		}
	}
}
function do_poll()
{
	if(typeof(document.MediaPlayer) != "undefined")
	{
		get_speaker();
		//get_status();
		setTimeout("do_poll();",1000);
	}
}
function set_speakers(response)
{
	if(response != '')
	{
		SPEAKERS	=	eval("(" + response + ")");
		//preload_speakers(response);
	}
}
function set_timeindexes(response)
{
	if(response != '')
	{
		TIMEINDEXES	=	eval("(" + response + ")");
		process_speaker();
	}
}
function set_active(id,fragment_id,update_movie)
{
	update_spreker(' ')
	var p = document.getElementsByClassName('pause','agendapunten');
	var a = document.getElementsByClassName('actief','agendapunten');
	
	for(i=0;i<p.length;i++)
	{
		p[i].removeClassName('pause');
		p[i].addClassName('play');
	}
	
	for(i=0;i<a.length;i++)
	{
		a[i].removeClassName('actief');
	}
	
	var ap = $('agendapunt'+id+'_'+fragment_id);
	if(ap)
	{
		ap.addClassName('actief');
	}
	if(fragment_id > 0)
	{
		var b = $('button'+id);
		if(b)
		{
			b.removeClassName('play');
			b.addClassName('pause');
		}	
	}
	
	if(fragment_id > 0)
	{
		var uri		=	new String(document.location);
		var uri		=	escape(uri);
		FRAGMENT	=	fragment_id;
		
		if (update_movie)
		{
			aplx_call_by_uri("/modules/risbis/risbis.php?g=start_film_fragment&fragment_object_id="+fragment_id+"", fragment_id, update_film);
		}
		aplx_call_by_uri("/modules/risbis/risbis.php?g=get_sprekers&meeting="+MEETING+"&fragment_object_id="+fragment_id+"&uri="+uri+"", fragment_id, update_sprekers);
		aplx_call_by_uri("/modules/risbis/risbis.php?g=get_fragmenten&agendapunt_object_id="+id+"&uri="+uri+"", id, update_fragmenten);
		aplx_call_by_uri("/modules/risbis/risbis.php?g=get_json_speaker_fragment&meeting="+MEETING+"&fragment="+FRAGMENT, MEETING, set_timeindexes);
	}
	if(fragment_id == 0)
	{
		FRAGMENT	=	0;
		update_film('');
		update_fragmenten('');
		update_spreker('');
		update_sprekers('');
		
	}
	aplx_call_by_uri("/modules/risbis/risbis.php?g=get_docs_for_ag&agendapunt_object_id="+id+"", fragment_id, agendapunt_documenten);
	aplx_call_by_uri("/modules/risbis/risbis.php?g=get_gekoppelde_informatie&agendapunt_object_id="+id+"", fragment_id, gekoppelde_informatie);
}
function set_speaker(obj)
{
	var obj_id	=	obj.getAttribute('id');
	var id_arr	=	obj_id.split("_");
	var frag	=	id_arr[2];
	var sp_frag	=	id_arr[3];
	aplx_call_by_uri("/modules/risbis/risbis.php?g=start_film_speaker&meeting="+MEETING+"&frag="+frag+"&sp_frag="+sp_frag, MEETING, update_film);
}
function set_fragment(obj)
{
	var uri		=	new String(document.location);
	var uri		=	escape(uri);
	
	var obj_id	=	obj.getAttribute('id');
	var id_arr	=	obj_id.split("_");
	
	var frag	=	id_arr[1];
	FRAGMENT	=	frag;
	aplx_call_by_uri("/modules/risbis/risbis.php?g=start_film_fragment&fragment_object_id="+frag+"", frag, update_film);
	aplx_call_by_uri("/modules/risbis/risbis.php?g=get_sprekers&meeting="+MEETING+"&fragment_object_id="+frag+"&uri="+uri+"", frag, update_sprekers);
	aplx_call_by_uri("/modules/risbis/risbis.php?g=get_json_speaker_fragment&meeting="+MEETING+"&fragment="+FRAGMENT, MEETING, set_timeindexes);
}

function preload_speakers(speakers)
{
	var img_obj	=	new Image();
	
	speakers	=	new String(speakers).split('id');
	var imre	=	/.*"img_src": "([^"]+)".*/gi;
	var pre		=	/\\/gi;
	
	for (var n = 0; n < speakers.length; n++)
	{
		imgsrc	=	speakers[n].replace(imre, '$1');
		imgsrc	=	imgsrc.replace(pre, '');
		if (imgsrc.indexOf('Afbeelding') > -1)
		{
			img_obj.src = imgsrc;
		}
	}
}

var CURRENTSPEAKER = -1;

function get_speaker()
{
	var i			=	CURRENTSPEAKER;
	var non_speaker	=	false;
	
	if(typeof(document.MediaPlayer.CurrentPosition) != "undefined" && TIMEINDEXES != '')
	{
		seconds	=	Math.round(document.MediaPlayer.CurrentPosition);
		if(!isNaN(seconds))
		{
			var last		=	TIMEINDEXES.last;
			if(seconds > last)
			{
				update_spreker('');
			}
			else if (CURRENTSPEAKER > -1 && seconds < TIMEINDEXES['sp' + CURRENTSPEAKER].start)
			{
				non_speaker	=	false;
				doit		=	true;
				
				while (i != -1 && TIMEINDEXES['sp' + i].start >= seconds && doit.valueOf() == true)
				{
					if (TIMEINDEXES['sp' + i].stop < seconds)
					{
						non_speaker	=	true;
						doit		=	false;
					}
					i--;
				}

				CURRENTSPEAKER = i;
			
				if (non_speaker.valueOf() == true || i == -1)
				{
					update_spreker('');
				}
				else
				{
					write_speaker();
				}
			}
			else if (CURRENTSPEAKER == -1)
			{
				if (TIMEINDEXES['sp0'].start <= seconds)
				{
					doit	= true;
					i 		= 0;
					while (TIMEINDEXES['sp'+ i].stop < seconds && doit.valueOf() == true)
					{
						non_speaker = false;
						i++;

						if (TIMEINDEXES['sp'+ i].start > seconds)
						{
							non_speaker = true;
							doit 		= false;
						}
					}
					if (non_speaker.valueOf() == true)
					{
						update_spreker('');
					}
					else
					{
						CURRENTSPEAKER = i;
						write_speaker();
					}
				}

			}
			else if (seconds > TIMEINDEXES['sp' + CURRENTSPEAKER].stop)
			{
				doit = true;
				while (TIMEINDEXES['sp' + i].stop < seconds && doit.valueOf() == true)
				{
					non_speaker = false;
					i++;
					if (TIMEINDEXES['sp' + i].start > seconds)
					{
						non_speaker = true;
						doit 		= false;
					}
				}
				if (non_speaker.valueOf() == true)
				{
					update_spreker('');
				}
				else
				{
					CURRENTSPEAKER = i;
					write_speaker();
				}
			}
//			setTimeout("process_speaker();",1000);
		}
	}
}

function parseXML_status(response)
{
	var statusmsg = '';
	// Convert the string to an XML object
	try
	{
		//Internet Explorer
		var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(response);
	}
	catch(e)
	{
		try
		{
			//Firefox, Mozilla, Opera, etc.
			//xmlDoc=document.implementation.createDocument("","",null);
			var xmlDoc = (new DOMParser()).parseFromString(response, "text/xml");
		}
		catch(e)
		{
			alert(e.message)
		}
	}

	var root        = xmlDoc.getElementsByTagName('currentbroadcasts')[0];
	var broadcasts	= root.getElementsByTagName('broadcast');
	var aantalLiveUitzendingen = 0;

	var status = 'De huidige '+(secure=='1'?'besloten':'openbare')+' vergadering is gestopt.';

	for (var iBroadcast=0; iBroadcast < broadcasts.length; iBroadcast++)
	{
		var broadcast = broadcasts[iBroadcast];

		var locatie		= (broadcast.getElementsByTagName('locatie')[0].firstChild?broadcast.getElementsByTagName('locatie')[0].firstChild.nodeValue:'');
		var vergadering	= (broadcast.getElementsByTagName('vergadering')[0].firstChild?broadcast.getElementsByTagName('vergadering')[0].firstChild.nodeValue:'');
		var agendapunt	= (broadcast.getElementsByTagName('agendapunt')[0].firstChild?broadcast.getElementsByTagName('agendapunt')[0].firstChild.nodeValue:'');
		var secure		= (broadcast.getElementsByTagName('secure')[0].firstChild?broadcast.getElementsByTagName('secure')[0].firstChild.nodeValue:'');
		var starttime	= (broadcast.getElementsByTagName('starttime')[0].firstChild?broadcast.getElementsByTagName('starttime')[0].firstChild.nodeValue:'');
		var stoptime	= (broadcast.getElementsByTagName('stoptime')[0].firstChild?broadcast.getElementsByTagName('stoptime')[0].firstChild.nodeValue:'');
		var url			= (broadcast.getElementsByTagName('url')[0].firstChild?broadcast.getElementsByTagName('url')[0].firstChild.nodeValue:'');

		if (vergadering != '0')
		{
			aantalLiveUitzendingen++;
		
			if (vergadering == MEETING)
			{
				//Dit is de vergadering die we nu aan het bekijken zijn...
				status = 'De huidige '+(secure=='1'?'besloten':'openbare')+' vergadering (<a href="'+url+'">'+vergadering+'</a>) ';
				//'0000-00-00 00:00:00' => bezig met uitzenden, er is nog geen eindtijd bekend.
				if (stoptime == '0000-00-00 00:00:00')
				{
					status += 'loopt';
				}
				else
				{
					status += 'is gepauzeerd';
				}
				status += '<br/>';
			}
			else
			{
				//...
				status += 'Er is nog een andere vergadering (<a href="'+url+'">'+vergadering+'</a>) bezig:';
			}
		}



	}
		statusmsg += status+'<br/>';//+'['+locatie+'] vergadering='+vergadering+', agendapunt='+agendapunt+', '+(secure=='1'?'besloten':'openbaar')+', <br/>';
	
	statusmsg += 'Aantal live uitzendingen: '+aantalLiveUitzendingen+'<br/>';

	
	return statusmsg;
}



function update_status(response)
{
	var message = parseXML_status(response);

//	message += 'meeting='+MEETING+', fragment='+FRAGMENT+'<br/>';



	var dummy = response.replace(/</g,'&lt;');
	dummy = dummy.replace(/>/g,'&gt;');

	message += '<pre>'+dummy+'</pre>';

/*
	switch(response)
	{
		case "0":
			message = "Nergens mee bezig";
			break;
		case "1":
			message = "Afspelen";
			break;
		case "2":
			message = "<p>De uitzending is gepauseerd.</p>";
			break;
		default:
			message = "Onbekend ("+response+")";
	}
*/
	update_id('status_uitzending', message);
}

function get_status()
{
	if(ISLIVE == 1)
	{
		aplx_call_by_uri("/modules/risbis/risbis.php?g=get_status", update_status);
	}
}

function process_speaker()
{
	if(ISLIVE == '0' && FRAGMENT != '0')
	{
		get_speaker();
	}
}
function write_speaker()
{
	var obj		=	SPEAKERS['id' + TIMEINDEXES['sp' + CURRENTSPEAKER].speaker];
	if(obj)
	{
		var resp	=	'<h3>Aan het woord:</h3>';
		if(obj.img != '')
		{
			resp	+=	obj.img;
		}
		
		resp	+=	'<p class="right"><strong>';
		resp	+=	obj.name;
		resp	+=	'</strong><br />';
		resp	+=	obj.group;
		resp	+=	'<br />';
		resp	+=	obj.p;
		resp	+=	'</p>';
		
		update_spreker(resp);
	}
}


function onload_meeting()
{
	var tables			=	document.getElementsByTagName('table');
	var activeElement	=	false;
	for (var i=0;i<tables.length;i++)
	{
		if(tables[i].className=='hilite')
		{
			var trs=tables[i].getElementsByTagName('tr');
			for(var j=0;j<trs.length;j++)
			{
				if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT')
				{
					var id		=	trs[j].getAttribute('id');
					if(id.indexOf('agendapunt') != -1)
					{
						var uri	= new String(document.location);
						uri = uri.replace ('http://', '');
						uri = uri.split ('/');
						if (!uri[6])
						{
							var as	=	trs[j].getElementsByTagName('A');
							for(var k=0;k < as.length;k++)
							{
								var temp = as[k].parentNode.parentNode.id;
								var temp = temp.split('_');
								if (temp[1] != 0)
								{
									var id = as[k].parentNode.parentNode.id;
									var id	=	id.replace(/agendapunt/g,'');
									var idx	=	id.split('_');
									set_active(idx[0],idx[1],true);
									activeElement = true;
									return;
								}
							}
						}
					}
				}
			}
			if (!activeElement)
			{
				for(var j=0;j<trs.length;j++)
				{
					if(trs[j].className == 'actief')
					{
						var tr_id		=	trs[j].getAttribute('id');
						if(tr_id.indexOf('agendapunt') != -1)
						{
							var ids = tr_id.split('_');
							if (ids[1] != 0)
							{
								var id	=	tr_id.replace(/agendapunt/g,'');
								var idx	=	id.split('_');
								set_active(idx[0],idx[1],false);
								return;
							}
						}
					}
				}
			}
		}
	}
}

var security_level = '';
var oldStatus1 = '';
var oldStatus2 = '';

function get_security_level()
{
	aplx_call_by_uri("/modules/risbis/risbis.php?g=get_security_level", check_security);
}

function check_security(level)
{
	security_level = level;
}

function get_media_status()
{
	aplx_call_by_uri("/modules/risbis/risbis.php?g=get_status_media", check_media);
	// settimeout staat nu op 5 sec voor test, moet worden aangepast naar 30
	setTimeout("get_media_status()", 5000);
}

function check_media(status)
{
	// status is een string -> '1|0'
	var status1 = status.substr(0, 1);
	var status2 = status.substr(2, 1);
	
	// status1 bepaalt de actie voor locatie 1
	if (document.getElementById('live'))
	{
		switch (status1)
		{
			case '0':
				if (oldStatus1 == 0)
				{
					document.getElementById('live').style.display = 'none';
				}
				break;
			case '1':
				// afspelen
				if (oldStatus1 == 3 || oldStatus1 == 0)
				{
					aplx_call_by_uri("/modules/risbis/risbis.php?g=get_url_mediaplayer&status=openbaar&locatie=1", change_media_1);
					document.getElementById('live').style.display = 'block';
				}
				break;
			case '2':
				// pauze
				break;
			case '3':
				// besloten
				if ((security_level > 0) && (oldStatus1 == 1 || oldStatus1 == 0))
				{
					aplx_call_by_uri("/modules/risbis/risbis.php?g=get_url_mediaplayer&status=besloten&locatie=1", change_media_1);
					document.getElementById('live').style.display = 'block';
				}
				else if ((oldStatus1 == 1 || oldStatus1 == 0))
				{
					document.getElementById('live').style.display = 'none';
				}
				break;
		}
	}
	oldStatus1 = status1;
	
	// status2 bepaalt de actie voor locatie 2
	if (status1 == 0)
	{
		if (document.getElementById('live_audio'))
		{
			switch (status2)
			{
				case '0':
					if (oldStatus2 == 0)
					{
						document.getElementById('live_audio').style.display = 'none';
					}
					break;
				case '1':
					// afspelen
					if (oldStatus2 == 3 || oldStatus2 == 0)
					{
						aplx_call_by_uri("/modules/risbis/risbis.php?g=get_url_mediaplayer&status=openbaar&locatie=2", change_media_2);
						document.getElementById('live_audio').style.display = 'block';
					}
					break;
				case '2':
					// pauze
					break;
				case '3':
					// besloten
					if ((security_level > 0) && (oldStatus2 == 1 || oldStatus2 == 0))
					{
						aplx_call_by_uri("/modules/risbis/risbis.php?g=get_url_mediaplayer&status=besloten&locatie=2", change_media_2);
						document.getElementById('live_audio').style.display = 'block';
					}
					else if ((oldStatus2 == 1 || oldStatus2 == 0))
					{
						document.getElementById('live_audio').style.display = 'none';
					}
					break;
			}
		}
	}
	else
	{
		if (document.getElementById('live_audio'))
		{
			switch (status2)
			{
				case '0':
					// text 'Of luister live mee' display = none
					document.getElementById('live_audio').style.display = 'none';
					break;
				case '1':
					document.getElementById('live_audio').style.display = 'block';
					break;
				case '3':
					if (security_level > 0)
					{
						document.getElementById('live_audio').style.display = 'block';
					}
					else
					{
						document.getElementById('live_audio').style.display = 'none';
					}
					break;
			}
		}
	}
	oldStatus2 = status2;
}

function change_media_1(url)
{
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		// option 1: IE
		player1 = document.getElementById('MediaPlayer');
		player1.filename = url;
	}
	else
	{
		// option 2: firefox
		player1 = document.getElementById('MediaPlayer2');
		player1.data = url;
	}
}

function change_media_2(url)
{
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		// option 1: IE
		player2 = document.getElementById('MediaPlayer_audio');
		player2.filename = url;
	}
	else
	{
		// option 2: firefox
		player2 = document.getElementById('MediaPlayer2_audio');
		player2.data = url;
	}
}

