﻿function ValideerVerplichtVeld(object, objFormulierNaam)
{
    $('ul.FormulierMeldingen[title=' + objFormulierNaam + '] #' + $(object).attr('labelname').replace(/\s/g, "-")).remove();
        
    if($(object).attr('Required') && $(object).val().length == 0)
    {
        $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "-") + '"></li>').html('Veld "' + $(object).attr('labelname') + '" is verplicht.'));
        return false;
    }
    
    return true;
}

function ValideerVergelijkingsVeld(object, objFormulierNaam)
{
    $('ul.FormulierMeldingen[title="' + objFormulierNaam + '"] #' + $(object).attr('labelname').replace(/\s/g, "")).remove();
        
    var $huidigeInput = $(object);
    var $inputOmTeVergelijken = $(object).attr('CompareWith');
    var $textAndereControl = $('[id$="' + $inputOmTeVergelijken + '"]').parent().text();
    if($(object).val() != $("[id$='" + $inputOmTeVergelijken + "']").val())
    {
        $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Veld "' + $(object).attr('labelname') + '" is niet gelijk aan veld "' + $textAndereControl + '".'));
        return false;
    }
    
    return true;
}


function ValideerExpressieVeld(object, objFormulierNaam)
{
    $('ul.FormulierMeldingen[title=' + objFormulierNaam + '] #' + $(object).attr('labelname').replace(/\s/g, "")).remove();
        
    var $expression = $(object).attr('Expression');
    var $regex = new RegExp($expression);
    
    if(!$regex.test($(object).val()))
    {
        if($(object).attr('DataType') == "Score" && $(object).val().length > 0)
        {
            $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Voorspelling "' + $(object).attr('labelname') + '" is ongeldig.'));
            return false;
        }
        else if($(object).attr('DataType') == "Score" && $(object).val().length == 0)
        {
            return true;
        }
        
        if($(object).attr('DataType') == "Integer" && $(object).attr('MaximumAantalVerdubbelaars'))
        {
            var $teveel = parseInt($(object).val()) - parseInt($(object).attr('MaximumAantalVerdubbelaars'));

            if($teveel == 1)
            {
                $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Je hebt deze speelronde ' + $teveel + ' verdubbelaar teveel ingezet.'));
                return false;
            }
            else if($teveel > 1)
            {
                $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Je hebt deze speelronde ' + $teveel + ' verdubbelaars teveel ingezet.'));
                return false;
            }
            else
            {
                return true;
            }
        }
        
        if($(object).val().length > 0 && $(object).attr('DataType') == "Integer" && $(object).attr('MaximumAantalVerdubbelaarsPerSpeler'))
        {
            var $teveel = parseInt($(object).val()) - parseInt($(object).attr('MaximumAantalVerdubbelaarsPerSpeler'));

            if($teveel == 1)
            {
                $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Je hebt ' + $teveel + ' verdubbelaar teveel ingezet op "' + $(object).attr('labelname') + '".'));
                return false;
            }
            else if($teveel > 1)
            {
                $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Je hebt ' + $teveel + ' verdubbelaars teveel ingezet op "' + $(object).attr('labelname') + '".'));
                return false;
            }
            else
            {
                return true;
            }
        }
        else if($(object).val().length == 0 && $(object).attr('DataType') == "Integer" && $(object).attr('MaximumAantalVerdubbelaarsPerSpeler'))
        {
            return true;
        }
        
        if($(object).val().length > 0 && $(object).attr('DataType') == "Integer" && $(object).attr('MaximumAantalVerdubbelaars'))
        {
            var $teveel = parseInt($(object).val()) - parseInt($(object).attr('MaximumAantalVerdubbelaars'));

            if($teveel == 1)
            {
                $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Je hebt deze speelronde ' + $teveel + ' verdubbelaar teveel ingezet.'));
                return false;
            }
            else if($teveel > 1)
            {
                $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Je hebt deze speelronde ' + $teveel + ' verdubbelaars teveel ingezet.'));
                return false;
            }
            else
            {
                return true;
            }
        }
        else
        {
            $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Veld "' + $(object).attr('labelname') + '" is ongeldig.'));
        }
        
        return false;
    }
    
    return true;
}

function ValideerDatumVeld(object, objFormulierNaam)
{
    $('ul.FormulierMeldingen[title=' + objFormulierNaam + '] #' + $(object).attr('labelname').replace(/\s/g, "")).remove();
    
    if($(object).attr('MaxDate'))
    {
        var $maximumDatum = new Date($(object).attr('MaxDate').substr(6,4), $(object).attr('MaxDate').substr(3,2), $(object).attr('MaxDate').substr(0,2));        
        var $ingevoerdeDatum = new Date($(object).val().substr(6,4), $(object).val().substr(3,2), $(object).val().substr(0,2));
        
        if($ingevoerdeDatum > $maximumDatum)
        {
            $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Veld "' + $(object).attr('labelname') + '" mag niet later zijn dan "' + $(object).attr('MaxDate')  + '".'));
            return false;
        }
    }
    
    if($(object).attr('MinDate'))
    {
        var $minimumDatum = new Date($(object).attr('MinDate').substr(6,4), $(object).attr('MinDate').substr(3,2) - "1", $(object).attr('MinDate').substr(0,2));        
        var $ingevoerdeDatum = new Date($(object).val().substr(6,4), $(object).val().substr(3,2) - "1", $(object).val().substr(0,2));
        
        if($ingevoerdeDatum < $minimumDatum)
        {
            $('ul.FormulierMeldingen[title=' + objFormulierNaam + ']').append($('<li id="' + $(object).attr('labelname').replace(/\s/g, "") + '"></li>').html('Veld "' + $(object).attr('labelname') + '" mag niet eerder zijn dan "' + $(object).attr('MinDate')  + '".'));
            return false;
        }
    }
    
    return true;
}

function ValideerFormulier(objFormulierNaam)
{
    var $formulier = $('ul[title=' + objFormulierNaam + ']');
    $("ul.FormulierMeldingen[title='" + $formulier + "']").detach();
   
    
    var $valide = true;
    var $veldValide = true;
    
    $('ul[formid=' + objFormulierNaam + '] :input').each(function()
    {
        if($(this).attr('Required'))
        {
            $veldValide = ValideerVerplichtVeld($(this), objFormulierNaam);
        }
        
        if($(this).attr('Expression'))
        {
            $veldValide = ValideerExpressieVeld($(this), objFormulierNaam);
        }
        
        if($(this).attr('CompareWith'))
        {
            $veldValide = ValideerVergelijkingsVeld($(this), objFormulierNaam);
        }
        
        if(($(this).attr('MinDate') || $(this).attr('MaxDate')) && $veldValide)
        {
            $veldValide = ValideerDatumVeld($(this), objFormulierNaam);
        }
        
        if(!$veldValide)
        {
            $valide = false;
        }
    });
    
    return $valide;
}

$(document).ready(function()
{
    $("a[Form]").click(function(event)
    {
        $("ul.FormulierVerzonden").empty().removeClass('FormulierVerzonden').addClass('FormulierMeldingen');
        return ValideerFormulier($(this).attr('Form'));
    });
    
    $("input").keypress(function(e)
    {
        if(e.which == 13)
        {            
            var form = $(this).parents(".Formulier").attr('formid');
            
            if(form == undefined)
            {
                form = $(this).parents(".Inloggen").attr('formid');
            }
            
            if(form == undefined)
            {
                form = $(this).parents(".Wedstrijd").attr('formid');
            }
            
            if(form != undefined)
            {
                var button = $("a[Form='" + form + "']");
                
                var isValid = ValideerFormulier(button.attr('form'));
                
                if(isValid)
                {
                    __doPostBack(button.attr('id').replace(/\_/g, "$"), '');
                }
                else
                {
                    return false;
                }
            }
        }
    });
    
//    $('input').keypress(function(e)
//    {
//        if(e.which == 13)
//        {
//            var form = $(this).parents(".Formulier").attr('title');
//            
//            if(form != undefined)
//            {
//                var button = $('a[form=' + form + ']');
//                
//                var isValid = ValideerFormulier(button.attr('form'));
//                
//                if(isValid)
//                {
//                    __doPostBack(button.attr('id').replace(/_/g, '$'), '', 0);
//                }
//            }
//        }
//    });
});
