
$(document).ready(function(){

	$("a.tooltip").minitooltip({
       source	: "ajax",
       hook  	: "mouse",
       event 	: "click",
       method	: "GET",
       datatype	: "html",
       timeToHide	: 10000
    });
	
	Shadowbox.init
	({
		handleOversize:     "drag"
	});

	
});


/***
**  JQUERY MINITOOLTIP PLUGIN
**	WRITTEN BY TOM ROMBAUT
**  Version 0.11
**  05/2011
**  DEPENDENCIES : JQUERY 1.3.1+ 
**  tweaked by eljavantol for trilobiet
***/
var MiniTooltip = function(element, options) {
	var conf = $.extend({}, $.fn.minitooltip.defaults, options);
	var trigger = $(element);
	var content = "";
	var loaded = false;
	var timeout = false;
	var tooltip = null;
	var shown = false;
	var vpos = "top";
	var hpos = "right";
	
	var _initialize = function(){
		if(conf.preload == true){
			_load(false);
		}
		if(conf.event == "hover"){
			trigger.mouseover(function(e){
				if(shown && tooltip != null && tooltip.length != 0){
					_clearHideTimer();
				}else{
					_show(e);
				}
			});
			trigger.mouseout(function(e){
				_setHideTimer();
			});
		}
		if(conf.event == "focus"){
			trigger.focus(function(e){
				if(shown && tooltip != null && tooltip.length != 0){
					_clearHideTimer();
				}else{
					_show(e);
				}
			});
			$(document).click(function(e){
				if(e.target != trigger.get(0)){
					_clearHideTimer();
					_hide();
				}
			});
			trigger.blur(function(e){
				_setHideTimer();
			});
		}
		if(conf.event == "click"){
			trigger.click(function(e){
				if(shown && tooltip != null && tooltip.length != 0){
					_clearHideTimer();
					_hide();
				}else{
					_show(e);
				}
				return false;
			});
			$(document).click(function(e){
				if(e.target != trigger.get(0)){
					_clearHideTimer();
					_hide();
				}
			});
		}
		
		$(window).blur(function(){
			_clearHideTimer();
			_hide();
		});
		
	};
	
	var _load = function(show,e){
		if(conf.source == "ajax"){

			if( ! conf.url )
			{
				// take element's href
				conf.url = trigger.attr('href');
			}

			$.ajax({
				type:   conf.method,
				url:   conf.url,
				data:   conf.params,
				dataType:  'html',
				success:  function(data){

				loaded = true;
				var div = $("<div>").html(data);
				content = $(".trgttextblock", div.get(0));

				if(show){
					_show(e);
				}
			}
			}); 
		}else{
			content = trigger.attr(conf.source);
			if(trigger.attr(conf.source)){
				trigger.removeAttr(conf.source);
			}
			loaded = true;
			if(show){
				_show(e);
			}
		}
	}
	
	var _show = function(e){
		
		if(!loaded){
			_load(true,e);
		}else{
			var tooltipHtml = 	'<div class="mini-tooltip">\
									<table cellspacing="0" cellpadding="0">\
										<tr>\
											<td class="c-lt"></td>\
											<td class="b-t" colspan="2"></td>\
											<td class="c-rt"></td>\
										</tr>\
										<tr>\
											<td class="b-l"></td>\
											<td class="mtt-content" colspan="2">\
												<div class="mtt-body"></div>\
											</td>\
											<td class="b-r"></td>\
										</tr>\
										<tr>\
											<td class="c-lb"></td>\
											<td class="a-l">&nbsp;</td>\
											<td class="b-b">&nbsp;</td>\
											<td class="c-rb"></td>\
										</tr>\
									</table>\
								</div>';
			hpos = "right";
			vpos = "top";
			
			tooltip = $(tooltipHtml);
			if(conf.title){
				$(".mtt-body",tooltip).prepend($("<div class='mtt-title'>"+conf.title+"</div>"));
			}
			if(conf.extracss){
				tooltip.css(conf.extracss);
			}
			$(".mtt-body",tooltip).html(content);
			
			/** POSITION **/
			
			$(".mini-tooltip",$("body")).remove();
			$("body").append(tooltip);
			
			var tooltipwidth  = tooltip.width();
			var tooltipheight = tooltip.height();
			var docwidth = $("body").width();
			
			var tooltipLeft = triggerleft = e.pageX;
			var tooltipTop = e.pageY - tooltip.height();
			
			if(conf.hook == "trigger"){
				tooltipLeft = trigger.offset().left + trigger.width();
				tooltipTop 	= trigger.offset().top - tooltip.height();
				triggerleft = trigger.offset().left;
			}
			
			
			/** POSITION TOP **/
			if($(window).scrollTop() > tooltipTop){
				tooltipTop = trigger.offset().top + trigger.height();
				_flipVertical();
			}
			
			/** POSITION LEFT & RIGHT **/
			if(tooltipLeft + tooltipwidth > docwidth){
				if(triggerleft - tooltipwidth > 0){
					tooltipLeft =	triggerleft - tooltipwidth;
					_flipHorizontal();
				}else{
					var tooltipwidth = 250;
					if(triggerleft > tooltipLeft){
						tooltipwidth = triggerleft-10;
						tooltipLeft = triggerleft - tooltipwidth;
						_flipHorizontal();
					}else{
						tooltipwidth = (tooltipLeft - docwidth) - 10;
					}
					tooltip.css("width",tooltipwidth);
				}
			}
			
			if($.browser.msie && $.browser.version < 9){
				$("td",tooltip).each(function(){
					if($(this).css("backgroundImage") != "none"){
						if($(this).hasClass("b-b")){
							var w = tooltip.width() - 39;
							$(this).css("width",w);
						}
						var scrlimg = $(this).css("backgroundImage").replace('url("','').replace('")','');
						$(this).css({
							background	:	"none",
							filter		:	'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+scrlimg+'", sizingMethod="scale")'
						});
					}
				});
			}
			
			tooltip.css({
				left	:	tooltipLeft,
				top		:	tooltipTop + 20,
				opacity	:	0
			});
			tooltip.animate({opacity:1,top:tooltipTop},conf.timeToShow);

			shown = true;
			tooltip.mouseover(function(e){
				if(shown){
					_clearHideTimer();
				}else{
					_show(e);
				}
			});
			tooltip.mouseout(function(e){
				_setHideTimer();
			});
		}
	};
	
	var _flipHorizontal = function(){
		if(vpos == "top"){
			$(".b-b",tooltip).addClass("a-r").removeClass("b-b");
			$(".a-l",tooltip).addClass("b-b").removeClass("a-l");
		}else{
			$(".r-b-b",tooltip).addClass("r-a-r").removeClass("r-b-b");
			$(".r-a-l",tooltip).addClass("r-b-b").removeClass("r-a-l");
		}
		hpos = "left";
	};
	var _flipVertical = function(){
		vpos = "bottom";
		var count = 0;
		$("tr",tooltip).each(function(){
			if(count == 0){
				$(this).html('<td class="r-c-lb"></td>\
							  <td class="r-a-l">&nbsp;</td>\
							  <td class="r-b-b">&nbsp;</td>\
							  <td class="r-c-rb"></td>');
			}
			if(count == 2){
				$(this).html('<td class="r-c-lt"></td>\
							  <td class="r-b-t" colspan="2"></td>\
							  <td class="r-c-rt"></td>');
			}
			count++;
		});
	};
	
	var _hide = function(){
		shown = false;
		timeout = false;
		if(tooltip != null){
			tooltip.remove();
		}
	};
	
	var _clearHideTimer = function(){
		if(timeout){
			clearTimeout(timeout);
			timeout = false;
		}
	};
	
	var _setHideTimer = function(){
		if(!timeout){
			timeout = setTimeout(function(){_hide();},conf.timeToHide);
		}
	};
	_initialize();
	return trigger;
};

/**
**	JQUERY PLUGIN
**/
(function($) {	
	$.fn.minitooltip = function(options) {
		return this.each(function() {
			var element = $(this);
			if (element.data('minitooltip')) return;
			var w = new MiniTooltip(this, options);
			element.data('minitooltip', w);
		});
	};
})(jQuery);

$.fn.minitooltip.defaults = {
	preload				:	false,			//TOOLTIP PRELOAD
	title				:	"",				//TOOLTIP TITLE 
	source				:	"title",		//SOURCE ATTRIBUTE (OR AJAX)
	hook				:	"mouse",		//MOUSE OR TRIGGER
	event				:	"hover",		//HOVER, FOCUS, CLICK
	url					:	false,			//AJAX REQUEST URL
	method				:	"POST",			//AJAX REQUEST METHOD
	datatype			: 	"json",			//AJAX REQUEST DATATYPE
	params				:	{},				//AJAX EXTRA PARAMETERS
	extracss			:	{},				//TOOLTIP OBJECT CSS
	timeToHide			:	500,			//ANIMATION TIME
	timeToShow			:	250				//ANIMATION TIME
};
