$(document).ready(function() {
    $("form#profile input#u_password, form#profile input#u_password_repeat").each(function() {
        if($("input#u_lastname").val() != '') {
            $("form#profile input#u_password, form#profile input#u_password_repeat").val('******');
        }
    });

    //Selecteert de eerste optie van een groep radiobuttons.
    $('form input:radio:first').attr('checked','checked');

    $('form#profile input:radio:first').removeAttr('checked');
    $('form#selectspecialism input:radio:first').removeAttr('checked');

    //Selecteert de eerste optie van een groep radiobuttons.
    $('form#informationform input[name="gender"]:first').attr('checked','checked');

    //Valideert de formuliervelden.
    $('div#banner_right form :input, div#content form :input').bind('paste blur', function () {

        // Negeert het orderformulier in de "landing_sub"
        if ($('#content_sub #orderform').is(':visible')) {
            return false;
        }

        var ajaxReturn = 'true';
        var text;

        if ($(this).hasClass('NotEmpty')) {
            ajaxReturn = $(this).ajaxValidation('notempty');
            text       = 'Dit veld is verplicht';
        }
        if ($(this).hasClass('AccessCode') && ajaxReturn == "true") {
            ajaxReturn = $(this).ajaxValidation('accesscode');
            text       = 'Code niet correct';
        }
        if ($(this).hasClass('MX') && ajaxReturn == "true") {
            ajaxReturn = $(this).ajaxValidation('mx');
            text       = 'Vul een geldig e-mailadres in';
        }
        if ($(this).hasClass('CustomUniqueUser') && ajaxReturn == "true") {
            ajaxReturn = $(this).ajaxValidation('customuniqueuser');
            text       = 'Uw gebruikersnaam bestaat al';
        }
        if ($(this).hasClass('BigNummer') && ajaxReturn == "true") {
            var match   = false;
            if ($('form#loginbig').is(':visible')) {
                match   = $('input#userId').val();
            }
            if ($('form#registerform').is(':visible')) {
                match   = $('input#u_infix').val() +','+ $('input#u_lastname').val();
            }

            if (match) {
                ajaxReturn = $(this).ajaxValidation('bignummer', match);
            } else {
                ajaxReturn = false;
            }

            var name;
            if ($('input#u_infix').val() != '') {
                name = $('input#u_infix').val()+' '+$('input#u_lastname').val();
            } else {
                name = $('input#u_lastname').val();
            }

            text = 'Uw naam ('+name+') en BIG nummer corresponderen niet met de gegevens in het BIG register. Vul het juiste BIG nummer in! <br/><br/> \n\
                    Heeft u hulp nodig? Stuur ons een <a href="/support/">e-mail</a> en wij nemen zo spoedig mogelijk contact met u op.';
                        
        }
        if ($(this).hasClass('StringLength') && ajaxReturn == "true") {
            ajaxReturn = $(this).ajaxValidation('stringlength', $(this).attr('minLength'));
            text       = 'Uw wachtwoord moet minimaal '+$(this).attr('minLength')+' tekens bevatten';
        }
        if ($(this).hasClass('Identical') && ajaxReturn == "true") {
            ajaxReturn = $(this).ajaxValidation('identical',$('input[id="'+$(this).attr('same')+'"]').val());
            text       = 'Uw wachtwoord is onjuist';
        }

        //Verwijdert de error.
        //$(this).siblings('.errors').remove();
        var loc = $(this).parent().parent().parent().parent().parent().attr('id');
        if(loc == 'banner_right' || loc == 'content_banner') {
            $('label[for=' + $(this).attr('id') + '] span').remove();
            $('label[for=' + $(this).attr('id') + ']').css('color','white');
            
            if (ajaxReturn == 'false') {
                //Voegt een error toe aan het label van het veld.
                var label = $('label[for=' + $(this).attr('id') + ']');
                label.animate({
                    color: "#ffcc00"
                }, "slow");
                label.append('<span class="error"> ('+text+') </span>');
                var error = $('label[for=' + $(this).attr('id') + '] span.error').css('color', 'white');
                error.animate({
                    color: "#ffcc00"
                }, "slow");
            }


        } else {
            $('label[for=' + $(this).attr('id') + '] span').remove();
            $('label[for=' + $(this).attr('id') + ']').css('color','black');

            if (ajaxReturn == 'false') {
                //Voegt een error toe aan het label van het veld.
                var label = $('label[for=' + $(this).attr('id') + ']');
                label.animate({
                    color: "red"
                }, "slow");
                label.append('<span class="error"> ('+text+') </span>');
                var error = $('label[for=' + $(this).attr('id') + '] span.error').css('color', 'black');
                error.animate({
                    color: "red"
                }, "slow");
            }
        }
        
    });
    $.fn.ajaxValidation = function(classname, match) {
        var ajaxReturn = $.ajax({
            url:      '/validation/ajax' + classname,
            type:     'POST',
            data:     ({value: $(this).val(), match: match}),
            dataType: 'html',
            async:    false
         }).responseText;
        return ajaxReturn;
    }

    $("div#banner_right form, div#content form").bind('submit', function () {
        $('div#banner_right form :input, div#content form :input').each(function() {
            $(this).blur();
        });
        
        if ($('span.error').length == 1) {
            var redirect = $.ajax({
                url:      '/validation/ajaxbigtrycheck',
                type:     'POST',
                data:     ({gender: $('input[name=u_sex]:checked').val(), infix: $('input#u_infix').val(), lastname: $('input#u_lastname').val(), big: $('input#u_big').val()}),
                dataType: 'html',
                async:    false
            }).responseText;

            if (redirect == "true") {
                return true;
            }
        }

        if($('span.error').length > 0) {
            return false;
        } else {
            return true;
        }
    });

    $('form legend').each(function () {
        $(this).html('<span>'+$(this).html()+'</span>');
    });

    //Uitzonderingen voor de campagne pagina!
    $('form#campaignForm input[name="u_specialism"]:first').attr('checked','checked');
    
    $('form#campaignForm #submit').bind('click', function () {
        $('form#campaignForm :input').each(function() {
            $(this).blur();
        });
        if($('span.error').length > 0) {
              return false;
        } else {
            $('div#campaign div.feedback').fadeIn('slow');
            $.ajax({
                url:      '/campaign/ajaxactivatenewsletter',
                type:     'POST',
                data:     ({u_title:        $('input[name="u_title"]').val(),
                            u_initials:     $('input[name="u_initials"]').val(),
                            u_lastname:     $('input[name="u_lastname"]').val(),
                            u_email:        $('input[name="u_email"]').val(),
                            u_specialism:   $('input[name="u_specialism"]').val()}),
                dataType: 'html',
                async:    false,
                success:  function () {
                            setTimeout("window.location = '/home/'", 3000);
                }
            });            
        }
    });

    //uitschakelen specifieke velden specialisme
    $('form#registerform dt#u_big-label, form#registerform dd#u_big-element').css('display', 'none');
    $('form#registerform dt#u_access-label, form#registerform dd#u_access-element').css('display', 'none');

    //switch tussen specialismen bij registratie form
    $('form#registerform select[name="u_specialism"]').bind('change', function() {
        if ($(this).val()) {
            if (($(this).val() == 'Huisarts') || ($(this).val() == 'Specialist') || ($(this).val() == 'Apotheker')) {
                $('form#registerform dt#u_big-label, form#registerform dd#u_big-element').css('display', 'block');
                $('form#registerform dt#u_access-label, form#registerform dd#u_access-element').css('display', 'none');
                $('form#registerform input[name="u_big"]').addClass('NotEmpty');
                $('form#registerform input[name="u_access"]').removeClass('NotEmpty');
            } else {
                $('form#registerform dt#u_access-label, form#registerform dd#u_access-element').css('display', 'block');
                $('form#registerform dt#u_big-label, form#registerform dd#u_big-element').css('display', 'none');
                $('form#registerform input[name="u_access"]').addClass('NotEmpty');
                $('form#registerform input[name="u_big"]').removeClass('NotEmpty');
            }
        }
    });

    //Log in Formulier plus BIG nummer.
    $('form#loginbig input').bind('blur paste', function () {
        $(this).validate();
    });

    $('form#loginbig').submit(function () {
        $('form#loginbig input').each(function () {
            $(this).validate();
        });

        var errors = $('div.feedback').length;
        if (errors > 0) {
             if (errors == 1 && $('input[name=u_big]').hasClass('landing_error')) {
                $('div#banner_content span.message').html('<strong>BIG nummer is niet correct</strong><br/>De opgegeven informatie correspondeert niet met de gegevens in het BIG register. Wij verzoeken u dit te controleren!<br /><br /> Heeft u hulp nodig? Stuur ons een <a href="/support/">e-mail</a> en wij nemen zo spoedig mogelijk contact met u op.');
                
                var redirect = $.ajax({
                    url:      '/validation/ajaxbigtrycheck',
                    type:     'POST',
                    data:     ({gender: $('input[name=u_sex]:checked').val(), infix: $('input#u_infix').val(), lastname: $('input#u_lastname').val(), big: $('input#u_big').val()}),
                    dataType: 'html',
                    async:    false
                }).responseText;
                
                if (redirect == 'true') {
                    return true;
                }
            }
        } else {
            return true;
        }

        return false;
    });
   
    // Log in Formulier.
    $('form#login input').bind('blur paste', function () {
        $(this).validate();
    });

    $('form#login').submit(function () {
        $('form#login input').each(function () {
            $(this).validate();
        });

        if ($('div.feedback').length > 0) return false;
    });

    // Log in met toegangscode.
    $('form#loginaccesscode input').bind('blur paste', function () {
        $(this).validate();
    });

    $('form#loginaccesscode').submit(function () {
        $('form#loginaccesscode input').each(function () {
            $(this).validate();
        });

        if ($('div.feedback').length > 0) return false;
    });

    // Toegangscode
    $('form#accesscode input').bind('blur paste', function () {
        $(this).validate();
    });

    $('form#accesscode').submit(function () {
        $('form#accesscode input').each(function () {
            $(this).validate();
        });

        if ($('div.feedback').length > 0) return false;
    });

    // Wachtwoord vergeten Formulier.
    $('form#forgotpassword input').bind('blur paste', function () {
        $(this).validate();
    });

    $('form#forgotpassword').submit(function () {
        $('form#forgotpassword input').each(function () {
            $(this).validate();
        });

        if ($('div.feedback').length > 0) return false;
    });

    $('form dd').mouseover(function () {
        $(this).find('.feedback').show();
    });

    $('form dd').mouseout(function () {
        $(this).find('.feedback').hide();
    });

    $.fn.validate = function () {
        $(this).removeClass('landing_error');
        $(this).parent().removeClass('landing_error');
        $(this).siblings('.feedback').remove();

        var ajaxReturn;
        var text;

        if ($(this).attr('type') != 'hidden') {
            ajaxReturn = $(this).ajaxValidation('notempty');
            text       = 'Dit veld is verplicht!';

            // Geldige logingegevens.
            if (ajaxReturn == 'true' && $('input[name=username]').val() != '' && $('input[name=password]').val() != '' && $(this).attr('name') == 'password') {
                ajaxReturn  = $(this).ajaxValidation('correctpassword', $('input[name=username]').val());
                text        = 'U heeft een onjuiste gebruikersnaam en/of onjuist wachtwoord opgegeven! Wachtwoord <a href="/inloggen/wachtwoord-vergeten/">vergeten</a>?';
            }
            // Geldig e-mailadres.
            if ($(this).attr('name') == 'email' && ajaxReturn == "true") {
                ajaxReturn = $(this).ajaxValidation('mx');
                text       = 'Vul een geldig e-mailadres in';
            }

            // Geldige gebruikersnaam / e-mailadres combinatie.
            if (ajaxReturn == 'true' && $('input[name=username]').val() != '' && $('input[name=email]').val() != '' && $(this).attr('name') == 'email') {
                ajaxReturn  = $(this).ajaxValidation('correctuser', $('input[name=username]').val());
                text        = 'De combinatie gebruikersnaam en e-mailadres is niet juist! <br /><br /> Heeft u hulp nodig? Stuur ons een <a href="/support/">e-mail</a> en wij nemen zo spoedig mogelijk contact met u op.';
            }

            // Geldig BIG nummer
            if (ajaxReturn == 'true' && $(this).attr('name') == 'u_big') {
                ajaxReturn  = $(this).ajaxValidation('bignummer', $('input#userId').val());
                text        = 'De opgegeven informatie correspondeert niet met de gegevens in het BIG register. Wij verzoeken u dit te controleren.<br /><br /> Heeft u hulp nodig? Stuur ons een <a href="/support/">e-mail</a> en wij nemen zo spoedig mogelijk contact met u op.';
            }

            // Geldige toegangscode.
            if ($(this).attr('name') == 'code' && ajaxReturn == "true") {
                ajaxReturn = $(this).ajaxValidation('accesscode');
                text       = 'Deze code is onjuist!';
            }

            if (ajaxReturn == 'false') {
                $(this).addClass('landing_error');
                $(this).parent().addClass('landing_error');
                $(this).parent().append('<div class="feedback">'+text+'</div>');
            }
        }
    }

    
});
