var Hint = {
	initialize: function () {
		this.element = $('hint_container');
		this.title_element = $('hint_title');
		this.body_element = $('hint_body');
	},

	show: function (event, title, text, element, insist) {
		this.cancelDelayed();
		if (arguments.length < 5) var insist = "none";
		this.title_element.innerHTML = title;
		this.body_element.innerHTML = text;

		var theWidth = 0;
		if (window.innerWidth)
			theWidth = window.innerWidth;
		else if (document.documentElement && document.documentElement.clientWidth)
			theWidth = document.documentElement.clientWidth;
		else if (document.body)
			theWidth = document.body.clientWidth;

		//if (!dnd.dragging)
//			this.element.style.top = Event.pointerY (event) - 32 + 'px';
		//else
		if (element.offsetTop) {
			this.element.style.top = element.offsetTop + 95 + 'px';
		} else
			this.element.style.top = Event.pointerY (event) /*- 35 */+ 'px';

		if (insist == "right" || (Event.pointerX(event) > theWidth / 2 && insist == "none") ) {
			//$('hint_arrow_left').style.visibility = "hidden";
			//$('hint_arrow_right').style.visibility = "";
			this.element.style.left = "";
			if (element.offsetLeft && element.offsetWidth)
				this.element.style.right = theWidth - element.offsetLeft - 15 + 'px';
			else
				this.element.style.right = (theWidth - Event.pointerX (event)) + 'px';

		} else {
			//$('hint_arrow_left').style.visibility = "";
			//$('hint_arrow_right').style.visibility = "hidden";
			if (element.offsetLeft && element.offsetWidth)
				this.element.style.left = element.offsetLeft + element.offsetWidth + 15 + 'px';
			else
				this.element.style.left = Event.pointerX (event) + 10 + 'px';
			this.element.style.right = "";
		}

		if (text.length > 80)
			this.element.style.width="500px";
		else
			this.element.style.width="";
		this.element.style.display = 'block';
	},

	showDelayed: function (event, title, text, element) {
		this.cancelDelayed();
		this.delayed_event = {pageX: Event.pointerX(event), pageY: Event.pointerY(event)};
		this.delayed_title = title;
		this.delayed_text = text;
		this.delayed_element = element;
		this.timer = setTimeout('hint_showDelayed()', 500);
	},

	cancelDelayed: function () {
		clearTimeout(this.timer);
	},

	showDelayed_handler: function () {
		this.show (this.delayed_event, this.delayed_title, this.delayed_text, this.delayed_element);
	},

	hide: function () {
		this.cancelDelayed();
		this.element.style.display = 'none';
	}
}

function hint_showDelayed() {
	Hint.showDelayed_handler();
}