if (!DGN) { var DGN = { }; }

DGN.ToolTip = Class.create({
	initialize: function(trigger,tip,options) {
	    this.options = options || { };
            this.options.classnames = this.options.classname || 'tooltip';
            this.options.left = this.options.left || 0;
            this.options.top = this.options.top || 0;
            this.options.width = this.options.width || '30%';
            this.options.height = this.options.height || 'auto';
            this.options.relativeto = this.options.relativeto || this.trigger;

	    this.trigger = trigger;

	    if(typeof(tip) == 'string') {
		this.tip = new Element('div').update(tip);
		this.trigger.insert({after: this.tip});
	    } else {
		this.tip = tip;
	    }
            this.tip.addClassName(this.options.classnames);
            
            this.tip.absolutize();

	    this.trigger.observe('mouseover',this.show.bindAsEventListener(this));
	    this.trigger.observe('mouseout',this.hide.bindAsEventListener(this));
	},
	show: function(e) {
            position = this.options.relativeto.positionedOffset();
            position.left += this.options.left;
            position.top += this.options.top;
            this.tip.style.left = position.left + 'px';
            this.tip.style.top = position.top + 'px';
            this.tip.style.width = this.options.width;
            this.tip.style.height= this.options.height;

	    this.tip.show();
	},
	hide: function(e) {
	    this.tip.hide();
	}

});
