var maanden_lc = new Array('januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');
var maanden = new Array('Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December');
var dagen = new Array('zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag');

var vorige_maanden = 2; //aantal maanden terug tonen 0..11
var agenda = new Array;
var trainers = new Array;
var plaatsen = new Array;
var today = new Date();
var today_day = vorige_maanden ? 1 : today.getDate(); //altijd 1ste van de maand?
var today_month = today.getMonth()- vorige_maanden;
var today_year = today.getFullYear();
		if(today_month<0){
			today_month = today_month+12;
			today_year--;
		}
var today_stamp = 512 * today_year + 32 * today_month + today_day;


var str_error='';
var space='&nbsp;';	
var br = '<br>';
var pijl = '<img src="images/pijl_agenda.gif" border=0>';
var pijl2 = '<img src="images/pijl2.gif" border=0>';
var kruisje = '<img src="images/kruisje.gif" border=0 height=12 width=15 align=top alt="verberg alle data">'; 
var check=0;

var reg_info = /^\s*(aan|uit)\s*\|\s*(informatiebijeenkomst|cursus|workshop|training1|training2)\s*\|\s*([^\|]*?)\s*\|\s*([^\|]*?)\s*\|\s*([^\|]*)\s*(?:\|\s*([^\|]*)\s*)?$/i;	
var reg_date = /^\s*(\d{4})\s*\|\s*(\w{2,})\s*(\d{1,2})\s*(\w{2,})\s*\|\s*([^\|]*?)\s*\|\s*([^\|]*)\s*$/;

var selected_location;
var selected_trainer;

window.location.href.search(/[\?\&]plaats=([^\&]*)/);
if(RegExp.$1) selected_location = remove_non_text(RegExp.$1);
window.location.href.search(/[\?\&]trainer=([^\&]*)/);
if(RegExp.$1) selected_trainer = remove_non_text(RegExp.$1);

//***************************************************************

function init_agenda(formname,par1)
{
	check=par1;
	form_obj = getObj(formname);
	convert_agenda(form_obj);
}

//***************************************************************
function convert_agenda(form_obj)
{
	for(var i=1; i<cursus_info.length;i++){
		if(cursus_info[i].search(reg_info) != -1){
			var this_show = RegExp.$1.toLowerCase();
			var this_cursus = RegExp.$2; 
			var this_city = RegExp.$3;
			var this_trainer = RegExp.$4;
			var this_page = RegExp.$5;
			var this_location_old='';
			var this_time_old='';
			var found=false;
			

			for(j=1; j<cursus_data[i].length;j++)		
				if(this_show == 'aan'){
					if(cursus_data[i][j].search(reg_date) != -1){
						var this_year_number = parseInt(RegExp.$1,10);
						var this_dayname_number = day_to_num(RegExp.$2);
						var this_day_number = parseInt(RegExp.$3,10); 
						var this_month_number = month_to_num(RegExp.$4);
						var this_time = RegExp.$5;
						var this_location = RegExp.$6; 
						var date_stamp = this_year_number*512 + this_month_number*32 + this_day_number;

						if(today_stamp > date_stamp) continue;

						if(this_location.toLowerCase() == 'idem') this_location = this_location_old;
						else this_location_old = this_location;

						if(this_time.toLowerCase() == 'idem') this_time = this_time_old;
						else this_time_old = this_time;
							
						if(this_dayname_number==-1 || !this_month_number==-1 || 
							this_day_number<1 || this_day_number>31 ||
							this_year_number<2000 || this_year_number>3000)
							show_cursus_data(i,j,'red');
							else {
								found=true;
								show_cursus_data(i,j, 'black'); 
								agenda.push(new Array(date_stamp,this_city,this_cursus,this_trainer,this_dayname_number,this_day_number,this_month_number,this_year_number,this_location,this_time,this_page,i,j));
							}
					} else show_cursus_data(i,j,'red');
				} else show_cursus_data(i,j,'green');
			
			if(1 || found){ //show all
				trainers.push(this_trainer);
				plaatsen.push(this_city);
			}
								
		} else show_cursus_info(i,'red');
	}

	remove_duplicates(plaatsen);
	remove_duplicates(trainers);

	var option_selected = 0;
	for(i=0; i<plaatsen.length;i++){
		if(selected_location == remove_non_text(plaatsen[i])) option_selected = i+1;
		form_obj.plaats.options[form_obj.plaats.options.length] = new Option(plaatsen[i],remove_non_text(plaatsen[i])); 
	}
	form_obj.plaats.options[option_selected].selected=true;

	var option_selected = 0;
	for(i=0; i<trainers.length;i++){
		if(selected_trainer == remove_non_text(trainers[i])) option_selected = i+1;
		form_obj.trainer.options[form_obj.trainer.options.length] = new Option(trainers[i],remove_non_text(trainers[i])); 
	}
	form_obj.trainer.options[option_selected].selected=true;
	
	
	var month = today_month;
	var year = today_year;
	
	do{
		form_obj.maand.options[form_obj.maand.options.length] = new Option(maanden[month] + ' ' + year,month); 
		if(++month >= 12) {month=0; year=today_year+1;}
	} while(month!=today_month);
	form_obj.maand.options[vorige_maanden].selected=true;

	
	if(!check) agenda.sort(); 
	else document.body.innerHTML = '<div style="text-align:left; padding:10px; background-color:white; font-size:12px;">'+ str_error + '</div>';
		
	//alert(agenda.length);
}

//***************************************************************

function toon_data(formname)
{
	if(check) return;
	
	form_obj = getObj(formname);
	result_obj = getObj('result');
	result_obj.innerHTML='';

	var selected_cursus='';
	var selected_training2 = '';
	var selected_informatiebijeenkomst='';
	var selected_workshop='';
	var result_table=new Array();

	if(form_obj.cursus.checked) {
		selected_cursus = form_obj.cursus.value;
		selected_training1 = 'training1';
		selected_training2 = 'training2';
	}
	
	if(form_obj.informatiebijeenkomst.checked) selected_informatiebijeenkomst = form_obj.informatiebijeenkomst.value;
	if(form_obj.workshop.checked) selected_workshop = form_obj.workshop.value;

	var selected_plaats = form_obj.plaats.value;
	var selected_maand  = form_obj.maand.value;
	var selected_jaar = selected_maand >= today_month ? today_year : today_year+1;
	var selected_trainer = form_obj.trainer.value;

	for(var i=0; i<agenda.length;i++){
		var this_city = agenda[i][1];	
		var this_cursus = agenda[i][2];	
		var this_trainer = agenda[i][3];	
		var this_dayname_number = agenda[i][4];	
		var this_day_number = agenda[i][5];	
		var this_month_number = agenda[i][6];	
		var this_year_number = agenda[i][7];
		var this_location = agenda[i][8];
		var this_time = agenda[i][9];
		var this_page = agenda[i][10];
		var cursus_i = agenda[i][11];
		var cursus_j = agenda[i][12];
		var this_date = remove_non_text(cursus_data[cursus_i][cursus_j].replace(/^([^\|]+\|[^\|]+).*?$/,'$1'));
		var this_cursus_removed = remove_non_text(this_cursus);

					
		if(
			( selected_cursus == this_cursus_removed || selected_training2 == this_cursus_removed || selected_informatiebijeenkomst == this_cursus_removed || selected_workshop == this_cursus_removed ) &&
			( !selected_plaats || selected_plaats == remove_non_text(this_city) ) &&
			( !selected_trainer || selected_trainer == remove_non_text(this_trainer) )
			) {
			
			if(!selected_maand || this_year_number > selected_jaar || 
				(this_year_number == selected_jaar && this_month_number >= selected_maand))
					result_table.push(new Array('?',this_city,this_cursus,this_trainer,this_dayname_number,this_day_number,this_month_number,this_year_number,this_location,this_time,this_page,this_date,cursus_i,cursus_j));
			}
	}

/******************** show header selection table *********************************/
	var str = '<table style="width:330px;" border="0" cellspacing="0" cellpadding="0">';

	str += '<tr><td><br><strong>';	
	if(!selected_cursus && !selected_informatiebijeenkomst && !selected_workshop) str += 'Kies workshop, training en/of proefavond!';
	else {
		tmp =  selected_cursus + '|' + selected_informatiebijeenkomst + '|' + selected_workshop + '|gesorteerd op datum';
		if(tmp.search(/^([^\|]+?)\|+([^\|]+?)\|+([^\|]+?)\|+(gesorteerd.*)$/i) != -1) str += RegExp.$1 + ', ' + RegExp.$2 + ' en ' +  RegExp.$3 + ' ' +RegExp.$4;
		else if(tmp.search(/^\|*([^\|]+?)\|+([^\|]+?)\|+(gesorteerd.*)$/i) != -1) str+= RegExp.$1 + ' en ' + RegExp.$2 + ' ' + RegExp.$3;
		else str += tmp.replace(/^\|*([^\|]+?)\|+(gesorteerd.*)$/,'$1 $2');
	}
	str += '</strong></td></tr>'; 
	str = str.replace(/cursus|training1|training2/,'Trainingen');
	str = str.replace(/informatiebijeenkomst/,'Proefavonden');
	str = str.replace(/workshop/,'Workshops');
		
	if(selected_cursus || selected_informatiebijeenkomst || selected_workshop){
		if(selected_plaats) str +=  '<tr><td>Plaats: ' + form_obj.plaats.options[form_obj.plaats.options.selectedIndex].text + '</td></tr>';
		if(selected_maand) str += '<tr><td>Vanaf de maand: ' + form_obj.maand.options[form_obj.maand.options.selectedIndex].text + '</td></tr>';
		if(selected_trainer) str += '<tr><td>Gegegeven door: ' + form_obj.trainer.options[form_obj.trainer.options.selectedIndex].text + '</td></tr>';
	}
	str+='</table>';

/******************** show contents selection table *********************************/
	select_table= '<table style="width:330px;" class="infotabel" border="0" cellspacing="0" cellpadding="0">';
	var maand=''; 
	var month_count=0;

	if(result_table.length==0)
		str += '<p class=red>Geen workshops, trainingen of proefavonden gevonden die voldoen aan de gemaakte selectie.</p>';
	else {

		str += '<br>';

		for(var i=0; i<result_table.length;i++){
			var plaats = result_table[i][1];	
			var cursus = result_table[i][2]; var cursus_lc = 	cursus.toLowerCase();
			var trainer = result_table[i][3];	
			var dagnaamnr = result_table[i][4];	
			var dagnr = result_table[i][5]; 	if(dagnr<10) dagnr= '0' + dagnr;
			var maandnr = result_table[i][6];	
			var jaar = result_table[i][7];	
			var locatie = result_table[i][8];	if(!locatie) locatie=space;
			var time = result_table[i][9];		if(!time) time=space;
			var page = result_table[i][10];		if(!page) page=space;
			var datum = result_table[i][11];
			var cursus_i = result_table[i][12];
			var cursus_j = result_table[i][13];			

			var show_next='';
			var maand_new = maanden[maandnr] + space + jaar;

			if(i!=result_table.length-1) show_next = '&nbsp;<a href="#next' + (month_count+1) + '">>></a>';
			if(maand != maand_new) str += '<a style="padding-top:15px;" name="next' + (month_count++) + '">&nbsp;</a><strong>' + maand_new + show_next + '</strong>';
			maand = maand_new;

			var aanmelden = '<div style="float:right;">'+ space + '<a href="';
			aanmelden += 'aanmelden_' + cursus_lc + '.htm?';
			aanmelden += plaats + '&' + trainer + '&' + datum + '">' + pijl + 'aanmelden</a></div>';

			//selection table
			str += select_table;
			
			//next row
			str += '<tr><td height=22 colspan=2>' + pijl2 + '<strong>' +  plaats + '</strong>';
			var foo = cursus;
			if (cursus_lc == 'informatiebijeenkomst') foo = 'Proefavond';
			if (cursus_lc == 'cursus') foo = 'Training 1';
			if (cursus_lc == 'training1') foo = 'Training 1';
			if (cursus_lc == 'training2') foo = 'Training 2';
			str += space + '(' + foo + ')</td></tr>';
			
			//next row
			var start_datum;
			if(cursus_lc == 'cursus' || cursus_lc == 'training1' || cursus_lc == 'training2') start_datum = 'Startdatum:'; else start_datum = 'Datum:'
			str += '<tr><td style="width:80px;">' + start_datum + '</td><td>';
			str += '<table class="datumtabel" width=100% cellspacing=0 cellpadding=0><tr>';
			str += '<td><nobr><b>' + dagen[dagnaamnr].substring(0,2) + space + dagnr + space + maanden_lc[maandnr] + '</b></nobr></td>';
			str += '<td align=right><nobr>' + time + space + '</nobr></td></tr>';
			if(cursus_lc == 'cursus' || cursus_lc == 'training1' || cursus_lc == 'training2') 
				str += '<tr><td colspan=2 id=col_exp' + cursus_i + cursus_j + '><a href="javascript:onclick=expanding(' + cursus_i + ',' + cursus_j + ');">bekijk alle data</a></td></tr>';
			str += '</table></td></tr></table>';			
			
			//expanding dates happens here
			str += '<div style="display:none;" id="div_collapse' + cursus_i + cursus_j + '">';
			str += '</div>';

			str += select_table;
			//next row
			str += '<tr><td width=80 height=22>Locatie:</td><td>' + locatie + '</td></tr>';
			if(page.search(/^(\&nbsp;|\s)*$/) == -1) trainer = '<a href="' + page + '">' + trainer + '</a>';
			
			//next row
			str += '<tr><td height=22>Trainer:</td><td><div style="float:left;">' + trainer + '</div>' +  aanmelden + '</td></tr>';
			str += '</table><br>';
		}
	}

	result_content = getObj('content');
	result_obj.innerHTML = str;
	
	if(result_obj.offsetHeight > 450) result_obj.innerHTML += '<DIV align=right>&nbsp;<FONT style="FONT-SIZE: 10px"><A href="#home" target=_self>omhoog</A></FONT></DIV>';

	if(result_content && result_obj.offsetHeight > result_content.offsetHeight) result_content.style.height=result_content.offsetHeight; //fix FireFox bug
	if(document.body.focus) document.body.focus();

}

//***************************************************************
function expanding(cursus_i,cursus_j)
{
	var expand = '';
	var div_obj = getObj('div_collapse' + cursus_i + cursus_j); 
	var col_exp_obj = getObj('col_exp' + cursus_i + cursus_j);
	var temp=space;
	var collapse_link = '<a href="javascript:onclick=collapsing(' + cursus_i + ',' + cursus_j + ');">';
	
	if(div_obj){
		for(var k=1; k < cursus_alle_data[cursus_i][cursus_j].length; k++){
				if(cursus_alle_data[cursus_i][cursus_j][k].search(/^([^|]*)\|([^|]*)$/i) != -1){
					if (k==1) temp = collapse_link + kruisje + 'sluiten</a>'; else temp = space;
					expand += '<tr><td style="width:80px;border:0px;text-align:left;">' + temp + '</td>';
					expand += '<td style="border:0px;">' + pijl2 + '<b>' + RegExp.$1 + '</b></td>'; 
					expand += '<td style="border:0px; text-align:right;"><nobr>' + RegExp.$2 + space + '</nobr></td></tr>';
				}
		}
		if(expand) {
			if(col_exp_obj) col_exp_obj.innerHTML = space; //collapse_link + 'verberg alle data' + '</a>';
			if(div_obj) {
				div_obj.innerHTML = select_table + expand + '<tr style="height:1px;"><td><img src="images/space.gif"></td><td><img src="images/space.gif"></td><td><img src="images/space.gif"></td></tr></table>';
				div_obj.style.display='block';
			}
		}
	}
}

//***************************************************************
function collapsing(cursus_i,cursus_j)
{
		var col_exp_obj = getObj('col_exp' + cursus_i + cursus_j);
		var div_obj = getObj('div_collapse' + cursus_i + cursus_j);
		if(col_exp_obj) col_exp_obj.innerHTML = '<a href="javascript:onclick=expanding(' + cursus_i + ',' + cursus_j + ');">bekijk alle data</a>';
		if(div_obj) div_obj.innerHTML = '';
		div_obj.style.display='none';
}

//***************************************************************

function remove_duplicates(obj_array)
{
	for(i=obj_array.length-1; i>0; i--){
		for(j=i-1; j>=0; j--)
			if(obj_array[i] == obj_array[j])
				obj_array.splice(i,1);
	}
	obj_array.sort();
}


//***************************************************************
function show_cursus_info(x,color)
{
	if(!check) return;
	str_error+='<div style="margin:5px; color:' + color + ';">' + cursus_info[x] + '</div>';
}

//***************************************************************
function show_cursus_data(x,y,color)
{
	if(!check) return;
	str_error+='<div style="margin:5px; color:' + color + ';">' + cursus_info[x] + ' ' + cursus_data[x][y] + '</div>';
}

//***************************************************************
function getObj(obj_id)
{
	return document.getElementById ? document.getElementById(obj_id) : eval(obj_id);
}

//***************************************************************
function remove_non_text(txt)
{ 
	//return txt.replace(/([ \s\t]|[^\w])/g,'').toLowerCase();
	return txt.replace(/(%[0-9,a-f,A-F]{2}|[ \s\t\&]|[^\w]|[\x80-\xFF])/g,'').toLowerCase();
}

//***************************************************************
function day_to_num(dagnaam_kort)
{
	for(var x=0; x<dagen.length; x++)
		if(dagnaam_kort == dagen[x].substring(0,dagnaam_kort.length)) return x;
	return -1;
}

//***************************************************************
function month_to_num(maandnaam_kort)
{
	if(!maandnaam_kort.length) return -1;
	for(var x=0; x<maanden.length; x++)
		if(maandnaam_kort == maanden_lc[x].substring(0,maandnaam_kort.length)) return x;
		else if(maandnaam_kort == 'mrt') return 2;
	return -1;
}