var Tip = new Class({
	Implements: [Options],

	options: {
		className: null,
		offsets: {x: 0, y: 16}
	},

	initialize: function(element,options){
		this.setOptions(options);
		this.tip = $('tip-'+$(element).get('id'));
		if (this.tip) {
			this.tip.inject(document.body);
			if (this.options.className) this.tip.addClass(this.options.className);
            this.initPos(element);
			$(element).removeEvents('click');
			$(element).addEvent('click',function(e) {
				if (e) new Event(e).stop();
				element.toggleClass('open');
                this.initPos(element);
				this.tip.toggleClass('open');
			}.bindWithEvent(this));
		}
	},

    initPos: function(element) {
      var pos = $(element).getPosition();
      this.tip.setStyles({'height':'auto', position: 'absolute', top: pos.y + this.options.offsets.y, left: pos.x + this.options.offsets.x});
    },
	
	show: function(){
        this.fireEvent('show', this.tip);
	},

	hide: function(){
		this.fireEvent('hide', this.tip);
	},
	
	log: function(text, args) {
		if (window.console) console.log(text);
	}
	
	
});
