var debug=0;
var testing=0;
var red=0;

var show_names = /^\s*(naam|telefoon|training|activiteit|dates)\s*$/,i;
var validate_no_fields = /^\s*(op_datum|opmerkingen|tussenvoegsel|opleiding_beroep|gevolgde_trainingen)\s*$/i;
var validate_bedrijf = /bedrijf/i;

var days = new Array('zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag');
var months = new Array('januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');

//******************** months, days *****************************
var maanden = new Array('januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december');
var mnd = new Array('jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec');
var dagen = new Array('zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag');

var Today = new Date();
var CurrentYear = Today.getFullYear();
var CurrentMonth = Today.getMonth();
var CurrentDay = Today.getDate();

var Obj_data;
var activiteiten = new Array;

var reg_name = /^\s*(uit|aan)\s*\~\s*([^~]*)\s*\~\s*([^~]*)\s*(?:\~\s*([^~]*)\s*)?$/i;
var reg_date = /^\s*([^\~]*?\~)?(?:\s*(\d{1,2})\s+(\w{3,9})\s+(\d{4})(?:\s+\-\s+(\d{1,9})\s+(\w{3,9})\s+(\d{4}))?\s*\~\s*(.*?)\s*(?:\~\s*(.*?)\s*)?)?$/i;

var no_change_in_situation_training_obj;
var no_change_in_situation_activity_obj;
var diet_activity_obj;
var no_change_in_situation_training_html;
var no_change_in_situation_activity_html;
var diet_activity_html;

var myForm_trainingen;
var myForm_activiteiten;
//if(this.location.href.search(/testing/) != -1) alert('test');

//***************************************************************
function init_aanmelden()
{
  form_obj = getObj('aanmeld_form');
  myForm_trainingen = getObj('Form_trainingen');
  myForm_activiteiten = getObj('Form_activiteiten');
   
  init_clear(myForm_trainingen);
  init_clear(myForm_activiteiten);
  
	conitional_form_blocks = new Array('diet_activity','no_change_in_situation_training','no_change_in_situation_activity');
  for(i=0;i<conitional_form_blocks.length;i++){
  	obj = getObj(conitional_form_blocks[i]);
  	eval(conitional_form_blocks[i] + '_obj = obj');
  	if(obj){
  		eval(conitional_form_blocks[i] + '_html = obj.innerHTML');
  		 obj.innerHTML = '';
		}	
  }
  
  select_lists = new Array();
    
  for(k=0;k<kind_activity_array.length;k++)
    form_select_objects[k] = eval('form_obj.' + kind_activity_array[k]);

  this.location.href.search(/\?sel=(\d+)_(\d+)/);
  var i_sel = RegExp.$1 ? RegExp.$1 : 0;
  var j_sel = RegExp.$1 ? RegExp.$2 : 0;

  convert_agenda('apply_form');
  generate_select_lists(i_sel,'apply_form');

  if(!i_sel || !j_sel){  //activity in url?
    this.location.href.search(/\?(.+)$/); 
    var act = remove_non_text(RegExp.$1); 

outerloop:    
    for(k=0;k<form_select_objects.length;k++)   
      for(j=0;j<form_select_objects[k].length;j++)  
        if(act == remove_non_text(form_select_objects[k][j].innerHTML) )
          {
            form_select_objects[k][j].selected = true;
            break outerloop;
          }
  }
  
  for(k=0;k<form_select_objects.length;k++)
    if(form_select_objects[k].selectedIndex > 0){
      show_dates(form_select_objects[k]);
      break;
    }
    
  if(i_sel && j_sel){
    if(cursus_data[i_sel][j_sel].search(reg_date) != -1){   
      var this_start_date = RegExp.$2 + ' ' + maanden[month_to_num(RegExp.$3)] + ' ' + RegExp.$4;
      for(k=0;k<form_obj.dates.length;k++)
      	if(form_obj.dates[k].value == this_start_date){
      		form_obj.dates.selectedIndex = k;
      		break;
      	}
    } 
  }
  
  if(myForm_trainingen.style.display == 'none' && myForm_activiteiten.style.display == 'none')
  	myForm_activiteiten.style.display = 'block'; 
    
}


//***************************************************************
function init_clear(myform)
{
  for(i=0;i<myform.length;i++)  //reset radio buttons with class=uncheck_radio
	if(myform[i].className == 'uncheck_radio')  //test input radio fields
		myform[i].checked = false;
}

//***************************************************************
function show_dates(obj)
{
  var inx = obj.selectedIndex;
  form_obj.dates.length = 1;
  form_obj.dates.selectedIndex = 0;
	       
  myForm_trainingen.style.display = myForm_activiteiten.style.display = 'none'; 

  for(k=0;k<form_select_objects.length;k++)  //reset other select boxes
    if(obj != form_select_objects[k]) form_select_objects[k].selectedIndex = 0;
  else  {
      if(form_select_objects[k].name == 'training') myForm_trainingen.style.display = 'block';    
      if(form_select_objects[k].name == 'activiteit') myForm_activiteiten.style.display = 'block';    
  }
            
  if(obj.options[inx].value.search(/###(\d+)/) != -1){
    var this_i = RegExp.$1;
    
    for(j=0;j<agenda_ruw.length;j++)
    {
      if(today_stamp > agenda_ruw[j][0])  continue;
      if(this_i != agenda_ruw[j][1]) continue;
      var this_start_date = agenda_ruw[j][9] + ' ' + maanden[agenda_ruw[j][8]] + ' ' + agenda_ruw[j][7];
      var this_short_date = agenda_ruw[j][9] + ' ' + maanden[agenda_ruw[j][8]] + ' ' + (agenda_ruw[j][7] == today.getFullYear() ? '' : agenda_ruw[j][7]);     
      form_obj.dates.options[form_obj.dates.length] =  new Option(this_start_date,this_start_date);
    }
  } 
  
  form_obj.dates.size = form_obj.dates.length;
  if(form_obj.dates.length == 1) form_obj.dates.options[0].selected = true;
  if(form_obj.dates.length == 2) form_obj.dates.options[1].selected = true;

  if(form_obj.dates.length == 1){
		myForm_trainingen.style.display = 'none';	  	
  	myForm_activiteiten.style.display = 'block';  	
	}
}


//******* func_no_change_in_situation_training  **********************
function func_no_change_in_situation_training(obj)
{
	if(!no_change_in_situation_training_obj) return;
	
	if(obj.value == 'ja')
		no_change_in_situation_training_obj.innerHTML = '';
	else no_change_in_situation_training_obj.innerHTML = no_change_in_situation_training_html;
}


//******* func_no_change_in_situation_activity  **********************
function func_no_change_in_situation_activity(obj)
{
	if(obj.name == 'diner'){
		diet_activity_obj = getObj('diet_activity');  //must be initilized again because parent object was removed
		if(!diet_activity_obj) return;
		if(obj.value == 'nee')
			diet_activity_obj.innerHTML = '';
		else diet_activity_obj.innerHTML = diet_activity_html;
	} else {
		if(!no_change_in_situation_activity_obj) return;
		if(obj.value == 'ja')
			no_change_in_situation_activity_obj.innerHTML = '';
		else no_change_in_situation_activity_obj.innerHTML = no_change_in_situation_activity_html;
	}
}


//******* send_form  ****************************************
function send_form(myform,dada_list,pinnr)
{
	red=0;
	
	for(i=0;i<myform.length;i++)  //remove 'red' 
		 remove_red(myform,myform[i]); 
		 	
	var top_el = getObj('frame');
	if(!form_obj.activiteit.selectedIndex && !form_obj.training.selectedIndex){
		if(top_el && top_el.scrollIntoView) top_el.scrollIntoView();
		alert('Selecteer de gewenste training of activiteit en de bijbehorende datum.'); 
		return false;
	}
	
	if(form_obj.dates.selectedIndex == 0){
		if(top_el && top_el.scrollIntoView) top_el.scrollIntoView();
		alert('Selecteer de gewenste datum.'); return false;
	}

	
	if(!validate_form(myform,validate_no_fields)) {
			alert('Het formulier is nog niet volledig of correct ingevuld.\nControleer de met rood gemarkeerde velden.'); 
			if(!debug) return false;
	}

	if(form_obj.training.selectedIndex && myform.akkoord_voorwaarden && !myform.akkoord_voorwaarden[0].checked) 
	{
			make_red(myform,myform.akkoord_voorwaarden[0]);
			scroll_to();
			alert('Graag de vraag "Ga je akkoord met onze Algemene Voorwaarden?"\nmet "Ja" beantwoorden om je te kunnen aanmelden.');
			return false;
	}
			
	
	if(myform.nieuwsbrief && myform.nieuwsbrief.checked && myform.email.value.search(/(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)/) == -1) 
	{
			make_red(myform,myform.email);
			scroll_to();
			make_red(myform,myform.nieuwsbrief);
			alert('Graag je email adres invullen als je de nieuwsbrief wilt ontvangen.');
			return false;
	}

	if(myform.id == 'Form_trainingen' || myform.id == 'Form_activiteiten')
	{
		var str='Controleer de volgende gegevens:\n';
		
//		for(i=0;i<form_obj.length;i++)
//			if(form_obj[i].name.search(show_names) != -1){
//				if(myform.id == 'Form_trainingen' && form_obj[i].name == 'activiteit') continue;
//				if(myform.id == 'Form_activiteiten' && form_obj[i].name == 'training') continue;
//				if(form_obj[i].value.search(/^\s*$/) == -1) str += '\n' + form_obj[i].name.replace(/^dates$/,'datum') + ':   ' + form_obj[i].options[form_obj[i].selectedIndex].innerHTML;
//			}
//		
//		str += '\n';
		
		
		for(i=0;i<myform.length;i++)
			if(myform[i].name.search(show_names) != -1)
				if(myform[i].value.search(/^\s*$/) == -1) str += '\n' + myform[i].name + ': ' + myform[i].value;
		
		str += '\n\nDruk op OK om de aanmelding te versturen.\nDruk op Annuleren of Cancel om gegevens te wijzigen.\n\n';
		
		if(!confirm(str)) return 0;		
		if( window.print && confirm('Wil je het formulier nog afdrukken?\n(OK=afdrukken en versturen, Annuleren of Cancel=alleen versturen)') ) 
				window.print();
	}

	if(myform.id == "Form_dagopening") 	myform.excel_info.value = '\n<MG>aanmelding</MG><FN>'+myform.voornaam.value+'</FN> <MN>'+myform.tussenvoegsel.value+'</MN> <LN>'+myform.achternaam.value+'</LN> <ZC>'+myform.postcode.value+'</ZC> <CY>'+myform.woonplaats.value+'</CY> <PH>'+myform.telefoon.value+'</PH> <EMAIL>'+myform.email.value+'</EMAIL>';

	if(dada_list && pinnr){
			var my_dada_frame = window.frames["send_dada_frame"];

			if(!my_dada_frame) {
				myform.redirect.value = 'http://www.venwoude.nl/cgi-bin/dada/venwoude.nl.cgi/s/' + dada_list + '/' + myform.email.value + '?nr=' + pinnr; 
				if(myform.waarschuwing) myform.waarschuwing.value='';
			} else {
				if(myform.nieuwsbrief && myform.nieuwsbrief.checked){
					my_dada_frame.location.replace('http://www.venwoude.nl/cgi-bin/dada/venwoude.nl.cgi/s/' + dada_list + '/' + myform.email.value + '?nr=' + pinnr);
					myform.nieuwsbrief.value='ja';
				}
			}
	}

	myform.submit();
}

//***************************************************************
function validate_form(myform,nofields)
{
	red=0;

	for(i=0;i<myform.length;i++){  //make red if not correct
		
		var field = myform[i];
	
		if(field.name.search(nofields) == -1 )
			if(field.tagName == 'INPUT' && field.type == 'text' || field.type == 'textarea' ) { //test input text fields
				switch(field.name)
				{
					case 'telefoon': 
					case 'nood_telefoon':
						if(field.value.search(/[\s\-\.\d]{9,}/) == -1)
							if(field.className.search(/niet_verplicht/i) == -1 || field.value.search(/(^\s*$)/) == -1)
								make_red(myform,field)
						break;
					case 'postcode':
						if(field.value.search(/^\s*\d{4}\s*(\w{2})?\s*$/) == -1)						
							if(field.className.search(/niet_verplicht/i) == -1 || field.value.search(/(^\s*$)/) == -1)
								make_red(myform,field)
						break;
					case 'huisnummer':
					case 'nood_huisnummer':
						if(field.value.search(/^\s*\d+.*$/) == -1)						
							if(field.className.search(/niet_verplicht/i) == -1 || field.value.search(/(^\s*$)/) == -1)
								make_red(myform,field)
						break;												
					case 'email':
						if(field.value.search(/(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)/) == -1) 
							if(field.className.search(/niet_verplicht/i) == -1 || field.value.search(/(^\s*$)/) == -1)
								make_red(myform,field)
						break;									
					case 'geboorte_datum':
						if(field.value.search(/[\s\d\W]{4,}/) == -1)					 
							if(field.className.search(/niet_verplicht/i) == -1 || field.value.search(/(^\s*$)/) == -1)
								make_red(myform,field)
						break;
					default:
						if(field.name.search(validate_bedrijf)  == -1 || getObj('vergoed_ja').checked == true)
							if(field.value.search(/[a-z,A-Z]{2,}/i) == -1)
								if(field.className.search(/niet_verplicht/i) == -1 || field.value.search(/(^\s*$)/) == -1)
									make_red(myform,field)
				}
			}
			
			else if(field.tagName == 'INPUT' && field.type == 'radio' ){  //test input radio fields
				var radio = eval('myform.' + field.name);
	
				for(j=0;j<radio.length;j++)
					if(radio[j].checked) {break;}
					
				if(j>=radio.length) make_red(myform,field);
			}
			
			else if(field.tagName == 'SELECT'){  //test select fields
				switch(field.name)
				{
					case '???':
						//if(field.options[field.selectedIndex].value.search(/.../) == -1) make_red(myform,field);
						break;
					default: 
						if(field.options[field.selectedIndex].value.search(/[a-z,A-Z]{2,}/i) == -1) make_red(myform,field);
				}
			}
	}

	
	if(red) {  //some fields are not entered correctly...
		scroll_to(); 
		return 0;
	} 

	if(form_obj.dates) myform.datum.value = form_obj.dates[form_obj.dates.selectedIndex].innerHTML;

	if(myform.id == 'Form_trainingen') myform.training.value = form_obj.training.options[form_obj.training.selectedIndex].innerHTML + ' - ' + myform.datum.value;
	else if(myform.id == 'Form_activiteiten') myform.activiteit.value = form_obj.activiteit.options[form_obj.activiteit.selectedIndex].innerHTML + ' - ' + myform.datum.value;

	if(myform.voornaam && myform.tussenvoegsel && myform.achternaam){
		myform.realname.value = myform.voornaam.value + ' ' + myform.tussenvoegsel.value + ' ' + myform.achternaam.value;
		myform.naam.value = myform.realname.value;
	}else myform.realname.value = myform.naam.value;
		
	myform.onderwerp.value = myform.subject.value + '\n\nVerstuurd via URL: ' + window.location.href;
	myform.emailadres.value = myform.email.value;			

	return 1;
}

function make_red(myform,form_el)
{
	var el;

	if(myform.name == 'Form_activiteiten') el = document.getElementById('red_activiteit_' + form_el.name.toString());
	if(myform.name == 'Form_trainingen') el = document.getElementById('red_training_' + form_el.name.toString());
	if(myform.name == 'aanmeld_form') el = document.getElementById('red_' + form_el.name.toString());
	
	if(!red) red=el;

	if(el != undefined && el.style){
		el.style.color = 'red';
		//el.style.fontWeight = 'bold';
		el.style.fontStyle = 'italic';
	}
}

function remove_red(myform,form_el)
{
	var el;
	
	if(myform.name == 'Form_activiteiten') el = document.getElementById('red_activiteit_' + form_el.name.toString());
	if(myform.name == 'Form_trainingen') el = document.getElementById('red_training_' + form_el.name.toString());
	if(myform.name == 'aanmeld_form') el = document.getElementById('red_' + form_el.name.toString());

	if(el != undefined && el.style){
		el.style.color='';
		//el.style.fontWeight='';
		el.style.fontStyle = 'normal';		
	}
}



function scroll_to()
{
	if(red.scrollIntoView) red.scrollIntoView(); if(scrollBy) scrollBy(0,-10);
}

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

//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 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[x].substring(0,maandnaam_kort.length)) return x;
		else if(maandnaam_kort == 'mrt') return 2;
	return -1;
}