function trim(str) {
   return str.replace(/^\s*|\s*$/g,"");
}

function IsNumeric(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }


function lenstring(aString,aLength,aCharacter) {
	if(aString.length<aLength) {
		returnString="";
		for(tel=0;tel<(aLength-aString.length);tel++) {
			returnString+=aCharacter;
		}
		return returnString+aString;
	} else {
		return aString;
	}
}

function changeLastNamePrefix(aFormElement) {
	var regcaps = /\b[A-Z]+\b/
	var regexp   = /[^'a-zA-Z0-9@\(\)\/,\. -üéâäàåêëèïîìÄÅÉæÆôöòûùÿÖÜáíóúñÑ]/
	
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
	var wordArray = aFormElement.value.split(" ")
	
	for(var i=0;i<wordArray.length;i++) {
		//only change the first letter if they are not all capitalized
		if(wordArray[i].search(regcaps)==-1) {
			switch(wordArray[i].toLowerCase()) {
				case "van" : case "der" : case "de" : case "den" : case "v/d" : case "vd" : case "v.d." : case "v.d" : case "v." :
					if(wordArray[i].toLowerCase()=="v/d" || wordArray[i].toLowerCase()=="vd" || wordArray[i].toLowerCase()=="v.d." || wordArray[i].toLowerCase()=="v.d") {
						wordArray[i]="van de";
					}
					if(wordArray[i].toLowerCase()=="v.") {
						wordArray[i]="van";
					}
					wordArray[i]=wordArray[i].toLowerCase();
					break;
				default :
					wordArray[i] = wordArray[i].substring(0,1).toUpperCase() + wordArray[i].substring(1,wordArray[i].length).toLowerCase()
			}
		}
	}
	aFormElement.value=wordArray.join(" ").toLowerCase();
  aFormElement.value=trim(aFormElement.value.replace("."," "));
}

function changeName(aFormElement) {
	var regcaps = /\b[A-Z]+\b/
	var regexp = /[^'a-zA-Z0-9@\.\(\), -üéâäàåêëèïîìÄÅÉæÆôöòûùÿÖÜáíóúñÑ]/
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
	var wordArray = aFormElement.value.split(" ")
	
	
	for(var i=0;i<wordArray.length;i++) {
		//only change the first letter if they are not all capitalized
		if(wordArray[i].search(regcaps)==-1) {
			switch(wordArray[i].toLowerCase()) {
				case "van" : case "der" : case "de" : case "den" : case "v/d" : case "vd" : case "v.d." : case "v.d" :
					wordArray[i]=wordArray[i].toLowerCase();
					break;
				default :
					wordArray[i] = wordArray[i].substring(0,1).toUpperCase() + wordArray[i].substring(1,wordArray[i].length).toLowerCase()
			}
		}
	}
	aFormElement.value=wordArray.join(" ")
}

function changeLastName(aFormElement,aPrefixElement) {
	var regcaps = /\b[A-Z]+\b/
	var regexp   = /[^'a-zA-Z0-9@\.\(\)\/, -üéâäàåêëèïîìÄÅÉæÆôöòûùÿÖÜáíóúñÑ]/
	
	//clear unwanted data
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
	aFormElement.value=trim(aFormElement.value);
	
	//define common prefix names
	var commonNames="van der;van den;van de;van 't;v der;v den;in 't;de la;v.d.;geen;von;van;v/d;ter;ten;den;vd;te;le;la;el;du;de;da;al;'t";
	var nameArray = commonNames.split(";");
   
  //loop through each common name
	for(var i=0;i<nameArray.length;i++) {
	  if(aFormElement.value.indexOf(nameArray[i] + " ")==0) {
	    //if common name is found in the beginning change lastnameprefix-field and break
	    aFormElement.value=aFormElement.value.replace(nameArray[i],"");
	    aPrefixElement.value=nameArray[i];
	    break;
    }
	}
	//trim the name
	aFormElement.value=trim(aFormElement.value);
	
	//re-format the name and prefix-elements
	changeName(aFormElement);
	changeLastNamePrefix(aPrefixElement);
}

function changeLoginName(aFormElement) {
	var regexp = /[^a-zA-Z0-9]/
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
	aFormElement.value=aFormElement.value.toLowerCase();
}

function addPoints(aFormElement) {
	//all elements which are not a-zA-Z have to be deleted
	var regexp = /[^a-zA-Z]/
	
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
	//define the startstring this is a string with only characters
	aStartString=aFormElement.value.toUpperCase()
	//set the Form-element to a string with nothing
	aFormElement.value=""
	//now put the points inside the string
	for(var i=0;i<aStartString.length;i++) {
		aFormElement.value+=aStartString.charAt(i) + "."
	}
	//only 10 characters are allowed
	aFormElement.value=aFormElement.value.substring(0,10)
}

function changeZipCode(aFormElement) {
  aFormElement.value=trim(aFormElement.value);
  aFormElement.value = aFormElement.value.toUpperCase()
  if (aFormElement.value.length == 7) {
    aFormElement.value = aFormElement.value.substr(0,4) + " " + aFormElement.value.substr(5,2)
  } else {
	  aFormElement.value = aFormElement.value.substr(0,4) + " " + aFormElement.value.substr(4,2)
  }
  aFormElement.value=trim(aFormElement.value);
}


function changePhoneNumber(aFormElement) {
	var regexp = /[^0-9 \-\+\(\)]/
	if(aFormElement.value!="") {
		while(aFormElement.value.search(regexp)!=-1) {
			aFormElement.value = aFormElement.value.replace(regexp,"");
		}
		aFormElement.value = aFormElement.value.replace(/[)]/,"-");
		aFormElement.value = aFormElement.value.replace("--","-");
		regexp = /[^0-9\-]/
		while(aFormElement.value.search(regexp)!=-1) {
			aFormElement.value = aFormElement.value.replace(regexp,"");
		}
		if(aFormElement.value.substr(0,1)!="0") {
			aFormElement.value="0" + aFormElement.value;
		}
		if(aFormElement.value.search(/[-]/)==-1) {
			if(aFormElement.value.substr(0,2)=="06") {
				aFormElement.value = aFormElement.value.substr(0,2) + "-" + aFormElement.value.substr(2,8);
			} else if(
				aFormElement.value.substr(0,3)=="010" ||
				aFormElement.value.substr(0,3)=="013" ||
				aFormElement.value.substr(0,3)=="015" ||
				aFormElement.value.substr(0,3)=="020" ||
				aFormElement.value.substr(0,3)=="023" ||
				aFormElement.value.substr(0,3)=="024" ||
				aFormElement.value.substr(0,3)=="026" ||
				aFormElement.value.substr(0,3)=="030" ||
				aFormElement.value.substr(0,3)=="033" ||
				aFormElement.value.substr(0,3)=="035" ||
				aFormElement.value.substr(0,3)=="036" ||
				aFormElement.value.substr(0,3)=="038" ||
				aFormElement.value.substr(0,3)=="040" ||
				aFormElement.value.substr(0,3)=="043" ||
				aFormElement.value.substr(0,3)=="045" ||
				aFormElement.value.substr(0,3)=="046" ||
				aFormElement.value.substr(0,3)=="050" ||
				aFormElement.value.substr(0,3)=="053" ||
				aFormElement.value.substr(0,3)=="055" ||
				aFormElement.value.substr(0,3)=="058" ||
				aFormElement.value.substr(0,3)=="070" ||
				aFormElement.value.substr(0,3)=="071" ||
				aFormElement.value.substr(0,3)=="072" ||
				aFormElement.value.substr(0,3)=="073" ||
				aFormElement.value.substr(0,3)=="074" ||
				aFormElement.value.substr(0,3)=="075" ||
				aFormElement.value.substr(0,3)=="076" ||
				aFormElement.value.substr(0,3)=="077" ||
				aFormElement.value.substr(0,3)=="078" ||
				aFormElement.value.substr(0,3)=="079"
			) {
				aFormElement.value = aFormElement.value.substr(0,3) + "-" + aFormElement.value.substr(3,7);
			} else {
				aFormElement.value = aFormElement.value.substr(0,4) + "-" + aFormElement.value.substr(4,6);
			}
		}
		if(aFormElement.value=="-") {
			aFormElement.value = "";
		}
		aFormElement.value = aFormElement.value.substr(0,11);
		if(aFormElement.value.length!=11) {
			alert("Het telefoonnummer is niet geldig, moet 10 cijfers bevatten");
		}
	}
}

function changeMoney(aFormElement) {
	if (aFormElement.value!="") {
		if (aFormElement.value.charAt(aFormElement.value.length-3)==".") {
			aFormElement.value = aFormElement.value.toString().replace(/[.]/,"~");
			aFormElement.value = aFormElement.value.toString().replace(/[,]/,"");
		} else {
			aFormElement.value = aFormElement.value.toString().replace(/[,]/,"~");
			aFormElement.value = aFormElement.value.toString().replace(/[.]/,"");
		}
		
		var regexp = /[^0-9~]/
	
		while(aFormElement.value.search(regexp)!=-1) {
			aFormElement.value = aFormElement.value.replace(regexp,"")
		}
		aFormElement.value = aFormElement.value.toString().replace(/[~]/,".");
		if(parseFloat(aFormElement.value)<9999) {
			aFormElement.value=parseFloat(aFormElement.value)*1000;
		}
		sign = (aFormElement.value == (aFormElement.value = Math.abs(aFormElement.value)));
		aFormElement.value = Math.floor(aFormElement.value*100+0.50000000001);
		cents = aFormElement.value%100;
		aFormElement.value = Math.floor(aFormElement.value/100).toString();
		if(cents<10)
			cents = "0" + cents;
		for (var i = 0; i < Math.floor((aFormElement.value.length-(1+i))/3); i++)
			aFormElement.value = aFormElement.value.substring(0,aFormElement.value.length-(4*i+3))+'.'+aFormElement.value.substring(aFormElement.value.length-(4*i+3));
		aFormElement.value=((sign)?'':'-') + aFormElement.value;
	}
}
function clearMoney(aFormElement) {
	if (aFormElement.value.charAt(aFormElement.value.length-3)==".") {
		aFormElement.value = aFormElement.value.toString().replace(/[.]/,"~");
		aFormElement.value = aFormElement.value.toString().replace(/[,]/,"");
	} else {
		aFormElement.value = aFormElement.value.toString().replace(/[,]/,"~");
		aFormElement.value = aFormElement.value.toString().replace(/[.]/,"");
	}
	
	var regexp = /[^0-9~]/

	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
	aFormElement.value = aFormElement.value.toString().replace(/[~]/,",");
	aFormElement.select();
}

function changeInteger(aFormElement) {
	var regexp = /[^0-9]/

	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
}

function changeNumberList(aFormElement) {
	var regexp = /[^0-9,]/

	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
}

function changeHomeNumber(aFormElement) {
	var regexp = /[^0-9]/

    if(aFormElement.value.search(regexp)!=-1) {
        alert("Gebruik het tweede veld voor de huisnummer-toevoeging.");
    }
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
}

function changeEmailAddress(aFormElement) {
	var regexp = /[^0-9a-z@\._\-]/

	aFormElement.value=aFormElement.value.toLowerCase()
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
}

function cropText(aFormElement,aSize) {
	aFormElement.value = aFormElement.value.substring(0,aSize)
}

function changeYear(aNumber) {
	if(aNumber<10) {
		return "200" + aNumber;
	} else if(aNumber>50 && aNumber<100) {
		return "19" + aNumber;
	} else if(aNumber<50) {
		return "20" + aNumber;
	} else {
		return aNumber;
	}
}

function changeDate(aFormElement) {
	var aDay,aMonth,aYear;
	
	theDate = new Date();
	theYear = theDate.getYear();
	if (theYear<1900) theYear=theYear+1900;

	var regexp = /[\/]/
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.toString().replace(regexp,"-");
	}
	regexp = /[^0-9/-]/
	while(aFormElement.value.search(regexp)!=-1) {
		aFormElement.value = aFormElement.value.replace(regexp,"")
	}
	if(IsNumeric(aFormElement.value)) {
		if(aFormElement.value.length==8) {
			aFormElement.value=aFormElement.value.substring(0,2) + "-" + aFormElement.value.substring(2,4) + "-" + aFormElement.value.substring(4,8)
		}
		if(aFormElement.value.length==7) {
			aFormElement.value=aFormElement.value.substring(0,1) + "-" + aFormElement.value.substring(2,4) + "-" + aFormElement.value.substring(4,8)
		}
		if(aFormElement.value.length==6) {
			aFormElement.value=aFormElement.value.substring(0,2) + "-" + aFormElement.value.substring(2,4) + "-" + changeYear(aFormElement.value.substring(4,6))
		}
	}
	DateArray=aFormElement.value.split("-");
	if(DateArray.length==3) {
		if(DateArray[0]>100) {
			aDay=(DateArray[2] % 31)==0?31:(DateArray[2] % 31);
			aMonth=(DateArray[1] % 12)==0?12:(DateArray[1] % 12);
			aYear=DateArray[0];
		} else {
			aDay=(DateArray[0] % 31)==0?31:(DateArray[0] % 31);
			aMonth=(DateArray[1] % 12)==0?12:(DateArray[1] % 12);
			if(DateArray[2]>50 && DateArray[2]<100) {
				aYear="19" + lenstring(DateArray[2].toString(),2,"0");
			} else if(DateArray[2]<50) {
				aYear="20" + lenstring(DateArray[2].toString(),2,"0");
			} else {
				aYear=DateArray[2];
			}
		}
		aFormElement.value=lenstring(aDay.toString(),2,"0") + "-" + lenstring(aMonth.toString(),2,"0") + "-" + lenstring(aYear.toString(),4,"0");
	} else if(DateArray.length==2) {
		aDay=(DateArray[0] % 31)==0?31:(DateArray[0] % 31);
		aMonth=(DateArray[1] % 12)==0?12:(DateArray[1] % 12);
		aYear=theYear;
		
		aFormElement.value=lenstring(aDay.toString(),2,"0") + "-" + lenstring(aMonth.toString(),2,"0") + "-" + lenstring(aYear.toString(),4,"0");
	} else {
		aFormElement.value="";
	}
}