/************************ popup bij input **********************************/
function lib_bwcheck(){
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}
var bw=new lib_bwcheck()


// Variables to set:
focuskleur		= '#cc0000' 
fromX			= 3		// standaard dezelfde waarde als de padding
fromY			= 3		// Neem de hoogte van de class 'textfield'
ns4center		= 1		// Centering the text in ns4 doesn't work with css, use this variable instead... the value is 1 or 0
useFading		= 0 		// 1 for a fading effect in windows explorer 5+ and all platforms ns6, 0 for no fading effect.
animation		= 1		// 1 if you want animation, 0 for no animation.
detectiontype	= 1			// 1 for 'smooth' window size detection, 0 for 'flip' window size detection.
delay			= 200 		// The time before showing the popup, in milliseconds.

/*** There should be no need to change anything beyond this. ***/ 
var px = bw.ns4||window.opera?"":"px";
var mouseX=0,mouseY=0,setX=0,setY=0;
var hovering=false, screenWscrolled=0, screenHscrolled=0;
var scrollbarWidth= bw.ns6&&bw.win?14:bw.ns6&&!bw.win?16:bw.ns4?16:0;
var defaultkleur = '#000000';

function makeTooltip(obj){								
   	this.elm= document.getElementById(obj);
   	this.css= this.elm.style;
   	this.wref= this.elm;
	this.obj= obj+'makeTooltip'; eval(this.obj+'=this');
	this.w= this.elm.offsetWidth;
	this.h= this.elm.offsetHeight;
}

makeTooltip.prototype.measureIt= function(){
	this.w= this.elm.offsetWidth;
	this.h= this.elm.offsetHeight;
}

makeTooltip.prototype.writeIt= function(text){
	this.wref.innerHTML= text;
}


function findPosX(obj){
	var curleft = 0;
	while (obj.offsetParent){
		curleft += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return curleft;
}
	
function findPosY(obj){
	var curtop = 0;
	while (obj.offsetParent){
		curtop += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return curtop;
}
	
function getPosition(onderdeel){
	mouseX	= findPosX(onderdeel);
	mouseY	= findPosY(onderdeel) + onderdeel.offsetHeight;
	if (isLoaded && hovering && animation) placeIt();
}

function placeIt(){
	if (detectiontype==1) setX= mouseX+fromX+tooltip.w > screenWscrolled ? screenWscrolled-tooltip.w: mouseX+fromX;
	if (detectiontype==1) setY= mouseY+fromY+tooltip.h > screenHscrolled ? screenHscrolled-tooltip.h: mouseY+fromY;
	if (detectiontype==0) setX= mouseX+fromX+tooltip.w > screenWscrolled ? mouseX-fromX-tooltip.w: mouseX+fromX;
	if (detectiontype==0) setY= mouseY+fromY+tooltip.h > screenHscrolled ? mouseY-fromY-tooltip.h: mouseY+fromY;
	if (setX<0) setX= 0;
	if (setY<0) setY= 0;
	tooltip.css.left= setX+px;
	tooltip.css.top= setY+px;
}

var thisload = false;

makeTooltip.prototype.showTimer= null;
function popUp(num, onderdeel){
	if(isLoaded){
		formulier = document.forms[0];

		var deze = onderdeel.parentElement.parentElement;
		var nextTR = -1;
		var begin = deze.parentElement;
		for (p=0; p<begin.childNodes.length; p++) {
			if (begin.childNodes[p] == deze) {
				nextTR = p+1;
				break;
			}
		}
		var disapp = begin.childNodes[nextTR];

		if (disapp) {
			HideRow(disapp);
		}

	
		getPosition(onderdeel);
		clearTimeout(tooltip.popTimer);
		dopopOut();
		tooltip.writeIt(num);
		screenWscrolled= screenW + document.body.scrollLeft;
		screenHscrolled= screenH + document.body.scrollTop;
		hovering= true;
		tooltip.measureIt(); placeIt();
		if (useFading) tooltip.showTimer= setTimeout('tooltip.blendIn()', delay);
		if (!useFading) tooltip.showTimer= setTimeout('tooltip.css.visibility="visible"', delay);
	}
}

// Hiding routines
makeTooltip.prototype.popTimer= null;
function popOut(){
	if (isLoaded) tooltip.popTimer= setTimeout('dopopOut()', 30)
}

function dopopOut(){
	hovering= false;
	clearTimeout(tooltip.showTimer);
	tooltip.css.visibility= 'hidden';
	clearTimeout(tooltip.fadeTimer);
	tooltip.i= 0;
}

// Measure screensize.
function measureScreen() {
	tooltip.css.top= 0+px;
	tooltip.css.left= 0+px;
	screenW= document.body.clientWidth;
	screenH= document.body.clientHeight;
}

// Opacity methods.
makeTooltip.prototype.blendIn= function(){
	this.css.filter= 'blendTrans(duration=0.5)';
	this.elm.filters.blendTrans.apply();
	this.css.visibility= 'visible';
	this.elm.filters.blendTrans.play();
}

makeTooltip.prototype.step= 8;
makeTooltip.prototype.i= 0;
makeTooltip.prototype.fadeTimer= null;
makeTooltip.prototype.fadeIt= function(){
	this.i+= this.step;
	this.css.MozOpacity= this.i/100;
	if (this.i<100) this.fadeTimer= setTimeout(this.obj+'.fadeIt()', 40);
	else this.i= 0;
}

// Init function...
var isLoaded= false;
function popupInit(){
	//Extending the browsercheck to add windows platform detection.
	bw.win= (navigator.userAgent.indexOf('Windows')>-1)

	tooltip= new makeTooltip('divTooltip');
	tooltip.elm.onmouseover= function(){ 
		clearTimeout(tooltip.popTimer); 
	}
	measureScreen();
	onresize= measureScreen;
	tooltip.elm.className= 'divTooltip';
	isLoaded= true;
}

// Initiates page on pageload if the browser is ok.
if(bw.bw && !isLoaded){ 
	onload = popupInit;
}
/******************************************************************************/




/************************ formulier controle **********************************/
/*** controle is een array met de veldnamen die gecontroleerd moeten worden ***/
/*** 	  welke is het formulier, bij gebruik met meerdere formulieren	    ***/
/***   melding wordt eigenlijk alleen gebruikt bij een controle op 1 veld	***/

var minimum;
var formulier;
var verborgen = new Array();

function HideRow(el) {
	if (el.childNodes.length > 0) {
		for (var m=el.firstChild; m!=null; m=m.nextSibling) {
			if (m.tagName == 'TD') {
				HideRow(m);
			} else {
				if (m.tagName != undefined && m.type != undefined) {
					if (m.type.substr(0, 6) == 'select' || m.type.substr(0, 6) == 'SELECT') {
						m.style.visibility = 'hidden';
						verborgen[verborgen.length] = m;
					}
				}
			}
		}
	}
}

function checkform(controle, welke, melding){
	var error = "", ingevuld = 0, veld = "";
	var returnwaarde = false;
	if (checkform.arguments.length > 3) {
		returnwaarde = checkform.arguments[3];
	}

	
	formulier = document.forms[welke];
	aantal = formulier.elements.length;
	
	for (i=0; i<aantal; i++){
		if (formulier.elements[i].type.match("(text)") && formulier.elements[i].value){
			ingevuld = 1;				
			break;
		}
	}
		
	if (ingevuld == 1 || controle.length > 0){
		/********** wachtwoorden (mochten ze bestaan) **********/
		if (formulier.Wachtwoord && formulier.Wachtwoord2 && formulier.Wachtwoord.value && formulier.Wachtwoord.value != formulier.Wachtwoord2.value){
			formulier.Wachtwoord.value = '';
			formulier.Wachtwoord2.value = '';			
			error 	= 'Wachtwoorden komen niet overeen.';
			veld 	= formulier.Wachtwoord;
		}
		/*******************************************************/

		/******************* email controle ********************/
		layoutemailadres = /^[a-z0-9]+([_\\.-][a-z0-9]+)*@[a-z0-9]+([\.-][a-z0-9]+)*([\.][a-z0-9]+([-][a-z0-9]+)*)+$/i;
		if (formulier.Email && formulier.Email.value && !formulier.Email.value.match(layoutemailadres)){
			error 	= 'Emailadres is ongeldig.';
			veld 	= formulier.Email;		
		}
		if (formulier.email && formulier.email.value && !formulier.email.value.match(layoutemailadres)){
			error 	= 'Emailadres is ongeldig.';
			veld 	= formulier.email;		
		}
		if (formulier.Emailadres && formulier.Emailadres.value && !formulier.Emailadres.value.match(layoutemailadres)){
			error 	= 'Emailadres is ongeldig.';
			veld 	= formulier.Emailadres;		
		}
		if (formulier.emailadres && formulier.emailadres.value && !formulier.emailadres.value.match(layoutemailadres)){
			error 	= 'Emailadres is ongeldig.';
			veld 	= formulier.emailadres;		
		}
		/*******************************************************/

		/***************** postcode controle *******************/
		if (formulier.Postcode && formulier.Postcode.value){
			var cijfers = formulier.Postcode.value.substr(0, 4);
			var letters = formulier.Postcode.value.substr(4, 10).replace (/\s/g, "");

			if (!cijfers.match(/^[0-9]+$/i) || !letters.match(/^[a-z]+$/i) || letters.length < 2){	
				error 	= 'Postcode is ongeldig.';
				veld 	= formulier.Postcode;
			} else {
				formulier.Postcode.value = cijfers+' '+letters.toUpperCase();
			}
		}
		if (formulier.postcode && formulier.postcode.value){
			var cijfers = formulier.postcode.value.substr(0, 4);
			var letters = formulier.postcode.value.substr(4, 10).replace (/\s/g, "");

			if (!cijfers.match(/^[0-9]+$/i) || !letters.match(/^[a-z]+$/i) || letters.length < 2){	
				error 	= 'Postcode is ongeldig.';
				veld 	= formulier.postcode;
			} else {
				formulier.postcode.value = cijfers+' '+letters.toUpperCase();
			}
		}
		/*******************************************************/
		

		/***************** standaard controle ******************/
		for (i=0; i<controle.length; i++){
			waarde	= controle[i].split('=');
			if (waarde[1]){
				controle[i] = waarde[0];
				minimum	= waarde[1];
			} else {
				minimum = 1;
			}

			object	= formulier.elements[controle[i]];
			
			// onderscheid maken tussen velden, undefined = radio
			if (object.value == undefined){
				gechecked = false;				
				for (j=0; j<object.length; j++){
					if (object[j].checked){
						gechecked = true;
						break;
					}
				}
				
				if (!gechecked) {
					error = controle[i]+' is verplicht.';
					veld = object[0];
					break;
				}				
			} else {
				if ((object.value.length < minimum || (object.type=='select-one' && (object.value == 0 || object.value == ''))) && error == 0){
					thisveld = controle[i];
					thisveld = thisveld.replace(/[0-9_\s]*$/, '');
					if (thisveld.substr(thisveld.length-2)=='id') {
						thisveld = thisveld.substr(0, thisveld.length-2);
					}
					error 	= thisveld+' is verplicht.';
					veld 	= object;
					break;
				} else {
					minimum = 1;
				}
			}
		}
		/*******************************************************/
		
		/*************** onderlinge verbanden ******************/
		for (j=0; j<aantal; j++){
			if (formulier.elements[j].value != '' && formulier.elements[j].tagName == "SELECT"){
				for (k=0; k<aantal; k++){
					lower = formulier.elements[k].name.toLowerCase();
					
					if (formulier.elements[j].value.indexOf(lower) > -1 && formulier.elements[k].value == ''){
						error 	= 'U heeft <b>'+formulier.elements[j].value.toLowerCase()+'</b> geselecteerd bij <b>'+formulier.elements[j].name.toLowerCase()+'</b> maar bent vergeten uw <b>'+lower+'</b> in te vullen.';
						veld 	= formulier.elements[k].name;
						break;
					}
				}
			}
		}
		/*******************************************************/
	} else {
		error	= "Vul tenminste 1 veld in.";
	}
	
	/************** Error afhandeling **********************/
	if (!error){
		if (returnwaarde) {
			return true;
		} else {
			event ?	event.returnValue = true : formulier.submit();
		}
	} else {
		minimum > 1 ? error += ' (minimaal ' +minimum+ ' karakters)' : '';
		melding ? error = melding : '';
		veld ? veld.focus() : '';
		
		if (error.match("_")){
			var herschik = error.split('_');			
			error = herschik[0]+' '+herschik[1];
		}
		
		// upper case
		letter	= error.substr(0, 1).toUpperCase();
		error	= letter+''+error.substr(1, error.length);
		
		if (!document.layers && veld){
			/**************** Verberg selects **********************/
			// verplaatst naar function popUp
			/* for (i=0; i<aantal; i++){
				if (veld == formulier.elements[i]){
					// gepruts van edward
					var deze = veld.parentElement.parentElement;
					var nextTR = -1;
					var begin = deze.parentElement;
					for (p=0; p<begin.childNodes.length; p++) {
						if (begin.childNodes[p] == deze) {
							nextTR = p+1;
							break;
						}
					}
					var disapp = begin.childNodes[nextTR];
					
					if (disapp) {
						HideRow(disapp);
					}
			*/	
					// einde gepruts van edward
				/*
					// als radiobuttons, dan zitten er nog radio's tussen... dus die ook weg
					meer = 1; p = 0;
					while (formulier.elements[i].type == 'radio' && formulier.elements[i+meer].type == 'radio'){
						meer++;
					}
					while (formulier.elements[i+meer] && formulier.elements[i+meer].tagName == "SELECT"){
						if (formulier.elements[i+meer].parentElement == td || p == 0) {
							verborgen[p] = formulier.elements[i+meer];
							formulier.elements[i+meer].style.visibility = 'hidden';
							var td = formulier.elements[i+meer].parentElement;
							p++;
							meer++;
						} else {
							break;
						}
					}
				*/
			/*
				}
			}
			*/
			/*******************************************************/
			
			defaultkleur		= veld.style.borderColor;
			veld.style.borderColor	= focuskleur;
			popUp(error, veld);
		} else {
			alert(error);
		}
		
		event ?	event.returnValue = false : returnValue = false;
	}
	/*******************************************************/
}


/****************** capture events *********************/
document.onkeyup = function invoer(e){
	if (formulier && event.srcElement.name!='crediteurid' && event.srcElement.name.substr(0,11)!='grootboekid'){
		popOut();
		for (i=0; i<verborgen.length; i++){
			verborgen[i].style.visibility = 'visible';
		}
		verborgen = new Array();
		if (event.srcElement.style.borderColor == focuskleur && event.srcElement.value.length >= minimum){
			event.srcElement.style.borderColor = defaultkleur;
		}
		
		if (event.srcElement.style.borderColor == defaultkleur && event.srcElement.value.length < minimum){
			event.srcElement.style.borderColor = focuskleur;
		}
	}
}
	
document.onclick = function selecteer(e){
	if (formulier){
		if (event.srcElement.tagName == "SELECT" || event.srcElement.type == "file" || event.srcElement.type == "radio"){
			popOut();
			for (i=0; i<verborgen.length; i++){
				verborgen[i].style.visibility = 'visible';
			}
			event.srcElement.style.borderColor = defaultkleur;
			verborgen = new Array();
		}
	}
}
/*******************************************************/