var SimpleToolTip = Class.create();
SimpleToolTip.prototype = {
	initialize: function( elements, specials ){
		this.m_e = document.createElement("DIV");
		this.m_e.id="th-tip";
		this.m_e.style.position="absolute";
		this.m_e.style.top="0px";
		this.m_e.style.left="0px";
		this.m_e.style.display="none";
		this.m_e.style.zIndex="1000";
		document.getElementsByTagName("BODY")[0].appendChild( this.m_e );
		this.m_inner = "";
		this.m_eventobservers = new Array();
		this.m_specials = specials;
		
		var classes = elements.split( "," );
		for( var j = 0; j < classes.length; j++ ){
			var terms = document.getElementsByClassName(classes[j]);
			for( var i = 0; i < terms.length; i++ ){
				Event.observe(terms[i], 'mouseover', this.toolTipOver.bindAsEventListener(this), false);
				Event.observe(terms[i], 'mouseout', this.toolTipOut.bindAsEventListener(this), false);
				this.m_eventobservers.push(terms[i]);
			}
		}
		
		if( specials != null ){			
			classes = this.m_specials.split( "," );
			for( var j = 0; j < classes.length; j++ ){
				var terms = document.getElementsByClassName(classes[j]);
				for( var i = 0; i < terms.length; i++ ){
					Event.observe(terms[i], 'mouseover', this.toolTipOver.bindAsEventListener(this), false);
					Event.observe(terms[i], 'mouseout', this.toolTipOut.bindAsEventListener(this), false);
					this.m_eventobservers.push(terms[i]);
				}
			}
		}
	},
	toolTipOver: function(e){
		if(this.m_specials != null && this.m_specials.indexOf(Event.element(e).className) >= 0 )
			Element.addClassName( this.m_e, "special" );
			
		this.m_e.style.display = "block";
		Event.observe(Event.element(e), 'mousemove', this.updatePosition.bindAsEventListener(this), false);
	},
	toolTipOut:function(e){
		if(this.m_specials != null && this.m_specials.indexOf(Event.element(e).className) >= 0 )
			Element.removeClassName( this.m_e, "special" );
			
		this.m_e.style.display="none";
		Event.stopObserving(Event.element(e), 'mousemove', this.updatePosition.bindAsEventListener(this), false);
	},
	updatePosition:function(e){
		this.m_e.style.top=(Event.pointerY(e))+"px";
		this.m_e.style.left=(10+Event.pointerX(e))+"px";
	},
	dispose:function(){
		for(var i = 0; i < this.m_eventobservers.length; i++ ){
			Event.stopObserving( this.m_eventobservers[i], 'mouseover', this.toolTipOver.bindAsEventListener(this), false);
			Event.stopObserving( this.m_eventobservers[i], 'mouseout', this.toolTipOut.bindAsEventListener(this), false);
		}
	}
};
