/* JSLINT */
/*global $ */

var intervalId = -1;
var speed = 3;
var intervalDelay = 20;

var listToMove = null;
var minTop = 0;


/* stop les défilements */
function stopDefil () {
	clearInterval(intervalId);
	intervalId = -1;
	return false;
}
/* Fait défiler la listes des résultats vers le haut */
function defilHaut () {
	var listTop = parseInt(listToMove.css("top"), 0);

	if (listTop - speed > minTop) {
		listToMove.css("top", (listTop - speed) + "px");
	}
	else if (listTop - speed < minTop) {
		listToMove.css("top", minTop + "px");
	}

	if (listTop === minTop) {
		stopDefil ();
	}
}
function defilHautHandler () {
	if (intervalId !== -1) {
		stopDefil ();
	}
	
	listToMove = $(this).parent().parent().find('.listeResultats');

	var wrapperList = $(this).parent().parent().find('.blocListResultats');
	
	minTop = wrapperList.height() - listToMove.height();
	
	if (minTop < 0) {
		intervalId = setInterval (defilHaut, intervalDelay);
	}
}
/* Fait défiler la listes des résultats vers le bas */
function defilBas () {
	var listTop = parseInt(listToMove.css("top"), 0);
	
	if (listTop + speed < 0) {
		listToMove.css("top", (listTop + speed) + "px");
	}
	else if (listTop + speed > 0 ) {
		listToMove.css("top", "0px");
	}
	
	if (listTop === 0) {
		stopDefil ();
	}
}
function defilBasHandler () {
	if (intervalId !== -1) {
		stopDefil ();
	}
	
	listToMove = $(this).parent().parent().find('.listeResultats');
	var wrapperList = $(this).parent().parent().find('.blocListResultats');
	
	minTop = wrapperList.height() - listToMove.height();

	if (minTop < 0) {
		intervalId = setInterval (defilBas, intervalDelay);
	}
}

/* Affiche l'onglet de recherche d'itinéraire et cache celui de recherche de restaurant */
function openItineraireTab() {
	if ($('#liMapTab').hasClass("tabOpened")) {
		$('#liMapTab').removeClass("tabOpened");
	}
	if (!$('#liItineraireTab').hasClass("tabOpened")) {
		$('#liItineraireTab').addClass("tabOpened");
	}
	return false;
}
/* Affiche l'onglet de recherche de restaurant et cache celui de recherche d'itinéraire */
function openMapTab() {
	if (!$('#liMapTab').hasClass("tabOpened")) {
		$('#liMapTab').addClass("tabOpened");
	}
	if ($('#liItineraireTab').hasClass("tabOpened")) {
		$('#liItineraireTab').removeClass("tabOpened");
	}
	
	return false;
}

/* Affiche le formulaire de recherche d'itinéraire */
function deplierFormItineraire () {
	$('#tabItineraire').addClass("formOpened");
	$('#btDeplierFormulaire img').attr("src", "FRONT/QUICK/images/map/bt_plus.gif");
	$('#btDeplierFormulaire').unbind("click", deplierFormItineraire);
	$('#btDeplierFormulaire').bind("click", replierFormItineraire);
}
/* Cache le formulaire de recherche d'itinéraire */
function replierFormItineraire () {
	$('#tabItineraire').removeClass("formOpened");
	$('#btDeplierFormulaire img').attr("src", "FRONT/QUICK/images/map/bt_moins.gif");
	$('#btDeplierFormulaire').unbind("click", replierFormItineraire);
	$('#btDeplierFormulaire').bind("click", deplierFormItineraire);
	
	/* vérification de la position de la liste */
	var listTop = parseInt($("#resultatsItineraire .listeResultats").css("top"), 0);
	var newTop = $("#resultatsItineraire .blocListResultats").height() - $("#resultatsItineraire .listeResultats").height();
	
	if (listTop < newTop && newTop < 0) {
		$("#resultatsItineraire .listeResultats").css("top", newTop);
	}
}

/* Initialisation de la page */
$(document).ready (function () {
	/* Javascript présent */
	$('div.noScript').removeClass("noScript");
	
	/* Défilement des listes */
	$('a.triggerDefilHaut').bind("mousedown", defilHautHandler);
	$('a.triggerDefilHaut').bind("mouseup", stopDefil);
	$('a.triggerDefilBas').bind("mousedown", defilBasHandler);
	$('a.triggerDefilBas').bind("mouseup", stopDefil);
	
	/* Affichage des onglets */
	$('#btMap a').bind("click", openMapTab);
	$('#btItineraire a').bind("click", openItineraireTab);
	
	/* Affichage du formulaire d'itinéraire */
	$('#btDeplierFormulaire').bind("click", replierFormItineraire);
	
});