/*

This file is the core of the js audioplayer controls


Coded for NotuBiz, 2005
Recoded for new NotuBiz system, 2007
*/


oldvolume=50;
mute=false;
ispause=false;
isplay=false;
AX=true;
currentjump=0; // current notule id (indexed item, used for jumping between indexed items)
i=0;
niePos=0,nieStart=false,nieFull=false; // some vars for NonActiveX supported browsers
percentage=0;
jumpval=false;
jumpcomplete=true;
curspreker=0;
curagenda=0;
lastval=0;
gUsage=''; // gebruikt voor type knoppen, donker of wit
naxVolumeWarning=false; // gebruikt om 1-malig een melding naar niet activeX browsers te geven bij het wijzigen van het volume
systemType="basis"; // systeem dat gebruikt wordt, keuze uit basis & volledig
playerType=""; // type van player, wordt gezet op audio of video
timeShowType="normal"; // kan normal of reversed zijn, de manier waarop de tijd in de player getoond wordt (AX only)

playIcon=""; // registreerd welke playIcon op dit moment gebruikt wordt


var aspectRatio='4.3'; // default aspectRatio
var videoHeight=0;


// check for WMP7 and activeX, if not available, display non activeX version
var IE    = (navigator.userAgent.indexOf("MSIE") != -1);
var WMP7;
if (IE)
{
     WMP7 = new ActiveXObject('WMPlayer.OCX');
}
if (! WMP7)
    AX=false;
if (! IE)
    AX=false;


function setSystem(nSystemType)
{
    systemType=nSystemType;
}

function init()
{
    if(AX)
        CheckMe();
    else
	CheckMeNonMSIE();
}

function getSecond(notule)
{
    return timestr[notule];
}


function getAgenda()
{
    retval="";
    if(AX)
    {
	curtime=parseInt(document.getElementById("Player").controls.currentPosition);
	for (var n in agendaid)
	{
	    if(curtime>=agendastart[n])
	    {
		retval=agendatitel[n];
	    }
	    lastval=n;
	}
    }
    else
    {
	for (var n in agendaid)
	{
	    if(niePos>=agendastart[n])
	    {
		retval=agendatitel[n];
	    }
	    lastval=n;
	}
    }
    return retval;
}



function getSpreker()
{
    if(AX)
    {
	foundlast=false
	lastval=0;
	retval=0;
	
	if(document.getElementById("Player").controls && document.getElementById("Player").controls.currentPosition)
	{
	    curtime=parseInt(document.getElementById("Player").controls.currentPosition);


	    for (var n in sprekerid)
	    {
	        if(timestr[n]>=(curtime+1) && ! foundlast && sprekerid[lastval]!=0)
		{
		    retval=sprekerid[lastval];
		    foundlast=true;
	        }
		else
		{	
		    if(!foundlast)
			lastval=n;
		}
	    }
	}
	if( ! retval)	// nodig voor laatste agendapunt
	    retval=sprekerid[n];
    }
    else
    {
	foundlast=false
	retval=0;
	lastval=0;
	for (var n in sprekerid)
	{
	    if(timestr[n]>=niePos && ! foundlast && sprekerid[lastval]!=0)
	    {
		retval=sprekerid[lastval];
		foundlast=true;
	    }
	    else
	    {
		if (! foundlast)
	                        lastval=n;
	    }
	}
	if(! retval)	// nodig voor laatste agendapunt
	    retval=sprekerid[n];
    }

    return retval;
}

function debug(msg)
{
    document.getElementById('debug').innerHTML=document.getElementById('debug').innerHTML+msg+'<br />';
}

function CheckMeNonMSIE()
{
    //this function repeats itselves every second
    setTimeout("CheckMeNonMSIE()",1000);
    if(nieStart)
    {
	niePos++;
	playedhour= parseInt(niePos/3600);
	playedmin = parseInt((niePos-(playedhour*3600))/60);
	playedsec = parseInt( ((niePos-(playedhour*3600))-(playedmin*60)) );

	if(playedhour<10) playedhour="0"+playedhour;
	if(playedmin<10) playedmin="0"+playedmin;
	if(playedsec<10) playedsec="0"+playedsec;
	document.getElementById("audioplayer_btn2").innerHTML=playedhour+':'+playedmin+':'+playedsec;
	
	if(systemType=="volledig")
	{
	    // als er andere spreker is : 
	    ns=getSpreker();
	    if(curspreker != ns && ns != 0)
	    {
		loadSprekerInfo(ns);
	        curspreker=ns;
	    }
	}
	
	if(playerType=="audio")
	{
	    // kijken of er een ander agenda-item gespeeld word : 
	    ca=getAgenda();
	    if(curagenda != ca && ca != 0)
	    {
		// div van spreker wijzigen
	        curagenda=ca;
		document.getElementById('div_content_audiofragment').innerHTML=ca;
	    }
	}
	ChangeIcon('play','btn_4_active.gif');
    }else{
	// object is gestopt/ gepauseerd
	if(ispause)
	{
	    if(i==0)
		ChangeIcon('play','btn_4_'+gUsage+'.gif');
	    if(i==1)
		ChangeIcon('play','btn_4_active.gif');
	}
	else
	{
	    ChangeIcon('play','btn_4_'+gUsage+'.gif');
	}

    }
    
    
    // set vars so that some functionality can run every second instead of half second :
    if(i==1)
	i=0;
    else
	i=1;

}

function CheckMe()
{
    // this function repeats itselves every .5 second.
    // it shows the time (time played or time to play) and 
    // checks if the sound has been muted /
    setTimeout("CheckMe()", 500);
    
    
    if(document.getElementById("Player"))
    {
	// when stream is being buffered, dont display buttons, but show progress :
	if((document.getElementById("Player").Network && document.getElementById("Player").Network.bufferingProgress < 100 ) && (document.getElementById("Player").Network.bufferingProgress > 0 ) )
	{
	    showbuffering();
    	    // show buffer %
	    document.getElementById('controlbuffer').innerHTML='Opslaan in buffer : '+document.getElementById("Player").Network.bufferingProgress+'% voltooid';
	}
        else
	{
	    showbuttons();
	}
    
	curtime=0;
        if(timeShowType=="normal")
	{
	    if(document.getElementById("Player").controls && document.getElementById("Player").controls.currentPosition)
	    {
    	        curtime=document.getElementById("Player").controls.currentPosition;
    	        curhour=parseInt(curtime/3600);
	        curmin=parseInt( (curtime-(curhour*3600))/60);
    		cursec=parseInt( ((curtime-(curhour*3600))-(curmin*60))  );
    
	        if(cursec<10)
    		    cursec='0'+cursec;
		if(curmin<10)
    		    curmin='0'+curmin;
		if(curhour<10)
    		    curhour='0'+curhour;
		document.getElementById("audioplayer_btn2").innerHTML=curhour+':'+curmin+':'+cursec;
	    }
	}
	else
	{
	    if(document.getElementById("Player").controls && document.getElementById("Player").controls.currentPosition)
	    {
		totaltime=document.getElementById("Player").currentmedia.duration;
		curtime=document.getElementById("Player").controls.currentPosition;
		totime=totaltime-curtime;
	
	        curhour=parseInt(totime/3600);
	        curmin=parseInt( (totime-(curhour*3600))/60);
    		cursec=parseInt( ((totime-(curhour*3600))-(curmin*60))  );

	        if(cursec<10)
    		    cursec='0'+cursec;
		if(curmin<10)
    		    curmin='0'+curmin;
	        if(curhour<10)
    		    curhour='0'+curhour;
    
		document.getElementById("audioplayer_btn2").innerHTML=curhour+':'+curmin+':'+cursec;
	    }
	}
	// if file is playing, show other playbutton
	if(document.getElementById("Player").playState ==3)
	{
	    ChangeIcon('play','btn_4_active.gif');
	}
	else
	{
	    ChangeIcon('play','btn_4_'+gUsage+'.gif');
	}
  
        // when video is on pause, display a blinking play button :
	if(ispause && isplay)
        {
	    if(i==0)
		ChangeIcon('play','btn_4_'+gUsage+'.gif');
	    if(i==1)
	        ChangeIcon('play','btn_4_active.gif');
	}

	// als er andere spreker is : 
	if(systemType=="volledig")
        {
	    if(i==0)
    	    {
		ns=getSpreker();
    	        if(curspreker != ns && ns != 0 && curtime!=0)
		{
		    loadSprekerInfo(ns);
    	    	    curspreker=ns;
		}
	    }
	}

        if(playerType=="audio")
	{
	    // kijken of er een ander agenda-item gespeeld word : 
    	    ca=getAgenda();
	    if(curagenda != ca && ca != 0)
    	    {
	        // div van spreker wijzigen
	        curagenda=ca;
		document.getElementById('div_content_audiofragment').innerHTML=ca;
	    }
	}
        // set vars so that some functionality can run every second instead of half second :
	if(i==1)
	    i=0;
	else
	    i=1;
	
    }
}


function swapTimeShow()
{

    if(timeShowType=="normal")
    {
	timeShowType="reversed";
    }
    else
    {
	timeShowType="normal";
    }
}

function ChangeIcon(type,image)
{
    
    if(type=="play")
    {
        elm=document.getElementById('audioplayer_btn5');
	if(playIcon!=image)
	{
	    playIcon=image;
	    elm.innerHTML='<img src="/shared/img/audioplayermenu/'+image+'" border="0" alt="" />';
	}
    }
}

function swapmute()
{
    if(AX)
    {
	if(mute)
	    mute=false;
	else
	    mute=true;
	
	if(mute)
        {
	    document.getElementById("Player").settings.volume=0;
	    oldvolume=volumeSlider.getValue();
	    if(oldvolume<10) oldvolume=10;
	    volumeSlider.setValue(0);
	}
        else
	{
	    document.getElementById("Player").settings.volume=oldvolume;
	    volumeSlider.setValue(oldvolume);
        }
    }
    else
    {
	notsupportedbrowser();
    }
}

function swappause()
{

    //alert(document.getElementById('fplayer').innerHTML);
    //return;

    if(ispause)
    {
	if(AX)
	{
	    setplay(true);
	}
	else
	{
	    registerNonMSIEVar('nieStart',true);
	    registerNonMSIEVar('niePos',niePos);
	    changeNonMSIEPlayer();
	}
	ispause=false;
    }
    else
    {
	if(AX)
	{
	    document.getElementById('Player').controls.Pause();
        }
	else
	{
	    registerNonMSIEVar('nieStart',false);
	    registerNonMSIEVar('niePos',(niePos-1));
	    changeNonMSIEPlayer();
	}
	ispause=true;
    }
}

function setplay(force)
{
    if(AX)
    {
	//alert('force: '+force+';\nisplay: '+isplay+';\nispause: '+ispause);
	if(force || !isplay)
	{
	    document.getElementById('Player').controls.Play();
    	    ispause=false;
    	    isplay=true;
	}
	else if(isplay)
	{
	    document.getElementById('Player').controls.Pause();
	    ispause=true;
	    isplay=false;
	}
    }
    else
    {
	//alert('force: '+force+';\nnieStart: '+nieStart+';\nniePos: '+niePos);
	if(force || nieStart==false)
	{
    	    registerNonMSIEVar('nieStart',true);
	    registerNonMSIEVar('niePos',niePos);
	    changeNonMSIEPlayer();
	}
	else if(nieStart)
	{
	    registerNonMSIEVar('nieStart',false);
	    registerNonMSIEVar('niePos',(niePos-1));
	    changeNonMSIEPlayer();
	}
    }
}

function setstop()
{
    if(AX)
    {
	document.getElementById('Player').controls.Stop()
        ispause=false;
	isplay=false;
    }
    else
    {
	ispause=false;
	registerNonMSIEVar('nieStart',false);
	registerNonMSIEVar('niePos',0);
	changeNonMSIEPlayer()
    }
}

function fullscrn()
{
    if(AX)
    {
	document.getElementById('Player').fullScreen=1    
    }
    else
    {
	notsupportedbrowser();
    }
}

function jumptoitem(notule)
{
    currentjump=notule;
    if(AX)
    {
        document.getElementById('Player').controls.currentPosition=timestr[notule];
	setplay(true);
    }
    else
    {
//    console.log('jumping to '+timestr[notule]);
	registerNonMSIEVar('nieStart',true);
	registerNonMSIEVar('niePos',timestr[notule]);
	changeNonMSIEPlayer()
    }
}

function jumpnext()
{
    do_once=true
    if(AX)
    {
	tmptime=document.getElementById("Player").controls.currentPosition+10;
        document.getElementById('Player').controls.currentPosition=tmptime;
	setplay(true);
    }
    else
    {
	tmptime=niePos+10;
	registerNonMSIEVar('nieStart',true);
	registerNonMSIEVar('niePos',tmptime);
	changeNonMSIEPlayer()

    }
    
//    for (var j in timestr)
//    {
//	if((tmptime < timestr[j]) && do_once)
//	{
//	    jumptoitem(j);
//	    do_once=false;
//	}
//    }
    
}

function jumpprevious()
{
    if(AX)
    {
	tmptime=parseInt(document.getElementById("Player").controls.currentPosition)-10;
	if(tmptime<0) tmptime=0;
	
        document.getElementById('Player').controls.currentPosition=tmptime;
	setplay(true);
    }
    else
    {
	tmptime=niePos-10;
	if(tmptime<0) tmptime=0;
	
	registerNonMSIEVar('nieStart',true);
	registerNonMSIEVar('niePos',tmptime);
	changeNonMSIEPlayer()
    }
//    lastval=false;
//    lastval2=false;
//    if(AX)
//	backdiff=1;
//    else
//	backdiff=3;
//    for (var j in timestr)
//    {
//	if((tmptime <= timestr[j]) && lastval!=false)
//	{
//	    // wanneer er slechts weinig(backdiff) afgespeeld is in deze indexering, spring er dan 2 terug.
//	    if(tmptime <= (timestr[j]+backdiff))
//	    {
//		// 2 terugspringen
//		jumptoitem(lastval2);
//	    }
//	    else
//	    {
//		// 1 terugspringen
//		jumptoitem(lastval);
//	    }
//	    return true;
//	}
//	lastval2=lastval;
//	lastval=j;
//    }
}

function parsevideoplayer(file)
{
    playerType="video";
    setVideoHeight(getAspectHeightByWidth(298));
    
    if(AX)
    {
	// Give IE browser the fancy object, which makes it real easy to control
	
	retval='<div>';
	retval+='<OBJECT ID="Player" ';
	retval+='CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" height='+getVideoHeight()+' width=298>';
	retval+='<PARAM name="autoStart" value="false">';
	retval+='<PARAM name="URL" value="'+file+'">';
	retval+='<PARAM name="uiMode" value="none">';
	retval+='<PARAM name="fullScreen" value="0">';
	retval+='<PARAM name="enableContextMenu" value="true">';
	retval+='</OBJECT>';
	retval+='</div>';
    }
    else
    {
	// Other browsers get an embed inside a div, not great to control, but best there is
	retval='<div id="fplayer" name="fplayer">';
	registerNonMSIEVar('nieFile',file);
	retval+=parseNonMSIEVideoPlayer(file);
	//alert(parseNonMSIEVideoPlayer(file));
	retval+='</div>';
	//alert(retval);
    }
    return retval;
}

function parseaudioplayer(file)
{
    playerType="audio";
    if(AX)
    {
	// Give IE browser the fancy object, which makes it real easy to control
	retval='<div id="pl" name="pl" style="visibility:hidden;display:none">';
	retval+='<OBJECT ID="Player" ';
	retval+='CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" height=0 width=0>';
	retval+='<PARAM name="autoStart" value="false">';
	retval+='<PARAM name="URL" value="'+file+'">';
	retval+='<PARAM name="uiMode" value="none">';
	retval+='<PARAM name="fullScreen" value="0">';
	retval+='<PARAM name="enableContextMenu" value="false">';
	retval+='</OBJECT>';
	retval+='</div>';
    }
    else
    {
	// Other browsers get an embed inside a div, not great to control, but best there is
	retval='<div id="fplayer" name="fplayer">';
	registerNonMSIEVar('nieFile',file);
	retval+=parseNonMSIEAudioPlayer(file);
	retval+='</div>';
    }
    return retval;
}


function showbuffering()
{
    // hide buttons
    document.getElementById('controlbuttons').style.visibility='hidden';
    document.getElementById('controlbuttons').style.display='none'
    
    // show buffering process
    document.getElementById('controlbuffer').style.visibility='visible';
    document.getElementById('controlbuffer').style.display='block';
}

function showbuttons()
{
    // hide buffering process
    document.getElementById('controlbuffer').style.visibility='hidden';
    document.getElementById('controlbuffer').style.display='none';    
    // show buttons
    document.getElementById('controlbuttons').style.visibility='visible';
    document.getElementById('controlbuttons').style.display='block'
}

function parsebuttons(usage)
{
    retval='';
    gUsage=usage;
    if(AX)
    {
	//retval+='<div id=debugx name=debugx>x</div>';
	retval+='<div id=controlbuffer name=controlbuffer style=" visibility: hidden; display: none;" class="buffercount"></div>';
	
    }


    retval +='<div id=controlbuttons name=controlbuttons style="visibility: visible; display: block;">';

    retval +='<div id="audioplayer_btn1" class="audioplayer_btn1_'+usage+'" onclick="jumpprevious()"><img src="/shared/img/audioplayermenu/btn_1_'+usage+'.gif" border="0" alt="" /></div>';
    retval +='<div id="audioplayer_btn2" class="audioplayer_btn2_'+usage+'" onclick="swapTimeShow()">00:00:00</div>';
    retval +='<div id="audioplayer_btn3" class="audioplayer_btn3_'+usage+'" onclick="jumpnext()"><img src="/shared/img/audioplayermenu/btn_2_'+usage+'.gif" border="0" alt="" /></div>';
    retval +='<div id="audioplayer_btn4" class="audioplayer_btn4_'+usage+'" onclick="setstop()"><img src="/shared/img/audioplayermenu/btn_3_'+usage+'.gif" border="0" alt="" /></div>';
    retval +='<div id="audioplayer_btn5" class="audioplayer_btn5_'+usage+'" onclick="setplay(false)"><img src="/shared/img/audioplayermenu/btn_4_'+usage+'.gif" border="0" alt="" /></div>';
    //retval +='<div id="audioplayer_btn6" class="audioplayer_btn6_'+usage+'" onclick="swappause()"><img src="/shared/img/audioplayermenu/btn_5_'+usage+'.gif" border="0" alt="" /></div>';
//retval +='<div id="audioplayer_btn7" class="audioplayer_btn7_'+usage+'" onclick="alert(\'fixme\');">'+
//		'<img src="/shared/img/audioplayermenu/slider_controler_'+usage+'.gif" border="0" alt="" />'+
//	     '</div>';
    retval +='<div id="audioplayer_btn7" class="audioplayer_btn7_'+usage+'"></div>';
    if(AX){
	retval +='<div id="audioplayer_btn8" class="audioplayer_btn8_'+usage+'" onclick="swapmute()"><img src="/shared/img/audioplayermenu/btn_6_'+usage+'.gif" border="0" alt="" /></div>';
        if(playerType=='video')
        {
	    retval +='<div id="audioplayer_btn9" class="audioplayer_btn9_'+usage+'" onclick="fullscrn()"><img src="/shared/img/audioplayermenu/btn_7_'+usage+'.gif" border="0" alt=""/></div>';
        }else{
	    retval +='<div id="audioplayer_btn9" class="audioplayer_btn9_'+usage+'" style="width: 25px"></div>';
	}
    }
    
    retval+='</div>';
    
    
    
    return retval;
}

function loadVolumeSliderx(){
    x='blaat';
    document.getElementById('audioplayer_btn7').innerHTML=x;
    //alert('x');
}

function loadVolumeSlider()
{
    // load slider :
    volumeSlider = new Bs_Slider();
    volumeSlider.attachOnChange(catchVolumeChange);
    volumeSlider.fieldName     = 'volume';
    volumeSlider.width         = 80; // 80x23
    //volumeSlider.width         = 8;
    volumeSlider.height        = 23;
    //volumeSlider.height        = 2;
    volumeSlider.minVal        = 5;
    volumeSlider.maxVal        = 100;
    volumeSlider.valueDefault  = 50;
    volumeSlider.valueInterval = 1;
    volumeSlider.setBackgroundImage('/shared/img/audioplayermenu/slider_'+gUsage+'.gif', 'no-repeat');
    volumeSlider.setSliderIcon('/shared/img/audioplayermenu/slider_controler_'+gUsage+'.gif', 11, 19); //11*19
    //volumeSlider.setSliderIcon('/shared/img/audioplayermenu/slider_controler_'+gUsage+'.gif', 11, 9); //11*19
    volumeSlider.useInputField = 0;
    volumeSlider.draw('audioplayer_btn7');
    //document.getElementById('audioplayer_btn7').innerHtml='har';
}

function catchVolumeChange(sliderObj, val, newPos){ 
    // warning systeem bijhouden : 
    if(!naxVolumeWarning)
	displayWarning=true;
    else
	displayWarning=false;
    naxVolumeWarning=true;
    
    
    if(AX)
    {
	document.getElementById('Player').settings.volume=val;
    }
    else
    {
	if(displayWarning)
	    notsupportedbrowser();
    }
}



function notsupportedbrowser()
{
    alert('deze functie wordt niet ondersteund door uw browser.\nHiervoor dient u gebruik te maken van Internet Explorer');
}

function registerNonMSIEVar(varname,value)
{
    // currently used vars : nieFile,nieStart,niePos
    
    if(varname=='nieFile')
    {
	nieFile=value;
    }
    if(varname=='nieStart')
    {
	nieStart=value;
    }
    if(varname=='niePos')
    {
	niePos=value;
    }
}

function changeNonMSIEPlayer()
{
    // extra check for non MSIE
    if(!AX)
    {
	if(playerType=="audio")
	    document.getElementById('fplayer').innerHTML=parseNonMSIEAudioPlayer();
	else
	    document.getElementById('fplayer').innerHTML=parseNonMSIEVideoPlayer();
    }
}

function parseNonMSIEAudioPlayer()
{
    retval='<EMBED type="application/x-mplayer2"';
    retval+='  ID="FFPlayer"';
    retval+='  pluginspage = "http://www.microsoft.com/Windows/MediaPlayer/"';
    retval+='  SRC="'+nieFile+'"';
    retval+='  name="FFPlayer"';
    retval+='  WIDTH="0"';
    retval+='  HEIGHT="0"';	
    retval+='showstatusbar="0"';
    if(nieStart)
	retval+='  AutoStart="1"';
    else    
	retval+='  AutoStart="0"';
    retval+='  currentPosition="'+niePos+'"';
    retval+='  ShowControls="0"';
    retval+='  SendOpenStateChangeEvents="1"'; 
    retval+='</EMBED>';
    
    //alert(retval);
    return retval;
}

function parseNonMSIEVideoPlayer()
{
    setVideoHeight(getAspectHeightByWidth(298)+66); // 66 exta pixels hoogte ivm wms object player buttons (per client verschillend :( )

    retval='<EMBED type="application/x-mplayer2"';
    retval+='  ID="FFPlayer"';
    retval+='  pluginspage = "http://www.microsoft.com/Windows/MediaPlayer/"';
    retval+='  SRC="'+nieFile+'"';
    retval+='  name="FFPlayer"';
    retval+='  WIDTH="298"';
    retval+='  HEIGHT="'+getVideoHeight()+'"';	
    retval+='  showstatusbar="0"';
    if(nieStart)
	retval+='  AutoStart="1"';
    else    
	retval+='  AutoStart="0"';
    retval+='  currentPosition="'+niePos+'"';
    retval+='  ShowControls="0"';
    retval+='  SendOpenStateChangeEvents="1">'; 
    retval+='</EMBED>';

    return retval;
}

function setVideoHeight(height){
    videoHeight=height;
}
function getVideoHeight(){
    return videoHeight;
}
function setAspectRatio(ratio){
    aspectRatio=ratio;
}

// functie returned height in aspect. Default inputvars zijn de 4.3 vars
function getAspectHeightByWidth(width){
    if(aspectRatio=='4.3'){
	retHeight=Math.ceil((width/4)*3);
    }else{
	retHeight=Math.ceil((width/16)*9);
    }
    
    return retHeight;
}



/*
It's the end, you can stop staring at our code now ;)
*/