
var Tooltip = function(ttSelector, linkSelector, width, showMethod, speed) {

	switch (showMethod) {
		case 'click':
		case 'mouseover':
			break;
		default:
			showMethod = 'mouseover';
	}

	switch (speed) {
		case 'fast':
		case 'normal':
		case 'slow':
			break;
		default:
			if (isNaN(speed)) {
				speed = 'fast';
			}
	}

	jQuery(ttSelector).each(function(index, obj) {
		// events
		var tt = jQuery(this);
		var link = tt.find(linkSelector);
		link.bind(showMethod, function(event) {
			var e = window.event || event;
			var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
			var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
			var ie = navigator.userAgent.indexOf('MSIE') != -1;
			var xmouse = (e.pageX || e.clientX) + (ie ? scrollLeft : 0);
			var ymouse = (e.pageY || e.clientY) + (ie ? scrollTop : 0);
			tt.show().stop().fadeTo(speed, 1);
			tt.css('left', xmouse);
			tt.css('top', ymouse - 10); // - Math.round(tt.height()/2));
		});
		tt.bind('mouseover', function() {
			tt.show().stop().fadeTo(speed, 1);
		});
		tt.bind('mouseout', function() {
			tt.stop().fadeTo(speed, 0, function() { tt.hide(); });
		});

		// init tooltip width
		if (width) {
			tt.css('width', width).css('margin', 0).css('margin-left', -Math.round(width/2));
		}
		tt.removeClass('hidden')
			.css('position', 'absolute')
			.css('opacity', 0)
			.hide(); //.hide();
		tt.css('background', 'white')
			.css('padding', '5px')
			.css('border', '1px solid #FF6600')
			.css('font-weight', 'normal')
			.css('text-align', 'left');

	});

};

/**************
	USAGE:

	<script type="text/javascript">
		//<![CDATA[
		try {
			new Tooltip('.tooltip', '~ a:eq(0), 300);
		} catch (e) {
			alert(e.description || e);
		}
		//]]>
	</script>
**************/