
(function($){
    $('form').submit(function() {
        var $this = $(this);
        var inputs = $this.find('*[required=""]');
        var errors = $this.data('errors') || [];
        
        inputs.each(function() {
            var $input = $(this);
            var type = $input.attr('type');
            var message = '';
            
            switch(type) {
                case 'text':
                case 'password':
                case 'textarea':
                case 'email':
                    message = $input.prev().html().replace(':', '').replace('*', '');
                    if($input.val() == '') {
                        $input.addClass('error');
                        
                        if($.inArray(message, errors) < 0) {
                            errors.push(message);
                        }
                    } else {
                        var index = $.inArray(message, errors);
                        if(index >= 0) errors.splice(index, 1);
                        $input.removeClass('error');
                    }
                    
                    if($input.attr('id') == 'email-confirm') {
                        if($input.val() != $('#email').val()) {
                            if($.inArray('e-mail adressen komen niet overeen.', errors) < 0) {
                                errors.push('e-mail adressen komen niet overeen.');
                            }
                            $input.addClass('error');
                        } else {
                            var index = $.inArray('e-mail adressen komen niet overeen.', errors);
                            if(index >= 0) errors.splice(index, 1);
                            $input.removeClass('error');
                        }
                    }
                    
                    if($input.attr('name') == 'password') {
                        var $repeatPassword = $('#repeat-password');
                        if($repeatPassword.size() > 0 && $input.val() != $('#repeat-password').val()) {
                            if($.inArray('wachtwoorden dienen gelijk aan elkaar te zijn.', errors) < 0) {
                                errors.push('wachtwoorden dienen gelijk aan elkaar te zijn.');
                            }
                        } else {
                            var index = $.inArray('wachtwoorden dienen gelijk aan elkaar te zijn.', errors);
                            if(index >= 0) errors.splice(index, 1);
                        }
                    }

                    if($input.hasClass('email')) {
                        if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,8})+$/.test($input.val())) {
                            if($.inArray('geen geldig email adres.', errors) < 0) {
                                errors.push('geen geldig email adres.');
                            }
                        } else {
                            var index = $.inArray('geen geldig email adres.', errors);
                            if(index >= 0) errors.splice(index, 1);
                        }
                    }
                    break;
                case 'radio':
                    if($input.attr('checked') === false) {
                        var radios = $('*[name="' + $input.attr('name') + '"]');
                        var checked = false;

                        radios.each(function() {
                            if(this.checked == true) {
                                checked = true;
                            }
                        });
                        message = $input.parent('div').prev().html().replace(':', '').replace('*', '');
                        
                        if(!checked) {
                            var hasBeenChecked = false;

                            $(errors).each(function() {
                                if(this == message) {
                                    hasBeenChecked = true;
                                }
                            })

                            if(!hasBeenChecked) {
                                errors.push(message);
                            }
                        } else {
                            var index = $.inArray(message, errors);
                            if(index >= 0) errors.splice(index, 1);
                        }
                    }
                    break;
            }
        });

        if(errors.length > 0) {
            $this.data('error', 1);
            $this.data('errors', errors);
            form.showError($this.find('.error-holder'), '<strong>De volgende velden zijn verplicht of niet correct ingevuld</strong>:<ul><li>' + errors.join('</li><li>') + '</li></ul>');
        } else {
            $this.data('error', 0);
            $this.data('errors', null);
            form.submit($this);
        }
        
        return false;
    })
})(this.jQuery);

var form = {
    showError: function(holder, message) {
        holder.html(message)
            .css({ opacity: 0 })
            .show()
            .fadeTo(800, 1);

        window.setTimeout(function() {
            holder.fadeTo(800, 0, function() {
                $(this).hide().html('');
            })
        }, 6000);
    },
    submit: function($form) {
        $form.find('button[type="submit"]').attr('disabled', 1);
        $("#startflash").html("");
        $("#startflash").unbind('click');
        $("#forgot-password").show();
        
        $.ajax({
            url: $form.attr('action'),
            data: $form.serialize(),
            type: 'post',
            dataType: 'json',
            success: function(response) {
                if(response.success == true) {
                    if(response.action != undefined) {
                      var rc = window.open('http://www.theorie-leren.nl/startflashw.php?webshop=1&logincode=' + response.action, 'tl_blank', 'fullscreen=yes,width=800,height=616');
                      //window.location = '/';
                      if(true) // || !rc || rc.closed || typeof rc == 'undefined' || typeof rc.closed=='undefined')
                      {
                        $("#forgot-password").hide();
                        if (false)
                        {
                          $("#startflash").html("Start examentraining");
                          $("#startflash").click(function() {
                            window.open('http://www.theorie-leren.nl/startflashw.php?webshop=1&logincode=' + response.action, 'tl_blank', 'fullscreen=yes,width=800,height=616');
                          });
                        }
                        else
                        {
                          $("#startflash").html('<a href="#" onclick="window.open(\'http://www.theorie-leren.nl/startflashw.php?webshop=1&logincode=' + response.action + '\', \'tl_blank\', \'fullscreen=yes,width=800,height=616\');">Start examentraining</a>');
                        }
                      }
                    } else {
                        if (top === self) { 
                            document.location = $form.data('redirect'); 
                        } else {
                            window.parent.location = 'http://theorie-leren.nl'  + $form.data('redirect'); 
                        }
                    }
                } else {
                    form.showError($form.find('.error-holder'), response.error);
                }
                $form.find('button[type="submit"]').attr('disabled', null);
            },
            error: function() {
                form.showError($form.find('.error-holder'), 'Onbekende foutmelding.');
                $form.find('button[type="submit"]').attr('disabled', null);
            }
        })
    }
}

