If anyone is intrested, i was hardly missing such a feature in prototype (for displaying well formatted error dialogs and things like that):

    Position.center = function(element){
        var options = Object.extend({
            zIndex: 999,
            update: false
        }, arguments[1] || {});
        element = $(element)
        if(!element._centered){
            Element.setStyle(element, {position: 'absolute', zIndex: options.zIndex });
            element._centered = true;
        }
        var dims = Element.getDimensions(element);
        Position.prepare();
        var winWidth = self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0;
        var winHeight = self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;
        var offLeft = (Position.deltaX + Math.floor((winWidth-dims.width)/2));
        var offTop = (Position.deltaY + Math.floor((winHeight-dims.height)/2));
        element.style.top = ((offTop != null && offTop > 0) ? offTop : '0') + 'px';
        element.style.left = ((offLeft != null && offLeft > 0) ? offLeft : '0') + 'px';
        if(options.update){
            Event.observe(window, 'resize', function(evt){ Position.center(element); }, false);
            Event.observe(window, 'scroll', function(evt){ Position.center(element); }, false);
        }
    }

You could call Position.absolutize first to keep the dimensions of a relative positioned element.

Tested in IE6, Mozilla 1.7 and FF 1.5.

Any suggestions on enhacements or bugfixes are appreciated. It would be great too if anyone could tell me if it works in safari, konqueror or opera.

brgds

sigi
--
Mit freundlichen Grüßen

Siegfried Puchbauer
_______________________________________________
Rails-spinoffs mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs

Reply via email to