/* Zoeken op iedere pagina */
function zoeken(zoekUrl){
	var zoekTerm = $F('paginaZoekTerm');
	if(zoekTerm.length > 0 && zoekTerm != 'Zoeken'){
		window.location = zoekUrl + '&zoekTerm=' + zoekTerm;
	}
	return false;
}

/* Zoeken init */
function zoekenInit(){
	var zoekterm = $('paginaZoekTerm');
	zoekterm.onfocus = function(){
		zoekterm.value = '';
	}
}
Event.observe(window,'load',zoekenInit,false);

/* Print */
function printPagina(){
	if(window.print){
		window.print();
	}
	return false;
}

/* Zoek een ID */
function get_id(id) {
	// geef van een naam als lijst_cat_2882 alleen het nummer 2882 terug
	var ar = id.split("_");
	return ar[ar.length-1];
}

/* Sla een formulier op */
function ajaxSubmit(fID){
	var qs = Form.serialize(fID);
	alert(qs);
}

/* Pagina printen */
function printPagina(){
	if(window.print){
		window.print();	
	}
}

/* Rot 13 - encode email */
function email_decode(a,s){
	var email = Rot13.convert(s);	
	a.href = 'mailto:'+email;
}

/* ### FORMULIEREN ### */
/* Laat een hint bij een veld zien */
var hintDocumentOffset = true;
function showHint(field){
	// alle andere hints verwijderen
	
	// verwijder alle hints
	var hints = $$('.hint');
	hints.each(function(h){
		Element.hide(h);
	});
	
	// veld actief maken (lijnkleur anders)
	Element.addClassName(field,"form_actief");

	// elements
	var hint = $(field.id+"_hint");
	Element.show(hint);
	var parent = field.offsetParent;
	var top = parent.offsetTop;
	// hoogte van veld en hint?
	var field_height = Element.getHeight(field);
	var hint_height = Element.getHeight(hint);
	
	// nu corigeren voor hoogtes
	if(hintDocumentOffset){
		var newx = Math.round(top + (field_height / 2) - (hint_height / 2) + 4);
	}else{
		var newx = Math.round((field_height / 2) - (hint_height / 2) + 4);
	}

	// plaatsen 
	hint.style.top = newx+"px";
}

/* Verberg deze hint weer */
function removeHint(field){
	Element.removeClassName(field,"form_actief");
	
	// hint weghalen
	var hint = $(field.id+"_hint");
	Element.hide(hint);
}

/* Highlight een veld */
function formAddHighlight(field){
	Element.addClassName(field,"form_actief");	
}

/* Onthighlight een veld */
function formAddHighlight(field){
	Element.removeClassName(field,"form_actief");	
}

/* inline valideren */
function formInlineValidate(veld,verplicht,type){
	var fout = false;	
	var id = veld.id;
	var value = veld.value;
	var mess = '';
	
	// verwijder alle hints
	var hints = document.getElementsByClassName('hint');
	hints.each(function(hint){
		Element.hide(hint);
	});
	
	// Type checken (wie weet is het een checkbox oid)
	var veldtype = veld.getAttribute('type');
	if(veldtype == 'checkbox'){
		/* Het is een checkbox */
		id = id.replace('[]','');
		
		var inputs = $A(document.getElementsByClassName('checkbox'));
		var res = inputs.any(function(input){
			if(input.id.indexOf(id)!=-1){
				// deze heeft het goede id
				return(input.checked);
			}
		});
		fout = !res;
		if(fout){
			mess = 'U dient in ieder geval één van de opties te selecteren.';	
		}
	}else{
		/* Het is een standaard string */
		// whitespace weghalen
		value = value.strip();
		
		// lang genoeg?
		if(value.length==0){
			if(verplicht){
				fout = true;
				mess = 'Dit veld is verplicht.';
			}
		}else{
			// check voor bepaalde types
			
			// email
			if(type == 'email'){
				fout = !formCheckEmail(value);
				if(fout){
					mess = 'Dit e-mail adres is niet correct opgemaakt.';
				}
			}
			
			// postcode
			if(type == 'postcode'){
				value = value.replace(' ','');
				value = value.toUpperCase();
				fout = !formCheckPostcode(value);
				if(fout){
					mess = 'Deze postcode is niet in een vorm als 1234AB.';
				}else{
					veld.value = value;
				}
			}
			
			// telefoon
			if(type == 'telefoon'){
				//value = value.replace(' ','');
				//value = value.toUpperCase();
				fout = !formCheckTelefoon(value);
				if(fout){
					mess = 'Dit telefoonnummer is niet juist.';
				}else{
					veld.value = value;
				}
			}
			
			// datum
			if(type == 'datum'){
				fout = !formCheckDatum(value);
				if(fout){			
					mess = 'Voer een geldige datum in.';
				}else{
					veld.value = value;
				}
			}	
		}
	}
	
	// fouten kenbaar maken
	var validate = $('inline_validate_'+id);
	if(fout){
		validate.removeClassName('form_inline_validate_ok');	
		validate.addClassName('form_inline_validate_fout');		
		
		// boodschap tonen
		if(mess.length > 0){
			var hint = veld.id+'_hint';
			Element.update(hint,'<p>'+mess+'</p>');
			showHint(veld);
		}
	}else{
		validate.removeClassName('form_inline_validate_fout');				
		validate.addClassName('form_inline_validate_ok');	
	}
	//Element.show(validate);
	//alert(validate.id);
}

/* ### STANDAARDFUNCTIES ### */
/* Rot 13 object */
Rot13 = {
    map: null,

    convert: function(a) {
        Rot13.init();

        var s = "";
        for (i=0; i < a.length; i++) {
            var b = a.charAt(i);
            s += ((b>='A' && b<='Z') || (b>='a' && b<='z') ? Rot13.map[b] : b);
        }
        return s;
    },

    init: function() {
        if (Rot13.map != null)
            return;
              
        var map = new Array();
        var s   = "abcdefghijklmnopqrstuvwxyz";

        for (i=0; i<s.length; i++)
            map[s.charAt(i)] = s.charAt((i+13)%26);
        for (i=0; i<s.length; i++)
            map[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase();

        Rot13.map = map;
    },

    write: function(a) {
        document.write(Rot13.convert(a));
    }
}

/* Cookie functies */
function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
};

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
};

/* Checkfuncties voor formulier */
function formCheckEmail(value){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var res = filter.test(value);
	return res;
}

function formCheckPostcode(value){
	var filter = /^[1-8]{1}[0-9]{3}[A-Z]{2}$/;
	var res = filter.exec(value);
	return res;
}

function formCheckTelefoon(value){
	var filter = /([0]{1}[6]{1}[-s]*[1-9]{1}[s]*([0-9]{1}[s]*){7})|([0]{1}[1-9]{1}[0-9]{1}[0-9]{1}[-s]*[1-9]{1}[s]*([0-9]{1}[s]*){5})|([0]{1}[1-9]{1}[0-9]{1}[-s]*[1-9]{1}[s]*([0-9]{1}[s]*){6})/;
	var res = filter.exec(value);
	return res;
}

function formCheckDatum(value){
	//var filter = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/;
	//var res = filter.exec(value);
	var spl = value.split('-');
	var fout = false;
	if(spl.length == 3){
		var dag = spl[0];
		var maand = spl[1];
		var jaar = spl[2];
		if(!formCheckNummer(dag) || parseFloat(dag) < 1 || parseFloat(dag) > 31){
			fout = true;
		}		
		if(!formCheckNummer(maand) || parseFloat(maand) < 1 || parseFloat(maand) > 12){
			fout = true;
		}
		if(!formCheckNummer(jaar) || parseFloat(jaar) < 1900 || parseFloat(jaar) > 2100 || jaar.length < 4){
			fout = true;
		}	
	}else{
		fout = true;	
	}
	return !fout;
}

function formCheckNummer(value){
	/*
	var int = parseInt(value).toString();
	if(value.length == int.length && int != "NaN"){
		return true;	
	}else{
		return false;	
	}
	*/
	if (isNaN(parseFloat(value))){
		return false;
	}else{
		return true;	
	}
}

/* Fileuploads */
var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUploads() {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var image = document.createElement('img');
	image.src='site/images/knoppen/fileupload.png';
	fakeFileUpload.appendChild(image);
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'file hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		x[i].onchange = x[i].onmouseout = function () {
			this.relatedElement.value = this.value;
		}
	}
}
//Event.observe(window,'load',initFileUploads,false);

/* Popupvensters */
/* open een popup */
var popUpWin=0;

function popUpWindow(URLStr, left, top, width, height)
{
  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }
  popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

/* Prototype uitbreiden met functie om radiobuttons te snappen */
function $RF(el, radioGroup) {
	if($(el).type == 'radio') {
		var el = $(el).form;
		var radioGroup = $(el).name;
	} else if ($(el).tagName.toLowerCase() != 'form') {
		return false;
	}
	return $F($(el).getInputs('radio', radioGroup).find(
		function(re) {return re.checked;}
	));
}