<!--- JSapplication.js --->


//=============================== Form handling functions ==========================================
function checkformOnSubmit(frmname){
	cd = getFormCheckData(frmname);
	
	for(x=0;x<cd.length;x++){
		checker = getChecker(cd[x]);
		check_a = checker.check_a;
		for(c=0;c<check_a.length;c++){
			chkRes = checkFldOnSubmit(frmname, fn, ft, check_a[c]);
			if(chkRes != 'ok'){
				alert(chkRes);
				document.forms[frmname].elements[fn].focus();
				window.returnValue = false;
				return false;
			}
		}
	}
}

function checkFormFldChange(frmname, fldname, act){
	cd = getFormCheckData(frmname);
	for(x=0;x<cd.length;x++){
		checker = getChecker(cd[x]);
		if(checker.fn==fldname){
			check_a = checker.check_a;
			for(c=0;c<check_a.length;c++){
				chkRes = checkFldOnChange(frmname, fn, ft, check_a[c]);
				if(chkRes != 'ok'){
					alert(chkRes);
					document.forms[frmname].elements[fn].focus();
					window.returnValue = false;
					return false;
				}
			}
			fld.focus();
			return true;
		}		
	}
}

function getFormCheckData(frmname){
	if(typeof(document.forms[frmname].formCheckData) != 'undefined'){
		cd = document.forms[frmname].formCheckData.value;
		cd_a = cd.split(';');
		return cd_a;
	}
	else{
		return new Array();
	}
}

function getChecker(ck){
	chk = cd[x].indexOf('_CK:')!=-1?cd[x].substring(cd[x].indexOf('_CK:')+4, cd[x].length):'';
	ft = '';
	fn = '';
	if(chk != ''){
		ft = cd[x].indexOf('_FT:')!=-1?cd[x].substring(cd[x].indexOf('_FT:')+4,cd[x].indexOf('_CK:')):'';
	}
	if(( chk != '') && (ft != '')){
		fn = cd[x].indexOf('_FN:')!=-1?cd[x].substring(cd[x].indexOf('_FN:')+4,cd[x].indexOf('_FT:')):'';
	}
	ret = new Object();
	ret.check_a = chk.toLowerCase().split(',');
	ret.ft = ft.toLowerCase();
	ret.fn = fn;
	return ret;
}

function checkFldOnSubmit(frmname, fldname, fldtype, check){
	fld = document.forms[frmname].elements[fldname];
	switch(check) {		
		case 'mandatory':
			if((typeof(fld.tagName)!='undefined')&&(fld.tagName=='INPUT')){				
				if(fldtype=='checkbox'){
					if(!fld.checked){
						msg = 'U heeft niet alle verplichte vinkboxen aangevinkt.\nVinkboxen met een * zijn verplicht.';
						return msg;
					}
				}
				else if(fld.value==''){
					msg = 'U heeft niet alle verplichte velden ingevuld.\nVelden met een * zijn verplicht.';
					return msg;
				}				
			}
			break;
		case 'copytext':
			ae_editsourceinline(1, false);//first put back on normal view in case of HTML view.
			theTxt = DHTMLSafe.DOM.body.innerText;
			document.forms[frmname].elements['HTMLtext_retainer_'+fldname].value = theTxt;
			break;
		case 'email':
			val = fld.value;
			if( (val!='') && ( (val.length<8) || (val.indexOf('@')<2) || (val.indexOf('@')>val.lastIndexOf('.')) || (val.lastIndexOf('.')>val.length-3))){
				msg = "Het ingevoerde e-mailadres is ongeldig.";
				return msg;
			}
			break;
		case 'bankaccount':
			val = fld.value;
			if(val.substring(0,1).toLowerCase() != 'p'){
				gotall=0;
				pos=0;
				cntpos=0;
				total=0;
				do{
					thenum = val.substring(pos, pos+1);
					if(thenum!='.'){
						thenum = parseInt(thenum);
						multiplier = 9-cntpos;
						theval = thenum * multiplier;
						total = total + theval;
						cntpos++;
					}
					pos++;
				}
				while( (cntpos<9) && (pos < val.length))
				
				if( (total%11!=0) || (cntpos!=9) ){
					msg = 'Het ingevoerde rekeningnummer is ongeldig';
					return msg;
				}				
			}
			break;
	}	
	if(fldtype=='date'){
		//check valid dates		
		val = fld.value;
		if(val!=''){
			dv = val.substring(0,2);
			mv = val.substring(3,5);
			yv = val.substring(6,10);
			
			days_a=(new String("31,28,31,30,31,30,31,31,30,31,30,31")).split(',');
			
			if(mv<1 || mv>12){
				msg = 'U heeft een ongeldige datum ingevoerd';
				return msg;
			}
			maxday=((yv%4==0)&(mv==2))?29:days_a[mv-1];
			dv = parseInt(dv);
			maxday = parseInt(maxday);					
			if(dv<1 || dv>maxday){
				msg = 'U heeft een ongeldige datum ingevoerd';
				return msg;
			}
		}
	}
	return 'ok';
}
	
function checkFldOnChange(frmname, fldname, fldtype, check){
	fld = document.forms[frmname].elements[fldname];	
	switch(fldtype.toLowerCase()) {		
		case 'date':
			if(fld.value!=''){		
				val = fld.value;
				newval = '';
				q=0;
				do{
					chr = val.substring(q,q+1);
					RE = "0,1,2,3,4,5,6,7,8,9,-";
					res = RE.indexOf(chr);
					if(res!=-1){
						if((q==1)&&(chr=='-')){
							val = '0' + val;
							newval = '0' + newval;
							q++;
						}
						if((q==2)&&(chr!='-')){
							val = '-' + val;
							newval = newval + '-';
							q++;
						}
						if((q==4)&&(chr=='-')){
							val = '0' + val;
							newval = newval.substring(0,3) + '0' + newval.substring(3,4);
							q++;
						}
						if((q==5)&&(chr!='-')){
							val = '-' + val;
							newval = newval + '-';
							q++;
						}						
						if( ((chr=='-') && ((q==2) || (q==5))) || (chr!='-')){
							newval += chr;
						}
					}
					q++;					
				}
				while(q<val.length&&q<10)

				fld.value = newval;
			}
			break;
		case '':
			break;
	}
	if(check.indexOf('maxlength') ==0){
		if(check.indexOf('=') != -1){
			ml = check.substring(check.indexOf('=')+1, check.length);
			if(fld.value.length > parseInt(ml)){
				fld.value = fld.value.substring(0, ml);
			}
		}
	}
	else if(check=='reloadonchange'){
		formReload(frmname);
	}
	else if(check=='alias'){
		newval = '';
		for(q=0;q<fld.value.length;q++){
			chr = fld.value.substring(q,q+1);
			RE = /[^\w|\s|\0,9]/i;	// at least one non word character
			res = chr.match(RE);
			//alert('res op match('+chr+') is '+res);
			if((res==null)&&(chr!=' ')){
				newval += chr;
			}
		}
		fld.value = newval;
	}	
	return 'ok';
}

function checkDate(frmname, fldname){
	checkFldOnChange(frmname, fldname, 'date', 'date');
	
	fld = document.forms[frmname].elements[fldname];
	val = fld.value;
	if((val.length!=10)&&(val.length!=0)){
		if(val.split('-').length==3){
			//autocorrect yyyy value
			if(val.length>6){
				yyyy = parseInt(val.substring(6,val.length));
				if(yyyy<40){
					yyyy = 2000 + yyyy;
				}
				else if((yyyy>39) && (yyyy<100)){
					yyyy = 1900 + yyyy
				}
				else if(yyyy>99){
					yyyy = 1800 + yyyy;
				}
				else{
					alert("U heeft een ongeldige datum ingevuld.");
					fld.focus();
					window.returnValue = false;
					return false;					
				}				
			}
			else{
				yyyy = new Date().getYear();
			}
			fld.value = fld.value.substring(0,6) + yyyy;
		}
		else{
			alert("U heeft een ongeldige datum ingevuld.");
			fld.focus();
			window.returnValue = false;
			return false;					
		}
	}
	if(val.length!=0){
		if(val.split('-').length==3){
			//verify correct input
			val = fld.value;
			dv = val.substring(0,2);
			mv = val.substring(3,5);
			yv = val.substring(6,val.length);
			
			days_a=(new String("31,28,31,30,31,30,31,31,30,31,30,31")).split(',');
			
			if(mv<1 || mv>12)
			{
				alert("U heeft een ongeldige datum ingevuld.");
				fld.focus();
				window.returnValue = false;
				return false;	
			}
			maxday=((yv%4==0)&(mv==2))?29:days_a[mv-1];
			dv = parseInt(dv);
			maxday = parseInt(maxday);					
			if(dv<1 || dv>maxday)
			{
				alert("U heeft een ongeldige datum ingevuld.");
				fld.focus();
				window.returnValue = false;
				return false;	
			}
		}
		else{
			alert("U heeft een ongeldige datum ingevuld.");
			fld.focus();
			window.returnValue = false;
			return false;					
		}
	}
}


