var tooltip=function(){
	var id = 'tt';
	var top = 10;
	var left = 10;
	var maxw = 300;
	var speed = 10;
	var timer = 20;
	var delay = 10; //500
	var endalpha = 100;
	var alpha = 0;
	var tt,tti,t,r,c,b,d,di,h,delay;
	var ie = document.all ? true : false;
	var isOverElement=false;
	var anker;
	var active_tt='d';
	var active_d;
	var active=true;
	return{
		show:function(x,v,w){
		
			$(x).title=v;
			return true;
			anker=x;
			
			if(tt == null){
				tt = document.createElement('div');
				tt.setAttribute('id',id);
						
				b = document.createElement('div');
				b.setAttribute('id',id + 'hg');
				
				r = document.createElement('div');
				r.setAttribute('id',id + 'wrap');
				
				c = document.createElement('div');
				c.setAttribute('id',id + 'cont');

				d = document.createElement('div');
				d.setAttribute('id',id + 'text');
				
				tt.appendChild(b);
				b.appendChild(r);
				r.appendChild(c);
				
				tt.style.display = 'none';
				d.style.display = 'none';
				
				tt.style.zIndex = 99;
				d.style.zIndex = 99;
				
				document.body.insertBefore(tt, document.body.firstChild);
				document.body.insertBefore(d, document.body.firstChild);
				
				tt.style.opacity = 0;
				tt.style.filter = 'alpha(opacity=0)';
				d.style.opacity = 0;
				d.style.filter = 'alpha(opacity=0)';
				
				Event.observe($(anker), 'mouseover', this.pos);
				
			}
			
			active_tt=tt;
			active_d=d;
			
			
			Event.observe(document, 'mousemove', this.pos);
			tt.style.display = 'block';
			if(ie) d.style.display = 'block';
			d.innerHTML = v;
			c.innerHTML = v;
			tt.style.width = w ? w + 'px' : 'auto';
			if(!w && ie){
				tt.style.width = tt.offsetWidth;
			}
			if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
			h = parseInt(tt.offsetHeight) + top;
			isOverElement=true;
			Event.observe($(anker), 'mouseout', tooltip.hide);
			clearTimeout(active_tt.delay);
			active_tt.delay=setTimeout(function(){		
				clearInterval(active_tt.timer);
				active_tt.timer = setInterval(function(){tooltip.fade(1)},timer);
			},delay);
		},
		
		showImage:function(x,v,w){
				
			anker=x;

			if(tti == null){
				tti = document.createElement('div');
				tti.setAttribute('id',id+'image');

				b = document.createElement('div');
				b.setAttribute('id',id + 'imagehg');

				r = document.createElement('div');
				r.setAttribute('id',id + 'imagewrap');

				c = document.createElement('div');
				c.setAttribute('id',id + 'imagecontent');

				bg = document.createElement('img');
				bg.src = 'fileadmin/templates/images/ajax_loader_icon_big.gif'
				bg.style.position = 'absolute';
				
				i = document.createElement('img');
				ii = document.createElement('img');	

				di = document.createElement('div');
				di.setAttribute('id',id + 'img');

				tti.appendChild(b);	
				b.appendChild(r);
				r.appendChild(c);	
				c.appendChild(i);
	
				di.appendChild(ii);

				tti.style.display = 'none';
				di.style.display = 'none';

				tti.style.zIndex = 99;
				di.style.zIndex = 99;

				document.body.insertBefore(tti, document.body.firstChild);
				document.body.insertBefore(di, document.body.firstChild);
				

				tti.style.opacity = 0;
				tti.style.filter = 'alpha(opacity=0)';
				di.style.opacity = 0;
				di.style.filter = 'alpha(opacity=0)';

				Event.observe($(anker), 'mouseover', this.pos);

			}
			
			

			active_tt=tti;
			active_d=di;


			Event.observe(document, 'mousemove', this.pos);
			
					
			active_tt.style.display = 'block';
			if(ie) active_d.style.display = 'block';
			i.src = v;
			ii.src = i.src;

			active_tt.style.width = w ? w + 'px' : 'auto';
			if(!w && ie){
				active_tt.style.width = active_tt.offsetWidth;
			}
			if(active_tt.offsetWidth > maxw){active_tt.style.width = maxw + 'px'}
			h = parseInt(active_tt.offsetHeight) + top;
			isOverElement=true;
			Event.observe($(anker), 'mouseout', tooltip.hide);
			clearTimeout(active_tt.delay);
			active_tt.delay=setTimeout(function(){		
				clearInterval(active_tt.timer);
				active_tt.timer = setInterval(function(){tooltip.fade(1)},timer);
			},delay);
		},
		
		pos:function(e){
			var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
			var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
			active_tt.style.top = (u - h) + 'px';
			active_tt.style.left = (l + left) + 'px';
			active_d.style.top = (u - h) + 'px';
			active_d.style.left = (l + left) + 'px';
			Event.stopObserving($(anker), 'mouseover', this.pos);
		},
		fade:function(w){
			
			if(isOverElement && active){
			
			var a = alpha;
			if((a != endalpha && w == 1) || (a != 0 && w == -1)){
				var i = speed;
				if(endalpha - a < speed && w == 1){
					i = endalpha - a;
				}else if(alpha < speed && w == -1){
					i = a;
				}
				alpha = a + (i * w);
				active_tt.style.opacity = alpha * .01;
				active_tt.style.filter = 'alpha(opacity=' + alpha + ')';
				active_d.style.opacity = alpha * .01;
				active_d.style.filter = 'alpha(opacity=' + alpha + ')';
			}else{
				clearInterval(active_tt.timer);
				
				if(w == -1){
					active_tt.style.display = 'none';
					active_d.style.display = 'none';
				}
			}
			}
		},
		hide:function(){
				
				if(typeof(active_tt)=='object') {
					i.src = 'fileadmin/templates/images/blind.gif'
					ii.src = i.src;	
					isOverElement=false;
					status=isOverElement;
					clearInterval(active_tt.timer);
					Event.stopObserving($(anker), 'mouseout', tooltip.hide);
					Event.stopObserving(document, 'mousemove', this.pos);
					active_tt.style.opacity = 0;
					active_tt.style.filter = 'alpha(opacity=0)';
					active_d.style.opacity = 0;
					active_d.style.filter = 'alpha(opacity=0)';
					alpha=0;
					active_tt.style.left = '-1000px';
					active_d.style.left = '-1000px';
					//tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
				}
			
		}
	};
}();