(function($) {
	$.fn.tooltip = function(options)
	{
		//Combine the passed in options with the default settings
		settings = jQuery.extend({
			toolBoxId: '#tooltip',
			tipEvent: 'hover',		// values 'click' default: 'hover'
			distanceX: 70,
			distanceY: -125,
			
			hideDelay: 500,
			hideDelayTimer: null
		//	,
			
		//	beingShown: false,
		//	shown: false
		}, options);
		//TooltipHelper.settings = settings;

		var tooltipBox   = jQuery(settings.toolBoxId);
		var tooltipInner = jQuery(this).next('.tooltip-txt');		
	    if(settings.tipEvent=='click')
		{
	    	jQuery(this).click(function(e) {
				setTooltip(e, jQuery(this))
				jQuery('.tt-bu-close', tooltipBox).show().click(TooltipHelper.hideTooltip);
				return false;
			});
		} else {
			jQuery(this).hover(function(e) {
				setTooltip(e, jQuery(this));
			})
			.mouseout(TooltipHelper.hideTooltip);
		}
		
	
        function setTooltip(event, currItem) // , currWidth
		{
			var mouse_event = event;			
			
			
			//console.log( jQuery(currItem).next('.tooltip-txt').width() );
		
			// stops the hide event if we move from the trigger to the popup element
			if (settings.hideDelayTimer) clearTimeout(settings.hideDelayTimer);

			// don't trigger the animation again if we're being shown, or already visible
			//if (settings.beingShown || settings.shown) {
			if (TooltipHelper.showingTooltip) {
				TooltipHelper.hideTooltip();
				return false;
			} 
			else {
                //settings.beingShown = true;
				TooltipHelper.setShowing(tooltipBox);

				tooltipInner = jQuery(currItem).next('.tooltip-txt');
				tooltipInner.width( jQuery(currItem).next('.tooltip-txt').width() );
				
				jQuery(settings.toolBoxId+" .tooltip-cnt").html(tooltipInner.html());
			
                // reset position of popup box
				TooltipHelper.updateTooltipPosition(mouse_event, tooltipBox, tooltipInner, settings);
				jQuery(tooltipBox).css('z-index', '9998').show(); // dst: fixed z-index to have this topmost
				
            }
        }
 	};
})(jQuery);


var TooltipHelper = {
	globalSettings: null,
	showingTooltip: false,
	currTooltip: null,
	curr247Tooltip: null,
	curr247TooltipHideTimer: null,
	
	setShowing: function(tooltip) {
		TooltipHelper.currTooltip 		= tooltip;
		TooltipHelper.showingTooltip 	= true;
	},
	setNotShowing: function() {
		TooltipHelper.currTooltip 		= null;
		TooltipHelper.showingTooltip 	= false;
	},	

	hideTooltip: function(event)
	{
		jQuery('.tooltip-cnt', TooltipHelper.currTooltip).empty();
		jQuery('.tt-bu-close', TooltipHelper.currTooltip).hide();
		jQuery(TooltipHelper.currTooltip).hide();
		TooltipHelper.setNotShowing();
		return false;
	},

	updateTooltipPosition: function(event, tooltipBox, tooltipInner, settings)
	{
		var windowSize = TooltipHelper.getWindowSize();		
		if (settings.usePageNotEventOffset) {
			jQuery(tooltipBox).css("left", settings.pageX - tooltipInner.width() + settings.distanceX);
			jQuery(tooltipBox).css("top", settings.distanceY);
		} else {
			jQuery(tooltipBox).css("left", event.pageX - tooltipInner.width() + settings.distanceX );
			jQuery(tooltipBox).css("top", event.pageY - tooltipInner.height() + settings.distanceY );
		}
	},
	
	getWindowSize: function() {
		return {
			scrollLeft: jQuery(window).scrollLeft(),
			scrollTop: jQuery(window).scrollTop(),
			width: jQuery(window).width(),
			height: jQuery(window).height()
		};
	},
	
	getPopupSize: function(tooltipInner) {
		return {
			width: tooltipInner.width(),
			height: tooltipInner.height()
		};
	},
	
	show247Tooltip: function(tooltipId, mouse_event, settings) {
		// hide other showing Tooltips...
		TooltipHelper.hide247Tooltip(mouse_event);

		// adjust settings if necessary...
		if (settings == null) {
			settings = defaultSettings;
		}
		// read the elements we need...
		var toolBoxId       = "#tooltip_247";
		var tooltipBox 		= jQuery(toolBoxId);
		var tooltipInner 	= jQuery(tooltipId);

		// setup tooltip
		jQuery(".tooltip-cnt", tooltipBox).html(tooltipInner.html());
		jQuery('.tt-bu-close', tooltipBox).hide();

		// update dimensions
		var oHeight = jQuery('td.tt-right', tooltipBox).get(0).offsetHeight;
		jQuery('.tt-left div').height(oHeight);
		jQuery('.tt-right div').height(oHeight);
		// correct position
		TooltipHelper.updateTooltipPosition(mouse_event, tooltipBox, tooltipInner, settings);
		// set this as current tooltip
		TooltipHelper.curr247Tooltip = tooltipBox;
		// show immediately and hide after 3.5 seconds
		TooltipHelper.curr247Tooltip.show();
		TooltipHelper.curr247TooltipHideTimer = window.setTimeout(function() { TooltipHelper.curr247Tooltip.hide(); }, 3500);
		// kills the transparency in IE:
		//tooltipBox.show().fadeTo(3500, 1, function() { jQuery(this).hide(); });
	},
	hide247Tooltip: function(event) {
		if (TooltipHelper.curr247Tooltip != null) {
			jQuery('.tooltip-cnt', TooltipHelper.curr247Tooltip).empty();
			jQuery(TooltipHelper.curr247Tooltip).hide();

			if (TooltipHelper.curr247TooltipHideTimer != null) {
				window.clearTimeout(TooltipHelper.curr247TooltipHideTimer);
			}
			TooltipHelper.curr247TooltipHideTimer 	= null;
			TooltipHelper.curr247Tooltip 			= null;
		}
		return false;
	}
};
var overlay;
var container;
var lbHolder;
var lbContent;
function lightbox(lbHolderId, lbContentId)
{
    //overlay 	= jQuery(jQuery('<div id="overlay"><!--[if lte IE 6]><iframe></iframe><![endif]--></div>'));
    container 	= jQuery(jQuery('<div id="lightbox"></div>'));
    overlay     = jQuery("#overlay");
    //container   = jQuery("#lightbox");
	lbHolder 	= jQuery(lbHolderId);
    lbContent 	= jQuery(lbContentId, lbHolder);
    
    jQuery('body').append(container); //.append(overlay)
    var winSize = TooltipHelper.getWindowSize();
    container.css({
        'top': Math.round(winSize.scrollTop + 150) + 'px',
        'left': Math.round((winSize.width - 645) / 2) + 'px', /*lbHolder.outerWidth()*/
        'margin-top': 0, 
        'margin-left': 0/*,
        'width': lbHolder.outerWidth() + 'px'*/
    });
    container.append(lbContent);
    if (ms247.mustLoginDisablesPageUsingOverlay) {
    	overlay.width(winSize.width).height(jQuery('html').height()).show().fadeTo('fast', lb_opacity);
    }
    container.show();
    //lightbox_hideAfterTimeout();
    jQuery('.lb-bu-close', container).click(function() {
    	lightbox_hide();
    });
}
function lightbox_hide() {
    lbHolder.append(lbContent);
    container.fadeOut();//.remove();
    if (ms247.mustLoginDisablesPageUsingOverlay) {
    	overlay.fadeOut();//.remove();
    }
    lbHolder.hide();
    ms247.lightboxClosingCallback();
}
function lightbox_hideAfterTimeout() {
	var someTimer = window.setTimeout(function() { lightbox_hide(); }, 3000);
}
