var tooltipElement = null;
var lastTooltipElement = null;
var h_tooltip = null;
var h_closeTooltip = null;

function initializeTooltips() {
	closeTooltip();
	$(".tt").bind("mouseenter", function(e){
		$(this).addClass("ui-widget-content").addClass('ui-state-hover');
		
		if (!$(this).hasClass("ui-draggable")) {
			$(this).draggable({ containment: 'window', cursor: 'move', revert: false, helper: function(event) {
				return $('<span style="z-index:10;" class="ui-widget">' + $(this).text() + '</span>').appendTo($('body'));
				} 
			});
		}
		
		lastTooltipElement = tooltipElement;
		tooltipElement = this;
		if (h_tooltip)
			window.clearTimeout(h_tooltip);				
		h_tooltip = window.setTimeout(showTooltip, 1000);				
	});								 
	$(".tt").bind("mouseleave", function(e){
		$(this).removeClass("ui-widget-content").removeClass('ui-state-hover');
		if (h_tooltip)
			window.clearTimeout(h_tooltip);				
	});
}

function showTooltip() {
	var fastOpen = false;
	if ($('#searchTooltip').dialog('isOpen')) {
		if (lastTooltipElement && lastTooltipElement == tooltipElement) {
			if (h_closeTooltip)
				window.clearTimeout(h_closeTooltip);				
			h_closeTooltip = window.setTimeout(closeTooltip, 50000);				
			return;
		}
	    $('#searchTooltip').dialog('option', 'hide', null);
		$('#searchTooltip').dialog('close');
		fastOpen = true;
	}

	$("#searchTooltip").dialog('option', 'title', $("#searchTooltipTitle").text() + '"' + $(tooltipElement).text() + '"');		
	if (fastOpen) {
    	$('#searchTooltip').dialog('option', 'show', null);
	} else {
    	$('#searchTooltip').dialog('option', 'show', 'slide');
	}
	$.ajax({
		type: "GET",
		url: "searchresultCounter.html",
		data: { search: $(tooltipElement).text() },
		dataType: "json",
		async: false,
		success: function(json){
			$("#searchTooltip").empty();
			$table = $("<table style='width:100%'/>").appendTo($("#searchTooltip"));
			for (var i = 0; i < json.results.counters.length; i++) {
				var row = $("<tr><td style='width=100%'>"  + json.results.counters[i].text + "</td><td>" + json.results.counters[i].counter + "</td></tr>").appendTo($table);
				if (json.results.counters[i].counter > 0) {
					row
						.bind("click",  { search: $(tooltipElement).text(), field: json.results.counters[i].field }, function(e){
							$.ajax({
								type: "GET",
								url: "setTooltipQuery.html",
								data: { field: e.data.field, search: e.data.search },
								dataType: "json",
								async: false
							});	
							location.href = 'search.html?tab=1';
							//$('.ui-layout-west').tabs('select', 1);
						})
						.hover( function(e) { $(this).addClass("ui-state-hover")},
								function(e) { $(this).removeClass("ui-state-hover")})
						.addClass("ui-state-default");
				} else {
					row.addClass("ui-state-disabled");
				}					
			}
		}		     
	});	
	var wnd = $(window), doc = $(document),
		pMaxTop = 0, pMaxLeft = 0;
	pMaxLeft += ((wnd.width() - $("#searchTooltip").dialog('option', 'width')) - 20);
	pMaxTop += ((wnd.height() - $("#searchTooltip").dialog('option', 'height')) - 20);
	var parentPosition = $(".ui-layout-center").position();
	var position = $(tooltipElement).position();
	$("#searchTooltip").dialog('option', 'position', [
	                                          		Math.min(parentPosition.left + position.left + 10, pMaxLeft), 
	                                          		Math.min(parentPosition.top + position.top + 20, pMaxTop)
	                                          		]);
    $('#searchTooltip').dialog('option', 'hide', null);
	$("#searchTooltip").dialog('open');				
	if (h_closeTooltip)
		window.clearTimeout(h_closeTooltip);				
	h_closeTooltip = window.setTimeout(closeTooltip, 5000);				
}

function closeTooltip() {
	if ($('#searchTooltip').dialog('isOpen')) {
		if(!$.browser.msie) {
	    	$('#searchTooltip').dialog('option', 'hide', 'drop');
		}
		$('#searchTooltip').dialog('close');
	}
}

$.fn.insertAtCaret = function (myValue) {
	return this.each(function(){
		// IE support
		if (document.selection) {
			this.focus();
			sel = document.selection.createRange();
			sel.text = myValue;
			this.focus();
		}
		// MOZILLA / NETSCAPE support
		else if (this.selectionStart || this.selectionStart ==
		'0') {
			var startPos = this.selectionStart;
			var endPos = this.selectionEnd;
			var scrollTop = this.scrollTop;
			this.value = this.value.substring(0,
			startPos)+ myValue+
			this.value.substring(endPos,this.value.length);
			this.focus();
			this.selectionStart = startPos +
			myValue.length;
			this.selectionEnd = startPos +
			myValue.length;
			this.scrollTop = scrollTop;
		} else {
			this.value += myValue;
			this.focus();
		}
	});
	};
