//+--------------------------------------------------------------------------+
//| tooltips                                                                 |
//| כopyleft [jprado@layer51.com]    									     |
//+--------------------------------------------------------------------------+

// last update 2/9/2006
// todo
// 1. add an attribute option to select event trigger type [mouseover, or click]
// 2. add an attribute option to select initial position of tooltip to be an offset of mouse cursor position
// 3. add an option to hide an already displaying element, and show it back on the out method
// 4. add window extents detection to prevent tooltip being cutoff on right, bottom

var Tooltip = {
	x : 0,
	y : 0,
	tooltip : null,

	prepare: function() {
		if ( !document.getElementById || !document.getElementsByTagName ) {
			return;
		}
		var hrefs = document.getElementsByClassName('tooltip');

		for (var i=0;i<hrefs.length;i++ ) {
			Event.observe(hrefs[i],'mouseover',Tooltip.over, false);
			Event.observe(hrefs[i],'mouseout',Tooltip.out, false);
			Event.observe(hrefs[i],'click', makeFalse, false);
			hrefs[i].removeAttribute('title');
			hrefs[i].removeAttribute('alt');
			var imgs = hrefs[i].getElementsByTagName("IMG");
			for(var j=0;j<imgs.length;j++ ) {
				imgs[j].removeAttribute('title');
				imgs[j].removeAttribute('alt');
			}
			hrefs[i].setAttribute('onclick',"return false");
		}
	},

	show : function(nodeName) {
		var tooltip = document.getElementById(nodeName);
		if( tooltip != null ) {
			tooltip.style.opacity = '.1';
			tooltip.style.display = 'block';
			if (navigator.userAgent.indexOf("Safari") > 0) {
				tooltip.style.marginTop = '20px';
			}
			Tooltip.fade(nodeName,10);
		}
	},

	fade: function(nodeName,opacity) {
		var tooltip = document.getElementById(nodeName);
		var opacity = parseInt(opacity) + (navigator.userAgent.indexOf('MSIE') > 0 ? 35 : 10 );
		if ( opacity < 85 ) {
			tooltip.style.opacity = '.'+opacity;
			tooltip.style.filter = "alpha(opacity:"+opacity+")";
			window.opacityID = setTimeout("Tooltip.fade('" + nodeName + "','"+opacity+"')",5);
		}
		else {
			tooltip.style.opacity = '1';
			tooltip.style.filter = "alpha(opacity:100)";
		}
	},

	over : function(e) {
		Tooltip.tooltip = document.getEventSource(e);
		tooltipID = setTimeout("Tooltip.show('" + Tooltip.tooltip.getAttribute('rel') + "')",100);
	},

	out: function(e) {
		Tooltip.tooltip = document.getEventSource(e);
		if ( window.tooltipID ) {
			clearTimeout(tooltipID);
		}
		if ( window.opacityID ) {
			clearTimeout(opacityID);
		}
		var tooltip = document.getElementById(Tooltip.tooltip.getAttribute('rel'));
		tooltip.style.display = 'none';
		tooltip.style.opacity = '.1';
	}
};

function makeFalse() {
	return false;
}

document.getEventSource = function(e){
	var node = e.target || e.srcElement;
	// safari check
	if (node.nodeType == 3) {
		node = node.parentNode;
	}
	if ( node.nodeName.toLowerCase() == 'a' ) {
		return node;
	} else {
		return node.parentNode;
	}
}

var tooltip_on = new Image();
tooltip_on.src = '/i/icons/tooltip_on.gif';

var tooltip_off = new Image();
tooltip_off.src = '/i/icons/tooltip.gif';

Event.observe(window, 'load', Tooltip.prepare, false);
