<?php
// Copyright 1999-2015. Parallels IP Holdings GmbH. All Rights Reserved.
?>
<?php echo $this->partial('partials/tabs.phtml', array('tabs' => $this->tabs, 'renderTo' => 'main')); ?>
<?php echo $this->partial('email-address/_configuration.phtml', array('localeSection' => "smb.controllers.email-address.configuration")); ?>

<script type="text/javascript">
//<![CDATA[
Jsw.onReady(function() {
    new Jsw.Hint({
        renderTo: 'main',
        hint: <?php echo $this->jsLmsg('hint'); ?>,
        expandable: true
    });

    new Jsw.List({
        id: 'email-addresses-list',
        renderTo: 'main',
        data: <?php echo Zend_Json::encode($this->emailsList->fetchData()); ?>,
        dataUrl: '/email-address/list-data<?php echo $this->domainIdParam; ?>',
        disabledSelectHint: <?php echo $this->emailsList->jsLmsg('disabledSelectHint');?>,
        searchFilters: <?php echo Zend_Json::encode($this->emailsList->getSearchFilterConfig()); ?>,
        columns: [
            Jsw.list.COLUMN_SELECTION,
            {
                header: <?php echo $this->emailsList->jsLmsg('name');?>,
                sortable: true,
                dataIndex: 'name',
                renderer: function(item) {
                    var aliases = '';
                    if (0 < item.aliases.length) {
                        aliases = ' <span class="minor">(' + item.aliases.join('; ') + ')</span>';
                    }
                    var description = '';
                    if (item.description && item.description.length) {
                        description = '<div class="minor">' + item.description.truncate(50, '...').escapeHTML() + '<span class="tooltipData">' + item.description.escapeHTML() + '</span></div>';
                    }
                    var status = '';
                    if (!item.service) {
                        status = ' <span class="hint-attention">' + <?php echo $this->emailsList->jsLmsg('statusNotOperable'); ?> + '</span>';
                    }

                    return '<a href="' + Jsw.baseUrl + '/email-address/edit/id/' + item.id + '<?php echo $this->domainIdParam; ?>">'
                        + item.name.escapeHTML() + '@' + item.domainName.escapeHTML() + '</a>' + aliases + description + status;
                }
            }, {
                header: '',
                cls: 'minor',
                renderer: function(item) {
                    var ret = [];
                    if (0 < item.redirects.length) {
                        var message = 1 == item.redirects.length
                            ? <?php echo $this->emailsList->jsLmsg('redirectDetailsSingle'); ?>
                            : <?php echo $this->emailsList->jsLmsg('redirectDetailsMultiple'); ?>;
                        ret.push(
                            '<div class="b-indent"><nobr>'
                                + '<img class="b-indent-icon" src="<?php echo $this->skinUrl('/icons/16/plesk/mail-redirect-on.png') ?>" alt="*"> '
                                + message
                                    .replace('%%firstAddress%%', item.redirects[0].escapeHTML())
                                    .replace('%%count%%', item.redirects.length)
                                    .replace('%%countLeft%%', item.redirects.length - 1)
                            + '</nobr></div>'
                        );
                    }
                    if (item.autoresponderEnabled) {
                        ret.push(
                            '<div class="b-indent"><nobr>'
                                + '<img class="b-indent-icon" src="<?php echo $this->skinUrl('/icons/16/plesk/mail-autoresponder-on.png') ?>" alt="*"> '
                                + (item.autoresponderEndDate
                                    ? <?php echo $this->emailsList->jsLmsg('autoresponderEnabledTill'); ?>.replace('%%endDate%%', item.autoresponderEndDate)
                                    : <?php echo $this->emailsList->jsLmsg('autoresponderEnabled'); ?>
                                )
                            + '</nobr></div>'
                        );
                    }
                    return ret.join('');
                }
            }, {
                header: <?php echo $this->emailsList->jsLmsg('owner');?>,
                sortable: true,
                cls: 'minor',
                dataIndex: 'userContactName',
                renderer: function(item) {
                    if (!item.userId) {
                        return '';
                    }
                    var linkName = item.userContactName ? item.userContactName : item.userLogin;
                    return '<a href="' +
                                Jsw.baseUrl +
                                '/user/' + '<?php echo $this->currentUser->hasPermission('userManagement') ? 'edit' : 'details' ?>' +
                                '/id/' + item.userId +
                          '">' + linkName.escapeHTML() + '</a>';
                }
            }, {
                header: <?php echo $this->emailsList->jsLmsg('spaceUsage');?>,
                headerParams: { width: 200 },
                cls: 'minor',
                renderer: function(item) {
                    if (!item.isMailBox) {
                        return '<em class="hint">' + <?php echo $this->emailsList->jsLmsg('noMailbox'); ?> + '</em>';
                    }

                    if (-1 == item.spaceUsage.percent) {
                        return '<span class="gauge-legend">' + item.spaceUsage.legend + '</span>';
                    }

                    var overuseClass = '';
                    if (100 == item.spaceUsage.percent) {
                        overuseClass = 'over';
                    }

                    result =
                        '<span class="gauge-block">'
                            + '<span title="" class="gauge-wrapper not_empty">'
                                + '<span class="gauge-container ' + overuseClass + '">'
                                    + '<span style="width: ' + item.spaceUsage.percent + '%;" title="' + item.spaceUsage.legend + '" class="gauge-filled">'
                                    + '</span>'
                                + '</span>'
                            + '</span>'
                            + '<span class="gauge-legend">' + item.spaceUsage.legend + '</span>'
                        + '</span>';

                    return result;
                }
            }, {
                header: '',
                cls: 'action-icon-set t-r',
                renderer: function(item) {
                    var content = '';

                    item.additionalServices.each(function(service) {
                        var links = '';
                        service.links.each(function(link) {
                            links +=
                                '<li>' +
                                    '<a href="' + link.href + '" target="' + link.target + '">' +
                                        link.title +
                                    '</a>' +
                                '</li>';
                        });

                        content +=
                            '<span>' +
                                '<span class="tooltipData">' +
                                    service.title +
                                '</span>' +
                                '<a href="#" onclick=\'Smb.Views.EmailAddress.additionalServiceOnClick(event, this)\'>' +
                                    '<img src="' + service.icon + '">' +
                                '</a>' +
                                '<div class="popup-box left collapsed">' +
                                    '<table class="popup-wrapper" cellspacing="0"><tbody><tr><td class="popup-container">' +
                                        '<div class="c1"><div class="c2"><div class="c3"><div class="c4"><div class="c5">' +
                                            '<div class="popup-heading">' +
                                                '<div class="heading-area">' +
                                                    '<span class="arrow"></span>' +
                                                    '<span class="close"></span>' +
                                                    '<h4><span>' + service.title + '</span></h4>' +
                                                '</div>' +
                                            '</div>' +
                                            '<div class="popup-content">' +
                                                '<div class="popup-content-area">' +
                                                    '<ul class="panel-ul">' +
                                                        links +
                                                    '</ul>' +
                                                '</div>' +
                                            '</div>' +
                                        '</div></div></div></div></div>' +
                                    '</td></tr></tbody></table>' +
                                '</div>' +
                            '</span> ';
                    });

                    content +=
                        '<span>' +
                            '<span class="tooltipData">' +
                                <?php echo $this->emailsList->jsLmsg('editHint'); ?> +
                            '</span>' +
                            '<a href="#" onclick="Smb.Views.Emails.showConfiguration(event, ' + item.id + ');">' +
                                '<img src="<?php echo $this->skinUrl('/icons/16/plesk/info.png') ?>">' +
                            '</a>' +
                        '</span> ';

                    if (item.webmailUrl) {
                        var onclick = Smb.Webmail.urlWrapper(item.webmailUrl) + 'return false;';
                        content +=
                            '<span>' +
                                '<span class="tooltipData">' +
                                    <?php echo $this->emailsList->jsLmsg('webMailHint'); ?> +
                                '</span>' +
                                '<a href="#" onclick=\'' + onclick + '\'>' +
                                    '<img src="<?php echo $this->skinUrl('/icons/16/plesk/webmail-on.png') ?>">' +
                                '</a>' +
                            '</span> ';
                    } else {
                        content += '<img src="<?php echo $this->skinUrl('/icons/16/plesk/spacer.png') ?>"> ';
                    }

                    return content;
                }
            }
        ],
        operations: [
            {
                componentType: 'Jsw.SmallButton',
                title: <?php echo $this->jsLmsg('buttonAddNewEmail');?>,
                id: 'buttonAddNewEmail',
                description: <?php echo $this->jsLmsg('hintAddNewEmail'); ?> + <?php echo $this->jsEscape(' ' . $this->resourceUsage('max_box')); ?>,
                addCls: 'sb-add-mail-account',
                href: '/email-address/create<?php echo $this->domainIdParam; ?>'
            }, {
                componentType: 'Jsw.bar.Separator'
            }, {
                componentType: 'Jsw.SmallButton',
                title: <?php echo $this->emailsList->jsLmsg('recalculateUsage');?>,
                description: <?php echo $this->emailsList->jsLmsg('hintRecalculateUsage'); ?>,
                addCls: 'sb-refresh',
                href: '/email-address/recalculate-usage<?php echo $this->domainIdParam; ?>'
            },
            <?php if ($this->isMailnameOutgoingSpamSettingsManagementAllowed): ?>
            {
                componentType: 'Jsw.SmallButton',
                title: <?php echo $this->jsLmsg('buttonOutgoingSpamSettings');?>,
                description: <?php echo $this->jsLmsg('hintOutgoingSpamSettings'); ?>,
                addCls: 'sb-outgoing-spam-settings',
                handler: function() {
                    showPopupForm(function() {
                        new Smb.MailSettingsPopupManager.MailnameOutgoingSpamSettingsPopupForm({
                            id: 'outgoingSpamSettingsPopupForm',
                            handlerUrl: '/email-address/update-outgoing-messages<?php echo $this->domainIdParam; ?>',
                            locale: <?php echo Zend_Json::encode(Zend_Registry::get('translate')->getSection('smb.components.confirmations.email-outgoing-messages')); ?>,
                            listId: 'email-addresses-list'
                        });
                    });
                }
            },
            <?php endif ?>
            {
                componentType: 'Jsw.bar.Separator'
            }, {
                componentType: 'Jsw.SmallButton',
                title: <?php echo $this->emailsList->jsLmsg('remove');?>,
                description: <?php echo $this->emailsList->jsLmsg('hintRemove'); ?>,
                addCls: 'sb-remove-selected',
                handler: function(event) {
                    Jsw.getComponent('email-addresses-list').execGroupOperation({
                        url: '/email-address/delete/?redirect=/email-address/list<?php echo $this->domainIdParam; ?>',
                        subtype: 'delete',
                        mouseEvent: event,
                        locale: {
                            confirmOnGroupOperation: <?php echo $this->emailsList->jsLmsg('confirmOnDelete'); ?>
                        }
                    });
                }
            }
        ]
    });

    Jsw.namespace('Smb.Views.EmailAddress');
    Smb.Views.EmailAddress.additionalServiceOnClick = function(event, element) {
        Event.stop(event);

        $$('.action-icon-set .popup-box').each(function(popUp) {
            popUp.addClassName('collapsed');
        });

        var position = element.cumulativeOffset();
        var popUp = $(element).up('span').down('.popup-box');
        var popUpWidth = popUp.down('.popup-wrapper').getWidth();
        var leftOffset = position[0] - popUpWidth + 'px';
        var topOffset = position[1] + 'px';
        popUp.setStyle({'left': leftOffset, 'top': topOffset});
        popUp.toggleClassName('collapsed');
    };

    $$('.action-icon-set .popup-box').each(function(popUp) {
        popUp.observe('click', function(event) {
            event = Event.extend(event);
            event.stopPropagation();
        });

        popUp.down('.close').observe('click', function() {
            popUp.addClassName('collapsed');
        });
    });

    $(document.body).observe('click', function() {
        $$('.action-icon-set .popup-box').each(function(popUp) {
            popUp.addClassName('collapsed');
        });
    });

    var showPopupForm = function(callback) {
        var list = Jsw.getComponent('email-addresses-list');
        if (!list.checkNonEmptySelection()) {
            return;
        }

        callback();
    };
});
//]]>
</script>
