function checkNumeric(value){
	var strString = $(value).getProperty('value');
	var strValidChars = "0123456789.-";
	var strChar;
	var result = true;
	
	if (strString.length == 0) return false;

	for (i = 0; i < strString.length && result == true; i++){
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1) result = false;
	}//for
   return result;
}//checkNumeric

function checkRequired(value){
	var strString = $(value).getProperty('value');
	var result = true;
	if (strString.length == 0) result = false;
   return result;
}//checkRequired

function checkRequiredImage(value){
	if($chk($('image_'+value))) var strCurrent = $('image_'+value).getProperty('src');
	else var strCurrent = '';
	var strString = $(value).getProperty('value');
	var result = true;
	if (strString.length == 0 && strCurrent=='') result = false;
   return result;
}//checkRequiredImage

function checkRequiredFile(value){
	if($chk($('file_'+value))) var strCurrent = $('file_'+value).getProperty('src');
	else var strCurrent = '';
	var strString = $(value).getProperty('value');
	var result = true;
	if (strString.length == 0 && strCurrent=='') result = false;
   return result;
}//checkRequiredFile

function checkRequiredRadiobutton(value){
	var result = 0;
	$$('.'+value).each(function(el){
		if($(el).checked) result++;
	});		
	if(result==0) return false;
	else return true;
}//checkRequiredRadiobutton

function checkRequiredCheckbox(value){
	var result = 0;	
	$$('.'+value).each(function(el){
		if($(el).checked) result++;
	});		
	if(result!=0) return true; 
	else return false;
}//checkRequiredCheckbox

function trim(value) {
  value = value.replace(/^\s+/,'');
  value = value.replace(/\s+$/,'');
  return value;
}//trim

function checkURL(value){
	var strString = $(value).getProperty('value');
	var lengthValue = strString.length;
	if(lengthValue != 0){
		var j = new RegExp();
		j.compile("^[A-Za-z]+://[A-Za-z0-9-]+\.[A-Za-z0-9]+");
		lengthValue = trim(strString);
		if (j.test(lengthValue)) return true;
	}//if
	return false; 
}//checkUrl

function checkRequiredDropdown(value){
	if($(value).getProperty('value')!=0) return true;
	else return false;
}//checkRequiredDropdown

function checkRequiredTextarea(value){
	var result = '';
	if($chk($('textarea_'+value))) result = $('textarea_'+value).getProperty('value');
	else result = $(value).getProperty('value');
	if(result!='') return true;
	else return false;
}//checkRequiredTextarea

function checkEmail(value){
	var strString = $(value).getProperty('value');
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(strString);
}//checkEmail

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}//isInteger

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}//stripCharsInBag

function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}//daysInFebruary

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}//DaysArray

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1) return false
	if (strMonth.length<1 || month<1 || month>12) return false
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]) return false
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear) return false
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false) return false
	return true
}//isDate

function checkDate(value){
	var strString = $(value).getProperty('value');	
	if (!isDate(strString)) return false;
    return true
}//checkDate

function checkCode(value){
}//checkCode

function doValidation(){
	var check = 0;	
	$$('div.check_field').each(function(el){
		var div = $(el).getText();
		var type = $('type_'+$(el).id.replace('check_','')).getText();	
		if(!validateFiles(div,$(el).id,type)) check++;
	});			
	return check;
}//doValidation

function validateFiles(what,field,type){
	var check = false;
	var value = field.replace('check_','');	
	if(what==2){ 
		check = checkNumeric(value);
		if(!check){ 
			$('error_'+value).setHTML('Dit veld is geen numerieke waarde.');
			$('error_'+value).setStyle('display','block');			
		}else{ 
			$('error_'+value).setStyle('display','none');
		}//if
	}//Numeric
	
	if(what==3){ 
		check = checkURL(value);
		if(!check){ 
			$('error_'+value).setHTML('Dit veld is geen geldige URL (http://www.url.be).');
			$('error_'+value).setStyle('display','block');			
		}else{ 
			$('error_'+value).setStyle('display','none');
		}//if
	}//Numeric	
	
	if(what==1){ 
		if(type=='checkbox') check = checkRequiredCheckbox(value);
		if(type=='textbox') check = checkRequired(value);
		if(type=='radio') check = checkRequiredRadiobutton(value);		
		if(type=='dropdown') check = checkRequiredDropdown(value);	
		if(type=='textarea') check = checkRequiredTextarea(value);	
		if(type=='image') check = checkRequiredImage(value);
		if(type=='file') check = checkRequiredFile(value);							
		if(!check){ 
			$('error_'+value).setHTML('This is a required field');
			$('error_'+value).setStyle('display','block');			
		}else{ 
			$('error_'+value).setStyle('display','none');
		}//if
	}//Required
	
	if(what==999){ 
		var code = '';
		var check = true;
		var current = $(value).value;
		var url = $('url').value;
		if(current!='no_check'){
			new Ajax(url+'inc/functions/validate.php?current='+current, {
				method: 'get',
				onComplete:function(request){
					if(request!='ok') check = false;
					if(!check){ 
						$('error_'+value).setHTML('Deze code is niet correct.');
						$('error_'+value).setStyle('display','block');
						return false;
					}else{ 
						$('error_'+value).setStyle('display','none');
						return true;
					}//if							
				}//Ajax
			}).request();	
		}
	}//Code	
	
	if(what==4){ 
		check = checkEmail(value);
		if(!check){ 
			$('error_'+value).setHTML('This is not a valid email');
			$('error_'+value).setStyle('display','block');			
		}else{ 
			$('error_'+value).setStyle('display','none');
		}//if
	}//Email
	
	if(what=='5'){ 
		check = checkDate(value);
		if(!check){ 
			$('error_'+value).setHTML('This is no valid birthdate (dd/mm/yyyy)');
			$('error_'+value).setStyle('display','block');			
		}else{ 
			$('error_'+value).setStyle('display','none');
		}//if
	}//Date		
	return check;
}//validateFiles

function noGood(check){
	$('errors').setHTML('Dit formulier bevat '+check+' fout(en).');
	$('errors').setStyle('display','block');
	$('validated').setStyle('display','none');	
}//noGood

function allGood(text,bool){
	$('errors').setStyle('display','none');							
	$('validated').setHTML(text);
	if(bool) $('confirm_button').setStyle('display','none');	
	$('validated').setStyle('display','block');		
}//allGood

function validateForm(url){
	var check = doValidation();
	if(check==0){ 
		if($chk($('strNewsletter'))){
			if($('strNewsletter').checked && $('strEmailaddress').value!=''){ 
				document.getElementsByName("form_maildoos_email")[0].value = $('strEmailaddress').value;
				document.getElementsByName("form_maildoos_form")[0].submit();
			}//if	
		}//if
		$('dynform').submit();
	}//if
}//validateForm

function loginForm(url){
	var check = doValidation();
	if(check==0){ 
		$('dynform').submit();		
	}//if
}//validateForm
