UCLU.myStuff = {
    cookieName: 'homepageModules-' + community.getUsername(),
    
    init: function() {
        YAHOO.util.Event.addListener(window, 'load', function() {
            YAHOO.util.Event.addListener(
                YAHOO.util.Dom.getElementsByClassName('module-add-button', 'button', 'main'),
                'click',
                function() {
                    if (!confirm('Are you sure you want to add this module to your homepage?')) return;
                    
                    var button = this;
                    var module = button.parentNode.parentNode;
                    
                    var moduleName = module.getAttribute('module-path');
                    
                    var callback = {
                        success: function() {
                            UCLU.util.hide(module);
                            UCLU.util.redraw('middle');
                        }
                    };
                    
                    if (UCLU.myStuff.add(moduleName, callback)) {
                        button.blur();
                        
                        button.style.backgroundImage = 'url(/styling/i/progress.gif)';
                        button.style.backgroundPosition = 'top left';
                        button.style.width  = '24px';
                        button.style.height = '24px';
                    }
                }
            );
        }, this, true);
    },
    
    save: function(names, callback) {
        if (names instanceof Array)
            names = names.join(',');
        
        // strip leading, trailing and multiple commas
        names = names.replace(/^,+|,+$/g, '').replace(/,,+/g, ',');
        
        community.callCustomMethod(
            'POST',
            'homepage-save',
            this.overrideCallback(names, callback),
            '<moduleNames>' + names + '</moduleNames>'
        );
    },
    
    add: function(name, callback) {
        var names = UCLU.cookie.get(this.cookieName) || community.getData('homepageModules');
        
        if (names.split) names = names.split(',');
        
        // IE6 doesn't support Array#indexOf???
        for (var i=0; i<names.length; i++)
            if (names[i] == name)
                return false;
        
        this.save(names.concat([name]), callback);
        
        return true;
    },
    
    overrideCallback: function(names, callback) {
        var c = {};
        
        for (var i in callback)
            c[i] = callback[i];
        
        c.success = function(o, info) {
            UCLU.cookie.set(UCLU.myStuff.cookieName, names);
            
            if (callback.success)
                callback.success();
        };
        
        return c;
    }
}

UCLU.myStuff.init();