//declaring the class
var LiveTT = Class.create();
//defining the rest of the class implementation
LiveTT.prototype = {
	initialize:function(){
		if (!document.getElementsByTagName){ return; }
		var anchors = document.getElementsByTagName('a');
		anchors = $A(anchors);
		
		if (anchors.length > 0) {
			anchors.each( function(anchor){	
				if(Element.hasClassName(anchor, 'livett')) {				
					//anchor.onclick = function () { myLiveTT.process(this); return false; }
					Event.observe(anchor, 'click', function(event) 
					{
						Event.stop(event);
						var posx = Event.pointerX(event);
						var posy  = Event.pointerY(event);
						
						var Coords = {points: [posx, posy]};
						//console.info(Coords);
						myLiveTT.process(Coords, anchor); 
					}, false);
					
					//anchor.onclick = function() {return false;};
				}
			});
		}
	},
	/*
	bubble: function(event){
		
		var posx = Event.pointerX(event);
		var posy  = Event.pointerY(event);
		
		var Coords = {points: [posx, posy]};
		myLiveTT.process(Coords, anchor); 
	},
	*/
	
	process: function(coords,link){
		//alert(link);
		//href = link.href;
		//anchor.onclick = this.showURL.bindAsEventListener(this);
		var url = "/glosar/getDefinition/" + link.title;
		myLiveTT.showURL(coords, url, link);
	},
	
	showURL: function(coords, url, blink) {
		//builld url
		var myAjax = new Ajax.Request(url,
		{
			onComplete: function(request) { myLiveTT.showResponse(coords, request, blink); }
		});
	},
	
	showResponse: function(coords, Request, link){
		var myBody = document.getElementsByTagName('body')[0];	
		var CloseDefImage = "../img/close.gif";
		var borderSize = 10;

		
		var objDef = document.createElement("div");
		objDef.setAttribute('class','dtooltip');
		objDef.setAttribute('id','bubble_definition');
		objDef.style.display = 'none';
		//objDef.style.visibility = 'hidden';
		//console.info(myAjax);
		objDef.innerHTML = Request.responseText;
		myBody.appendChild(objDef);
	
		//var tp = parseInt(link.offsetTop+10);
		
		//alert(link.offsetTop);
		//alert(link.offsetLeft);
		var dims = Position.cumulativeOffset(link);
	
		
		var tp = coords.points[1];
		var lt = coords.points[0];
		
		objDef.style.left = (lt - 10) + 'px';
		objDef.style.top = (tp - 190) + 'px';
		
		objDef.style.opacity = '.7';
		//objDef.setAttribute('style', 'filter:alpha(opacity:70)');
		
		var objCloseDefNav = document.createElement("div");
		objCloseDefNav.setAttribute('id','closeDef');
		objDef.appendChild(objCloseDefNav);
		
		var objCloseDefLink = document.createElement("a");
		objCloseDefLink.setAttribute('id','closeDefLink');
		objCloseDefLink.setAttribute('href','#');
		objCloseDefLink.setAttribute('style','cursor:pointer;');
		objCloseDefLink.onclick = function() { myLiveTT.end(objDef); return false; }
		objCloseDefNav.appendChild(objCloseDefLink);
	
		var objCloseDefImage = document.createElement("img");
		objCloseDefImage.setAttribute('src', CloseDefImage);
		objCloseDefImage.onclick = function() { myLiveTT.end(objDef); return false; }
		//objCloseDefImage.style.width = '22px';
		//objCloseDefImage.style.height = '22px';
		objCloseDefImage.style.paddingLeft = '200px';
		objCloseDefLink.appendChild(objCloseDefImage);
		
		objCloseDefNav.style.display = 'none';
		
		new Effect.Appear(objDef, 
		{ 
			duration: 0.6, 
			queue:'end', 
			afterFinish: function(){
				//console.log('start rendering Close button...');
				new Effect.Parallel(
					[ new Effect.SlideDown( 'closeDef', { sync: true, from: 0.0, to: 1.0 }), 
					  new Effect.Appear('closeDef', { sync: true }) ], 
					{ duration: 0.65 } 
				);	
			} 
		});
	},
	
	end: function(link) {
		Element.remove(link);
	}
};

// Start the Tooltips in motion
function initLiveTT() 
{ 
	//debugger;
	myLiveTT = new LiveTT;
}
try {
	//addLoadEvent(initLiveTT);	// run initLiveTT onLoad
	Event.observe(window, 'load', initLiveTT, false);	// run initLiveTT onLoad
}
catch (e) { console.log(e)}
