﻿function ValideerVerplichtVeld(object, objFormulierNaam) {
    $('ul.error[title=' + objFormulierNaam + '] #' + $(object).attr('labelname').replace(/\s/g, "-")).remove();

    if ($(object).attr('Required') && $(object).val().length == 0) {
        $('ul.error[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "-") + '"></li>').html('Field "' + $(object).attr('labelname') + '" is required.'));
        return false;
    }

    return true;
}

function ValideerExpressieVeld(object, objFormulierNaam) {
    $('ul.error[title=' + objFormulierNaam + '] #' + $(object).attr('labelname').replace(/\s/g, "")).remove();

    var $expression = $(object).attr('Expression');
    var $regex = new RegExp($expression);

    if (!$regex.test($(object).val())) {
        $('ul.error[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Field "' + $(object).attr('labelname') + '" is incorrect.'));
        return false;
    }

    return true;
}

function ValideerFormulier(objFormulierNaam) {
    var $formulier = $('div[title=' + objFormulierNaam + ']');
    $("ul.error[title='" + $formulier + "']").detach();

    var $valide = true;
    var $veldValide = true;

    $('div[title=' + objFormulierNaam + '] :input').each(function () {
        if ($(this).attr('Required')) {
            $veldValide = ValideerVerplichtVeld($(this), objFormulierNaam);
        }

        if ($(this).attr('Expression')) {
            $veldValide = ValideerExpressieVeld($(this), objFormulierNaam);
        }

        if (!$veldValide) {
            $valide = false;
        }
    });

    if (!$valide) {
        $("ul.error").addClass('fout');
    }

    return $valide;
}

$("a[Form]").click(function (event) {
    $("ul.error").empty();
    return ValideerFormulier($(this).attr('Form'));
});
