/**
 * job-engine.js
 *
 * gestion des tooltips sur les listes de résultats des moteurs de recherche de spotemploi
 * @author collomb
 * @version 1.0
 */

$(document).ready(onJEDocumentReady);

var tooltips = new Array();
var $lastLink = null;
var $currentLink = null;
var $currentLinkWithTooltip = null;
var $divTooltip;
var $divBody;

/**
 * Execution automatique au chargement de la page
 */
function onJEDocumentReady() {
	$("td.tdTooltip").hover(onLinkOver, onLinkOut);
	$divBody = $("#divBody");
	$divBody.append('<div id="divTooltip"></div>');
	$divTooltip = $("#divTooltip").hover(function(){$currentLink = $lastLink;}, onLinkOut);
	$("#divBody tr").hover(function() {$(this).addClass('hl')}, function() {$(this).removeClass('hl')});
	$("#function").inputLabel("fonction, poste, mot-clé");
	$("#location").inputLabel("ville, département, région ou code postal");
}

/**
 * Le pointeur entre sur un lien
 */
function onLinkOver() {
	$currentLink = $(this);
	$lastLink = $currentLink;
	setTimeout(showTooltip, 150);
}

/**
 * Le pointeur sort d'un lien
 */
function onLinkOut() {
	$currentLink = null;
	setTimeout(hideTooltip, 100);
}

/**
 * Repositionne le tooltip en fonction de se hauteur
 */
function replaceTooltip() {
	var divBodyTop = $divBody.offset().top;
	var currentLinkTop = $currentLink.offset().top;
	var currentLinkHeight = $currentLink.outerHeight();
	var tooltipHeight = $divTooltip.outerHeight();
	var top = ($divBody.height() > currentLinkTop - divBodyTop + tooltipHeight) ?
		currentLinkTop - divBodyTop + 5  :
		currentLinkTop - divBodyTop - tooltipHeight - 5 + currentLinkHeight;
	$divTooltip.css("top", top);
}

/**
 * Affiche le tooltip
 */
function showTooltip() {
	if ($currentLink != null) {
		$(".tooltiped").removeClass("tooltiped");
		$currentLink.parent().addClass("tooltiped");
		var href = $currentLink.find("a:first").attr("href");
		var target = $currentLink.find("a:first").attr("target");
		if (tooltips[href]) {
			$divTooltip.html(tooltips[href]).show();
			replaceTooltip();
		} else {
			$divTooltip.html('<p id="pTooltipLoading"><img src="resources/pictures/forms/loading.gif" alt="Chargement..." /></p>').show();
			$.getJSON(href.replace('www.spotemploi.', document.location.href.match(/www\.[a-z]*\./)) + '?preview', {"href":href, 'target':target}, fillTooltip);
			replaceTooltip();
		}
	}
}

/**
 * Remplit le tooltip (après réception des données en AJAX)
 */
function fillTooltip(data) {
	tooltips[data.href] = data.html;
	if ($currentLink != null) {
		var href = $currentLink.find("a:first").attr("href");
		if (data.href == href) {
			$divTooltip.html(data.html);		
			replaceTooltip();
		}
	}
}

/**
 * Cache le tooltip
 */
function hideTooltip() {
	if ($currentLink == null) {
		$divTooltip.hide();
		$(".tooltiped").removeClass("tooltiped");
	}
}