Phx.Application.Modules.Groups = new function()
{
    this.popupAreas = ['Description', 'Announcement'];

    this.init = function()
    {
        this.initPopup();
        this.bindPager();
        _linkify();
    };

    var _linkify = function()
    {
        if ($('#groups-websitetext').length !== 0) {
            $('#groups-websitetext').html(Phx.Util.linkify($('#groups-websitetext').html(), {wrap: 45}));
            $('#groups-websitetext').fadeIn();
        }
    }

    this.initPopup = function()
    {
        for (var i = 0; i < this.popupAreas.length; i++) {
            var _name = this.popupAreas[i];
            var count = $('a[id*=Mod-Groups-Overview-' + _name + '-Popup-Link-]').length

            for (var j = 1; j <= count; j++) {
                eval('var _popupData = ' + $('input[id*=Mod-Groups-Overview-' + _name + '-Popup-Data-' + j + ']').val() + ';');
                _popupData.index = j;
                var _popupLink = $('a[id*=Mod-Groups-Overview-' + _name + '-Popup-Link-' + j + ']');

                if (_popupLink.length == 0) {
                    continue;
                }

                _popupLink.attr('href', 'javascript:;');
                this.bindPopupClickHandler(_popupLink, _popupData);
            }
        }
    };

    this.bindPopupClickHandler = function(popupLink, popupData)
    {
        popupLink.bind('click.openPopup', function() {
            var winname = 'popup_'+$('#Groups_Overview_GroupIds').val()+'_'+popupData.index;
            if(window[winname] && !window[winname].closed) {
                window[winname].focus();
                return false;
            }
            window[winname] = window.open(popupData.url, winname, 'width=' + popupData.width + ',height=' + popupData.height + ',scrollbars=no,resizable=no');
            window[winname].focus();
            return false;
        });
    };

    this.bindPager = function()
    {
        var me = this;
        // Inject the pager-links with ajax-calls.
        $('a.pager', '#GroupsMember').attr('href', 'javascript:;').click(function() {
            Phx.AJAX.call(
                'Groups_getPage',
                function(data, $ptr) {
                    $('#GroupsMember').replace(data.module.data.html);
                    $ptr.bindPager();
                },
                me,
                // #GroupsMember[title] points to group ids, a[title] points to page
                '&groupId=' + $('#groupId').val() + '&p=' + $(this).attr('title')
            );
        });
    };
}();
