﻿Tooltip = function(oGallery){
	this.jTooltip = $('#tooltip');
	this.jContent = this.jTooltip.find('.content');
	this.jText_container = this.jContent.find('.text');
	this.jText = this.jText_container.find('span');

	this.iCorrection_top = 0;
	if($.browser.msie) {
		this.iCorrection_top = -34;
		if(this.jTooltip.parents('#content').hasClass('objects')) {
			this.iCorrection_top = -79;
		}
	}

	this.oGallery = oGallery;

	this.attache_events();
}

Tooltip.prototype = {

	add_text: function(sText){
		this.jText.text(sText);
		this.set_position();
	},

	attache_events: function() {
		var oThis = this;

		this.jTooltip.hover(
			function() {
				clearTimeout(oThis.oGallery.intPreviewTimer);
				clearTimeout(oThis.oGallery.intTooltipTimer);
			},
			function(){
				oThis.oGallery.intTooltipTimer = setTimeout(
					function(){
						oThis.oGallery.setCurrentPreview(null);
						oThis.hide();
					}
					, oThis.oGallery.HOVER_TIMEOUT
				);
			}
		);
	},

	set_position: function() {
		var
			oThis = this,
			iTop = this.get_top();

		this.jTooltip[0].style.marginBottom = iTop + this.iCorrection_top + 'px';

		if(this.getCurrentPreviewPtr().parents('dl').hasClass('col_0')) {
			this.jTooltip.addClass('tooltip_right');
		}
		else {
			this.jTooltip.removeClass('tooltip_right');
		}

		this.jTooltip.removeClass('not_display');

		this.show();
	},

	get_top: function() {
		var
			jCurrent_thumb = this.getCurrentPreviewPtr(),
			jCurrent = jCurrent_thumb,
			iTop = 0;

		do {
			iTop += jCurrent[0].offsetTop;
			jCurrent = jCurrent.parent();
		}

		while(!jCurrent.hasClass('wrap'));

		return - (iTop - jCurrent_thumb[0].offsetHeight + 16);
	},

	get_left: function() {
		var
			jCurrent_thumb = this.getCurrentPreviewPtr(),
			jCurrent = jCurrent_thumb,
			iLeft = 0;

		do {
			iLeft += jCurrent[0].offsetLeft;
			jCurrent = jCurrent.parent();
		}
		while(!jCurrent.hasClass('wrap'));

		return iLeft + jCurrent_thumb[0].offsetWidth/2;
	},

	show: function() {
		var that = this;
		this.jTooltip.removeClass('not_display');

		var iFinish = this.jText[0].offsetWidth + 60;

		if($.browser.msie && $.browser.version == '6.0') {
			iFinish = this.jContent[0].offsetWidth;
		}

		this.jTooltip.stop();
		this.jTooltip.animate({ width: iFinish}, 200);
	},

	hide: function(){
		this.jTooltip.addClass('not_display').removeAttr('style');
	},

	getCurrentPreviewPtr : function(){
		return this.oGallery.getCurrentPreview().jPtr;
	}
}