uppercaseFirst/* Maak van eerste letter een hoofdletter */
function uppercaseFirst (field)
{
   field.value = field.value.substr(0, 1).toUpperCase() + field.value.substr(1);
}
/* Maak van alle letters hoofdletters */
function uppercaseAll (field)
{
	field.value=field.value.toUpperCase();
}
/* Maak van alle letters kleine letters */
function lowercaseAll (field)
{
	field.value=field.value.toLowerCase();
}
/* Vervang karakters */
function replaceChar (field, replaceChar, replaceBy)
{
	field.value=field.value.replace(replaceChar, replaceBy);
}
/* Spring naar volgende veld wanneer aantal tekens bereikt is */
function jumpToField (field, jumpTo, num, keyCode)
{
	if (keyCode != 9 && keyCode != 16) 
	{
		if (field.value.length>=num)
		{
			document.getElementById(jumpTo).focus();
		}
	}
}
/* Kijk of het opgegeven veld niet leeg is en of de lengte van de string hoger is dan de opgegeven waarde */
function validate_required (field,num,alerttxt)
{
	with (field)
	{
		if (value==null||value==""||(value.length<num&&num>0))
		{
			alert(alerttxt);
			field.focus();
			field.style.borderBottom = '2px solid #E45303';
			return false;
		}
		else
		{
			field.style.borderBottom = '1px solid #99CECE';
			return true;
		}
	}
}
/* Controleer emailadres op geldigheid */
function validate_email(field,alerttxt)
{
	with (field)
	{
		apos=value.indexOf("@");
		dotpos=value.lastIndexOf(".");
		if (apos<1||dotpos-apos<2||value.length<(dotpos+3)) 
		{
			alert(alerttxt);
			field.focus();
			field.style.borderBottom = '2px solid #E45303';
			return false;
		}
		else
		{
			field.style.borderBottom = '1px solid #99CECE';
			return true;
		}
	}
}
/* Kijk of het opgegeven veld niet leeg is en of de lengte van de string hoger is dan de opgegeven waarde */
function validate_compare (field1,field2,alerttxt)
{
	with (field1)
	{
		if (value != field2.value)
		{
			alert(alerttxt);
            value='';
            field2.value='';
			field1.focus();
			field1.style.borderBottom = '2px solid #E45303';
			return false;
		}
		else
		{
			field.style.borderBottom = '1px solid #99CECE';
			return true;
		}
	}
}
/* controleer stap 1 van het aanmelden-smsdiensten formulier */
function validate_gegevens_organisatie_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Organisation_Nickname,4,"Er is geen inlognaam ingevuld of de ingevulde gebruikersnaam is te kort. Een inlognaam moet minimaal uit 4 tekens bestaan.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Password,6,"Er is geen wachtwoord ingevuld of het ingevulde wachtwoord is te kort. Een wachtwoord moet minimaal uit 6 tekens bestaan.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Contact_First_Name,0,"Er is geen voornaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Contact_Initials,0,"Er zijn geen initialen ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Contact_Last_Name,0,"Er is geen achternaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Name,0,"Er is geen organisatienaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Street_Name,0,"Er is geen straatnaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_House_Number,0,"Er is geen huisnummer ingevuld.")==false)
		{
			return false;
		}
		/*
		if (validate_required(Organisation_Post_Code_Numbers,4,"Er is geen geldige postcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Post_Code_Letters,2,"Er is geen geldige postcode ingevuld.")==false)
		{
			return false;
		}
		*/
		if (validate_required(Organisation_City,0,"Er is geen plaatsnaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Country,1,"Er is geen land ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Telephone_Number,8,"Er is geen telefoonnummer ingevuld. Vergeet niet het netnummer in te vullen.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Email_Address,0,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_email(Organisation_Email_Address,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_KVK,6,"Er is geen geldig KVK-nummer ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_URL,8,"Er is geen website ingevuld.")==false)
		{
			return false;
		}
	}
}
/* controleer stap 2 van het aanmelden-smsdiensten formulier */
function validate_gegevens_smsdiensten_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Service_Name,0,"Er is geen dienstnaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Email_Address,0,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_email(Service_Email_Address,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
        /*
		if (validate_required(Subcategory_ID,0,"Er is geen categorie gekozen.")==false)
		{
			return false;
		}
        */
		if (validate_required(Service_Description,10,"Er is geen omschrijving ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Shortcode,2,"Er is geen shortcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Keyword,0,"Er is geen keyword ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Subscribe,0,"Er is geen aanmeldcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Unsubscribe,0,"Er is geen afmeldcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Help,0,"Er is geen helpcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Receive_Euros,0,"Er is geen bedrag p.o.b. ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Receive_Cents,0,"Er is geen bedrag p.o.b. ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Administrative_Euros,0,"Er is geen bedrag p.o.b. (administratief) ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Administrative_Cents,0,"Er is geen bedrag p.o.b. (administratief) ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Number_Of_Messages,0,"Er is geen aantal berichten ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Messages_Per_ID,0,"Er is geen aantal berichten ingevuld.")==false)
		{
			return false;
		}
	}
}
/* controleer stap 2 van het aanmelden-smsdiensten formulier */
function validate_wijzig_smsdiensten_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Service_Email_Address,0,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_email(Service_Email_Address,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
        /*
		if (validate_required(Subcategory_ID,0,"Er is geen categorie gekozen.")==false)
		{
			return false;
		}
        */
		if (validate_required(Service_Description,10,"Er is geen omschrijving ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Shortcode,2,"Er is geen shortcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Keyword,0,"Er is geen keyword ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Subscribe,0,"Er is geen aanmeldcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Unsubscribe,0,"Er is geen afmeldcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Help,0,"Er is geen helpcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Receive_Euros,0,"Er is geen bedrag p.o.b. ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Receive_Cents,0,"Er is geen bedrag p.o.b. ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Administrative_Euros,0,"Er is geen bedrag p.o.b. (administratief) ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Costs_Administrative_Cents,0,"Er is geen bedrag p.o.b. (administratief) ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Number_Of_Messages,0,"Er is geen aantal berichten ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Messages_Per_ID,0,"Er is geen aantal berichten ingevuld.")==false)
		{
			return false;
		}
	}
}
function validate_activation_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Organisation_Activation_Key,8,"Er is geen geldige activatiecode ingevuld.")==false)
		{
			return false;
		}
    }
}
function validate_smsdienst_opgeven_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Service_Name,3,"Er is geen dienstnaam of omschrijving ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Service_Shortcode,2,"Er is geen shortcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Contact_Name,0,"U heeft uw naam niet ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Contact_Email_Address,0,"U heeft uw e-mailadres niet ingevuld.")==false)
		{
			return false;
		}
		if (validate_email(Contact_Email_Address,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
    }
}
/* Contactformulier controleren */
function validate_contact_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Name,3,"Er is geen naam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Email_Address,6,"U heeft uw e-mailadres niet ingevuld.")==false)
		{
			return false;
		}
		if (validate_email(Email_Address,"Er is geen geldig e-mailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Subject,0,"Er is geen onderwerp ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Message,10,"Er is geen bericht ingevuld.")==false)
		{
			return false;
		}
    }
}
/* controleer het wijzigen van organisatie */
function validate_wijzig_organisatie_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Organisation_Contact_First_Name,0,"Er is geen voornaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Contact_Initials,0,"Er zijn geen initialen ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Contact_Last_Name,0,"Er is geen achternaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Street_Name,0,"Er is geen straatnaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_House_Number,0,"Er is geen huisnummer ingevuld.")==false)
		{
			return false;
		}
		/*
		if (validate_required(Organisation_Post_Code_Numbers,4,"Er is geen geldige postcode ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Post_Code_Letters,2,"Er is geen geldige postcode ingevuld.")==false)
		{
			return false;
		}
		*/
		if (validate_required(Organisation_City,0,"Er is geen plaatsnaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Country,1,"Er is geen land ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Telephone_Number,8,"Er is geen telefoonnummer ingevuld. Vergeet niet het netnummer in te vullen.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Email_Address,0,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_email(Organisation_Email_Address,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_KVK,6,"Er is geen geldig KVK-nummer ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_URL,8,"Er is geen website ingevuld.")==false)
		{
			return false;
		}
	}
}

/* controleer het wachtwoord-wijzigen formulier */
function validate_password_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Organisation_Password_Old,0,"Uw oude wachtwoord is niet ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Password_New1,6,"Er is geen nieuw wachtwoord ingevuld of het ingevulde wachtwoord is te kort. Een wachtwoord moet minimaal uit 6 tekens bestaan.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Password_New2,0,"Er is geen wachtwoord ter bevestiging ingevuld.")==false)
		{
			return false;
		}
		if (validate_compare(Organisation_Password_New1,Organisation_Password_New2,"De door u ingevulde wachtwoorden komen niet overeen.")==false)
		{
			return false;
		}
    }
}
/* controleer het bankgegevens-wijzigen formulier */
function validate_bank_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Bank_Holder,0,"Er is geen rekeninghouder ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Bank_Accountnumber,3,"Er is geen rekeningnummer ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Bank_Name,0,"Er is geen naam van uw bank ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Bank_City,0,"Er is geen plaats van uw bank ingevuld.")==false)
		{
			return false;
		}
    }
}
/* controleer het factuur bevestigen formulier */
function validate_invoice_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Algemene_Voorwaarden,0,"U dient akkoord te gaan met onze algemene voorwaarden.")==false)
		{
			return false;
		}
		if (validate_required(Automatische_Incasso,0,"U dient akkoord te gaan met automatische incasso.")==false)
		{
			return false;
		}
    }
}
/* controleer het wachtwoord vergeten formulier */
function forgot_password_form(thisform)
{
	with (thisform)
	{
		if (validate_required(Organisation_Nickname,0,"Er is geen gebruikersnaam ingevuld.")==false)
		{
			return false;
		}
		if (validate_required(Organisation_Email_Address,0,"Er is geen emailadres ingevuld.")==false)
		{
			return false;
		}
		if (validate_email(Organisation_Email_Address,"Er is geen geldig emailadres ingevuld.")==false)
		{
			return false;
		}
    }
}
/* ************************************************************
Created: 20060120
Author:  Steve Moitozo <god at zilla dot us> -- geekwisdom.com
Description: This is a quick and dirty password quality meter 
	 written in JavaScript so that the password does 
	 not pass over the network.
License: MIT License (see below)
Modified: 20060620 - added MIT License
Modified: 20061111 - corrected regex for letters and numbers
				 Thanks to Zack Smith -- zacksmithdesign.com
---------------------------------------------------------------
Copyright (c) 2006 Steve Moitozo <god at zilla dot us>

Permission is hereby granted, free of charge, to any person 
obtaining a copy of this software and associated documentation 
files (the "Software"), to deal in the Software without 
restriction, including without limitation the rights to use, 
copy, modify, merge, publish, distribute, sublicense, and/or 
sell copies of the Software, and to permit persons to whom the 
Software is furnished to do so, subject to the following 
conditions:

The above copyright notice and this permission notice shall 
be included in all copies or substantial portions of the 
Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY 
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE 
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 
OR OTHER DEALINGS IN THE SOFTWARE. 
---------------------------------------------------------------


Password Strength Factors and Weightings

password length:
level 0 (3 point): less than 4 characters
level 1 (6 points): between 5 and 7 characters
level 2 (12 points): between 8 and 15 characters
level 3 (18 points): 16 or more characters

letters:
level 0 (0 points): no letters
level 1 (5 points): all letters are lower case
level 2 (7 points): letters are mixed case

numbers:
level 0 (0 points): no numbers exist
level 1 (5 points): one number exists
level 1 (7 points): 3 or more numbers exists

special characters:
level 0 (0 points): no special characters
level 1 (5 points): one special character exists
level 2 (10 points): more than one special character exists

combinatons:
level 0 (1 points): letters and numbers exist
level 1 (1 points): mixed case letters
level 1 (2 points): letters, numbers and special characters 
				exist
level 1 (2 points): mixed case letters, numbers and special 
				characters exist


NOTE: Because I suck at regex the code might need work
  
NOTE: Instead of putting out all the logging information,
  the score, and the verdict it would be nicer to stretch
  a graphic as a method of presenting a visual strength
  guage.

************************************************************ */
function testPassword(passwd, formname)
{
	var intScore   = 0
	var strVerdict = "zwak"
	
	// PASSWORD LENGTH
	if (passwd.length<5)                         // length 4 or less
	{
		intScore = (intScore+3)
	}
	else if (passwd.length>4 && passwd.length<8) // length between 5 and 7
	{
		intScore = (intScore+6)
	}
	else if (passwd.length>7 && passwd.length<16)// length between 8 and 15
	{
		intScore = (intScore+12)
	}
	else if (passwd.length>15)                    // length 16 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])/))             // [verified] at least three 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(/([a-zA-Z])/) && passwd.match(/([0-9])/)) // [verified] both letters and numbers
	{
		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 < 16)
	{
	   strVerdict = "erg zwak"
	   borderColor = "#E45303"
	}
	else if (intScore > 15 && intScore < 25)
	{
	   strVerdict = "zwak"
	   borderColor = "#F7A80A"
	}
	else if (intScore > 24 && intScore < 35)
	{
	   strVerdict = "matig"
	   borderColor = "#FCE911"
	}
	else if (intScore > 34 && intScore < 45)
	{
	   strVerdict = "sterk"
	   borderColor = "#E1F117"
	}
	else
	{
	   strVerdict = "erg sterk"
	   borderColor = "#BCF11B"
	}
	
	formname.verdict.value = (strVerdict)
	formname.verdict.style.borderBottomWidth='2px';
	formname.verdict.style.borderBottomColor=borderColor;
}
