﻿// JScript File

/*
#
# DE FUNCTIES IN DIT BESTAND ZIJN VOOR VALIDATIES, PLAATS HIER GEEN ANDERE FUNCTIES DAN M.B.T. VALIDATIES!!!
#
#
# RU = Roy Umbach
#
*/


/* RU - augustus 2007
Doel: Nagaan of het opgegeven item een telefoonnummer representeert
Parameters:
	source: de parameter waarop gecontroleerd wordt
	arguments: de argumenten die gebruikt worden m.b.t. de afhandeling van de validatie
*/
function TelefoonnummerValidator(source, arguments) 
{
	try 
	{ 
		if ( arguments == null || arguments.Value == null ) { arguments.IsValid = false; return; }
		if ( arguments.Value == '' ) { arguments.IsValid = false; return; }
		//
		arguments.IsValid = false;
		// haal het telefoonnumer op
		var result = escape(arguments.Value);
		// variabele ter eindcontrole
		var okee = false;
		
		// regex ter controle of het een internationaal mobiel nummer is
		var regex316 = new RegExp(/^[+]316/)
		// regex ter controle of het een lokaal mobiel nummer is
		var regex06 = new RegExp(/^06/)
		// regex ter controle of het een internationaal netnummer is
		var regex31 = new RegExp(/^[+]31[^06]/)
		// regex ter controle of het een lokaal netnummer is
		var regex0 = new RegExp(/^0[1-9]\d\d/)

    	// ga op zoek naar whitespaces en vervang deze met 'niets'
   		result = result.replace(/\s/g, "");
	    // ga op zoek naar minteken - en vervang deze met 'niets'
	    result = result.replace(/-/g, "");
        // is het internationaal, hou dan +31 aan (d.w.z. +31 of 0031, let op geen enkele 0 ivm telnr zoals 0318-etc)
        result = result.replace(/^00(31)/, "+$1");
        
		// is het een internationaal mobiel nummer
		if( regex316.test(result) )
		{
            // plaats het streepje op de juiste plaats
            result = result.replace(/^([+]316)/, "$1-");
            // is het nummer okee
            okee = CorrectAantalNummers(result, 11);
		}
		// is het een lokaal mobiel nummer
		else if( regex06.test(result) )
		{
            // plaats het streepje op de juiste plaats
            result = result.replace(/^(06)/, "$1-");
            // is het nummer okee
            okee = CorrectAantalNummers(result, 10);
		}
		// is het een internationaal netnummer
		else if( regex31.test(result) )
		{	    
		    // formatteer het telefoonnummer
		    result = FormatNetnummer(result, "^[+]31");
            // is het nummer okee
            okee = CorrectAantalNummers(result, 11);
		}
		// is het een lokaal netnummer
		else if( regex0.test(result) )
		{
		    // formatteer het telefoonnummer
		    result = FormatNetnummer(result, "^0");
            // is het nummer okee
            okee = CorrectAantalNummers(result, 10);
		}

        // controleer of het eerste nummer achter het minteken - geen 0 is
        var regexMinteken = new RegExp(/-0/);
        if( regexMinteken.test(result) )
            return;
        // is het nummer okee
        if( okee )
        {
    	    // wijs het telefoonnummer in juiste formaat aan veld toe
		    var control = document.getElementById(source.controltovalidate); 
		    control.value = unescape(result);
		    //
		    arguments.IsValid = true;
		}
	}
	catch(er){}
}

function CorrectAantalNummers(telefoonnummer, aantal)
{
    // regex ter controle of het lokaal aantal nummers correct is
    var regex = new RegExp("\\d{" + aantal + "}");
    // houd alleen cijfers over, haal + en - weg
    var telefoonnummer = telefoonnummer.replace(/[+|-]/g, "");
    // controleer
    if( regex.test(telefoonnummer) )
    {
        return true;
    }
    //
    return false;
}

function FormatNetnummer(netnummer, regexStart)
{
	// netnummers bestaande uit 0 + twee delen in NL zijn 10, 13, 15, 20, 23, 24, 26, 30, 33, 35, 36, 38, 40, 43, 45, 46, 50, 53, 55, 58, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79
    var regexNetnummer = new RegExp(/^(10|13|15|20|23|24|26|30|33|35|36|38|40|43|45|46|50|53|55|58|70|71|72|73|74|75|76|77|78|79)/);
    // achterhaal deel van netnummer, neem het korte deel
    var regex = new RegExp(regexStart + "(\\d\\d).*");
	var net = netnummer.replace(regex, "$1");
	// ga uit van lang netnummer
	var index = 3;
	// kort netnummer
	if( regexNetnummer.test(net) )
	    index = 2;
	// plaats het minteken
	regex = new RegExp("(" + regexStart + "\\d{" + index + "})");
	netnummer = netnummer.replace(regex, "$1-");
	// return
	return netnummer;
}

/* RU - augustus 2007
Doel: Nagaan of het opgegeven item een mobielnummer representeert
Parameters:
	source: de parameter waarop gecontroleerd wordt
	arguments: de argumenten die gebruikt worden m.b.t. de afhandeling van de validatie
*/
function MobielnummerValidator(source, arguments) 
{
	try 
	{ 
		if ( arguments == null || arguments.Value == null ) { arguments.IsValid = false; return; }
		if ( arguments.Value == '' ) { arguments.IsValid = false; return; }
		//
		arguments.IsValid = false;
		// haal het telefoonnumer op
		var result = escape(arguments.Value);
		// variabele ter eindcontrole
		var okee = false;
		
		// regex ter controle of het een internationaal mobiel nummer is
		var regex316 = new RegExp(/^[+]316/)
		// regex ter controle of het een lokaal mobiel nummer is
		var regex06 = new RegExp(/^06/)

    	// ga op zoek naar whitespaces en vervang deze met 'niets'
   		result = result.replace(/\s/g, "");
	    // ga op zoek naar minteken - en vervang deze met 'niets'
	    result = result.replace(/-/g, "");
        // is het internationaal, hou dan +31 aan (d.w.z. +31 of 0031, let op geen enkele 0 ivm telnr zoals 0318-etc)
        result = result.replace(/^00(31)/, "+$1");
        
		// is het een internationaal mobiel nummer
		if( regex316.test(result) )
		{
            // plaats het streepje op de juiste plaats
            result = result.replace(/^([+]316)/, "$1-");
            // is het nummer okee
            okee = CorrectAantalNummers(result, 11);
		}
		// is het een lokaal mobiel nummer
		else if( regex06.test(result) )
		{
            // plaats het streepje op de juiste plaats
            result = result.replace(/^(06)/, "$1-");
            // is het nummer okee
            okee = CorrectAantalNummers(result, 10);
		}
        // controleer of het eerste nummer achter het minteken - geen 0 is
        var regexMinteken = new RegExp(/-0/);
        if( regexMinteken.test(result) )
            return;
        // is het nummer okee
        if( okee )
        {
    	    // wijs het telefoonnummer in juiste formaat aan veld toe
		    var control = document.getElementById(source.controltovalidate); 
		    control.value = unescape(result);
		    //
		    arguments.IsValid = true;
		}
	}
	catch(er){}
}

function PostcodeValidator(source, arguments){

    if (arguments.Value.match(/^(\d{4}\s*\w{2})$/i)) {
	    // Successful match
	    return true;
    } else {
	    // Match attempt failed
	    arguments.IsValid = false;
	    return false
    }

}