
APP.Page = (function() {

    /**
     * ----------------------------------------------------------------------------------
     * Init APP
     * ----------------------------------------------------------------------------------
     */
    function _init() {

        //
        APP.Console.info('APP.Page:init()');

        _initBehavior();
    };

    /**
     * ----------------------------------------------------------------------------------
     *
     * ----------------------------------------------------------------------------------
     */
    function _initBehavior() {



        $('#contact-message').hide();
        $('#btn-frm-contact-send').on('click', function(evt) {
	
            evt.preventDefault();
            _handleFormCallback();
        });
    }

    /**
     * ----------------------------------------------------------------------------------
     * _handleFormCallback
     *
     * @see: https://developers.google.com/recaptcha/docs/invisible
     * @param string token_
     * ----------------------------------------------------------------------------------
     */
    function _handleFormCallback(token_) {

        $.ajax({
            'type': "POST",
            'url': WEBSITE + 'ajax/contact',
            'data': $('#frm-contact').serialize(), // serializes the form's elements.
            'success': function(_json) {
                var json = _json,
                    n, elm;

                var transMsg = {
                    "Verplicht veld": "Verplicht veld",
                    "Ongeldig e-mailadres": "Ongeldig e-mailadres"
                };

                for (n in json.data) {
                    elm = $('input[name="contact[' + json.data[n].name + ']"]');
                    if (!elm.length) {
                        elm = $('textarea[name="contact[' + json.data[n].name + ']"]');
                    }

                    if (!elm.length) {
                        continue;
                    }

                    //
                    elm.parent().parent().data('elm', json.data[n].name);

                    if (!json.data[n].valid) {
                        elm.siblings('span.error').html(transMsg[json.data[n].msg]).show()
                            .parent().parent().off('click').on('click', function(evt) {
                            var self = $(this);
                            self.find('span.error').fadeOut(250, function() {
                                self.find('span.error').html('').hide();
                                var focusElm = $('input[name="contact[' + self.data('elm') + ']"]');
                                if (!focusElm.length) {
                                    focusElm = $('textarea[name="contact[' + self.data('elm') + ']"]');
                                }
                                if (!!elm.length) {
                                    focusElm.focus();
                                }
                            });
                        });

                    } else {
                        elm.siblings('span.error').html('').hide();
                    }
                }
                if (!json.success) {
                    // There were some form errors
                    //grecaptcha.reset();
                } else {
                    $('#frm-contact').slideUp(function () {
                        //$('#message').html(json.msg).slideDown();
                        //$('#contact-message').show().css({'margin-top':'50px'}).slideDown();
                        window.location.replace(bedankt);

                    });
                    //grecaptcha.execute();
                }
            }
        });
    }

    /**
     * ----------------------------------------------------------------------------------
     *
     * ----------------------------------------------------------------------------------
     */
    return {
        'init': _init,
        'handleFormCallback': _handleFormCallback
    };

})();

