Event.observe(document,'dom:loaded', function (ev) {
    function blinkBasket () {
        $('basketNav').highlight({startcolor:'#FF6F6F',duration:1});
    }
    if(basketChanged) {
        blinkBasket();
        new PeriodicalExecuter(blinkBasket, 2);
    }
    //var stampEditors= $$('.stEditor');
    if (stampEditors[0]) {
        var editor = new OM.ModalWindow({
            title: 'Stempel Editor',
            id:'modalWindow',
            body:'<div id="stampPlate"></div><ul><li>Editor</li><li>Bild hochladen</li><div id="actionArea"></div>'
        });
        stampEditors.each(function (stEd) {
            var startEd = new Element('button', { type: 'button' }).insert('Stempel Editor starten');
            stEd.replace(startEd)
            startEd.observe('click', editor.open.bind(editor));
        })
    }
    if($$('.modalgal')) {
        $$('.modalgal').each( function (link) {
            var wind = new OM.ModalWindow({id: 'GalWindow'});
            link.observe('click', function (ev) {
                ev.stop();
                var link = ev.findElement('a');
                var source = link.getAttribute('href');
                var title = link.getAttribute('title') || 'Image';
                wind.update('<img src="'+source+'" />')
                wind.open(ev);
            });
        });
    }
});

var OM = {
    ModalWindow: Class.create({
        options: {
            id: 'OM_modalWindow',
            title: '',
            body: '',
            bodyClass: 'body',
            closeClass: 'close',
            structure: new Template('<div id="#{id}" class="#{className}"><h3>#{title}<a class="#{closeClass}">[x]</a></h3><div class="#{bodyClass}">#{body}</div></div>'),
            closeCallback: function () { return true }
        },
        initialize: function () {
            Object.extend(this.options, arguments[0] || {});
            $$('body')[0].insert(this.options.structure.evaluate(this.options));
            this.window = $(this.options.id);
            this.window.setStyle({ position: 'fixed', display: 'none'});
            if(this.options.width) { this.window.style.width = parseInt(this.options.width)+'px' }
            if(this.options.heigth) { this.window.style.height = parseInt(this.options.height)+'px' }
            this.window.select('.'+this.options.closeClass).each(function (closer) {
                closer.observe('click', this.close.bind(this) );
            }.bind(this))
        },
        open: function (ev) {
            ev.stop();
            var wd = this.window.getDimensions();
            var dd = document.viewport.getDimensions();
            this.window.setStyle({
                top: Math.round((dd.height-wd.height)/2)+'px',
                left: Math.round((dd.width-wd.width)/2)+'px'
            });
            this.window.show();
            document.observe('click', this.docClose.bind(this));
        },
        close: function () {
            if(arguments[0]) {
                var ev = arguments[0]
                ev.stop();
            }
            if(this.options.closeCallback()) {
                this.window.hide();
            }
        },
        docClose: function (ev) {
            var dont = ev.findElement('#'+this.options.id);
            if(!dont) {
                this.close();
            }
        },
        update: function (body) {
            $$('#'+this.options.id+' .'+this.options.bodyClass)[0].update(body);
        }
        
    })
}
