﻿// js functions

//Selecteer alle klassen
function dbfCheckUncheckAll(theElement) 
{
    var theForm = theElement.form, z = 0;
    for (z = 0; z < theForm.length; z++) {
        if (theForm[z].type == 'checkbox' && theForm[z].name != 'checkall') 
        {
            theForm[z].checked = theElement.checked;
        }
    }
}


// Compare input value with label value
function dbfValidateInput(txtValue, lblValue) 
{    
    var label = document.getElementById(lblValue);
    var txt = document.getElementById(txtValue);
        
    if (txt.value > parseInt(label.innerHTML)) 
    {
        alert("Het aantal deelnemers mag niet hoger zijn dan het aantal leerlingen!");
        txt.focus();
        txt.select();
        return false;
    }
    else 
    {
        return true;
    }
}

//Grid paging
function dbfPageController(btnid, pagevaluecontainer)
{      
    var pvcontainer = document.getElementById(pagevaluecontainer).value = btnid.value;
    //alert("pagina " + btnid.value + " en hiddenfieldwaarde:" + pvcontainer);
}

//Validaties voor Betaalopdracht - doelgroepkeuze
function dbfValidateWeborderDoelgroep(ddlDoelgroep)
{
    var doelgroep = document.getElementById(ddlDoelgroep);
    if (doelgroep.value == "0")
    {
        alert("Selecteer een doelgroep!");
        doelgroep.focus();
        return false;
    }
    return true;
}

//Betaalopdracht deelnemers aan/uit
function dbfEnableTxt(chkBoxKlas, txtDeelnemers, txtAantalleerlingen)
{    
    if (chkBoxKlas.checked) 
    {    
        document.getElementById(txtDeelnemers).disabled = false;
        document.getElementById(txtDeelnemers).value = document.getElementById(txtAantalleerlingen).innerHTML;
        document.getElementById(txtDeelnemers).focus();
        document.getElementById(txtDeelnemers).select();
    }
    else
    {
        document.getElementById(txtDeelnemers).disabled = true;
        document.getElementById(txtDeelnemers).value = "0";
    }
}

//Betaalopdracht check/uncheckall
function dbfCheckUncheckAll(theElement) 
{
    var theForm = theElement.form, z = 0;
    for(z = 0; z < theForm.length; z++)
    {
        if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall')
        {
            theForm[z].checked = theElement.checked;
        }
    }
}

//Betaalopdracht bevestiging
function dbfWeborderConfirmSubmit()
{
    return confirm("Weet u het zeker dat u deze weborder wilt bevestigen?");
}

//Betaalopdracht annuleren
function dbfWeborderConfirmCancel()
{
    return confirm("Weet u het zeker dat u deze weborder wilt annuleren?");
}

//Validaties voor wachtwoordvergeten
function dbfValidateVergetenWW(txtKaartnr)
{
    var kaartnr = document.getElementById(txtKaartnr);
    var re8digit = /^\d{8}$/;
    
    if (dbfTrimString(kaartnr.value).length == 0)
    {
        alert("Vul een kaartnummer in!");
        kaartnr.value = "";
        kaartnr.focus();
        return false;
    }
    
    if (kaartnr.value.search(re8digit) == -1)
    {
        alert("Vul een geldig kaartnummer in! Een kaartnummer is 8 cijfers lang!");
        kaartnr.focus();
        return false;
    }
    
    return true;
}


//Validaties voor overboeken klassikaal 
function dbfValidateOverboekenCollectief(txtEuros, txtCenten, chkBoxAndereKlas, ddlTegoedVoorKlas, chkBoxAndereDocent, ddlDocenten)
{
    var euros = document.getElementById(txtEuros);
    var centen = document.getElementById(txtCenten);
    var bedrag = ((euros.value * 100) + centen.value) / 100;
    
    var andereklas = document.getElementById(chkBoxAndereKlas);
    var anderedocent = document.getElementById(chkBoxAndereDocent);
       
    if (bedrag <= 0)
    {
        alert("Bedrag mag niet nul zijn!");
        euros.focus();
        return false;
    }
    
    if (andereklas.checked)
    {
        var tegoedvoorklaslijst = document.getElementById(ddlTegoedVoorKlas);
        if (tegoedvoorklaslijst.value == "-1")
        {
            alert("Selecteer een andere klas!");
            tegoedvoorklaslijst.focus();
            return false;
        }
    }
    
    if (anderedocent.checked)
    {
        var docentenlijst = document.getElementById(ddlDocenten);
        if (docentenlijst.value == "-1")
        {
            alert("Selecteer een andere docent!");
            docentenlijst.focus();
            return false;
        }
    }
    
    return confirm("Weet u het zeker dat u dit bedrag over wilt boeken?");
}

//Validaties voor budget verdelen per leerling (individueel)
function dbfResetBedragLeerlingen(txtEuros, txtCenten)
{
    var euros = document.getElementById(txtEuros);
    var centen = document.getElementById(txtCenten);
    
    euros.value = "0";
    centen.value = "00";
}

//Validaties voor terugboeken budget docent
function dbfValidateTerugBoekenDCNT(txtEuros, txtCenten, lblSaldo, ddlKlassen)
{
    var euros = document.getElementById(txtEuros);
    var centen = document.getElementById(txtCenten);
    var klassen = document.getElementById(ddlKlassen);
    var saldo = document.getElementById(lblSaldo).value;
    var bedrag = ((euros.value * 100) + centen.value) / 100;
  
    if (bedrag <= 0)
    {
        alert("Bedrag mag niet nul zijn!");
        euros.focus();
        return false;
    }
    if (klassen.value == "-1")
    {
        alert("Selecteer een klas!");
        klassen.focus();
        return false;
    }
    return confirm("Weet u het zeker dat u dit bedrag terug wilt boeken?");
}


//Validaties voor docent check
function dbfCheckDocent(krtNr)
{
    //var trimmed = str.replace(/^\s+|\s+$/g, '') ;
    var kaartNr = document.getElementById(krtNr);
    if (dbfTrimString(kaartNr.value).length == 0)
    {
        alert("Vul een kaartnummer in!");
        kaartNr.value = "";
        kaartNr.focus();
        return false;
    }
    return true;
}

//Validaties voor het aanmaken van een betaalopdracht
function dbfValidateWeborder(txtEmail, txtBedrag, txtBedragCenten, txtDatum, txtTijd)
{
    var email = document.getElementById(txtEmail);
    var euros = document.getElementById(txtBedrag);
    var centen = document.getElementById(txtBedragCenten);
    var bedrag = euros.value + centen.value;
    var datum = document.getElementById(txtDatum);
    var tijd = document.getElementById(txtTijd);
    
    if (dbfTrimString(email.value).length == 0)
    {
        alert("Vul een e-mailadres in!");
        email.value = "";
        email.focus();
        return false;
    }
       
    if (dbfTrimString(email.value).length > 0)
    {
        if (dbfValidateEmail(email) == false)
        {
            return false;
        }
    }
    
    if (dbfTrimString(datum.value).length > 0)
    {
        if (dbfIsValidDateWeborder(datum) == false)
        {
            return false;
        }
    }
    
    if (dbfTrimString(tijd.value).length > 0)
    {
        if (dbfIsValidTime(tijd.value) == false)
        {
            tijd.focus();
            return false;
        }
    }
    
    if (bedrag <= 0)
    {
        alert("Bedrag mag niet nul zijn!");
        euros.focus();
        return false;
    }
        
    return true;
}

//Validaties voor het activeren van een profiel
function dbfValidateProfile(pnaam, ww, wwherhalen, email, nieuwsbrief)
{
    var profielnaam = document.getElementById(pnaam);
    var wachtwoord = document.getElementById(ww);
    var wachtwoordherhalen = document.getElementById(wwherhalen);
    var txtemail = document.getElementById(email);
    var cknieuwsbrief = document.getElementsByName(nieuwsbrief);
    
    if (dbfTrimString(profielnaam.value).length == 0)
    {
        alert("Vul een profielnaam in!");
        profielnaam.value = "";
        profielnaam.focus();
        return false;
    }
    
    if (dbfTrimString(wachtwoord.value).length == 0)
    {
        alert("Vul je wachtwoord in!");
        wachtwoord.value = "";
        wachtwoord.focus();
        return false;
    }
    
    if (dbfTrimString(wachtwoord.value).length < 5)
    {
        alert("Het wachtwoord moet minimaal 5 karakters lang zijn!");
        wachtwoord.value = "";
        wachtwoord.focus();
        return false;
    }
    
    if (dbfTrimString(wachtwoord.value).length > 0)
    {
        if (dbfValidatePassword(wachtwoord.value, "") == false)
        {
            alert("Het wachtwoord voldoet niet aan de gestelde eisen!");
            wachtwoord.value = "";
            wachtwoordherhalen.value = "";
            wachtwoord.focus();
            return false;
        }
    }
    
    if (dbfTrimString(wachtwoordherhalen.value).length == 0)
    {
        alert("Vul je wachtwoord nogmaals in!");
        wachtwoordherhalen.value = "";
        wachtwoordherhalen.focus();
        return false;
    }
    
    if (wachtwoord.value != wachtwoordherhalen.value)
    {
        alert("Wachtwoorden komen niet overeen!");
        wachtwoord.focus();
        return false;
    }
    
    if (dbfTrimString(txtemail.value).length == 0)
    {
        alert("Vul een e-mailadres in!");
        txtemail.value = "";
        txtemail.focus();
        return false;
    }
    
    if (dbfTrimString(txtemail.value).length > 0)
    {
        if (dbfValidateEmail(txtemail) == false)
        {
            return false;
        }
    }
    
    if ((cknieuwsbrief[0].checked == false) && (cknieuwsbrief[1].checked == false )) 
    {
        alert("U dient aan te geven of u de Cultuurkaart nieuwsbrief wilt ontvangen!"); 
        return false; 
    }
    
    return true;    
}

// Validaties voor het wijzigen van je wachtwoord
function dbfValidateWWWijzigen(ww, wwniew, wwnieuwbevestig) 
{
    var wachtwoord = document.getElementById(ww);
    var wachtwoordNieuw = document.getElementById(wwniew);
    var wachtwoordNieuwBevestig = document.getElementById(wwnieuwbevestig);

    if (dbfTrimString(wachtwoord.value).length == 0) {
        alert("Voer je huidige wachtwoord in!");
        wachtwoord.value = "";
        wachtwoord.focus();
        return false;
    }

    if (dbfTrimString(wachtwoordNieuw.value).length == 0) {
        alert("Voer een nieuw wachtwoord in!");
        wachtwoordNieuw.value = "";
        wachtwoordNieuw.focus();
        return false;
    }

    if (dbfTrimString(wachtwoordNieuw.value).length < 5) {
        alert("Het wachtwoord moet minimaal 5 karakters lang zijn!");
        wachtwoordNieuw.value = "";
        wachtwoordNieuw.focus();
        return false;
    }

    if (dbfTrimString(wachtwoordNieuw.value).length > 4) {
        if (dbfValidatePassword(wachtwoordNieuw.value, "") == false) {
            alert("Het wachtwoord voldoet niet aan de gestelde eisen!");
            wachtwoordNieuw.value = "";
            wachtwoordNieuwBevestig.value = "";
            wachtwoordNieuw.focus();
            return false;
        }
    }

    if (dbfTrimString(wachtwoordNieuwBevestig.value).length == 0) {
     
        alert("Voer je nieuwe wachtwoord nogmaals in!");
        wachtwoordNieuwBevestig.value = "";
        wachtwoordNieuwBevestig.focus();
        return false;
    }

    if (wachtwoordNieuw.value != wachtwoordNieuwBevestig.value) {
        alert("Je nieuwe wachtwoorden komen niet overeen!");
        wachtwoordNieuw.value = "";
        wachtwoordNieuwBevestig.value = ""; 
        wachtwoordNieuw.focus();
        return false;
    }

    return true;
}

//Validaties voor het terugboeken budget leerling
function dbfValidateTerugBoekenLLNG(chkBox)
{
    var chkBoxToCheck = document.getElementById(chkBox);
    if (!chkBoxToCheck.checked)
    {
        alert("U dient het vakje aan te vinken om het individuele tegoed van uw leerlingen over te boeken naar het collectieve account!");
        chkBoxToCheck.focus();
        return false;
    }
    
    var confirmMsgIE = "Weet u zeker dat u al het tegoed dat op de Cultuurkaart van de leerlingen van deze klas staat terug wilt boeken?\n\n\
    1. \tHeeft u al een bestemming voor het geld? Het klassikale tegoed dat voor schooljaar 2008/2009 \n\tbeschikbaar is zal op 30 september vervallen. Zorg er dus voor dat het voor die tijd uitgegeven is.\n\n\
    2. \tKlassikaal tegoed is korter 'houdbaar' dan individueel tegoed (tot 31 okt.). \n\tHet terugdraaien van deze overboeking kan alleen per leerling en kost dus meer tijd.\n\n\
    3. \tIs de leerling op de hoogte van deze overboeking? Zorg ervoor dat uw leerling niet onwetend \n\tmet een lege kaart bij een culturele instelling staat. Informeer hem dus over deze handeling.";
    
    var confirmMsgFF = "Weet u zeker dat u al het tegoed dat op de Cultuurkaart van de leerlingen van deze klas staat terug wilt boeken?\n\n\
    1. Heeft u al een bestemming voor het geld? Het klassikale tegoed dat voor \n\tschooljaar 2008/2009 beschikbaar is zal op 30 september vervallen. \n\tZorg er dus voor dat het voor die tijd uitgegeven is.\n\n\
    2. Klassikaal tegoed is korter 'houdbaar' dan individueel tegoed (tot 31 okt.). \n\tHet terugdraaien van deze overboeking kan alleen per leerling en kost dus meer tijd.\n\n\
    3. Is de leerling op de hoogte van deze overboeking? Zorg ervoor dat uw leerling niet onwetend \n\tmet een lege kaart bij een culturele instelling staat. Informeer hem dus over deze handeling.";
    
    var confirmMsg = "Weet u zeker dat u al het tegoed dat op de Cultuurkaart van de leerlingen van deze klas staat terug wilt boeken?\n\n\
    1. Heeft u al een bestemming voor het geld? Het klassikale tegoed dat voor schooljaar 2008/2009 beschikbaar is zal op 30 september vervallen. Zorg er dus voor dat het voor die tijd uitgegeven is.\n\n\
    2. Klassikaal tegoed is korter 'houdbaar' dan individueel tegoed (tot 31 okt.). Het terugdraaien van deze overboeking kan alleen per leerling en kost dus meer tijd.\n\n\
    3. Is de leerling op de hoogte van deze overboeking? Zorg ervoor dat uw leerling niet onwetend met een lege kaart bij een culturele instelling staat. Informeer hem dus over deze handeling.";    
    
//    //return confirm("Heeft u de leerlingen geïnformeerd over het terughalen van het geld op hun kaart?\nEn weet u het zeker dat u het tegoed van uw leerlingen naar het collectieve account wilt overboeken?");
//    if (navigator.appName == "Microsoft Internet Explorer")
//    {
//        return confirm(confirmMsgIE);
//    }
//    else
//    {
//        return confirm(confirmMsg);
//    }
    
    var agt = navigator.userAgent.toLowerCase();
    if (agt.indexOf("msie") != -1) 
    {
        return confirm(confirmMsgIE);
    }
    if (agt.indexOf("firefox") != -1)
    {
        return confirm(confirmMsgFF);
    }
    else
    {
        return confirm(confirmMsg);
    }    
}

//Validaties voor het bewerken van een transactie.
function dbfValidateTransactie(ddlist)
{
    var dropdownlist = document.getElementById(ddlist);
    if (dropdownlist.value == "-1")
    {
        alert("Selecteer een subsector!");
        dropdownlist.focus();
        return false;
    }
    return true;
}


//Validaties voor het bewerken van budgethouder.
function dbfValidateBugdethouder(ddlist)
{
    var dropdownlist = document.getElementById(ddlist);
    if (dropdownlist.value == "-1")
    {
        alert("Selecteer een budgethouder!");
        dropdownlist.focus();
        return false;
    }
    return true;
}


//Validaties voor de login.
function dbfCheckLoginFields(card, pass)
{
    var cardnr = document.getElementById(card);
    var passnr = document.getElementById(pass);
    var re8digit = /^\d{8}$/;
    
    if (dbfTrimString(cardnr.value).length == 0)
    {
        alert("Vul een kaartnummer in!");
        cardnr.value = "";
        cardnr.focus();
        return false;
    }
    
    if (cardnr.value.search(re8digit) == -1)
    {
        alert("Vul een geldig kaartnummer in! Een kaartnummer is 8 cijfers lang!");
        cardnr.focus();
        return false;
    }
    
    if (dbfTrimString(passnr.value).length == 0)
    {
        alert("Vul een wachtwoord in!");
        passnr.value = "";
        passnr.focus();
        return false;
    }
    return true;
}

function dbfIsNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : event.keyCode;        
    if (charCode > 31 && (charCode < 48 || charCode > 57))
    {
        return false;
    }
    return true;
}


//Validaties voor bedragen.
function dbfFillEmptyFieldEuro(fieldObj)
{
    var txtfield = document.getElementById(fieldObj);
    if (txtfield.value == '')
    {
        txtfield.value = "0";
        return false;
    }
    return true;
}

function dbfFillEmptyFieldCents(fieldObj)
{
    var txtfield = document.getElementById(fieldObj);
    if (txtfield.value == '')
    {
        txtfield.value = "00";
        return false;
    }
    return true;
}


function dbfCheckField(idActionFrom, idActionTo)
{
    if (document.getElementById(idActionFrom).checked) 
    {
        document.getElementById(idActionTo).disabled = false;
    }
    else
    {
        document.getElementById(idActionTo).disabled = true;
    }
}


//Weborder
function dbfValidateWeborderBevestigen(ddlKlassenActiviteiten, chkBoxAndereKlas, ddlKlassen)
{
    var klasactiviteit = document.getElementById(ddlKlassenActiviteiten);
    var checkboxandereklas = document.getElementById(chkBoxAndereKlas);
    
    if (!checkboxandereklas.checked)
    {
        if (klasactiviteit.value == "-1")
        {
            alert("Selecteer een klas!");
            klasactiviteit.focus();
            return false;
        }
    }
    
    if (checkboxandereklas.checked)
    {
        var andereklassenlijst = document.getElementById(ddlKlassen);
        if (andereklassenlijst.value == "-1")
        {
            alert("Selecteer een andere klas!");
            andereklassenlijst.focus();
            return false;
        }     
    }
}

function dbfConfirmCancelWeborder()
{
    return confirm("Weet u het zeker dat u dit weborder wilt annuleren?");
}

//Algemeen
function dbfTrimString(string) 
{
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	{
	    tstring += splitstring[i];
	}
	return tstring;
}

function dbfValidateEmail(obj)
{
    //obj = document.getElementById(txtEmail);
    
    msg = "Vul een geldig e-mailadres in!";
    //var emailStr = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)$/;
    //var emailStr = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
    // (tot 27-11-2008) var emailStr = /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
    //var emailStr = /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9][\w\.-]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
    var emailStr = /^[\w\.=-]+@[\w\.-]+\.[\w]{2,6}$/;
    
    if (emailStr.test(obj.value) == false)
    {
        alert(msg);
        obj.focus();
        obj.select();
        return false;
    }
    return true;
}

function dbfIsValidTime(timeStr) 
{
    // Checks if time is in HH:MM:SS format.

    //var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
    var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?)?$/;

    var matchArray = timeStr.match(timePat);
    if (matchArray == null) 
    {
        alert("Vul een geldige tijd in!");
        return false;
    }
    
    hours = matchArray[1];
    minutes = matchArray[2];

    if (hours < 0 || hours > 23) 
    {
        alert("U dient uren tussen 0 en 23 aan te geven!");
        return false;
    }
    if (minutes < 0 || minutes > 59) 
    {
        alert ("U dient minuten tussen 0 en 59 aan te geven!");
        return false;
    }
    return true;
}


function dbfIsValidDateWeborder(dateStr) 
{ 
    // regular expression to match required date format 
    //re = /^[0-3]?[0-9]\-[01]?[0-9]\-[12][90][0-9][0-9]$/;
    re = /^(\d{1,2})\-(\d{1,2})\-(\d{4})$/;
    if(dateStr.value != '') 
    { 
        if(regs = dateStr.value.match(re)) 
        { 
            if(regs[1] < 1 || regs[1] > 31) 
            { 
                alert("Vul een geldige dag in!"); 
                dateStr.focus(); 
                return false; 
            } 
            if(regs[2] < 1 || regs[2] > 12) 
            { 
                alert("Vul een geldige maand in!"); 
                dateStr.focus(); 
                return false; 
            } 
//            if(regs[3] < 2008 || regs[3] > ((new Date()).getFullYear() + 1)) 
//            { 
//                alert("Vul een geldig jaartal in!"); 
//                dateStr.focus();
//                return false; 
//            } 
        } 
        else 
        { 
            alert("Vul een geldige datum in!"); 
            dateStr.focus(); 
            return false; 
        } 
    }
    return true;
}

function dbfIsValidDate(dateStr) 
{ 
    // regular expression to match required date format 
    //re = /^[0-3]?[0-9]\-[01]?[0-9]\-[12][90][0-9][0-9]$/;
    re = /^(\d{1,2})\-(\d{1,2})\-(\d{4})$/;
    if(dateStr.value != '') 
    { 
        if(regs = dateStr.value.match(re)) 
        { 
            if(regs[1] < 1 || regs[1] > 31) 
            { 
                alert("Vul een geldige dag in!"); 
                dateStr.focus(); 
                return false; 
            } 
            if(regs[2] < 1 || regs[2] > 12) 
            { 
                alert("Vul een geldige maand in!"); 
                dateStr.focus(); 
                return false; 
            } 
            if(regs[3] > (new Date().getFullYear())) 
            { 
                alert("Vul een geldig jaartal in!"); 
                dateStr.focus();
                return false; 
            } 
        } 
        else 
        { 
            alert("Vul een geldige datum in!"); 
            dateStr.focus(); 
            return false; 
        } 
    }
    return true;
}


//function IsNumeric(strString) 
//{ 
//    var strValidChars = "0123456789"; 
//    var strChar; 
//    var blnResult = true; 
//    //var strSequence = document.frmQuestionDetail.txtSequence.value; 

//    //test strString consists of valid characters listed above 

//    if (strString.length == 0) 
//        return false; 
//    for (i = 0; i < strString.length && blnResult == true; i++) 
//    { 
//        strChar = strString.charAt(i); 
//        if (strValidChars.indexOf(strChar) == -1) 
//        { 
//            blnResult = false; 
//        } 
//     } 
//return blnResult; 
//}


function dbfHidediv(pass) 
{
    var divs = document.getElementsByTagName('div');
    for(i=0;i<divs.length;i++)
    {
        if(divs[i].id.match(pass))
        {//if they are 'see' divs
            if (document.getElementById) // DOM3 = IE5, NS6
            divs[i].style.visibility="hidden";// show/hide
        else
            if (document.layers) // Netscape 4
            document.layers[divs[i]].display = 'hidden';
            else // IE 4
            document.all.hideshow.divs[i].visibility = 'hidden';
        }
    }
}

function dbfShowdiv(pass) 
{
    var divs = document.getElementsByTagName('div');
    for(i=0;i<divs.length;i++)
    {
        if(divs[i].id.match(pass))
        {
            if (document.getElementById)
            divs[i].style.visibility="visible";
        else
            if (document.layers) // Netscape 4
            document.layers[divs[i]].display = 'visible';
            else // IE 4
            document.all.hideshow.divs[i].visibility = 'visible';
        }
    }
}


function dbfValidatePassword (pw, options) {
	// default options (allows any password)
	var o = {
		lower:    1,
		upper:    1,
		alpha:    0, /* lower + upper */
		numeric:  1,
		special:  1,
		length:   [0, Infinity],
		custom:   [ /* regexes and/or functions */ ],
		badWords: [],
		badSequenceLength: 0,
		noQwertySequences: false,
		noSequential:      false
	};

	for (var property in options)
		o[property] = options[property];

	var	re = {
			lower:   /[a-z]/g,
			upper:   /[A-Z]/g,
			alpha:   /[A-Z]/gi,
			numeric: /[0-9]/g,
			special: /[\W_]/g
		},
		rule, i;

	// enforce min/max length
	if (pw.length < o.length[0] || pw.length > o.length[1])
		return false;

	// enforce lower/upper/alpha/numeric/special rules
	for (rule in re) {
		if ((pw.match(re[rule]) || []).length < o[rule])
			return false;
	}

	// enforce word ban (case insensitive)
	for (i = 0; i < o.badWords.length; i++) {
		if (pw.toLowerCase().indexOf(o.badWords[i].toLowerCase()) > -1)
			return false;
	}

	// enforce the no sequential, identical characters rule
	if (o.noSequential && /([\S\s])\1/.test(pw))
		return false;

	// enforce alphanumeric/qwerty sequence ban rules
	if (o.badSequenceLength) {
		var	lower   = "abcdefghijklmnopqrstuvwxyz",
			upper   = lower.toUpperCase(),
			numbers = "0123456789",
			qwerty  = "qwertyuiopasdfghjklzxcvbnm",
			start   = o.badSequenceLength - 1,
			seq     = "_" + pw.slice(0, start);
		for (i = start; i < pw.length; i++) {
			seq = seq.slice(1) + pw.charAt(i);
			if (
				lower.indexOf(seq)   > -1 ||
				upper.indexOf(seq)   > -1 ||
				numbers.indexOf(seq) > -1 ||
				(o.noQwertySequences && qwerty.indexOf(seq) > -1)
			) {
				return false;
			}
		}
	}

	// enforce custom regex/function rules
	for (i = 0; i < o.custom.length; i++) {
		rule = o.custom[i];
		if (rule instanceof RegExp) {
			if (!rule.test(pw))
				return false;
		} else if (rule instanceof Function) {
			if (!rule(pw))
				return false;
		}
	}

	// great success!
	return true;
}




//Acceptanten deel
function dbfDe(id)
{
    return document.getElementById(id);
}

function dbfCheckAcceptantCriteria(criteria, criteriagroepen, criteriagroepen8, voorwaarden)
{
    var criteriaList = document.getElementById(criteria).getElementsByTagName('input');
    var criteriaGroepList = document.getElementById(criteriagroepen).getElementsByTagName('input');
    var criteriaGroep8List = document.getElementById(criteriagroepen8).getElementsByTagName('input');
    var voorwaardenList = document.getElementsByName(voorwaarden);
    
    var criteriaResult = false;
    var criteriaGroepResult = false;
    var criteriaGroep8Result = false;
    
    for (var i = 0; i < criteriaList.length; i++)
    {
        var option = criteriaList[i];
        if (option.type == "radio")
        {
            if (option.checked)
            {
                criteriaResult = true;
            }
        }
    }
    
    if (!criteriaGroep8List[0].checked)
    {
        for (var x = 0; x < criteriaGroepList.length; x++)
        {
            var opt = criteriaGroepList[x];
            if (opt.type == "checkbox")
            {
                if (opt.checked)
                {
                    criteriaGroepResult = true;
                }
            }
        }
    }
    
    if (criteriaResult == false)
    {
        alert("Selecteer of uw organisatie een actief jongerenbeleid heeft!");
        return false;
    }
    
    if ((!criteriaGroep8List[0].checked) && (criteriaGroepResult == false))
    {
        alert("U dient aan minimaal 1 door de Minister van OCW gestelde criteria te voldoen!");
        return false;
    }
    
    if ((voorwaardenList[0].checked == false) && (voorwaardenList[1].checked == false )) 
    {
        alert("U dient akkoord te gaan met het reglement!"); 
        return false; 
    }
    
    return true;
}

function dbfValidateAdresGegevens(
    txtRoepNaam, txtNaam, txtPC, txtHuisnr, txtStraat, txtPlaats, ddlProv, txtTel, txtEmail, locatieKeuze, 
    bezoekAdres, txtBezoekPC, txtBezoekHuisnr, txtBezoekStraat, txtBezoekPlaats, ddlBezoekProv, txtBezoekEmail, txtBezoekTel, txtAantalPins, 
    postadres, txtPostPC, txtPostHuisnr, txtPostStraat, txtPostPlaats)
{
    var roepnaam = document.getElementById(txtRoepNaam);
    var naam = document.getElementById(txtNaam);
    var pc = document.getElementById(txtPC);
    var huisnr = document.getElementById(txtHuisnr);
    var straat = document.getElementById(txtStraat);
    var plaats = document.getElementById(txtPlaats);
    var provincie = document.getElementById(ddlProv);
    var tel = document.getElementById(txtTel);
    var email = document.getElementById(txtEmail);
    
    var locatie = document.getElementById(locatieKeuze).getElementsByTagName('input');
    var bezoekadresaanwezig = document.getElementById(bezoekAdres);
    var postadresaanwezig = document.getElementById(postadres);

    if (dbfTrimString(roepnaam.value).length == 0) {
        alert("Vul de roepnaam van de instelling in!");
        roepnaam.value = "";
        roepnaam.focus();
        return false;
    }
    if (dbfTrimString(naam.value).length == 0)
    {
        alert("Vul de handelsnaam van de instelling in!");
        naam.value = "";
        naam.focus();
        return false;
    }
    if (dbfTrimString(pc.value).length == 0)
    {
        alert("Vul een postcode in!");
        pc.value = "";
        pc.focus();
        return false;
    }
    if (dbfTrimString(huisnr.value).length == 0)
    {
        alert("Vul een huisnummer in!");
        huisnr.value = "";
        huisnr.focus();
        return false;
    }
    if (dbfTrimString(straat.value).length == 0)
    {
        alert("Vul een straatnaam in!");
        straat.value = "";
        straat.focus();
        return false;
    }
    if (dbfTrimString(plaats.value).length == 0)
    {
        alert("Vul een plaatsnaam in!");
        plaats.value = "";
        plaats.focus();
        return false;
    }
    if (provincie.value == "-1") 
    {
        alert("Selecteer een provincie!");
        provincie.focus();
        return false;
    }    
    if (dbfTrimString(tel.value).length == 0)
    {
        alert("Vul een telefoonnummer in!");
        tel.value = "";
        tel.focus();
        return false;
    }
    if (dbfTrimString(email.value).length == 0)
    {
        alert("Vul een e-mailadres in!");
        email.value = "";
        email.focus();
        return false;
    }
    if (dbfTrimString(email.value).length > 0)
    {
        if (dbfValidateEmail(email) == false)
        {
            return false;
        }
    }
    
    // bezoekadres
    if (bezoekadresaanwezig.checked)
    {
        var bpc = document.getElementById(txtBezoekPC);
        var bhuisnr = document.getElementById(txtBezoekHuisnr);
        var bstraat = document.getElementById(txtBezoekStraat);
        var bplaats = document.getElementById(txtBezoekPlaats);
        var bprovincie = document.getElementById(ddlBezoekProv);
        var bemail = document.getElementById(txtBezoekEmail);
        var btel = document.getElementById(txtBezoekTel);
        var bpinterminals = document.getElementById(txtAantalPins);
    
        if (dbfTrimString(bpc.value).length == 0)
        {
            alert("Vul een postcode voor het bezoekadres in!");
            bpc.value = "";
            bpc.focus();
            return false;
        }
        if (dbfTrimString(bhuisnr.value).length == 0)
        {
            alert("Vul een huisnummer voor het bezoekadres in!");
            bhuisnr.value = "";
            bhuisnr.focus();
            return false;
        }
        if (dbfTrimString(bstraat.value).length == 0)
        {
            alert("Vul een straatnaam voor het bezoekadres in!");
            bstraat.value = "";
            bstraat.focus();
            return false;
        }
        if (dbfTrimString(bplaats.value).length == 0)
        {
            alert("Vul een plaatsnaam voor het bezoekadres in!");
            bplaats.value = "";
            bplaats.focus();
            return false;
        }
        if (bprovincie.value == "-1") 
        {
            alert("Selecteer een provincie!");
            bprovincie.focus();
            return false;
        } 
        if (dbfTrimString(bemail.value).length == 0)
        {
            alert("Vul een e-mailadres in!");
            bemail.value = "";
            bemail.focus();
            return false;
        }
        if (dbfTrimString(bemail.value).length > 0)
        {
            if (dbfValidateEmail(bemail) == false)
            {
                return false;
            }
        }
        if (dbfTrimString(btel.value).length == 0)
        {
            alert("Vul een telefoonnummer voor het bezoekadres in!");
            btel.value = "";
            btel.focus();
            return false;
        }
        if (dbfTrimString(bpinterminals.value).length == 0)
        {
            alert("Vul het aantal pinterminals in!");
            bpinterminals.value = "";
            bpinterminals.focus();
            return false;
        }
    }
    
    if ((locatie[0].checked == false) && (locatie[1].checked == false))
    {
        alert("U dient aan te geven waar uw organisatie actief is!");
        return false;
    }
    
    // postadres
    if (postadresaanwezig.checked)
    {
        var ppc = document.getElementById(txtPostPC);
        var phuisnr = document.getElementById(txtPostHuisnr);
        var pstraat = document.getElementById(txtPostStraat);
        var pplaats = document.getElementById(txtPostPlaats);
    
        if (dbfTrimString(ppc.value).length == 0)
        {
            alert("Vul een postcode voor het postadres in!");
            ppc.value = "";
            ppc.focus();
            return false;
        }
        if (dbfTrimString(phuisnr.value).length == 0)
        {
            alert("Vul een huisnummer voor het postadres in!");
            phuisnr.value = "";
            phuisnr.focus();
            return false;
        }
        if (dbfTrimString(pstraat.value).length == 0)
        {
            alert("Vul een straatnaam voor het postadres in!");
            pstraat.value = "";
            pstraat.focus();
            return false;
        }
        if (dbfTrimString(pplaats.value).length == 0)
        {
            alert("Vul een plaatsnaam voor het postadres in!");
            pplaats.value = "";
            pplaats.focus();
            return false;
        }
    }
    
    return true;    
}

function dbfValidateContactGegevens(
    txtDirVoorletters, txtDirAchternaam, txtDirEmail, dirGeslachtKeuze, 
    txtMarVoorletters, txtMarAchternaam, txtMarEmail, marGeslachtKeuze, 
    txtEduVoorletters, txtEduAchternaam, txtEduEmail, eduGeslachtKeuze, 
    txtCKVoorletters, txtCKAchternaam, ckGeslachtKeuze, txtCKGebDatum, txtCKEmail)
{
    var dirvoorletters = document.getElementById(txtDirVoorletters);
    var dirachternaam = document.getElementById(txtDirAchternaam);
    var diremail = document.getElementById(txtDirEmail);
    var dirgeslacht = document.getElementById(dirGeslachtKeuze).getElementsByTagName('input');
    
    var marvoorletters = document.getElementById(txtMarVoorletters);
    var marachternaam = document.getElementById(txtMarAchternaam);
    var maremail = document.getElementById(txtMarEmail);
    var margeslacht = document.getElementById(marGeslachtKeuze).getElementsByTagName('input');
    
    var eduvoorletters = document.getElementById(txtEduVoorletters);
    var eduachternaam = document.getElementById(txtEduAchternaam);
    var eduemail = document.getElementById(txtEduEmail);
    var edugeslacht = document.getElementById(eduGeslachtKeuze).getElementsByTagName('input');
    
    var ckvoorletters = document.getElementById(txtCKVoorletters);
    var ckachternaam = document.getElementById(txtCKAchternaam);
    var ckgeslacht = document.getElementById(ckGeslachtKeuze).getElementsByTagName('input');
    var ckgeboortedatum = document.getElementById(txtCKGebDatum);
    var ckemail = document.getElementById(txtCKEmail);
    
    // validate gegevens directeur
    if (dbfTrimString(dirvoorletters.value).length == 0)
    {
        alert("Vul de voorletter(s) van de directeur in!");
        dirvoorletters.value = "";
        dirvoorletters.focus();
        return false;
    }
    if (dbfTrimString(dirachternaam.value).length == 0)
    {
        alert("Vul de achternaam van de directeur in!");
        dirachternaam.value = "";
        dirachternaam.focus();
        return false;
    }
    if (dbfTrimString(diremail.value).length == 0)
    {
        alert("Vul het e-mailadres van de directeur in!");
        diremail.value = "";
        diremail.focus();
        return false;
    }
    if (dbfTrimString(diremail.value).length > 0)
    {
        if (dbfValidateEmail(diremail) == false)
        {
            return false;
        }
    }
    if ((dirgeslacht[0].checked == false) && (dirgeslacht[1].checked == false))
    {
        alert("Selecteer het geslacht van de directeur!");
        return false;
    }
    
    // validate gegevens contact persoon marketing
    if (dbfTrimString(marvoorletters.value).length == 0)
    {
        alert("Vul de voorletter(s) van de contactpersoon marketing in!");
        marvoorletters.value = "";
        marvoorletters.focus();
        return false;
    }
    if (dbfTrimString(marachternaam.value).length == 0)
    {
        alert("Vul de achternaam van de contactpersoon marketing in!");
        marachternaam.value = "";
        marachternaam.focus();
        return false;
    }
    if (dbfTrimString(maremail.value).length == 0)
    {
        alert("Vul het e-mailadres van de contactpersoon marketing in!");
        maremail.value = "";
        maremail.focus();
        return false;
    }
    if (dbfTrimString(maremail.value).length > 0)
    {
        if (dbfValidateEmail(maremail) == false)
        {
            return false;
        }
    }
    if ((margeslacht[0].checked == false) && (margeslacht[1].checked == false))
    {
        alert("Selecteer het geslacht van de contactpersoon marketing!");
        return false;
    }
    
    // validate gegevens contact persoon educatie
    if (dbfTrimString(eduvoorletters.value).length == 0)
    {
        alert("Vul de voorletter(s) van de contactpersoon educatie in!");
        eduvoorletters.value = "";
        eduvoorletters.focus();
        return false;
    }
    if (dbfTrimString(eduachternaam.value).length == 0)
    {
        alert("Vul de achternaam van de contactpersoon educatie in!");
        eduachternaam.value = "";
        eduachternaam.focus();
        return false;
    }
    if (dbfTrimString(eduemail.value).length == 0)
    {
        alert("Vul het e-mailadres van de contactpersoon educatie in!");
        eduemail.value = "";
        eduemail.focus();
        return false;
    }
    if (dbfTrimString(eduemail.value).length > 0)
    {
        if (dbfValidateEmail(eduemail) == false)
        {
            return false;
        }
    }
    if ((edugeslacht[0].checked == false) && (edugeslacht[1].checked == false))
    {
        alert("Selecteer het geslacht van de contactpersoon educatie!");
        return false;
    }
    
    // validate gegevens contact persoon cultuurkaart
    if (dbfTrimString(ckvoorletters.value).length == 0)
    {
        alert("Vul de voorletter(s) van de contactpersoon cultuurkaart in!");
        ckvoorletters.value = "";
        ckvoorletters.focus();
        return false;
    }
    if (dbfTrimString(ckachternaam.value).length == 0)
    {
        alert("Vul de achternaam van de contactpersoon cultuurkaart in!");
        ckachternaam.value = "";
        ckachternaam.focus();
        return false;
    }
    if (dbfTrimString(ckgeboortedatum.value).length == 0)
    {
        alert("Vul een geboortedatum van de contactpersoon cultuurkaart in!");
        ckgeboortedatum.value = "";
        ckgeboortedatum.focus();
        return false;
    }
    if ((ckgeslacht[0].checked == false) && (ckgeslacht[1].checked == false))
    {
        alert("Selecteer het geslacht van de contactpersoon cultuurkaart!");
        return false;
    }
    if (dbfTrimString(ckgeboortedatum.value).length > 0)
    {
        if (dbfIsValidDate(ckgeboortedatum) == false)
        {
            return false;
        }
    }
    if (dbfTrimString(ckemail.value).length == 0)
    {
        alert("Vul het e-mailadres van de contactpersoon cultuurkaart in!");
        ckemail.value = "";
        ckemail.focus();
        return false;
    }
    if (dbfTrimString(ckemail.value).length > 0)
    {
        if (dbfValidateEmail(ckemail) == false)
        {
            return false;
        }
    }
    
    return true;
}


function dbfValidateNeemContactOp(txtNaam, txtTel, txtEmail)
{
    var contactnaam = document.getElementById(txtNaam);
    var contacttel = document.getElementById(txtTel);
    var contactemail = document.getElementById(txtEmail);
    
    if (dbfTrimString(contactnaam.value).length == 0)
    {
        alert("Vul de naam van de contactpersoon in!");
        contactnaam.value = "";
        contactnaam.focus();
        return false;
    }
    if (dbfTrimString(contacttel.value).length == 0)
    {
        alert("Vul het telefoonnummer van de contactpersoon in!");
        contacttel.value = "";
        contacttel.focus();
        return false;
    }
    if (dbfTrimString(contactemail.value).length == 0)
    {
        alert("Vul het e-mailadres van de contactpersoon in!");
        contactemail.value = "";
        contactemail.focus();
        return false;
    }
    if (dbfTrimString(contactemail.value).length > 0)
    {
        if (dbfValidateEmail(contactemail) == false)
        {
            return false;
        }
    }
}


function dbfValidateEmailAddress(txtEmail)
{
    var email = document.getElementById(txtEmail);
    
    if (dbfTrimString(email.value).length == 0)
    {
        alert("Vul een e-mailadres in!");
        email.value = "";
        email.focus();
        return false;
    }
    if (dbfTrimString(email.value).length > 0)
    {
        if (dbfValidateEmail(email) == false)
        {
            return false;
        }
    }
}

// Invoer beperken
function dbfCount(text, long) 
{
    var maxlength = new Number(long);
    if (text.value.length > maxlength) 
    {
        text.value = text.value.substring(0, maxlength);
        //alert(" Only " + long + " chars");
    }
}





