function MM_showHideLayers() { //v9.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) 
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
function MM_changeProp(objId,x,theProp,theValue) { //v9.0
  var obj = null; with (document){ if (getElementById)
  obj = getElementById(objId); }
  if (obj){
    if (theValue == true || theValue == false)
      eval("obj.style."+theProp+"="+theValue);
    else eval("obj.style."+theProp+"='"+theValue+"'");
  }
}
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

//Globale variabelen
var gWeekdag=["zo","ma","di","wo","do","vr","za"];
var gWeekdagVoll=["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"];
var gMyFilterFunc1Teller1=0;
var gMyFilterFunc1Teller2=0;
var gMyFilterFunc3aTeller=0;
var gMyFilterFunc3bTeller=0;
var gMyFilterFunc3cTeller=0;
var gMyFilterFunc3dTeller=0;

var gExit1=false;
var gExit2=true;
var gDatumEersteToertocht=null;
var gDatumEersteLes=null;
var gVorigeTitel='';
var gVorigePlaats=null;
var gVorigeDatum=null;
var gVorigeDatum1=null;
var gVorigeDatum3a=null;
var gVorigeDatum3b=null;
var gVorigeDatum3c=null;
var gVorigeDatum3d=null;

var gDi=null;
var gWo=null;
var gZo=null;
var gPCtijdFout=false;
var gAantalDagenTeTonen1=7;
var gAantalDagenTeTonen3a=2;
var gAantalDagenTeTonen3b=2;
var gAantalDagenTeTonen3c=2;
var gAantalDagenTeTonen3d=2;
var gAantalLoaded=0;
var gAantalRijenTeTonen1=6;
var gAantalRijenTeTonen2=8;
var gAantalRijenTeTonen3=1;
var gAantalRijenTeTonen4=8;
var gAantalRijenTeTonen5=10;
var gAantalRijenTeTonen6=4;
var gLaatsteRij1=0;

var gLen1=140; //Lengte van afgekapte string
var gLen2=30; //Lengte van afgekapte string
var gLen3=85; //Lengte van afgekapte string
var gLen4=60; //Lengte van afgekapte string
var gLen5=30; //Lengte van afgekapte string
var gLenTitel1=25; //Lengte van afgekapte titel
var gLenTitel2=50; //Lengte van afgekapte titel

var dagInMilliseconden=1000*60*60*24;

<!--Servertime-script Begin 
/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Emery Wooten :: www.mresoftware.com */

// First thing, reference the variable.
var servertimeOBJ;

// Now check that it is set
if (servertimeOBJ != null){
	var myTime = servertimeOBJ;
}

// If server time not passed, use client's time
else{
	var myTime = new Date();
	window.status = 'pctime';
}
// Servertime-script End 

//Functies
function vandaag() {
		var vandaag=myTime;
		return vandaag=new Date(vandaag.getFullYear(),vandaag.getMonth(),vandaag.getDate()); //vandaag om 0:00u
}

function jaar() {
	var jaar=myTime;
	jaar=jaar.getFullYear();
	if (jaar < 2009) {
		gPCtijdFout=true}
	return jaar;
	}
function toWeekdagVoll (pDag) 
	{
		//Zet dd-dag om naar volledige dag
		for (var i=0; i<7; i++)
		{
				if (pDag==gWeekdag[i])
					{return gWeekdagVoll[i]}
		}
	}

function FormattedWeekdag1 (region, row) 
	{
		//Zet dd-dag of dd/mm/jjjj-datum om naar volledige dag
		if (row('{Datum}')) {
			var datum=FormattedDatum2(row('{Datum}'));
			var dag=toShortDate(datum).substr(0,2);
		}
		else {
			var dag=row('{Dag}');
		}
		return toWeekdagVoll(dag);
	}

function FormattedDatum1(region, row)
	{ 
		// Zet de dd- of dd/mm/jjjj-datum om in een verkort formaat met Weekdag-prefix indien kolom = "Datum" of "Dag"
		if (row('{Datum}')) {
			var datum=FormattedDatum2(row('{Datum}'))}
		else {
			if (row('{Dag}').indexOf('/')!=-1) {
			  var datum=FormattedDatum2(row('{Dag}'))}
			else {
			  var datum=FormattedDatum3(row('{Dag}'))}
			}
		return toShortDate(datum);
	}
function FormattedDatum1b(region, row)
	{ 
		// Zet dd/mm/jjjj-datum om in een verkort formaat met Weekdag-prefix indien kolom = "Datumvan"
		var datum=FormattedDatum2(row('{Datumvan}'));
		return toShortDate(datum);
	}
	
function FormattedDatum1c(region, row)
	{ 
		// Zet dd/mm/jjjj-datum om in een verkort formaat met Weekdag-prefix indien kolom = "Datumtot"
		var datum=FormattedDatum2(row('{Datumtot}'));
		return toShortDate(datum);
	}
function FormattedDatum1d(region, row)
	{ 
		// Geef dd/mm/jjjj-datum van de eerstvolgende toertocht
		return gDatumEersteToertocht;
	}
function toShortDate(pDatum)
	{
		//Zet universele datum om in een verkort formaat met Weekdag-prefix
		var dagnr=pDatum.getDay();
		var dag=pDatum.getDate();
		var maand=pDatum.getMonth()+1;
		dag=(dag.length==1)?'&nbsp;'+dag:dag;
		maand=(maand.length==1)?' '+maand:maand;
		
		return gWeekdag[dagnr]+' '+dag+"/"+maand;	
	}
	
function FormattedDatum2(pDatum)
	{
		// Zet de dd/mm/jjjj-datum om naar een universele datum
		if (pDatum.indexOf('/')==-1) {
			return null;}									
		var listArray=pDatum.split('/');
		var dag=listArray[0];
		var maand=listArray[1];
		var jaar=listArray[2];
		var datum=new Date(jaar,maand-1,dag);
		return datum;
	}
function FormattedDatum3(pDatum)
	{
		// Zet de dd-datum om naar een universele datum
		for (var dagnr=0;dagnr<7;dagnr++) {
			if (pDatum.toLowerCase()==gWeekdag[dagnr]) {
				break;}
		}
		var aantal=dagnr-vandaag().getDay();
		if (aantal < 0) {aantal=aantal+7};
		
		datum=new Date(vandaag().getFullYear(),vandaag().getMonth(),vandaag().getDate()+aantal);
		return datum;
	}
function toStandaardDatum(pDatum)
	{
		//Standaardiseer datum
		var datum=pDatum.replace('.','/');

		var listArray=datum.split('/');
		if (listArray[0].length==1) {listArray[0]='0'+listArray[0]};
		if (listArray[1].length==1) {listArray[1]='0'+listArray[1]};
		return listArray[0]+'/'+listArray[1]+'/'+listArray[2];
	}
	
function toUSdatum(pDatum)
	{
		//Standaardiseer datum
		var datum=pDatum.replace('.','/');

		var listArray=datum.split('/');
		if (listArray[0].length==1) {listArray[0]='0'+listArray[0]};
		if (listArray[1].length==1) {listArray[1]='0'+listArray[1]};
		return listArray[2]+'/'+listArray[1]+'/'+listArray[0];
	}
function toStandaardUur(pUur) {
	var str=trim(pUur.replace('.',':')).replace('u','').replace('h','');	//"u" wordt er in html bij gezet
	return str;
}
function FormattedActiviteit1(region, row)
	{
		return toNewActiviteit(row('{Status}'), row('{Activiteit}'), row('{Groep}'));
	}
function FormattedActiviteit2(region, row)
	{	//Verwijder "Toertocht" uit Activiteit
		return row('{Activiteit}').replace('Toertocht ','');
	}
function FormattedActiviteit3(region, row)
	{
	var str=row('{Activiteit}');
		if (str.length > gLen5) {
			str=str.substr(0,gLen5-3)+'...';
		}
		return toNewActiviteit(row('{Status}'), str, row('{Groep}'));
	}
function toNewActiviteit(pStatus, pActiviteit, pGroep)
	{
		// Zet de activiteit om naar een string met span-tags voor lay-out
		var str1='';
		var str2='';
		switch (pStatus.toLowerCase())
		{
		case 'afgelast':
			{	str1='<span class=\"doorstreept\">';
				str2='</span>';}
				break;
		case '?':
			{	str2='<span class=\"onzeker\"> (?)</span>';}
				break;
		}			

		return '<span class=\"'+pGroep+'\">'+str1+pActiviteit+str2+'</span>';
	}

function FormattedBericht1(region, row)
	{
		// Zet het bericht/verslag om naar een afgekapte string	
		var ber;
		var sep=' '; //Separator
		
		if(row('{Bericht}')){
			ber=row('{Bericht}')} 
		else {
			ber=row('{Verslag}')}
		if (ber.length >= gLen1) {			
			//Zet bericht/verslag om naar afgekapte string + ' ...'
			ber=ber.substr(0,gLen1);
			ber=ber.substr(0,ber.lastIndexOf(sep))+' ...';
		}
		return ber;
	}
function FormattedBericht2(region, row)
	{
		// Zet het bericht om naar een afgekapte string
		var ber=row('{Bericht}');
		if (ber.length >= gLen2) {			
			//Zet bericht/verslag om naar afgekapte string + ' ...'
			ber=ber.substr(0,gLen2)+' ...';
		}
		return ber;
	}
function FormattedBericht3(region, row)			/*OBSOLETE. Vervangen door CSS-class ellipsis*/
	{
		// Zet het bericht om naar een afgekapte string
		var ber=row('{Bericht}');
		if ((ber).length > gLen3) {			
			//Zet bericht/verslag om naar afgekapte string + ' ...'
			ber=ber.substr(0,gLen3)+' <strong>...</strong>';
		}
		return ber;
	}
function FormattedTitel1(region, row)
	{
		// Zet het bericht/verslag om naar een afgekapte string
		var ttl=row('{Titel}');
		if (ttl.length > gLenTitel1) {			
			//Zet bericht/verslag om naar afgekapte string + ' ...'
			ttl=ttl.substr(0,gLenTitel1)+' ...';
		}
		return ttl;
	}
function FormattedTitel3(region, row)
	{
		// Zet het bericht/verslag om naar een afgekapte string
		var ttl=row('{Titel}');
		if (ttl.length > gLenTitel2) {			
			//Zet bericht/verslag om naar afgekapte string + ' ...'
			ttl=ttl.substr(0,gLenTitel2)+' ...';
		}
		return ttl;
	}

//function FormattedBericht1(region, row)
//	{
//		// Zet het bericht om naar titel (=hyperlink) + een afgekapte string met extra tags voor de hyperlink "meer"
//		var lTtl=row('{Titel}');
//		var lBer=row('{Bericht}');
//		var lPag=row('{Pagina}');
//		var lLen=120 //Lengte van afgekapte string
//		
//		if (lTtl=='&nbsp;' || lTtl.length==1) {	/* &nbsp;*/
//			lTtl=''}
//		else {
//			lTtl='<h3>'+lTtl+'</h3>'
//		}
//		//Zet pagina om naar link
//		if (!(lPag=='&nbsp;' || lPag.length==1)) {
//			var listArray=lPag.split("#");
//			lPag=listArray[0];
//			//Voeg zonodig '.html' toe
//			if (lPag.indexOf('.html')==-1) {
//				lPag+='.html'}
//			if (listArray.length==2) {
//				lPag+='#'+listArray[1] }
//			else {
//				lPag+='#br-'+row('{ds_RowID}')
//			}
//			var lLnk1='<a class="meer" href='+lPag+'>';	
//			var lLnk2='</a>'
//			var lLnk3='Meer<span class="pijl">&raquo;</span></a>'
//			
//			//Zet titel om naar link
//			if (lTtl.length > 1) {
//				lTtl=lLnk1+lTtl+lLnk2}
//		}
//		if (lBer.length > lLen) {			
//			//Zet bericht om naar afgekapte string+"Meer >>"
//			lBer=lBer.substr(0,lLen);
//			lBer=lBer.substr(0,lBer.lastIndexOf(' '));
//			lBer=lTtl+lBer+' ...  | '+lLnk1+lLnk3;
//			return lBer;
//		}
//		return lTtl+lBer+'&nbsp;&nbsp; | '+lLnk1+lLnk3; 
//	}
//
//function FormattedBericht2(region, row)
//	{
//		// Zet het bericht om naar een titel + bericht
//		var lTtl=row('{Titel}');
//		var lBer=row('{Bericht}');
//		
//		if (lTtl=='&nbsp;' || lTtl.length==1) {	/* &nbsp;*/
//			lTtl=''}
//		else {
//			lTtl='<h3>'+lTtl+'</h3>'}
//			
//		lBer=lTtl+lBer;
//		return lBer;
//	}

function FormattedLesGroep1(region, row)
{		//Haal cijfer = lesgroep uit code LE1, LE2 ...
	return row('{Code}').substr(2,1);
}

function FormattedAnchor(region, row)
{	//Verwijderen van spaties uit anker. IE jumpt immers niet naar ankers met spaties
	//Spry.Debug.trace(trim(row('Activiteit')+'-'+row('Datum')));
	return trim(row('Activiteit')+'-'+row('Datum'));
}

function formattedLink(region, row) {
	var link=row('{Meer}');
	
	if(trim(link)==''){
		return link;
	}
	
	if(link.indexOf('<a')==0){
		link="<a href='"+link+"'>"+link+"</a>";
	}

	if(link.toLowerCase().indexOf('class')==-1){
		if(link.toLowerCase().indexOf('http')==-1){
			return link.replace(/<a /gi,"<a class='int-link' ");
		}
		else{
			if(link.toLowerCase().indexOf('target')==-1){
				link=link.replace(/<a /gi,"<a target='_blank' ");
			}
			return link.replace(/<a /gi,"<a class='ext-link' ");
		}
	}
	return link;
}

function stripLink1(region, row)
	{
		// Verwijder ".html" en anker uit link voor tekst van link
		var lTekst;
		var listArray1 = row('{Pagina}').split('.'); 
		var listArray2 = listArray1[0].split('#'); 
		lTekst=listArray2[0].replace('gpfc','Grote Prijs Frans Claes');
		lTekst=lTekst.replace('jcfc','Jeugdcriterium Frans Claes');
		return lTekst;
	}

function stripLink2(region, row)
	{
		//Haalt het pad uit link
		var listArray=row('{Index}').split('"');
		return listArray[1];
	}

function thumbToLink0(region, row)
	{
		// Stelt een link samen, op basis van een verwijzing naar een thumbnail, 
		// die verwijst naar de overeenstemmende .html-pagina met de grote image
		return thumbToLink(row('{Thumb}'));
	}
function thumbToLink1(region, row)
	{
		// Stelt een link samen, op basis van een verwijzing naar een thumbnail, 
		// die verwijst naar de overeenstemmende .html-pagina met de grote image
		return thumbToLink(row('{Thumb1}'));
	}
function thumbToLink2(region, row)
	{
		// Stelt een link samen, op basis van een verwijzing naar een thumbnail, 
		// die verwijst naar de overeenstemmende .html-pagina met de grote image
		return thumbToLink(row('{Thumb2}'));
	}
function thumbToLink3(region, row)
	{
		// Stelt een link samen, op basis van een verwijzing naar een thumbnail, 
		// die verwijst naar de overeenstemmende .html-pagina met de grote image
		return thumbToLink(row('{Thumb3}'));
	}
function thumbToLink(pThumb)
	{
		// Stelt een link samen, op basis van een verwijzing naar een thumbnail, 
		// die verwijst naar de overeenstemmende .html-pagina met de grote image
		//<img src="_img/Grote Prijs Frans Claes 20090614/content/bin/images/thumb/IMG_0667.jpg" width="129" height="96" /></td>
		//          _img\Toertocht Duffel-Emblem-Albertkanaal 20090709\content\19-07-09 -- kl1_large.html
		
		if (pThumb.indexOf('<a')==-1) {
			var lThumb=pThumb;
			//lThumb=lThumb.replace('<img src="','');
			lThumb=lThumb.substr(lThumb.indexOf('src=')+5);
			lThumb=lThumb.replace('bin/images/thumb/','');
			lThumb=lThumb.replace('.jpg','_large.html');
			return lThumb.substr(0,lThumb.indexOf('.html')+5);
		}
	}
	
function myFilterFunc0(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum >= vandaag
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag()) {
			return row}	// Return the row to keep it in the data set.
		return null;
	}
function myFilterFunc1(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum >= vandaag + beperk aantal dagen en rijen(voor "Binnenkort")
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag()) {
			if (datum > gVorigeDatum1) {
				if (gMyFilterFunc1Teller1 >= gAantalRijenTeTonen4) {
					return null;}
				gMyFilterFunc1Teller2=gMyFilterFunc1Teller2+1;
				gVorigeDatum1=datum}
			if(gMyFilterFunc1Teller2 <= gAantalDagenTeTonen1) {
				gMyFilterFunc1Teller1=gMyFilterFunc1Teller1+1;
				return row}	// Return the row to keep it in the data set.
		}
	}
function myFilterFunc1b(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum >= vandaag + zonder beperking van aantal dagen
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag()) {
				return row}	// Return the row to keep it in the data set.
	}

function myFilterFunc3a(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum >= vandaag + beperk aantal dagen (voor "Eerstvolgende activiteiten")
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag()) {
			if (datum > gVorigeDatum3a) {
				gMyFilterFunc3aTeller=gMyFilterFunc3aTeller+1;
				gVorigeDatum3a=datum}
			if(gMyFilterFunc3aTeller <= gAantalDagenTeTonen3a) {
				return row}	// Return the row to keep it in the data set.
		}
	}

function myFilterFunc3b(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum >= vandaag van de RECREATIE-activiteiten + beperk aantal dagen 
		var groepNaam='RE';
		var groep=row['Groep'].toUpperCase().indexOf(groepNaam)!=-1?groepNaam:'';
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag() && groep==groepNaam) {
			if (datum > gVorigeDatum3a) {
				gMyFilterFunc3bTeller=gMyFilterFunc3bTeller+1;
				gVorigeDatum3b=datum}
			if(gMyFilterFunc3bTeller <= gAantalDagenTeTonen3b) {
				return row}	// Return the row to keep it in the data set.
		}
}

function myFilterFunc3c(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum  >= vandaag van de SPEED-activiteiten + beperk aantal dagen 
		var groepNaam='SP';
		var groep=row['Groep'].toUpperCase().indexOf(groepNaam)!=-1?groepNaam:'';
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag() && groep==groepNaam) {
			if (datum > gVorigeDatum3c) {
				gMyFilterFunc3cTeller=gMyFilterFunc3cTeller+1;
				gVorigeDatum3c=datum}
			if(gMyFilterFunc3cTeller <= gAantalDagenTeTonen3c) {
				return row}	// Return the row to keep it in the data set.
		}
}

function myFilterFunc3d(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum >= vandaag van de TOERTOCHTEN + beperk aantal dagen 
		var groepNaam='TT';
		var groep=row['Code'].toUpperCase().indexOf(groepNaam)!=-1?groepNaam:'';
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag() && groep==groepNaam) {
			if (datum > gVorigeDatum3d) {
				gMyFilterFunc3dTeller=gMyFilterFunc3dTeller+1;
				gVorigeDatum3d=datum;
				//Specifiek voor toertochten
				if (gDatumEersteToertocht==null) {
					gDatumEersteToertocht=datum}
			}
			if(gMyFilterFunc3dTeller <= gAantalDagenTeTonen3d) {
				return row}	// Return the row to keep it in the data set.
		}
}

function myFilterFunc3e(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan datum >= vandaag van de LESSEN + beperk aantal dagen 
		var groepNaam='LE';
		var groep=row['Code'].toUpperCase().indexOf(groepNaam)!=-1?groepNaam:'';
		var datum=FormattedDatum2(row['Datum']);
		
		if (datum >= vandaag() && groep==groepNaam) {
			if (datum > gVorigeDatum3d) {
				gMyFilterFunc3dTeller=gMyFilterFunc3dTeller+1;
				gVorigeDatum3d=datum;
				//Specifiek voor lessen
				if (gDatumEersteLes==null) {
					gDatumEersteLes=datum}
			}
			if(gMyFilterFunc3dTeller <= gAantalDagenTeTonen3d) {
				return row}	// Return the row to keep it in the data set.
		}
}

function myFilterFunc6a(dataSet, row, rowNumber)
	{
		//Filter de trainingen, de normale of de uitzonderingen, ifv. de datum
		var datum=FormattedDatum3(row['Dag']);
		if (getTraining(dataSet, row, rowNumber, datum)) {
			return row}
		return null;
	}

function myFilterFunc6b(dataSet, row, rowNumber)
	{
		// De normale trainingen teruggeven
		var uitz=row['Datumvan'].indexOf('/')>=0?true:false;

		if (!uitz){
			return row;}	// Return the row to keep it in the data set.
		return null;   // Return null to remove the row from the data set.
	}

function myFilterFunc6c(dataSet, row, rowNumber)
	{
		// De uitzonderingen op de trainingen teruggeven
		var uitz=row['Datumvan'].indexOf('/')>=0?true:false;

		if (uitz){
			return row;}	// Return the row to keep it in the data set.
		return null;   // Return null to remove the row from the data set.
	}

function myFilterFunc6d(dataSet, row, rowNumber)
	{
		// De training teruggeven bij aflasting van de toertocht
		// Geef de training in normale gevallen terug
		// Indien datum = datum uit de uitzonderingsgevallen niet de normale training teruggeven, maar de uitzondering.
		
		//Probleem met volgorde?
		if (getTraining(dataSet, row, rowNumber, gDatumEersteToertocht, 'TT')) {
			return row}
		return null;
	}


function getTraining(dataSet, row, rowNumber, pDatum, pType)
	{
		// Geef drie trainingen in normale gevallen terug
		// Ingeval van een toertochten geeft de training terug die samenvalt met de datum v/d 1ste toertocht (=alternatief bij aflasting van toertocht)
		// Voor rijen met datums met uitzonderingsgevallen die binnen eerstvolgende week vallen (bv. "geen training"), 
		// niet de normale training teruggeven, maar de uitzondering.
		
		//Probleem met volgorde?
		
		var status=row['Status'].toUpperCase();
		var dag1=row['Dag'].toLowerCase();
		var dag2=toShortDate(pDatum).substr(0,2);
		var datumVan=FormattedDatum2(row['Datumvan']);
		var datumTot=FormattedDatum2(row['Datumtot']);
		var uitz=datumVan==null?false:true;
		var lReturn=false;

		if (gExit1) {			
			return false}
			
		if (uitz) {
			if (datumTot==null) {
				datumTot=new Date(datumVan.getFullYear(),datumVan.getMonth(),datumVan.getDate()+1)}
			// Valt datum van volgende training binnen datumVan en datumTot?
			if (pDatum-datumVan>=0 && datumTot-pDatum>=0 ) {
				if (dag1=='di') {gDi='di'}
				if (dag1=='wo') {gWo='wo'}
				if (dag1=='zo') {gZo='zo'}
				
				//Toertocht?
				if (pType=='TT') {
					if (dag1==dag2) {
						gExit1=true;
						if (status!='AFGELAST') {
							lReturn=true;
						}
					}
				}
				else {
					lReturn=true;
				}
			}
		}
		else {
			//Toertocht?
			if (pType=='TT') {
				if (dag1==dag2) {
					gExit1=true;
					lReturn=true; // Return the row to keep it in the data set.
				}
			}
			else {
				if (dag1!=gDi && dag1!=gWo && dag1!=gZo) { 
					lReturn=true; // Return the row to keep it in the data set.
				}
			}
		}
		if (lReturn) {
			return true;
		}
		return false;
	}

function myFilterFunc10a(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan verschijningsdatum < huidige datum en
		// waarvan verloopdatum > huidige datum
		var ds=dataSet.getSourceElementID();
		var ber;
		var nu=vandaag();
		if(ds=='berichtentabel'){
			ber=row['Bericht']} 
		else {
			ber=row['Verslag']}
		var	datum1=FormattedDatum2(row['Verschijningsdatum']);
		var	datum2=FormattedDatum2(row['Verloopdatum']);

		if (ber.length>10) { //Kan &nbsp; bevatten
		//alert(ber)
			if (datum1==null) {
				datum1=nu;}
				
			if (datum2==null) {
				datum2=nu;}
	
			if (datum1-nu<=0 && datum2-nu>=0) { 
				gLaatsteRij1=rowNumber;
				return row;	// Return the row to keep it in the data set.
			}
		}
		return null;   // Return null to remove the row from the data set.
	}
	
/*
function myFilterFunc10b(dataSet, row, rowNumber)
	{
		// Filter alle RECREATIE-berichten waarvan verschijningsdatum < huidige datum en
		// waarvan verloopdatum > huidige datum
		var	datum1=FormattedDatum2(row['Verschijningsdatum']);
		var	datum2=FormattedDatum2(row['Verloopdatum']);
		
		if (row['Bericht'].length>10) { //Kan &nbsp; bevatten
			if (datum1==null) {
				datum1=vandaag();}
				
			if (datum2==null) {
				datum2=vandaag();}
	
			if (datum1-vandaag()<=0 && datum2-vandaag()>=0 && row['Groep'].toUpperCase().indexOf('RE')!=-1) {
				return row;}	// Return the row to keep it in the data set.
		}
		return null;		// Return null to remove the row from the data set.
	}

function myFilterFunc10c(dataSet, row, rowNumber)
	{
		// Filter alle SPEED-berichten waarvan verschijningsdatum < huidige datum en
		// waarvan verloopdatum > huidige datum
		var	datum1=FormattedDatum2(row['Verschijningsdatum']);
		var	datum2=FormattedDatum2(row['Verloopdatum']);
		if (row['Bericht'].length>=10) { //Kan &nbsp; bevatten
			if (datum1==null) {
				datum1=vandaag();}
				
			if (datum2==null) {
				datum2=vandaag();}
	
			if (datum1-vandaag()<=0 && datum2-vandaag()>=0 && row['Groep'].toUpperCase().indexOf('SP')!=-1) {
				return row;}	// Return the row to keep it in the data set.
		}
		return null;		// Return null to remove the row from the data set.
	}
*/
function myFilterFunc10d(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan verschijningsdatum < huidige datum 
		var ds=dataSet.getSourceElementID();
		var nu=vandaag();
		var	datum1=FormattedDatum2(row['Verschijningsdatum']);
			if (datum1==null) {
				datum1=nu;}
					
			if (datum1-nu<=0) { 
				return row;	// Return the row to keep it in the data set.
			}
		return null;   // Return null to remove the row from the data set.
	}

function myFilterFunc20a(dataSet, row, rowNumber)
	// Filter rijen van groep CLUB
	{
		if (row['Groep'].toUpperCase().indexOf('CL')!=-1)
				{
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
function myFilterFunc20b(dataSet, row, rowNumber)
	// Filter rijen van groep CLUB of RECREATIE
	{
		if (row['Groep'].toUpperCase().indexOf('CL')!=-1 || 
				row['Groep'].toUpperCase().indexOf('RE')!=-1)	{
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
function myFilterFunc20c(dataSet, row, rowNumber)
	// Filter rijen van groep CLUB of SPEED
	{
		if (row['Groep'].toUpperCase().indexOf('CL')!=-1 || 
				row['Groep'].toUpperCase().indexOf('SP')!=-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
function myFilterFunc20aa(dataSet, row, rowNumber)
	// Filter rijen van groep CLUB of KUNST
	{
		if (row['Groep'].toUpperCase().indexOf('CL')!=-1 || 
				row['Groep'].toUpperCase().indexOf('KU')!=-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
function myFilterFunc20bb(dataSet, row, rowNumber)
	// Filter rijen van groep CLUB of HOCKEY
	{
		if (row['Groep'].toUpperCase().indexOf('CL')!=-1 || 
				row['Groep'].toUpperCase().indexOf('HO')!=-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}


function myFilterFunc21b(dataSet, row, rowNumber)
	// Behoud alle rijen behalve van RECREATIE
	{
		if (row['Groep'].toUpperCase().indexOf('RE')==-1){
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
function myFilterFunc21c(dataSet, row, rowNumber)
	// Behoud alle rijen behalve van SPEED
	{
		if (row['Groep'].toUpperCase().indexOf('SP')==-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
function myFilterFunc21aa(dataSet, row, rowNumber)
	// Behoud alle rijen behalve van KUNST
	{
		if (row['Groep'].toUpperCase().indexOf('KU')!==1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
function myFilterFunc21bb(dataSet, row, rowNumber)
	// Behoud alle rijen behalve van HOCKEY
	{
		if (row['Groep'].toUpperCase().indexOf('HO')==-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}

function myFilterFunc20d(dataSet, row, rowNumber)
	// Filter rijen met toertochten
	{
		var str1='';
		var str2='';
		str1=row['Code'];
			
		if (str1.toUpperCase().indexOf('TT')!=-1){
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}

function myFilterFunc20e(dataSet, row, rowNumber)
	// Filter rijen waarvan focus="J"
	{
		if (row['Focus'].toUpperCase().indexOf('J')!=-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
	
function myFilterFunc20f(dataSet, row, rowNumber)
	// Filter rijen met een code 
	{
		if (!(row['Code']=='&nbsp;' || row['Code'].length==1)){
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
	
function myFilterFunc20g(dataSet, row, rowNumber)
	// Filter rijen met lessen
	{
		if (row['Code'].toUpperCase().indexOf('LE')!=-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}

function myFilterFunc20h(dataSet, row, rowNumber)
	// Filter rijen met GPFC
	{
		if (row['Activiteit'].toUpperCase().indexOf('GROTE PRIJS FRANS CLAES')!=-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}

function myFilterFunc20i(dataSet, row, rowNumber)
	// Filter rijen met JCFC
	{
		if (row['Activiteit'].toUpperCase().indexOf('JEUGDCRITERIUM FRANS CLAES')!=-1) {
			return row;}	// Return the row to keep it in the data set.
		return null;		// Return null to remove the row from the data set.
	}
	

function myFilterFunc110(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan jaar = huidig jaar tot huidig jaar -2
		var datum=myTime;	//new Date;
		if (datum.getFullYear()-FormattedDatum2(row['Datum']).getFullYear()<3){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc110_0(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan jaar = huidig jaar
		var datum=myTime;	//new Date;
		if (FormattedDatum2(row['Datum']).getFullYear()-datum.getFullYear()==0){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc110_1(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan jaar = huidig jaar-1
		var datum=myTime;	//new Date;
		if (FormattedDatum2(row['Datum']).getFullYear()-datum.getFullYear()+1==0){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc110_2(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan jaar = huidig jaar-2
		var datum=myTime;	//new Date;
		if (FormattedDatum2(row['Datum']).getFullYear()-datum.getFullYear()+2==0){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc110_3(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan jaar = huidig jaar-3
		var datum=myTime;	//new Date;
		if (FormattedDatum2(row['Datum']).getFullYear()-datum.getFullYear()+3==0){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc110_4(dataSet, row, rowNumber)
	{
		// Filter alle rijen waarvan jaar = huidig jaar-4
		var datum=myTime;	//new Date;
		if (FormattedDatum2(row['Datum']).getFullYear()-datum.getFullYear()+4==0){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc110_5(dataSet, row, rowNumber)
	{
		// Filter alle rijen jonger dan huidig jaar-2
		var datum=myTime;	//new Date;
		if (datum.getFullYear()-FormattedDatum2(row['Datum']).getFullYear()<=2){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc110_6(dataSet, row, rowNumber)
	{
		// Filter alle rijen ouder dan huidig jaar-2
		var datum=myTime;	//new Date;
		if (datum.getFullYear()-FormattedDatum2(row['Datum']).getFullYear()>2){ 
			return row; }  // Return the row to keep it in the data set.
		else{
			return null;}   // Return null to remove the row from the data set.
	}
function myFilterFunc120(dataSet, row, rowNumber)
	{
		// Filter distinct Titel, Plaats, Datum
		var lTitel=row['Titel'];
		var lPlaats=row['Plaats'];
		var lDatum=row['Datum'];
		var lEqual=false;
		
		if (rowNumber==0) {
			gVorigeTitel=null;
			gVorigePlaats=null;
			gVorigeDatum=null;
		}

		if (lTitel==gVorigeTitel && lPlaats==gVorigePlaats &&lDatum==gVorigeDatum){ 
			lEqual=true;}  // Titel, Plaats en Datum is gelijk aan vorige rij.
			
		gVorigeTitel=lTitel;
		gVorigePlaats=lPlaats;
		gVorigeDatum=lDatum;
		
		if (lEqual) {
			return null; }  // Return null to remove the row from the data set.
		return row;   // Return the row to keep it in the data set.
	}
function MyFilterFunc130a (dataSet, row, rowNumber)
{	
	//Filter op aantal rijen
	if (dataSet.getRowCount() < gAantalRijenTeTonen1){ 
		return row; }  // Return the row to keep it in the data set.
	else{
		return null;}   // Return null to remove the row from the data set.
}

function MyFilterFunc130b (dataSet, row, rowNumber)
{	
	//Filter op aantal rijen
	if (dataSet.getRowCount()  < gAantalRijenTeTonen2){ 
		return row; }  // Return the row to keep it in the data set.
	else{
		return null;}   // Return null to remove the row from the data set.
}

function MyFilterFunc130c (dataSet, row, rowNumber)
{	
	//Filter op aantal rijen
	if (dataSet.getRowCount()  < gAantalRijenTeTonen3){
		return row; }  // Return the row to keep it in the data set.
	else{
		return null;}   // Return null to remove the row from the data set.
}

function MyFilterFunc130d (dataSet, row, rowNumber)
{	
	//Filter op aantal rijen
	if (dataSet.getRowCount()  < gAantalRijenTeTonen5){
		return row; }  // Return the row to keep it in the data set.
	else{
		return null;}   // Return null to remove the row from the data set.
}

function MyFilterFunc130e (dataSet, row, rowNumber)
{	
	//Filter op aantal rijen
	if (dataSet.getRowCount() < gAantalRijenTeTonen6){ 
		return row; }  // Return the row to keep it in the data set.
	else{
		return null;}   // Return null to remove the row from the data set.
}

function setClass1(region, row) 
{ 
	// Gray out de activiteiten in het verleden
	if (row('{Datum}')) {
		var datum=FormattedDatum2(row('{Datum}'));}
	else {
		datum=FormattedDatum3(row('{Dag}'));
	}
	if (datum < vandaag()){
		return 'grayout';}

	return '';
}

function classExists(pClass) 
	{
    //Create Array of All HTML Tags
    var allHTMLTags=document.getElementsByTagName('*');

    //Loop through all tags using a for loop
    for (i=0; i<allHTMLTags.length; i++) {
			//Get all tags with the specified class name.
			if (allHTMLTags[i].className==pClass) {
			return true;    }
    }
  }

function showVideo (pDataset, pRow, pID) {
	//Toont element met video
	pDataset.setCurrentRow(pRow);
	showElement('videoscreen'+pID);
	//hideElement('sfeerbeeld');
}

function showElement(pElement) {
	Spry.Utils.removeClassName(pElement, 'SpryHiddenClass');
	Spry.Utils.addClassName('wrapper', 'grayout');	
}
function hideElement(pElement) {
	Spry.Utils.addClassName(pElement, 'SpryHiddenClass');
	Spry.Utils.removeClassName('wrapper', 'grayout');	
}

function videoObject1 (dataSet, row, rowNumber) {
	return(getObject(row('{Video1}')));
}

function videoObject2 (dataSet, row, rowNumber) {
	return getObject(row('{Video2}'));
}

function videoObject3 (dataSet, row, rowNumber) {
	return getObject(row('{Video3}'));
}

function getObject (pTabelCelTekst){
	//Filter video-object uit Thumb-kolom	- Obsolete - werkt niet meer
	var splitArray=pTabelCelTekst.split('<object');
	splitArray=splitArray[1].split('object>');
	return ('<object'+splitArray[0]+'object>');
}

function videoImage1 (dataSet, row, rowNumber) {
	//return getImage(row('{dsFotoTabel2::Thumb1}'),'small');
	return getImage(row('{Video1}'),'small');
}
function videoImage2 (dataSet, row, rowNumber) {
	//return getImage(row('{dsFotoTabel2::Thumb2}'),'small');
	return getImage(row('{Video2}'),'small');
}
function videoImage3 (dataSet, row, rowNumber) {
	//return getImage(row('{dsFotoTabel2::Thumb3}'),'small');
	return getImage(row('{Video3}'),'small');
}

function getImage(pTabelCelTekst,pSize){
	//Haal url die verwijst nr. video uit Thumb-kolom en zet die om naar url die verwijst nr. video-image
	if(trim(pTabelCelTekst)==''){ 
		return ''; 
	}
	pSize = (pSize === null) ? 'big' : pSize;
	var vid='';
	var results='';
	var comm='';
	//results = url.match("[\\?&]v=([^&#]*)");
	results=pTabelCelTekst.substr(pTabelCelTekst.toLowerCase().indexOf('v/')+2);	/*toLowerCase voor IE en Opera)*/
	results=results.split('&');
	vid = ( results === null ) ? pTabelCelTekst : results[0];
	if (pTabelCelTekst.indexOf('<p>')>=0) {
		comm=pTabelCelTekst.substr(pTabelCelTekst.indexOf('<p>'));
	}
	if(pSize == 'small'){
		return '<img src="http://img.youtube.com/vi/'+vid+'/2.jpg">'+comm}
	else {
		return '<img src="http://img.youtube.com/vi/'+vid+'/0.jpg">'+comm}
	}
	
function showBericht (pDataset, pRow, pID) {
	//Toont element met video
	pDataset.setCurrentRow(pRow);
	showElement('leesvenster'+pID);
}

function showVenster (pID, pMode) {
	//Spry.Debug.trace(event.clientY+' '+event.clientX);
	Spry.$(pID).style.top=event.clientY+'px';
	Spry.$(pID).style.left=event.clientX+'px';
	Spry.$(pID).style.display='block';
}

function setRowID(pDS1,pDS2,pCurrentRowNr) 
{
	//Zet currentRow van een 2de dataset op basis van de currentRow van 1ste 
	//dataset en een identieke Activiteit
	
	var rows1 = pDS1.getUnfilteredData();
	var rows2 = pDS2.getUnfilteredData();

	for (var i = 0; i < rows2.length; i++)
	{
		if (rows1[pCurrentRowNr]["Activiteit"].toUpperCase()==rows2[i]["Activiteit"].toUpperCase()){
			pDS2.setCurrentRow(i);
			return}
	}
	pDS2.setCurrentRow(null);
}	

function updateKalender(pRegions,pDSkalender,pDSdetails,pDSverslagen,pDSfotovideo)
{	
	//Join tussen kalendertabel (master) en detailstabel (detail). FK = Activiteit
	//Indien er in de master waarden zijn ingevuld en er bestaat een detail, dan betekent dit een afwijking tov. de regel en
	//worden de waarden in een waarschuwingskleur gezet
	
	var rgn;		//Region
	var rows1=pDSkalender.getUnfilteredData();
	var rows2=pDSdetails.getUnfilteredData();
	var rows3=pDSverslagen.getUnfilteredData();
	var rows4=pDSfotovideo.getUnfilteredData();
	var pDSkalender=new Spry.Data.DataSet();
	var str1;
	var str2;
	var datum;
	
	//Spry.Debug.trace(rows1.length+' '+rows2.length+' '+rows3.length+' '+rows4.length);
	for (var i = 0; i < rows1.length ; i++)
	{

		datum=toStandaardDatum(rows1[i]["Datum"]);
		rows1[i]["Datum"]=datum;
		rows1[i]["Beginuur"]=toStandaardUur(rows1[i]["Beginuur"]);				
		//rows2[i]["Beginuur"]=toStandaardUur(rows2[i]["Beginuur"]);				
		rows1[i]["Einduur"]=toStandaardUur(rows1[i]["Einduur"]);				
		//rows2[i]["Einduur"]=toStandaardUur(rows2[i]["Einduur"]);				
		
		for (var j = 0; j < rows2.length ; j++){
			
			if (rows1[i]["Activiteit"].toUpperCase()==rows2[j]["Activiteit"].toUpperCase()){
				
				str1=trim(rows1[i]["Locatie"]).toUpperCase();				
				str2=trim(rows2[j]["Locatie"]).toUpperCase();
				if (str1!='' && str1!=str2){
					rows1[i]["Locatie"]='<span class="waarschuwing">' + rows1[i]["Locatie"] + '</span>';}
				else {
					rows1[i]["Locatie"]=rows2[j]["Locatie"];
				}

				str1=trim(rows1[i]["Adres"]).toUpperCase();				
				str2=trim(rows2[j]["Adres"]).toUpperCase();
				if (str1!='' && str1!=str2){
					rows1[i]["Adres"]='<span class="waarschuwing">' + rows1[i]["Adres"] + '</span>';}
				else {
					rows1[i]["Adres"]=rows2[j]["Adres"];
				}
				
				str1=trim(rows1[i]["GPS_X"]);				
				str2=trim(rows2[j]["GPS_X"]);
				if (str1!='' && str1!=str2){
					rows1[i]["GPS_X"]='<span class="waarschuwing">' + rows1[i]["GPS_X"] + '</span>';}
				else {
					rows1[i]["GPS_X"]=rows2[j]["GPS_X"];}

				str1=trim(rows1[i]["GPS_Y"]);				
				str2=trim(rows2[j]["GPS_Y"]);
				if (str1!='' && str1!=str2){
					rows1[i]["GPS_Y"]='<span class="waarschuwing">' + rows1[i]["GPS_Y"] + '</span>';}
				else {
					rows1[i]["GPS_Y"]=rows2[j]["GPS_Y"];}

				str1=rows1[i]["Beginuur"];				
				str2=rows2[j]["Beginuur"];
				if (str1!='' && str1!=str2){
					rows1[i]["Beginuur"]='<span class="waarschuwing">' + rows1[i]["Beginuur"] + '</span>';}
				else {
					rows1[i]["Beginuur"]=rows2[j]["Beginuur"];}
					
				str1=rows1[i]["Einduur"];
				str2=rows2[j]["Einduur"];
				if (str1!='' && str1!=str2){
					rows1[i]["Einduur"]='<span class="waarschuwing">' + rows1[i]["Einduur"] + '</span>';}
				else {
					rows1[i]["Einduur"]=rows2[j]["Einduur"];}
			}
		}
		//Als er een verslag bestaat van de activiteit, geef dan hyperlink terug
		for (var j = 0; j < rows3.length ; j++){
			if (rows1[i]["Activiteit"].toUpperCase()==rows3[j]["Activiteit"].toUpperCase() && 
					datum==toStandaardDatum(rows3[j]["Datum"])){
					rows1[i]["Verslag"]=escape('ve-'+rows1[i]["Activiteit"]+'-'+datum);	//Zet om naar encoded url-anchor
			}
		}
		//Als er een fotoreeks bestaat van de activiteit, geef dan hyperlink terug
		for (var j = 0; j < rows4.length ; j++){
					//Spry.Debug.trace('f'+datum+' '+toStandaardDatum(rows4[j]["Datum"]))
			if (rows1[i]["Activiteit"].toUpperCase()==rows4[j]["Activiteit"].toUpperCase() && 
					datum==toStandaardDatum(rows4[j]["Datum"])){
					//rows1[i]["Foto/video"]=escape('fo-'+rows1[i]["Activiteit"]+'-'+datum);	//Zet om naar encoded url-anchor
					rows1[i]["Foto/video"]=rows4[j]["Index"];
			}
		}
	}
	
	pDSkalender.setDataFromArray(rows1);
	
	//Update de regions (kalender, tooltip)
	for (i=0;i < pRegions.length; i++){
		rgn=Spry.Data.getRegion(pRegions[i]);
		if (rgn){
			rgn.updateContent();		//Update de region
		}
	}
}
function MyObserverCallbackKalender(notificationType, dataSet, data)
{	
	//Tel het aantal loaded datasets.
	//Zodra alle datasets geladen zijn, start de "join"-functie "updateKalender"
	//Spry.Debug.trace("Observer Callback: " + notificationType);
	//Spry.Debug.trace(dataSet.getSourceElementID());
	
	var regions = ['db-kalender','db-toertochten','tooltips1']; //Te refreshen regions
	
	if (notificationType=="onDataChanged"){
		gAantalLoaded++;				//Dataset is geladen, verhoog teller
		}	
	if (gAantalLoaded==4) {
		//Update de kalendergegevens
		updateKalender(regions,dsKalenderTabel1,dsKalenderDetailsTabel1,dsVerslagenTabel1,dsFotovideoTabel1)
		
		//Verwijder observers (niet eerder uitvoeren)
		dsKalenderTabel1.removeObserver(MyObserverCallbackKalender);
		dsKalenderDetailsTabel1.removeObserver(MyObserverCallbackKalender);
		dsVerslagenTabel1.removeObserver(MyObserverCallbackKalender);
		dsFotovideoTabel1.removeObserver(MyObserverCallbackKalender);
		}
}
function updateVerslagen(pRegion,pDSverslagen,pDSfotovideo)
{	
	//Join tussen kalendertabel (master) en detailstabel (detail). FK = Activiteit
	//Indien er in de master waarden zijn ingevuld en er bestaat een detail, dan betekent dit een afwijking tov. de regel en
	//worden de waarden in een waarschuwingskleur gezet
	
	var rgn;		//Region
	var rows1=pDSverslagen.getUnfilteredData();
	var rows2=pDSfotovideo.getUnfilteredData();
	var pDSverslagen=new Spry.Data.DataSet();
	var str1;
	var str2;
	var datum;
	
	//Spry.Debug.trace(rows1.length+' '+rows2.length+' '+rows3.length+' '+rows4.length);
	for (var i = 0; i < rows1.length ; i++)
	{

		datum=toStandaardDatum(rows1[i]["Datum"]);
		rows1[i]["Datum"]=datum;
		
		//Als er een fotoreeks bestaat van de activiteit, geef dan hyperlink terug
		for (var j = 0; j < rows1.length ; j++){
					//Spry.Debug.trace('f'+datum+' '+toStandaardDatum(rows4[j]["Datum"]))
			if (rows1[i]["Activiteit"].toUpperCase()==rows2[j]["Activiteit"].toUpperCase() && 
					datum==toStandaardDatum(rows2[j]["Datum"])){
					//rows1[i]["Foto/video"]=escape('fo-'+rows1[i]["Activiteit"]+'-'+datum);	//Zet om naar encoded url-anchor
					rows1[i]["Date"]=toUSdatum(rows2[j]["Datum"]);
					rows1[i]["Index"]=rows2[j]["Index"];
					rows1[i]["Thumb1"]=rows2[j]["Thumb1"];
					rows1[i]["Thumb2"]=rows2[j]["Thumb2"];
					rows1[i]["Thumb3"]=rows2[j]["Thumb3"];
					rows1[i]["Video1"]=rows2[j]["Video1"];
					rows1[i]["Video2"]=rows2[j]["Video2"];
					rows1[i]["Video2"]=rows2[j]["Video3"];
			}
		}
	}
	
	pDSverslagen.setDataFromArray(rows1);
	
	//Update de region (verslagen)
	rgn=Spry.Data.getRegion(pRegion);
	if (rgn){
		rgn.updateContent();		//Update de region
	}	
}

function MyObserverCallbackVerslagen(notificationType, dataSet, data)
{	
	//Tel het aantal loaded datasets.
	//Zodra alle datasets geladen zijn, start de "join"-functie "updateKalender"
	//Spry.Debug.trace("Observer Callback: " + notificationType);
	//Spry.Debug.trace(dataSet.getSourceElementID());
	
	var region = 'db-verslagen'; //Te refreshen region
	
	if (notificationType=="onDataChanged"){
		gAantalLoaded++;				//Dataset is geladen, verhoog teller
		}	
	if (gAantalLoaded==2) {
		//Update de verslagen
		updateVerslagen(region,dsVerslagenTabel1,dsFotovideoTabel1)
		
		//Verwijder observers (niet eerder uitvoeren)
		dsVerslagenTabel1.removeObserver(MyObserverCallbackKalender);
		dsFotovideoTabel1.removeObserver(MyObserverCallbackKalender);
		}
}

function MyObserverCallbackAnker(notificationType, dataSet, data)
{
	var str=unescape(location.search.substr(1,location.search.length));
	if (str.indexOf('ank')>=0) {
//		if (document.getElementById(anker[0])){
		if (notificationType=='onDataChanged') {
			var anker=str.substr(str.indexOf('ank')+4).split('&');
			location.hash=anker[0];
			//dataSet.removeObserver(MyObserverCallbackAnker);
			return;
		}
		return;
	}
	else {
		//dataSet.removeObserver(MyObserverCallbackAnker);
	}
}

function trim(str, pGeenSpaties){
// 	Spry.Debug.trace('trim');
	var start = -1;
	var end = str.length;
	if (!pGeenSpaties) {
	 str=str.replace(/ /gi, '');	//Verwijder alle spaties
	}
	str=str.replace('&nbsp;','')
	if (str.length==1 && str.charCodeAt(0)==160) str='';
	while( str.charCodeAt(--end) < 33 );
	while( str.charCodeAt(++start) < 33 );
	return str.slice( start, end + 1 );
}

function preloadImages(pDataSet){
	var rows=pDataSet.getData();
	var lArray=new Array;
	if (document.images){
		//Spry.Debug.trace(rows.length);
		for (var i = 0; i < rows.length; i++){
			lArray[i]=new Image();
			lArray[i].src=rows[i]["Foto"];
		}
	}
}

function selectKalender(pType)
{
	if(pType=='all'){
		dsKalenderTabel1.filter(null);
		document.getElementById("RadioGroupKalender_1").checked=true;
	}
	else{
		dsKalenderTabel1.filter(myFilterFunc0);
		document.getElementById("RadioGroupKalender_0").checked=true;
	}
}

function isNieuw(pDatum)
//Ouderdom (bv. v/e bericht) is jonger dan bepaald aantal dagen
{
	var datum=FormattedDatum2(pDatum);

	if(datum.getTime() > vandaag().getTime()-10*dagInMilliseconden)
	{return true};
}

//----------------------------------------------
//Creëer dynamische CSS
//http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript
function getCSSRule(ruleName, deleteFlag) {               // Return requested style obejct
ruleName=ruleName.toLowerCase();                       // Convert test string to lower case.
if (document.styleSheets) {                            // If browser can play with stylesheets
for (var i=0; i<document.styleSheets.length; i++) { // For each stylesheet         
var styleSheet=document.styleSheets[i];          // Get the current Stylesheet
var ii=0;                                        // Initialize subCounter.         
var cssRule=false;                               // Initialize cssRule.          
do {                                             // For each rule in stylesheet            
if (styleSheet.cssRules) {                    // Browser uses cssRules?               
cssRule = styleSheet.cssRules[ii];         // Yes --Mozilla Style            
} else {                                      // Browser usses rules?               
cssRule = styleSheet.rules[ii];            // Yes IE style.             
}                                             // End IE check.            
if (cssRule)  {                               // If we found a rule...               
if (cssRule.selectorText.toLowerCase()==ruleName) { //  match ruleName?                  
if (deleteFlag=='delete') {             // Yes.  Are we deleteing?                     
if (styleSheet.cssRules) {           // Yes, deleting...                        
styleSheet.deleteRule(ii);        // Delete rule, Moz Style                     
} else {                             // Still deleting.                        
styleSheet.removeRule(ii);        // Delete rule IE style.                     
}                                    // End IE check.                     
return true;                         // return true, class deleted.                 
} else {                                // found and not deleting.                     
return cssRule;                      // return the style object.                  
}                                       // End delete Check               
}                                          // End found rule name            
}                                             // end found cssRule           
ii++;                                         // Increment sub-counter         
} while (cssRule)                                // end While loop      
}                                                   // end For loop   
}                                                      // end styleSheet ability check   
return false;                                          // we found NOTHING!
}                                                         // end getCSSRule 
function killCSSRule(ruleName) {                          // Delete a CSS rule      
return getCSSRule(ruleName,'delete');                  // just call getCSSRule w/delete flag.
}                                                         // end killCSSRule
function addCSSRule(ruleName) {                           // Create a new css rule   
if (document.styleSheets) {                            // Can browser do styleSheets?      
if (!getCSSRule(ruleName)) {                        // if rule doesn't exist...         
if (document.styleSheets[0].addRule) {           // Browser is IE?            
document.styleSheets[0].addRule(ruleName, null,0);      // Yes, add IE style         
} else {                                         // Browser is IE?           
document.styleSheets[0].insertRule(ruleName+' { }', 0); // Yes, add Moz style.        
}                                                // End browser check      
}                                                   // End already exist check.   
}                                                      // End browser ability check.   
return getCSSRule(ruleName);                           // return rule we just created.
} 

function wijzigFoto (pDataset,pRijNr) {
	pDataset.setCurrentRowNumber(pRijNr==0?pDataset.getRowCount()-1:pRijNr-1);Spry.Debug.trace(pRijNr);
	MM_changeProp('foto-1','','backgroundImage','url(pDataset::Foto)','SPAN');
}														