//from http://pr0digy.com/mootools/text-dropshadows/

var TextDropShadow = new Class({
                options: {
                        color: '#333',
                        left: 1,
                        top: 1,
                        position: 'absolute',
                        width: '100%'
                },

                initialize: function(obj, options){
                                this.setOptions(options)
                                this.createDropShadows(obj);
                },

                createDropShadows: function(obj){
                        if('element' == $type(obj)) {
                                this.applyDropShadow(obj)
                        } else if('array' == $type(obj)) {
                                obj.each( function(el) {
                                        this.applyDropShadow(el);
                                }, this);
                        } else {
                                return false;
                        }
                },

                applyDropShadow: function(el){
                        var size = el.getSize();
                        var original = el.clone();
                        var shadow = el.clone();

                        var offsetY = this.options.top ? this.options.top.toInt() : this.options.bottom.toInt();
                        if(offsetY < 0) offsetY = offsetY * (-1);

                        var offsetX = this.options.left ? this.options.left.toInt() : this.options.right.toInt();
                        if(offsetX < 0) offsetX = offsetX * (-1);

                        var container = new Element('div', {
                                        'styles': {
                                                        position: 'relative',
                                                        left: 0,
                                                        top: 0,
                                                        height: size.y + offsetY,
                                                        width: size.x + offsetX
                                        }
                        });

                        original.setStyles({position: 'absolute', left: 0, top: 0});
                        shadow.setStyles(this.options);

                        container.adopt(shadow).adopt(original);
                        container.injectAfter(el);
                        el.destroy();
                }
});
TextDropShadow.implement(new Options, new Events);
