/* start the onload handler once, when the document is ready. */
$j(document).ready(onloadHandler);

/* log htmlplayer events with google analytics.*/
$j(document).ready(
    function()
    {
        // if(typeof(ISLIVE) == 'undefined')
        // {
            $j('#html5video')
            .live('play',
                  function()
                  {
                    var video = gethtml5videoname();
                    if (video)
                    {
                        _gaq.push(['_trackEvent', 'Video Plays', video, document.location.href]);
                    }
                  })
            .live('timeupdate',
                  function()
                  {
                    var video = gethtml5videoname();
                    if (video)
                    {
                        var current = $j("#html5video").attr('currentTime');
                        var duration = $j("#html5video").attr('duration');
                        var percentage = (current/duration*100).toFixed(0);
                        current = current.toFixed(0);
                        if( typeof(this.state) == 'undefined')
                        {
                            this.state = 0;
                        }
                        if (percentage >= this.state*25)
                        {
                            _gaq.push(['_trackEvent', 'Percentage Played', video, document.location.href, percentage]);
                            _gaq.push(['_trackEvent', 'Seconds Played', video, document.location.href, current]);
                            this.state += 1;
                        }
                    }
                  })
        // }

        if (typeof(ISLIVE) != 'undefined' && ISLIVE == 1)
        {
            update_live_viewers();
        }
    }
)

function update_live_viewers()
{
    var meeting = $j('#meeting_object_id').attr('value');

    if (meeting)
    {
        if ( (player != undefined && player.getConfig().state == "PLAYING") ||
             (htmlplayer != undefined && htmlplayer.paused == false && htmlplayer.currentTime > 0) )
        {
            $j.post('/modules/risbis/risbis.php',
                    {'g' : 'update_live_viewers', 'meeting' : meeting});
            /** _gaq.push(['_trackEvent', 'livekijker', document.title]); **/
        }
        setTimeout("update_live_viewers ();", 20000);
    }
}


function gethtml5videoname()
{
    var video = $j("#html5video").attr('src');
    if(typeof(ISLIVE) == 'undefined' && video)
    {
        video = video.match(/\/mp4:(.*)playlist.m3u8/);
        video = video[1];
        var offset = $j('#offset').attr('value');
        video = '/' + video + offset;
        return video;
    }
    else
    {
        return video;
    }
}

var state;
var speaker_time;
var player;
var htmlplayer;
var player_currentPosition;
var isFlash = false;



function playerReady(obj)
{
	player = document.getElementById(obj.id);
	if(!isFlash)
	{
		isFlash = true;
	}

	player.addModelListener("TIME", "timeupdate");

	setTimeout("set_speakers_timeindexes ();", 1000);

	if (typeof(ISLIVE) == 'undefined')
	{
		do_poll();
	}
	else
	{
		setTimeout("player_state();", 15000);
	}
}

function player_state()
{
	MEETING = document.getElementById('meeting_object_id');
	var check = false;
	if(typeof(htmlplayer) != 'undefined')
	{
		if(htmlplayer.paused == false && htmlplayer.currentTime > 0)
		{
			MEETING 		= MEETING.value;
			var streamer 	= htmlplayer.src;
			aplx_call_by_uri("/modules/risbis/risbis.php?g=check_state&meeting="+MEETING+"&streamer="+streamer, MEETING,streamer, callback_player_state);
			return;
		}
		setTimeout("player_state();", 5000);
	}

	if(typeof(player) != 'undefined')
	{
		if (player.getConfig().state == "PLAYING" && MEETING)
		{
			MEETING 		= MEETING.value;
			var streamer 	= player.getConfig().streamer;
			aplx_call_by_uri("/modules/risbis/risbis.php?g=check_state&meeting="+MEETING+"&streamer="+streamer, MEETING,streamer, callback_player_state);
			return;
		}
		setTimeout("player_state();", 15000);
	}
}

function callback_player_state(response)
{
	prohibited = document.getElementById("meeting_prohibited");
	if (prohibited)
	{
		if(response == "REFRESH")
		{
			location.reload(true);
		}

		// if(typeof(htmlplayer) != 'undefined' && response == "PROHIBITED" && prohibited.value == "1")
		// {
			// location.reload(true);
		// }

		if (typeof(htmlplayer) == 'undefined' && response == "RESUMED" && prohibited.value == "1")
		{
			prohibited.value = "0"
			removeMessage();
			player.sendEvent("STOP", "true");
			player.sendEvent("PLAY", "true");
		}
		else if (response == "PROHIBITED")
		{
			if(typeof(htmlplayer) != 'undefined')
			{
				location.reload(true);
			}

			generateMessage('Uitzending wordt momenteel besloten uitgezonden');
			prohibited.value = "1";
		}
		if(typeof(htmlplayer) != 'undefined')
			setTimeout("player_state();", 5000);
		else
			setTimeout("player_state();", 15000);
	}
}

function generateMessage(mssg)
{
	var message = document.getElementById('message');
	if(!message)
	{
		var live = document.getElementById('live');
		if (live)
		{
			var myElement = document.createElement('div');
			myElement.className = 'message';
			myElement.id = 'message';
			// myElement.innerHTML = '<h2>Info</h2><p>Uitzending wordt momenteel besloten uitgezonden.</p>';
			myElement.innerHTML = '<h2>Info</h2><p>'+mssg+'</p>';
			live.parentNode.insertBefore(myElement,live);
		}
	}
}

function removeMessage()
{
	var message = document.getElementById('message');
	if(message)
		message.parentNode.removeChild(message);
}

function timeupdate(event)
{
	player_currentPosition = event['position'];
}

function onloadHandler()
{
	live_uitzending();
	if( typeof(window.checkFlashVersion ) == 'function')
	{
		checkFlashVersion();
	}
	setTimeout("get_media_status()", 10000);
}

function update_live			(response) {update_id('live_film', response); }
function update_film			(response) {clear_films();update_id('film_'+AGENDAPUNT_ID, response);process_speaker();	}
function update_fragmenten		(response) {update_id('fragmenten_'+AGENDAPUNT_ID, response);				}
function update_spreker			(response) {update_id('aanhetwoord_'+AGENDAPUNT_ID, response);				}
function update_sprekers		(response) {update_id('sprekers_'+AGENDAPUNT_ID, response),set_height(); 				}
function agendapunt_documenten	(response) {update_id('agendapunt_documenten_'+AGENDAPUNT_ID, response); 	}
function gekoppelde_informatie	(response) {update_id('meerinformatie_'+AGENDAPUNT_ID, response); 			}

function html5Play()
{
	htmlplayer = document.getElementById('html5video');
	if(htmlplayer != 'undefined')
	{
		htmlplayer.play(); // does not work with ipad.
		if (typeof(ISLIVE) == 'undefined')
		{
			htmlplayer.addEventListener("loadedmetadata",html5MetaLoaded,false);
			htmlplayer.addEventListener("timeupdate",setStartTimeHtml5,false);
			setTimeout("set_speakers_timeindexes ();", 1500);
		}else
		{
			setTimeout("player_state();", 5000);
		}
	}
}

function html5MetaLoaded()
{
	// addCeu();
	var offset = document.getElementById('offset');
	setTimeout("setHtml5Time("+offset.value+");", 1000);
}
function addCeu()
{
	var offset	= document.getElementById('offset').value;
	var end		= document.getElementById('endTime').value;

	htmlplayer.addCueRange('html5video', 'html5video', offset, end, true, '', '');
}

function setStartTimeHtml5()
{
	var offset = document.getElementById('offset');
	if(offset.value > htmlplayer.currentTime)
		setHtml5Time(offset.value);

	player_currentPosition = htmlplayer.currentTime;
	return true;
}

function setHtml5Time(time)
{
	if(htmlplayer != 'undefined' && time > 0)
		htmlplayer.currentTime 		= time;
}

function sectomin(sec)
{
	var min		= Math.floor(sec / 60);
	var hours	= Math.floor(min / 60);
	var seconds	= (sec % 60);
	min			= (min % 60);
	alert('[h:i:s] ' + sec + ' ==> ' + hours + ':' + min + ':' + seconds);
}


var MEETING		=	0;
var FRAGMENT	=	0;
var SPEAKERS	=	'';
var TIMEINDEXES	=	'';
var NOTE_TO_UPDATE 	= null;
var NOTE_ID_UPDATE 	= 0;
var AGENDAPUNT_ID 	= null;
var RUNFIRSTTIME 	= true;

function live_uitzending()
{
	//make sure we only get here once
	if (arguments.callee.done)
	{
		return;
	}
	arguments.callee.done = true;

	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 (!isFlash)
	{
		setTimeout("set_speakers_timeindexes ();", 1500);

		if(typeof(ISLIVE) == 'undefined')
		{
			setTimeout("do_poll();",1500);
		}
	}

	if(typeof(ISLIVE) == 'undefined')
	{
		if (document.getElementById('agendapunten'))
		{
			onload_meeting();
		}
	}

	presentation_sheet();
}

function set_speakers_timeindexes ()
{
	if(typeof(document.MediaPlayer) != "undefined" || player != null)
	{
		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);
	}
}

function do_poll()
{
	if(typeof(document.MediaPlayer) != "undefined"  || player != null || htmlplayer != null)
	{
		get_speaker();
	}
	if (!isFlash)
	{
		setTimeout("do_poll();",1000);
	}
	else
	{
		setTimeout("do_poll();",200);
	}
}

function set_speakers(response)
{
	if(response != '')
	{
		SPEAKERS	=	eval("(" + response + ")");
	}
}

function set_timeindexes(response)
{
	if(response != '')
	{
		TIMEINDEXES	=	eval("(" + response + ")");

		process_speaker();
	}
    else
    {
		// clear time indexes because there are no known speakers.
        TIMEINDEXES = {"last" : "0"};
    }
}


function get_note(id, type, mode)
{
	var noteid = 'note' + id + '_' + type;
	var note = $(noteid);
	var uri		= new String(document.location);
	var uri		= escape(uri);
	var update 	= true;

	closeOtherNotes();

	if(note && mode != 'sluit')
	{
		note.removeClassName('note_hide');
		//get note div from server and place it in to the last td form the newNote(tr)
		if(note.down('td'))
		{
			NOTE_TO_UPDATE = note.down('td');
			NOTE_ID_UPDATE = noteid;
		}else
		{ // we gaan nu de vergadering notitie laten zien; dit is een div
			NOTE_TO_UPDATE = note;
			NOTE_ID_UPDATE = noteid;
		}

		aplx_call_by_uri("/modules/risbis/risbis.php?g=handle_note_ajax&mode="+mode+"&object_id="+id+"&object_type="+type+"&uri="+uri, 0, function(response){update_note(response, mode);});
	}else
	{
		/* Venster sluiten */
		var idx = new Array();
		idx[0] = id;
		idx[1] = type;
		iconControl(idx, mode);
	}
}

function closeOtherNotes()
{
	$$('.note').each(function(s, index)
	{
		if(s.up('tr'))
		{
			s.up('tr').addClassName('note_hide');
			var id = s.up('tr').getAttribute('id');
		}else
		{
			s.up('div').addClassName('note_hide');
			var id = s.up('div').getAttribute('id');
		}

		/* acties weer resetten */
		id = id.replace(/note/g,'');
		var idx	=	id.split('_');
		iconControl(idx, 'sluit');
	});
}

function update_note(response, mode)
{
	var id = "";
	if(null!=NOTE_TO_UPDATE)
	{
		NOTE_TO_UPDATE.update(response);
		id = NOTE_TO_UPDATE.getAttribute('id');
		id = id.replace(/note/g,'');
		var idx	=	id.split('_');

		update_note_links(idx);
		iconControl(idx, mode);
	}
}

function update_note_links(idx)
{
	var note = $('note'+idx[0]+'_'+idx[1]);

	$$('.notesave').each(function (s, index)
	{
		s.previous('li').hide();
		s.removeClassName('note_hide');
		s.onclick = function()
							{
								save_note(idx[0], idx[1]);
							}
	})

	if(note.down('.noteedit'))
	{
		var link = note.down('.noteedit').down('a');
		link.setAttribute('href','javascript:void(0)');
		link.onclick= function()
							{
								get_note(idx[0], idx[1],'bewerk');
							}
	}

	if(note.down('.notedelete'))
	{
		var link = note.down('.notedelete').down('a');
		link.setAttribute('href','javascript:void(0)');
		link.onclick= function()
							{
								get_note(idx[0], idx[1],'verwijder');
							}
	}
	if(note.down('.notehistorie'))
	{
		var link = note.down('.notehistorie').down('a');
		link.setAttribute('href','javascript:void(0)');
		link.onclick= function()
							{
								get_note(idx[0], idx[1],'historie');
							}
	}
	if(note.down('.historie_meer'))
	{
		var link = note.down('.historie_meer');
		link.setAttribute('href','javascript:void(0)');
		link.onclick=function()
							{
								get_note(idx[0], idx[1],'alles');
							}
	}

	if(note.down('.noteshare'))
	{
		var link = note.down('.noteshare').down('a');
		link.setAttribute('href','javascript:void(0)');
		link.onclick= function()
							{
								share_note(idx[0], idx[1]);
							}
	}

	if(note.down('.notesharelist'))
	{
		var link = note.down('.notesharelist').down('a');
		link.setAttribute('href','javascript:void(0)');
		link.onclick= function()
							{
								get_note(idx[0], idx[1], 'deellijst');
							}
	}
    if(note.down('.noteshow'))
	{
		var link = note.down('.noteshow').down('a');
		link.setAttribute('href','javascript:void(0)');
		link.onclick= function()
							{
								get_note(idx[0], idx[1], 'toon');
							}
	}
}

function iconControl(idx, mode)
{
	if($('notelink'+idx[0]+'_'+idx[1]+'_'+mode))
		var link = $('notelink'+idx[0]+'_'+idx[1]+'_'+mode);
	else if($('notelink'+idx[0]+'_'+idx[1]+'_toon'))
		var link = $('notelink'+idx[0]+'_'+idx[1]+'_toon');
	else
		var link = $('notelink'+idx[0]+'_'+idx[1]+'_sluit');

	if(link || mode == 'verwijder')
	{
		/* Bij normale gang van zaken komt hij hier altijd terecht,
			Echter komt hij hier niet altijd vanaf functie closeOtherNotes. */
		switch (mode)
		{
			case 'maak':
			case 'toon':
			case 'bewerk':
			case 'historie':
			case 'deellijst':
			case 'deel':
				link.setAttribute('id', 'notelink'+idx[0]+'_'+idx[1]+'_sluit');
				break;
			case 'sluit':
                var firstnote = $j('#note'+idx[0]+'_'+idx[1]+' .note:first');
				if(link.down().getAttribute('class')=='note_false' || firstnote.find('textarea').length || firstnote.hasClass('shared') || firstnote.hasClass('agendadocument') || firstnote.hasClass('deleted') )
					link.setAttribute('id', 'notelink'+idx[0]+'_'+idx[1]+'_maak');
				else
					link.setAttribute('id', 'notelink'+idx[0]+'_'+idx[1]+'_toon');
				break;
			case 'verwijder':
				if($('notelink'+idx[0]+'_'+idx[1]+'_toon'))
				{
					/* Bij verwijderen weet je zeker dat de notelink de actie toon bevat.
						Dit in verband met de reset actie. */
					var link = $('notelink'+idx[0]+'_'+idx[1]+'_toon');
					link.setAttribute('id', 'notelink'+idx[0]+'_'+idx[1]+'_sluit');
                    /*  if there are no other notes, change the icon to pen */
                    if ( $j('#note'+idx[0]+'_'+idx[1]+' .note').length <= 1)
                    {
                        link.down().removeClassName('note_true');
                        link.down().addClassName('note_false');
                    }
				}
				break;
			case 'opslaan':
				link.setAttribute('id', 'notelink'+idx[0]+'_'+idx[1]+'_sluit');
				link.down().removeClassName('note_false');
				link.down().addClassName('note_true');
				break;
		}
	}
}

function save_note(id, type)
{
	var noteTr 		= $('note'+ id + '_' + type);
	var notediv 	= noteTr.down('div');
	var uri			= new String(document.location);
	var uri			= escape(uri);
	NOTE_TO_UPDATE 	= notediv.up();
	if(notediv)
	{
		var notitie 	= notediv.down('textarea').value;

		jQuery.post("/modules/risbis/risbis.php?g=handle_note_ajax&mode=opslaan&object_id="+id+"&object_type="+type+"&uri="+uri,
			{note: notitie},
			function(response){update_note(response, 'opslaan');}
		);

		// aplx_call_by_uri("/modules/risbis/risbis.php?g=handle_note_ajax&mode=opslaan&object_id="+id+"&note="+note+"&object_type="+type+"&uri="+uri, 0, function(response){update_note(response, 'opslaan');});
	}
}

function share_note(id, type)
{
	var noteTr 		= $('note'+ id + '_' + type);
	var notediv 	= noteTr.down('div');
	var uri			= new String(document.location);
	var uri			= escape(uri);
	NOTE_TO_UPDATE 	= notediv.up();

    var data = { 'ontvanger[]' : []};
    $j("input[name='ontvanger[]']:checked").each(function() {
      data['ontvanger[]'].push($j(this).val());
    });

	if(notediv)
	{
		jQuery.post("/modules/risbis/risbis.php?g=handle_note_ajax&mode=delen&object_id="+id+"&object_type="+type+"&uri="+uri, data,
			function(response){update_note(response, 'deel');}
		);
	}
}

function convert_load_PDF(bestand, objectid, locatie)
{
	var uri			= new String(document.location);
	var uri			= escape(uri);

	jQuery.post("/modules/risbis/risbis.php?g=convert_pdf&object_id="+objectid+"&uri="+uri,
		{ file: bestand, location: locatie},
		function(response){display_converted_pdf(response);}
	);
}

function display_converted_pdf(response)
{
	document_div = document.getElementById("notitie_document_img");
	if (document_div);
		document_div.update(response);
}

function set_active(id,fragment_id,update_movie)
{
	update_spreker(' ');
    CURRENTSPEAKER = -1; // reset current speaker, otherwise "aan het woord" may not update probably.

	if (fragment_id)
	{
		update_live('');
		document.getElementById('live_film').className = 'hide';
	}
	else
	{
		if (document.getElementById('live_film').className == 'hide')
		{
			document.getElementById('live_film').className = '';
			aplx_call_by_uri("/modules/risbis/risbis.php?g=get_live_html", update_live);
		}
	}

	$$('#agendapunten div.attachement').each(function(s, index)
	{
		s.removeClassName('show');
		s.addClassName('hide');
	});
	hide_explanation();

	AGENDAPUNT_ID = id;

	var current_agendapunt = $('attachements_'+id);
	current_agendapunt.removeClassName('hide');
	current_agendapunt.addClassName('show');

	// $$('tr.actief td').each(function(s, index)
	// {
		// s.style.borderBottom = 'none';
	// });

	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');
		open_explanation(ap);
	}
	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);

		uri2 = uri.replace ('http://', '');
		uri2 = uri2.split ('/');

		var uri		=	escape(uri);
		FRAGMENT	=	fragment_id;

		if (update_movie)
		{
			if(uri2[8] && RUNFIRSTTIME == true)
			{
				// fix: Wel javascript en verwijzing rechtstreeks naar spreker fragment.
				RUNFIRSTTIME = false;
			}else{
				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, time)
{
	if (isFlash)
	{
		speaker_time = time;
		if (player.getConfig && player.getConfig().state != "PLAYING")
		{
			player.sendEvent('PLAY', 'true');
			setTimeout ('setSpeakerTime ()', 800);
		}
		else
		{
			player.sendEvent('SEEK', speaker_time);
		}
	}
	else
	{
		if(htmlplayer != 'undefined')
		{
			setHtml5Time(time);
		}
		else
		{
			var obj_id	=	obj.getAttribute('id');
			var id_arr	=	obj_id.split("_");
			var film_id =	id_arr[1];
			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+"&film_id="+film_id, MEETING, update_film);
		}
	}
}

function setSpeakerTime ()
{
	player.sendEvent('SEEK', speaker_time);
}

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;
	var seconds;
	//windows mediaplayer
	if(typeof(document.MediaPlayer) != "undefined" && typeof(document.MediaPlayer.CurrentPosition) != "undefined" && TIMEINDEXES != '')
	{
		seconds	=	Math.round(document.MediaPlayer.CurrentPosition);
	}

	//flashplayer
	if(typeof(player_currentPosition) != "undefined" && TIMEINDEXES != '')
	{
		seconds	=	Math.round(player_currentPosition);
	}

	if(!isNaN(seconds))
	{
		var last		=	TIMEINDEXES.last;
		if(seconds > last)
		{
			update_spreker('');
		}
		else if (CURRENTSPEAKER > -1 && TIMEINDEXES['sp' + CURRENTSPEAKER] && seconds < TIMEINDEXES['sp' + CURRENTSPEAKER].start)
		{
			if (CURRENTSPEAKER > -1)
			{
				var sf_li = document.getElementById('sf_' + TIMEINDEXES['sp' + CURRENTSPEAKER].sf_id);

				if (sf_li)
				{
					sf_li.className = '';
				}
			}


			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 || !TIMEINDEXES['sp' + CURRENTSPEAKER])
		{
			if (TIMEINDEXES['sp0'] && 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 (TIMEINDEXES['sp' + CURRENTSPEAKER] && seconds > TIMEINDEXES['sp' + CURRENTSPEAKER].stop)
		{
			if (CURRENTSPEAKER > -1)
			{
				var sf_li = document.getElementById('sf_' + TIMEINDEXES['sp' + CURRENTSPEAKER].sf_id);

				if (sf_li)
				{
					sf_li.className = '';
				}
			}

			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();
			}
		}
        else if (TIMEINDEXES['sp' + CURRENTSPEAKER] && TIMEINDEXES['sp' + CURRENTSPEAKER].start <= seconds && seconds <= TIMEINDEXES['sp' + CURRENTSPEAKER].stop)
        {
            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);
	var dummy 	= response.replace(/</g,'&lt;');
	dummy 		= dummy.replace(/>/g,'&gt;');

	message += '<pre>'+dummy+'</pre>';
	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(typeof(ISLIVE) == 'undefined' && FRAGMENT != '0')
	{
		get_speaker();
	}
}
function write_speaker()
{
	var sf_li = $('sf_' + TIMEINDEXES['sp' + CURRENTSPEAKER].sf_id);
	if (sf_li)
	{
		sf_li.addClassName('active_sf');

		var persons = $('persons_' + AGENDAPUNT_ID);

		var newOffset = sf_li.offsetTop - 175;

		if (newOffset < 0)
		{
			newOffset = 0;
		}

		persons.scrollTop = newOffset;
	}

	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>';

        if ( this.resp_prev != resp || this.ag_prev != AGENDAPUNT_ID || this.cur_prev != CURRENTSPEAKER )
        {
            // in IE, without caching, the image is reloaded each time the "aan het woord" div is updated,
            // causing flickering and unneccesary bandwidth drain. To prevent this we only update when needed.
            this.resp_prev = resp;
            this.ag_prev = AGENDAPUNT_ID;
            this.cur_prev = CURRENTSPEAKER;

            update_spreker(resp);
        }
	}
}

function onload_meeting()
{
	var activeElement	=	false;

	var uri	= new String(document.location);
	uri = uri.replace ('http://', '');
	uri = uri.split ('/');

	if (!uri[6] && $$('#agendapunten h3 a')[0])
	{
		var agendapunt_id = $$('#agendapunten h3 a')[0].parentNode.parentNode.parentNode.id;
		var temp = agendapunt_id.split('_');

		if (temp[1] != 0)
		{
			var agendapunt_id	=	agendapunt_id.replace(/agendapunt/g,'');
			var idx	=	agendapunt_id.split('_');
			set_active(idx[0],idx[1],true);
			activeElement = true;
			return;
		}
	}

	if(!activeElement && $$('#agendapunten li.actief h3 a')[0])
	{
		var agendapunt_id =$$('#agendapunten li.actief h3 a')[0].parentNode.parentNode.parentNode.id;

		var agendapunt_id	=	agendapunt_id.replace(/agendapunt/g,'');
		var idx	=	agendapunt_id.split('_');
		set_active(idx[0],idx[1],true);
		activeElement = true;
		return;
	}
}

var security_level = 0;
var oldStatus1 = '';
var oldStatus2 = '';
var oldAgenda1 = '';
var oldAgenda2 = '';
var loc_nr = 1;

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("get_media_status()", 10000);
}

function check_media(response)
{
	try
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(response);
	}
	catch(e)
	{
		try
		{
			xmlDoc = (new DOMParser()).parseFromString(response, "text/xml");
		}
		catch(e)
		{
			// alert(e.message)
			return;
		}
	}

	var root    	= xmlDoc.getElementsByTagName('streams')[0];
	var streams		= root.getElementsByTagName('stream');
	var playerState = getPlayerState();
	var meetingId 	= getMeetingId();
	var status 		= 1;

	if (meetingId != 0)
    {
        if (streams.length > 0)
        {
            for(var i = 0; i < streams.length; i++)
            {
                var stream 		= streams[i];
                var sStatus		= (stream.getElementsByTagName('status')[0].firstChild?stream.getElementsByTagName('status')[0].firstChild.nodeValue:'');
                var sMeetingId	= (stream.getElementsByTagName('meeting')[0].firstChild?stream.getElementsByTagName('meeting')[0].firstChild.nodeValue:'');

                if(meetingId != sMeetingId)
                {
                    // controleren of de player ook speelt
                    // anders overschrijven we de playerstate + status.
                    // Als er nog geen player aanwezig is komen we hier ook.
                    if(playerState != 'PLAYING')
                    {
                        playerState = 'NA';
                        status		= sStatus;
                    }
                }
                else
                {
                    // bewaar status van huidige weergave vergadering
                    // dus niet overschrijven met een eventuele tweede uitzending die bijvoobeeld op pauze staat.
                    status = sStatus;
                }
            }
            handleState(status, playerState);
        }
        else if (meetingId == 0 || (typeof(ISLIVE) != 'undefined' && ISLIVE == 1 ))
        {
            if(typeof(player) != 'undefined')
            {
                if(playerState == 'PLAYING')
                {
                    player.sendEvent("STOP", "true"); // set to IDLE
                }
                handleState('0', 'IDLE');
            }
            if(typeof(htmlplayer) != 'undefined')
            {
                if(playerState == 'PLAYING')
                {
                    htmlplayer.pause(); // set to IDLE
                }
                handleState('0', 'IDLE');
            }
        }
    }
}

function handleState(status, playerState)
{
	switch (status)
	{
		case '0':
			if(isMessagePresent())
			{
				removeMessage();
			}
			if(playerState == 'IDLE')
			{
				generateMessage('De vergadering is gestopt.');
			}
			break;
		case '1':
			if(playerState == 'PLAYING' && isMessagePresent())
			{
				removeMessage(); // vergadering gaat verder
			}
			if(playerState == 'NA' || playerState == 'IDLE')
			{
				location.reload(true); // Andere vergadering start..
			}
			break;
		case '2':
			// pauze
			if(playerState == 'NA')
			{
				location.reload(true);
			}
			if(playerState == 'PLAYING')
			{
				generateMessage('Op dit moment is de vergadering geschorst.');
			}
			break;
		case '3':
			// besloten
			break;
	}
}


function getMeetingId()
{
	var meetingId 	= 0;
	var meeting 	= document.getElementById('meeting_object_id');
	if(meeting) 	meetingId = meeting.value;
	return meetingId;
}

function isMessagePresent()
{
	if(document.getElementById('message'))
		return true;
	return false;
}

function getPlayerState()
{
	var playerState = 'NA'; // NA = not available
	if(typeof(htmlplayer) != 'undefined')
	{
        if (htmlplayer.paused)
        {
            playerState = 'PAUSED';
        }
        else if (htmlplayer.ended)
        {
            playerState = 'IDLE';
        }
        else
        {
            playerState = 'PLAYING';
        }
	}
	if(typeof(player) != 'undefined')
	{
		// IDLE, BUFFERING, PLAYING, PAUSED
		playerState = player.getConfig().state;
	}
	return playerState;
}

function change_media(url)
{
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		// option 1: IE
		if (loc_nr == 1)
			player = document.getElementById('MediaPlayer')
		else
			player = document.getElementById('MediaPlayer_audio');
		player.filename = url;
	}
	else
	{
		// option 2: firefox
		if (loc_nr == 1)
			player = document.getElementById('MediaPlayer2')
		else
			player = document.getElementById('MediaPlayer2_audio');
		player.data = url;
	}
}

function clear_films()
{
	if(typeof(document.MediaPlayer) != "undefined")
	{
		document.MediaPlayer.Stop();
	}

	var divs = document.getElementsByClassName("film");
	if (divs)
	{
		for(i=0;i<divs.length;i++)
		{
			divs[i].innerHTML = '';
		}
	}
}

/* fix height */
function set_height()
{
	//Haal browser informatie op, check is eigenlijk alleen bedoeld voor IE6.
	var browser=navigator.appName;
	var b_version=navigator.appVersion;
	var version=parseFloat(b_version);
	if ((browser=="Netscape"||browser=="Microsoft Internet Explorer")  && (version>=4)){


		var current_attachement_div = $$('#attachements_'+AGENDAPUNT_ID+' .persons')[0];
		var current_spreker_div = $$('#sprekers_'+AGENDAPUNT_ID)[0];
		if(current_spreker_div.innerHTML == '')
		{
			current_attachement_div.style.height = '0px';
		}
	}
}

function hide_explanation()
{
	if(typeof($j) != 'undefined')
	{
		$j('.toelichting').css('display','none');
	}
}

function open_explanation(obj)
{
	if(typeof($j) != 'undefined')
	{
		$j(obj).find('.toelichting').css('display','block');
	}
}


var SHEETS = {};

function presentation_sheet()
{
	$j("#presentation").append('<img id="presentation_sheet" src="/todo.jpg" title="klik om te vergroten/verkleinen" alt="laden..." class="normal_sheet" onclick="togglesize(this)" />');

	poll_presentation_sheet();
}

function update_image(src, alt)
{
	if (src == "")
	{
		remove_image();
		return;
	}

    update_position_presentation();
	$j('#presentation').removeClass('leeg');
	$j('#presentation_sheet').attr("src", src);
	$j('#presentation_sheet').attr("alt", alt);
}

function remove_image()
{
	update_image('/md/empty.jpg', 'leeg');
	$j('#presentation').addClass('leeg');
}


function update_presentation_sheet(response)
{
	if(response != '')
	{
		var presentation_json = eval("(" + response + ")");
		update_image(presentation_json.src, presentation_json.alt);
	}
}

function update_sheet(response)
{
	if(response != '')
		SHEETS = eval("(" + response + ")");
}

function poll_presentation_sheet()
{
	if (typeof(ISLIVE) == 'undefined')
	{
		// archief
		aplx_call_by_uri("/io4/studio_flash/presentation.php?action=json_sheets&agendapunt="+AGENDAPUNT_ID, update_sheet);
		poll_presentation_sheet_archive();
	}
	else
	{
		// live uitzending
		poll_presentation_sheet_live();
	}
}

function poll_presentation_sheet_live()
{
	//live uitzending
	aplx_call_by_uri("/io4/studio_flash/presentation.php?action=get_json_current&vergadering="+$j("#meeting_object_id").val(), update_presentation_sheet);
	setTimeout("poll_presentation_sheet_live();",2000);
}

function poll_presentation_sheet_archive()
{
	update_presentation();
	setTimeout("poll_presentation_sheet_archive();",2000);
}

function togglesize(elm)
{
	$j(elm).toggleClass("normal_sheet");
	$j(elm).toggleClass("large_sheet");
}

function update_presentation()
{
	var seconds;
	//windows mediaplayer
	if(typeof(document.MediaPlayer) != "undefined" && typeof(document.MediaPlayer.CurrentPosition) != "undefined")
	{
		seconds	=	Math.round(document.MediaPlayer.CurrentPosition);
	}

	//flashplayer
	if(typeof(player_currentPosition) != "undefined")
	{
		seconds	=	Math.round(player_currentPosition);
	}

	var sheet = getpresentatie(seconds);
	if (sheet)
		update_image(sheet.img, sheet.desc);
	else
		remove_image();
}

function getpresentatie(reltime)
{
	var sheet;
	for(var i in SHEETS)
	{
		sheet = SHEETS[i];
		if ( (sheet.start <= reltime) && (sheet.stop >= reltime) )
			return sheet;
	}
	return false;
}

function update_position_presentation()
{
    var player_object = null;
    if (typeof(document.MediaPlayer) != "undefined")
    {
        player_object = document.MediaPlayer;
    }
    if (typeof(htmlplayer) != "undefined")
    {
        player_object = htmlplayer;
    }
    if (typeof(player) != "undefined")
    {
        player_object = player;
    }

    if (player_object != null)
    {
        var jqplayer = $j(player_object);
        var position = jqplayer.offset();
        var width = jqplayer.width();
        var height = jqplayer.height();
        if (typeof(ISLIVE) != 'undefined' && ISLIVE == 1)
        {
            if ($j('#uitzending').length)
            {
                uitzending = $j('#uitzending');
            }
            else
            {
                uitzending = $j('#live');
            }
        }
        else
        {
            uitzending = $j('#attachements_'+AGENDAPUNT_ID+' .filmcontent');
            if (existssheet() )
            {
                $j('#attachements_'+AGENDAPUNT_ID).css({'min-height' : height+125});
            }
        }

        if ( uitzending.find('#presentation').length == 0)
        {
            $j('#presentation').detach().appendTo(uitzending);
        }
    }
}

function existssheet()
{
	var sheet;
	for(var i in SHEETS)
	{
        return true;
    }
    return false;
}

$j(document).ready(function()
{
    var isiPad = navigator.userAgent.match(/iPad/i) != null;
    if (isiPad)
    {
        $j('#document_legend.active')
        .click(function()
               {
                   if (typeof(this.state) == 'undefined' || this.state==0)
                   {
                        this.state = 1;
                        $j('#document_legend.active ul').css({'display': 'none'});
                        $j('#document_legend.active h3').css({'border': '1px solid #FFFFFF'});
                   }
                   else
                   {
                        this.state = 0;
                        $j('#document_legend.active ul').css({'display': 'block', 'left': 'auto', 'right': '-96px'});
                        $j('#document_legend.active h3').css({'border': '1px solid #CCCCCC', 'border-bottom': '1px solid #FFFFFF'});
                   }
               });
    }
});
