
var Tooltip = {
    elements: {},
    create: function(element_id, title, message, options) {
            if (this.elements[element_id]) {
                this.destroy(element_id);
            }
            this.elements[element_id] = {   id:         element_id,
                                            title:      title,
                                            message:    message,
                                            options:    options,
                                            bOver:      null,
                                            bOut:       null,
                                            tooltip:    null,
                                            enabled:    true    };
            this.elements[element_id].bOver = this.show.bindAsEventListener(this, element_id);
            this.elements[element_id].bOut = this.hide.bindAsEventListener(this, element_id);
            Event.observe(element_id, 'mouseover', this.elements[element_id].bOver);
            Event.observe(element_id, 'mouseout', this.elements[element_id].bOut);   
        },
    destroy: function(element_id) {
            Event.stopObserving(element_id, 'mouseover', this.elements[element_id].bOver);
            Event.stopObserving(element_id, 'mouseout', this.elements[element_id].bOut);
        },
    show: function(event, element_id) {
            if (this.elements[element_id].enabled) {
                if (!this.elements[element_id].tooltip) {
                    this.elements[element_id].tooltip = Element.extend(document.createElement('div')).hide().addClassName('tooltip').setStyle({position:'absolute'});
                    document.getElementsByTagName("body").item(0).appendChild(this.elements[element_id].tooltip);    
                
                }

                this.elements[element_id].tooltip.setStyle({left: (Event.pointerX(event)+10) + 'px', top: (Event.pointerY(event)+10) + 'px'});
                this.elements[element_id].tooltip.innerHTML = '';
                
                new Insertion.Top(this.elements[element_id].tooltip, '<h1>' + this.elements[element_id].title + '</h1>');
                new Insertion.Bottom(this.elements[element_id].tooltip, '<p>' + this.elements[element_id].message + '</p>');
                Effect.Appear(this.elements[element_id].tooltip, { duration: 0.3 });
            }
        },
    hide: function(event, element_id) {
            Effect.Fade(this.elements[element_id].tooltip, { duration: 0.3 });
        },
    disable: function(element_id) {
        this.elements[element_id].enabled = false;
    },
    enable: function(element_id) {
        this.elements[element_id].enabled = true;    
    }

}