/**
 * @author hajinsu
 */
var TextLayer = Class.create({
	initialize: function() {
		var args = $A(arguments);
		if (args.size() == 1)
			this.className = args[0];
		this.layerObj = null;
	},
	
	show: function(obj, messageHtml) {
		if (this.layerObj == null)
			this.layerObj = this.createLayer();
		
		this.currentObject = obj;
		
		this.layerObj.update(messageHtml);
		//this.layerObj.clonePosition(obj, {setWidth: false, setHeight: false, offsetLeft: 0, offsetTop: -10});
		//this.layerObj.show();
		
		this.onMouseMoveHandler = this.onMouseMove.bindAsEventListener(this);
		Event.observe(document, 'mousemove', this.onMouseMoveHandler);
	},
	
	createLayer: function() {
		var layer = new Element('div');
		if (typeof(this.className) == 'string')
			layer.addClassName(this.className);
		layer.setStyle({position: 'absolute', zIndex: 1000, display: 'none'});
		
		document.body.appendChild(layer);
		
		return layer;
	},
	
	onMouseMove: function(e) {
		var eventObj = Event.element(e);
		if (eventObj == this.currentObject || eventObj == this.layerObj) {
			this.layerObj.setStyle({'left': (Event.pointerX(e)) + 'px', 'top': (Event.pointerY(e) - this.layerObj.getHeight() - 5) + 'px'});
			if (!this.layerObj.visible())
				this.layerObj.show();
		} else {
			Event.stopObserving(document, 'mousemove', this.onMouseMoveHandler);
			this.onMouseMoveHandler = null;
			this.layerObj.hide();
		}
	}
});