var lexikon;

function createLexikon(){
	if ( lexikon ) return lexikon;
	
	lexikon = $('LexikonBox');
	
	lexikon.setInterval = function(interval){
		if ( this.myInterval ) {
			clearInterval(this.myInterval);
		}
		this.myInterval = interval;
	}
	
	lexikon.adjustOpacity = function(delta){
		this.myOpacity += delta;
		
		this.setStyle({
			'opacity':this.myOpacity/100,
			'display':(this.myOpacity > 0?'block':'none')
		});
	}
	
	lexikon.hideMe = function(){
		document.stopObserving('click',hideLexikon);
			
		this.setInterval(setInterval(this.fadeOut.bind(this),100));
	}
	
	lexikon.showMe = function(node,title){
		node = $(node);
		
		var box = node.cumulativeOffset();
		
		this.update(
			'<h5>'+ title +'</h5>'
			+ node.nextSibling.nextSibling.innerHTML
		).setStyle({
			'left':box[0]+'px',
			'top':box[1]+'px'
		});
		
		this.setInterval(setInterval(this.fadeIn.bind(this),50));
	}
	
	lexikon.fadeIn = function(){
		this.adjustOpacity(10);
		if ( this.myOpacity >= 100 ) {
			this.setInterval(null);
			document.observe('click',hideLexikon);
		}
	}
	
	lexikon.fadeOut = function(){
		this.adjustOpacity(-10);
		if ( this.myOpacity <= 0 ) {
			this.setInterval(null);
		}
	}
	
	lexikon.myOpacity = 0;
	
	return lexikon;
}

function hideLexikon(){
	lexikon.hideMe();
}

function showDefinition(node,title){
	createLexikon().showMe(node,title);
}