var EmailModule = (function () {
    var api = {
        init: function () {
            initForms();
            initSmtpSetupHelp();
        }
    };

    function initForms() {
        lib.createFormValidator('#email-forward-form');
        lib.createOnblurValueCheck('#email-forward-form', {
            onlyCheckIfRelatedFieldsFilled: [
                ['user[email_local]', 'user[email_domain_id]']
            ]
        });

        initEmailTargetToggle();
        initEmailHelpToggle();
    }

    /**
     * Smtp beállítás popup megnyitás kezelése.
     */
    function initSmtpSetupHelp() {
        $('.smtp-setup-help').click(function (event) {
            event.preventDefault();

            var message = lang('smtp_setup_help');

            tools.dialogWindow(message, {
                title: lang('SMTP setup')
            });
        });
    }

    /**
     * Címzett email megadás kezelése (select, és input közötti váltás).
     */
    function initEmailTargetToggle() {
        handleEmailTargetSelectChange();
        $('#forwarded_to_confirmed').change(handleEmailTargetSelectChange);

        $('#forwarded_to_new_cancel').click(function () {
            $('#forwarded_to_confirmed').val('');
            toggleEmailTargetFields('confirmed');
        });
    }

    function initEmailHelpToggle() {
        $('.email-help-toggle').click(function(event) {
            event.preventDefault();
            var $targetHelp = $(event.target).parents('.sending-setup-help-item').next('.email-help');

            $('.email-help').each(function (key, elem) {
                if (elem === $targetHelp[0]) {
                    $targetHelp.slideToggle();

                    lib.scrollTo($('#email-help'));
                } else {
                    $(elem).hide({
                        animation: 'slide'
                    });
                }
            });
        });
    }

    function handleEmailTargetSelectChange() {
        if (typeof OPTION_ADD_NEW_EMAIL === 'undefined') {
            return;
        }

        toggleEmailTargetFields($('#forwarded_to_confirmed').val() === OPTION_ADD_NEW_EMAIL ? 'new' : 'confirmed');
    }

    /**
     * Megjeleníteni a megadott email cím megadás mezőt.
     * @param {String} show_item Melyik elemet kell megjeleníteni. Lehetséges értékek: confirmed|new.
     */
    function toggleEmailTargetFields(show_item) {
        $('#forwarded_to_new_container').parents('.form-group').find('.error').remove();

        if (show_item === 'confirmed') {
            $('#forwarded_to_confirmed_container').show();
            $('#forwarded_to_new_container').hide();
        } else {
            $('#forwarded_to_confirmed_container').hide();
            $('#forwarded_to_new_container').show();
            $('#forwarded_to_new').focus();
        }
    }

    return api;
})();

$(document).ready(function () {
    EmailModule.init();
});