var BackgroundSlider = new Class({ getOptions: function() {
    return { duration: 300, wait: 500, transition: Fx.Transitions.sineInOut, className: false, fixHeight: false, fixWidth: false, id: false, padding: { top: 0, right: 0, bottom: 0, left: 0 }, onClick: this.setStart, mouseOver: true
    };
}, initialize: function(elements, options) {
    this.setOptions(this.getOptions(), options); this.elements = $$(elements); this.timer = 0; if (this.options.id) { this.bg = $(this.options.id); } else {
        this.bg = new Element('div').setProperty('id', 'BgSlider_' + new Date().getTime()).injectInside(document.body); if (this.options.className) { this.bg.addClass(this.options.className); }
    }
    this.effects = new Fx.Styles(this.bg, { duration: this.options.duration, transition: this.options.transition }); this.elements.each(function(el, i) {
        if (this.options.mouseOver) { el.addEvent('mouseover', this.move.bind(this, el)); el.addEvent('mouseout', this.reset.bind(this)); }
        el.addEvent('click', this.options.onClick.bind(this, el))
        if (el.hasClass('bgStart')) { this.set(el); }
    }, this); window.addEvent('resize', function() { this.move(this.startElement); } .bind(this));
}, setStart: function(el) { this.startElement = el; }, set: function(el) {
    this.setStart(el); var pos = el.getCoordinates(); if (this.options.id) { this.options.padding.top = this.bg.getStyle('paddingTop').toInt(); this.options.padding.right = this.bg.getStyle('paddingRight').toInt(); this.options.padding.bottom = this.bg.getStyle('paddingBottom').toInt(); this.options.padding.left = this.bg.getStyle('paddingLeft').toInt(); this.bg.setStyle('padding', '0px'); }
    var obj = {}; obj.top = (pos.top - this.options.padding.top) + 'px'; obj.left = (pos.left - this.options.padding.left) + 'px'; if (!this.options.fixHeight) { obj.height = (pos.height + this.options.padding.top + this.options.padding.bottom) + 'px' }; if (!this.options.fixWidth) { obj.width = (pos.width + this.options.padding.left + this.options.padding.right) + 'px' }; this.bg.setStyles(obj);
}, reset: function() {
    if (this.options.wait) { this.timer = this.move.delay(this.options.wait, this, this.startElement); }
}, move: function(el) { $clear(this.timer); var pos = el.getCoordinates(); this.effects.stop(); var obj = {}; obj.top = pos.top - this.options.padding.top; obj.left = pos.left - this.options.padding.left; if (!this.options.fixHeight) { obj.height = pos.height + this.options.padding.top + this.options.padding.bottom }; if (!this.options.fixWidth) { obj.width = pos.width + this.options.padding.left + this.options.padding.right }; this.effects.start(obj); }
}); BackgroundSlider.implement(new Options); BackgroundSlider.implement(new Events); 