///////////////////////////////////////////////////////////////////////////////////
///////////////// Tekst invoer controles en aanpassingen          /////////////////
///////////////////////////////////////////////////////////////////////////////////

function OpmaakVoorletters(object) {
  naam = object.name;
  waarde = object.value;
  NieuweWaarde = "";
  for (var i = 0; i < (waarde.length); i++) {
    if (isLetter(waarde.charAt(i))) {
    	NieuweWaarde = NieuweWaarde + (waarde.charAt(i));
    } else {
    	NieuweWaarde = NieuweWaarde;
    }
  }
  EindWaarde = "";
  for (var i = 0; i < (NieuweWaarde.length); i++) {
    EindWaarde = EindWaarde + NieuweWaarde.charAt(i) + ".";
  }
  object.value=EindWaarde.toUpperCase();
}

function OpmaakTussenvoegsel(object) {
  naam = object.name;
  if(object.value.length > 0) {
    waarde = object.value.toLowerCase();
    waarde = waarde.replace(/^\s+/,"");
    waarde = waarde.replace(/\s+$/,""); 
    EindWaarde = waarde;
    object.value=EindWaarde;
  }
}

function OpmaakAchternaam(object) {
  naam = object.name;
  waarde = object.value;
  waarde = waarde.charAt(0).toUpperCase() + waarde.substring(1);
  var spacefound = false;
  var EindWaarde = "";
  for (var i = 0; i < (waarde.length); i++) {
  	if (isLetter(waarde.charAt(i))) {
	    if (spacefound==true) {
			spacefound = false;
			EindWaarde = EindWaarde + waarde.charAt(i).toUpperCase();
		} else {
			EindWaarde = EindWaarde + waarde.charAt(i);
		}
	} else {
		EindWaarde = EindWaarde + waarde.charAt(i);
		if (waarde.charAt(i)==" ") {spacefound = true;}
	}
  }
  object.value=EindWaarde;
}

function OpmaakPostcodeNL(object) {
  naam = object.name;
  waarde = object.value;
  EindWaarde = "";
  for (var i = 0; i < (waarde.length); i++) {
  	if (waarde.charAt(i)!=" ") {
			EindWaarde = EindWaarde + waarde.charAt(i);
	}
  }
  EindWaarde = EindWaarde.substring(0,4) + " " + EindWaarde.substring(4);
  object.value=EindWaarde.toUpperCase();
}

function OpmaakPostcode(object) {
  naam = object.name;
  waarde = object.value;
  EindWaarde = "";
  for (var i = 0; i < (waarde.length); i++) {
  	if (waarde.charAt(i)!=" ") {
			EindWaarde = EindWaarde + waarde.charAt(i);
	}
  }
  object.value=EindWaarde.toUpperCase();
}

function OpmaakAdres(object) {
  naam = object.name;
  waarde = object.value;
  waarde = waarde.charAt(0).toUpperCase() + waarde.substring(1);
  var spacefound = false;
  var EindWaarde = "";
  for (var i = 0; i < (waarde.length); i++) {
  	if (isLetter(waarde.charAt(i))) {
	    if (spacefound==true) {
			spacefound = false;
			EindWaarde = EindWaarde + waarde.charAt(i).toUpperCase();
		} else {
			EindWaarde = EindWaarde + waarde.charAt(i);
		}
	} else {
		EindWaarde = EindWaarde + waarde.charAt(i);
		if (waarde.charAt(i)==" ") {spacefound = true;}
	}
  }
  object.value=EindWaarde;
}

function OpmaakHuisnummer(object) {
  naam = object.name;
  waarde = object.value.toLowerCase();
  EindWaarde = "";
  for (var i = 0; i < (waarde.length); i++) {
  	if (isLetter(waarde.charAt(i))) {
		if (i>0) {
			if (waarde.charAt(i-1)!=" ") {
				EindWaarde = EindWaarde + " " + waarde.charAt(i);
			} else {
				EindWaarde = EindWaarde + waarde.charAt(i);
			}
		}
	} else {
		EindWaarde = EindWaarde + waarde.charAt(i);
	}
  }  
  object.value=EindWaarde;
}

function OpmaakEmail(object) {
  naam = object.name;
  if(object.value.length > 0) {
    waarde = object.value.toLowerCase();
    waarde = waarde.replace(/^\s+/,"");
    waarde = waarde.replace(/\s+$/,""); 
    waarde = waarde.replace(" ",""); 
    EindWaarde = waarde;
    object.value=EindWaarde;
  }
}

function OpmaakBTW(object) {
  naam = object.name;
  waarde = object.value.toUpperCase();
  EindWaarde = "";
  for (var i = 0; i < (waarde.length); i++) {
  	if (isLetterOrNumber(waarde.charAt(i))) {
			EindWaarde = EindWaarde + waarde.charAt(i);
	}
  }
  object.value=EindWaarde;
}

///////////////////////////////////////////////////////////////////////////////////
///////////////// Tekst invoer controles en aanpassingen          /////////////////
///////////////////////////////////////////////////////////////////////////////////

//Alleen numerieke waarden in tekstvak kunnen typen zonder punt
      function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
	         if (charCode > 31 && (charCode < 48 || charCode > 57)) {
			    return false;
			} else {
	            return true;
			}
      }

//Alleen numerieke waarden in tekstvak kunnen typen met punt
      function isNumberKeyDot(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
		 if (charCode == 44 || charCode == 47) {
		 	 if (evt.which) {
			 	evt.which = 46;
			} else {
				event.keyCode = 46;
			}
			return true;
		 } else {
	         if (charCode > 31 && (charCode < 46 || charCode > 57)) {
			    return false;
			} else {
	            return true;
			}
		 }
      }

//Alleen numerieke waarden in tekstvak kunnen typen met punt en minteken
      function isNumberKeySpecial(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
		 if (charCode == 44 || charCode == 47) {
		 	 if (evt.which) {
			 	evt.which = 46;
			} else {
				event.keyCode = 46;
			}
			return true;
		 } else {
	         if (charCode > 31 && (charCode < 44 || charCode > 57)) {
			    return false;
			} else {
	            return true;
			}
		 }
      }

function isLetter(string) {
  nummer = true;
  if (!string) return false;
  var Chars = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ";
  for (var i = 0; i < string.length; i++) {
    if (Chars.indexOf(string.charAt(i)) == -1) {
	return false;
    }
  }  
  return true;
}

function isLetterOrNumber(string) {
  nummer = true;
  if (!string) return false;
  var Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  for (var i = 0; i < string.length; i++) {
    if (Chars.indexOf(string.charAt(i)) == -1) {
	return false;
    }
  }  
  return true;
}

function isNumber(string) {
  nummer = true;
  if (!string) return false;
  var Chars = "1234567890";
  for (var i = 0; i < string.length; i++) {
    if (Chars.indexOf(string.charAt(i)) == -1) {
	return false;
    }
  }  
  return true;
}

function isPositifNumber(string) {
  nummer = true;
  if (!string) return false;
  var Chars = "1234567890,.";
  for (var i = 0; i < string.length; i++) {
    if (Chars.indexOf(string.charAt(i)) == -1) {
	return false;
    }
  }  
  return true;
}

function isAllNumber(string) {
  nummer = true;
  if (!string) return false;
  var Chars = "1234567890,.-";
  for (var i = 0; i < string.length; i++) {
    if (Chars.indexOf(string.charAt(i)) == -1) {
	return false;
    }
  }  
  return true;
}

function isTelNumber(evt) {
         var charCode = (evt.which) ? evt.which : event.keyCode
	         if (charCode > 32 && (charCode < 45 || charCode > 57)) {
			    return false;
			} else {
	            return true;
			}
}

function isBankNumber(evt) {
         var charCode = (evt.which) ? evt.which : event.keyCode
	         if (charCode > 31 && (charCode < 46 || charCode > 57)) {
			    return false;
			} else {
	            return true;
			}
}

function isKvKNumber(evt) {
         var charCode = (evt.which) ? evt.which : event.keyCode
	         if (charCode > 32 && (charCode < 48 || charCode > 57)) {
			    return false;
			} else {
	            return true;
			}
}

///////////////////////////////////////////////////////////////////////////////////
///////////////// Wachtwoord meter                                /////////////////
///////////////////////////////////////////////////////////////////////////////////

function testPassword(passwd)
{
var description = new Array();
description[0] = "<table cellpadding=0 cellspacing=1><tr class='normal'><td height=15 width=54 align='center' bgcolor=#FF6666>onveilig</td><td height=15 width=54 align='center' bgcolor=#dddddd>redelijk</td><td height=15 width=53 align='center' bgcolor=#dddddd>veilig</td></tr></table>";
description[1] = "<table cellpadding=0 cellspacing=1><tr class='normal'><td height=15 width=54 align='center' bgcolor=#FFCC66>&nbsp;</td><td height=15 width=54 align='center' bgcolor=#FFCC66>redelijk</td><td height=15 width=53 align='center' bgcolor=#dddddd>veilig</td></tr></table>";
description[2] = "<table cellpadding=0 cellspacing=1><tr class='normal' bgcolor=#66FF99><td height=15 width=54 align='center'>&nbsp;</td><td height=15 width=54 align='center'>&nbsp;</td><td height=15 width=53 align='center'>veilig</td></tr></table>";
description[3] = "<table cellpadding=0 cellspacing=1><tr class='normal'><td height=15 width=54 align='center' bgcolor=#dddddd>onveilig</td><td height=15 width=54 align='center' bgcolor=#dddddd>redelijk</td><td height=15 width=53 align='center' bgcolor=#dddddd>veilig</td></tr></table>";

		var intScore   = 0
		var strVerdict = 0
		
		// PASSWORD LENGTH
		if (passwd.length==0 || !passwd.length)                         // length 0
		{
			intScore = -1
		}
		else if (passwd.length>0 && passwd.length<3) // length between 1 and 2
		{
			intScore = (intScore+3)
		}
		else if (passwd.length>2 && passwd.length<7) // length between 3 and 6
		{
			intScore = (intScore+6)
		}
		else if (passwd.length>6 && passwd.length<11)// length between 7 and 10
		{
			intScore = (intScore+12)
		}
		else if (passwd.length>10)                    // length 11 or more
		{
			intScore = (intScore+18)
		}
		
		
		// LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex)
		if (passwd.match(/[a-z]/))                              // [verified] at least one lower case letter
		{
			intScore = (intScore+1)
		}
		
		if (passwd.match(/[A-Z]/))                              // [verified] at least one upper case letter
		{
			intScore = (intScore+5)
		}
		
		// NUMBERS
		if (passwd.match(/\d+/))                                 // [verified] at least one number
		{
			intScore = (intScore+5)
		}
		
		if (passwd.match(/(.*[0-9].*[0-9].*[0-9].*[0-9])/))             // [verified] at least 4 numbers
		{
			intScore = (intScore+5)
		}
		
		
		// SPECIAL CHAR
		if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))            // [verified] at least one special character
		{
			intScore = (intScore+5)
		}
		
																 // [verified] at least two special characters
		if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
		{
			intScore = (intScore+5)
		}
	
		
		// COMBOS
		if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))        // [verified] both upper and lower case
		{
			intScore = (intScore+2)
		}

		if (passwd.match(/(\d.*\D)|(\D.*\d)/))                    // [FAILED] both letters and numbers, almost works because an additional character is required
		{
			intScore = (intScore+2)
		}
 
																  // [verified] letters, numbers, and special characters
		if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
		{
			intScore = (intScore+2)
		}
	
	
		if(intScore == -1)
		{
		   strVerdict = description[3];
		}
		else if(intScore > -1 && intScore < 15)
		{
		   strVerdict = description[0];
		}
		else if (intScore > 14 && intScore < 30)
		{
		   strVerdict = description[1];
		}
		else
		{
		   strVerdict = description[2];
		}
	
	document.getElementById("Words").innerHTML= (strVerdict);
	
}

