(function() {
    // compatibility layer with mootools 1.2 element storage system
    // scoped
    var storage = {}, Native = {
        UID: 1
    };

    var $uid = (window.ie) ? function(item){
        return (item.uid || (item.uid = [Native.UID++]))[0];
    } : function(item){
        return item.uid || (item.uid = Native.UID++);
    };

    var get = function(uid){
        return (storage[uid] || (storage[uid] = {}));
    };


    Element.extend({
        retrieve: function(property, dflt){
            if (!this.uid)
                $uid(this);

            var storage = get(this.uid), prop = storage[property];
            if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
            return $pick(prop);
        },
        store: function(property, value){
            if (!this.uid)
                $uid(this);

            var storage = get(this.uid);
            storage[property] = value;
            return this;
        }
    });
})();

var myEl = $("myelement");

myEl.store("message", "new message, click to restore original");
myEl.store("oldMessage", myEl.getText());
myEl.store("background", myEl.getStyle("background"));

myEl.setHTML(myEl.retrieve("message")).setStyle("background", "green");
myEl.addEvents({
    click: function() {
        this.setHTML(this.retrieve("oldMessage")).setStyle("background", this.retrieve("background"));
        
    }
});

<div id="myelement" class="foo">original message</div>
.foo {
    background: red;
}