function tooltip(div_input_id)
{
	var max_width = 300;
	var container_id = 'tooltip';
	var is_init = false;
	var div = null;
	var div_id = div_input_id;
	var div_content = null;
	var td_parent = null;
	var tr_parent = null;
	var td_parent_title = '';
	var tr_parent_title = '';

	function init()
    {
		if (is_init) {
			return;
		}

		var div_element = null;

		div_element = cJsLib.$(div_id);

		if (!div_element) {
			return;
		}

		div = cJsLib.createElement('div', {'id' : container_id});

		div_content = cJsLib.createElement('span', {});
		div.appendChild(div_content);

		var div_lt = cJsLib.createElement('div', {'id' : 'tooltip-lt'});
		div.appendChild(div_lt);

		var div_rt = cJsLib.createElement('div', {'id' : 'tooltip-rt'});
		div.appendChild(div_rt);

		var div_lb = cJsLib.createElement('div', {'id' : 'tooltip-lb'});
		div.appendChild(div_lb);

		var div_cb = cJsLib.createElement('div', {'id' : 'tooltip-cb'});
		div.appendChild(div_cb);

		var div_rb = cJsLib.createElement('div', {'id' : 'tooltip-rb'});
		div.appendChild(div_rb);

		div_element.appendChild(div);

		is_init = true;
	}

	this.show = function(elm, elm_event)
    {
		if (!is_init) {
			return;
		}

		var title = elm.title;
		var title_length = title.length;

		if (title.length > 0) {
			var x = parseInt(elm_event.clientX);
			var y = parseInt(elm_event.clientY);

			if (typeof window.pageYOffset != 'undefined') {
				var window_top = window.pageYOffset;
				var window_left = window.pageXOffset;
			} else {
				var window_top = document.documentElement.scrollTop;
				var window_left = document.documentElement.scrollLeft;
			}

			div_content.innerHTML = title.replace(/\n/g, "<br \/>");
			elm.title = '';

			var span_parent = elm.parentNode;

			td_parent = span_parent.parentNode;
			td_parent_title = td_parent.title;
			td_parent.title = '';

			tr_parent = td_parent.parentNode;
			tr_parent_title = tr_parent.title;
			tr_parent.title = '';

			div.style.display = 'block';
			div.style.width = div.offsetWidth + 'px';

			// IE6 fixes
			document.getElementById(container_id + '-lt').style.height = div.offsetHeight
					+ 'px';
			document.getElementById(container_id + '-rt').style.height = div.offsetHeight
					+ 'px';
			document.getElementById(container_id + '-cb').style.width = div.offsetWidth
					+ 'px';

			var div_width = div.offsetWidth;
			if (div_width > max_width) {
				div_width = max_width;
				div.style.width = max_width + 'px';
			}

            eSize = cJsLib.getElementSize(div);
            
			div.style.zIndex = '999';
			div.style.top    = (y + 5 + window_top) + 'px';
			div.style.left   = (x + window_left - 10 - eSize.width) + 'px';
            
			div.focus();
		}
	}

	this.hide = function(elm)
    {
		if (!is_init)
			return;

		var title = div_content.innerHTML.replace(/<br( \/){0,1}>/gi, "\n");
		if (title.length > 0) {
			if (elm.title == '')
				elm.title = title;

			div.style.display = 'none';
			div.style.width = 'auto';
			div_content.innerHTML = '';

			if (td_parent.title == '') {
				td_parent.title = td_parent_title;
			}
			if (tr_parent.title == '') {
				tr_parent.title = tr_parent_title;
			}
		}
	}

	init();
}
