﻿/* ------------------------------------------------------------------- */
/* Fonction utilisée pour les rollover sur les images / input images 
Utilisation:
Mettre la classe rollover sur l'élément devant changer
Le nom des images doit finir -off.xxx pour l'image par défaut et -on.xxx pour l'image de survol
*/

var rolloverTool = {};
rolloverTool.rollover =
{
   init: function() {
      this.preload();
     
      $(".rollover").hover(
         function () { $(this).attr( 'src', rolloverTool.rollover.newimage($(this).attr('src')) ); },
         function () { $(this).attr( 'src', rolloverTool.rollover.oldimage($(this).attr('src')) ); }
      );
   },

   preload: function() {
      $(window).bind('load', function() {
         $('.rollover').each( function( key, elm ) { $('<img>').attr( 'src', rolloverTool.rollover.newimage( $(this).attr('src') ) ); });
      });
   },
   
   newimage: function( src ) {
      return src.replace(/-off\./, '-on.');
   },

   oldimage: function( src ) {
      return src.replace(/-on\./, '-off.');
   }
};

/* ------------------------------------------------------------------- */
/* Fonction regroupant tous les correctifs pour IE6 uniquement */
function ie6Fixes () {	
	/* Active les boutons vers les sites "professionnel", "association", "particulier" */
	$('#listeSite li').hover(function () {$(this).addClass('liHover');}, function () {$(this).removeClass('liHover');});
}

/* ------------------------------------------------------------------- */
/* Ouvre le lien dans une nouvelle fenêtre */
function ouvrirDansNouvelleFenetre () {
	window.open(this);
	return false;
}
/* ------------------------------------------------------------------- */
/* Déplie ou replie un élément des listes déroulantes */
var lastListeEvent = null;
function getListDepliable (elem) {
	var nbElem = elem.parent().find(".detail").size();
	if (nbElem === 1) {
		return elem.parent();
	}
	else if (elem.parent().tagName === 'body' || nbElem > 1) {
		return false;
	}
	else {
		return getListDepliable(elem.parent());
	}
}
function deplierReplierListe (p_evt) {
	p_evt.preventDefault();
	if (lastListeEvent === null || !(lastListeEvent.type === "focus" && p_evt.type === "click")) {
		var sousMenu = getListDepliable($(this));
		if (sousMenu) {
			var detail = sousMenu.find(".detail");
			if (detail && detail.hasClass("invisible")) {
				detail.removeClass("invisible");
				$(this).removeClass("plus");
				lastListeEvent = p_evt;
			}
			else if (detail && !detail.hasClass("invisible") && p_evt.type !== "focus" ) {
				detail.addClass("invisible");
				$(this).addClass("plus");
				lastListeEvent = p_evt;
			}
			else {
				lastListeEvent = null;
			}
		}
	}
	else {
		lastListeEvent = null;
	}
}
function toutDeplier (p_evt) {
	p_evt.preventDefault();
	var selectedList = $('#' + $(this).attr('rel'));
	if(selectedList) {
		$(selectedList.find('.detail')).removeClass("invisible");
		$(selectedList.find('.triggerDeplier')).removeClass("plus");
	}
}
function toutReplier (p_evt) {
	p_evt.preventDefault();
	var selectedList = $('#' + $(this).attr('rel'));
	
	if(selectedList) {
		$(selectedList.find('.detail')).addClass("invisible");
		$(selectedList.find('.triggerDeplier')).addClass("plus");
	}
}
/* ------------------------------------------------------------------- */
/* Affiche ou masque le bloc de réseaux sociaux */
function afficheReseauxSociaux (evt) {
	evt.preventDefault();
	if ($('#btReseauxSociaux') && !$('#btReseauxSociaux').hasClass('ouvert')) {
		$('#btReseauxSociaux').addClass('ouvert');
	}
}
function masqueReseauxSociaux (evt) {
	evt.preventDefault();
	if ($('#btReseauxSociaux') && $('#btReseauxSociaux').hasClass('ouvert')) {
		$('#btReseauxSociaux').removeClass('ouvert');
	}
}

/* ------------------------------------------------------------------- */
/* Affiche les liens d'accessibilité */
function afficheLienAccessible () {
	if ($(this).hasClass('accessibleHiddenLink')) {
		$(this).removeClass('accessibleHiddenLink');
	}
}
/* ------------------------------------------------------------------- */
/* Info-bulle de définition */
function afficheDefinition (evt) {
	var defId = '#' + $(this).attr('rel');
	if($(defId)) {
		var blocDef = $(defId).parent();
		var newTop = ($(this).position().top - blocDef.height() -10 ) + 'px';
		var newLeft = $(this).position().left + 'px';
		blocDef.css('top', newTop);
		blocDef.css('left', newLeft);
	}
}
function masqueDefinition () {
	var defId = '#' + $(this).attr('rel');
	if($(defId)) {
		$(defId).parent().css ('top', '-9999px');
		$(defId).parent().css ('left', '-9999px');
	}
	
}
/* ------------------------------------------------------------------- */
/* Onglets */
function trouverContenairOnglet (elem) {
	var parentElem = elem.parent();

	if(parentElem.hasClass('contenairOnglet')) {
		return parentElem;
	}
	else if(parentElem.is('body')) {
		return null;
	}
	else {
		return trouverContenairOnglet(parentElem);
	}
}
function afficherOnglet (evt) {
	evt.preventDefault();
	$(this).parent().parent().parent().find('.actif').removeClass('actif');
	$(this).parent().parent().addClass('actif');
	
	
	/* Fix => resize des polices */
	var monContenu = $(this).parent().parent().find('.contenu:first');
	monContenu.css ('left', (0 - monContenu.parent().position().left));
	
	evt.data.contenair.css ('height', ($(this).parent().height() + $(this).parent().parent().find('.contenu').height()));
}
function initListOnglet () {
	$('.listOnglet').each(function () {
			var maListe = $(this);
			var monContenair = maListe.parent();
			maListe.find('.onglet .contenu').each(function() {
					$(this).css ('left', (0 - $(this).parent().position().left));
			});
						
			monContenair.css ('height', (maListe.find('.actif .titreOnglet').height() + maListe.find('.actif .contenu').height()));
			
			maListe.find('.onglet .titreOnglet a').bind ('click', { contenair: monContenair}, afficherOnglet);
			maListe.find('.onglet .titreOnglet a').bind ('focus', { contenair: monContenair}, afficherOnglet);
			
			/* Fix FF2 et IE6 => resize des polices */
			maListe.find('.actif .titreOnglet').css ('width', maListe.find('.actif .titreOnglet').width());
	});
}
/* ------------------------------------------------------------------- */
/* Augmentation et diminuton de la taille des typo */
var tailleDeDepart = null;
function augmenterTailleTypo (evt) {
	evt.preventDefault();
	if ($('#colonne2.accueil').size() > 0) { // Si on est sur la page d'accueil
		$('#colonne1').css('font-size', parseInt($('#colonne1').css('font-size'),0) + 1);
	}
	$('#colonne21').css('font-size', parseInt($('#colonne21').css('font-size'),0) + 1);
	$('#colonne22').css('font-size', parseInt($('#colonne22').css('font-size'),0) + 1);
}
function diminuerTailleTypo (evt) {
	evt.preventDefault();
	if ($('#colonne2.accueil').size() > 0) { // Si on est sur la page d'accueil
		$('#colonne1').css('font-size', parseInt($('#colonne1').css('font-size'),0) - 1);
	}
	$('#colonne21').css('font-size', parseInt($('#colonne21').css('font-size'),0) - 1);
	$('#colonne22').css('font-size', parseInt($('#colonne22').css('font-size'),0) - 1);
}

/* ------------------------------------------------------------------- */
/* Augmentation et diminuton de la taille des typo */
function imprimerPage (evt) {
	evt.preventDefault();
	window.print();
}

/* ------------------------------------------------------------------- */
/* Supprime le contenu d'un champ lorsque le focus arrive dessus */
function supprimerLeContenu (evt) {
	$(this).val('');
}
/* ------------------------------------------------------------------- */
/* Afficher/cacher */
var lastAfficherCacherEvent = null;
function afficherCacher (p_evt, triggerElement, fnc_affiche, fnc_cache) {
	p_evt.preventDefault();
	
	var elem = $('#' + triggerElement.attr('rel'));
	
	if(elem.size() > 0) {
		if (lastAfficherCacherEvent === null || !(lastAfficherCacherEvent.type === "focus" && p_evt.type === "click")) {
			if (elem.hasClass("invisible")) {
				elem.removeClass("invisible");
				fnc_affiche(triggerElement);
				lastAfficherCacherEvent = p_evt;
			}
			else if (!elem.hasClass("invisible") && p_evt.type !== "focus" ) {
				elem.addClass("invisible");
				fnc_cache(triggerElement);
				lastAfficherCacherEvent = p_evt;
			}
			else {
				lastAfficherCacherEvent = null;
			}
		}
		else {
			lastAfficherCacherEvent = null;
		}
	}
}
/* Affiche/cache les plan d'accès */
function afficherCacherPlanAcces (p_evt) {
	afficherCacher (p_evt, $(this),
		function(triggerElement) {
			triggerElement.html(triggerElement.html().replace('Afficher', 'Masquer'));
		},
		function(triggerElement) {
			triggerElement.html(triggerElement.html().replace('Masquer', 'Afficher'));
		});
}
/* Affiche/cache les critères */
function afficherCacherCriteresSupp (p_evt) {
	afficherCacher (p_evt, $(this),
		function(triggerElement) {
			triggerElement.html(triggerElement.html().replace('Plus', 'Moins'));
			triggerElement.removeClass('plus');
		},
		function(triggerElement) {
			triggerElement.html(triggerElement.html().replace('Moins', 'Plus'));
			triggerElement.addClass('plus');
		});
}
/* Affiche/cache les réponses */
function afficherCacherReponse (p_evt) {
	afficherCacher (p_evt, $(this),
		function(triggerElement) {
			triggerElement.removeClass('plus');
			var monContenair = trouverContenairOnglet (triggerElement);
			if(monContenair !== null) {
				var maListe = monContenair.find('.listOnglet');
				monContenair.css ('height', (maListe.find('.actif .titreOnglet').height() + maListe.find('.actif .contenu').height()));
			}
			
		},
		function(triggerElement) {
			triggerElement.addClass('plus');
			var monContenair = trouverContenairOnglet (triggerElement);
			if(monContenair !== null) {
				var maListe = monContenair.find('.listOnglet');
				monContenair.css ('height', (maListe.find('.actif .titreOnglet').height() + maListe.find('.actif .contenu').height()));
			}
		});
}
/* ------------------------------------------------------------------- */
/* Initialise le fonctionnement du glossaire */
function afficherCacherLettre (evt) {
	evt.preventDefault();
	$('#menuLettre .lettres li.actif').removeClass('actif');
	$(this).parent().addClass('actif');
	$('.blocLettre').addClass('invisible');
	var target = $('#' + $(this).attr('rel'));
	target.removeClass('invisible');
}
function afficherToutesLettres (evt) {
	evt.preventDefault();
	$('#menuLettre .lettres li').removeClass('actif');
	$('.blocLettre').removeClass('invisible');
}
function initGlossaire () {
	$('#menuLettre .lettres a').each(function() {
		if(!$(this).parent().hasClass('actif')) {
			var target = $('#' + $(this).attr('rel'));
			target.addClass('invisible');
		}
	});
	$('#menuLettre .lettres a').bind('click', afficherCacherLettre);
	$('#menuLettre .lettres a').bind('focus', afficherCacherLettre);
	$('#menuLettre .triggerAfficherToutesLettres').bind('click', afficherToutesLettres);
	$('#menuLettre .triggerAfficherToutesLettres').bind('focus', afficherToutesLettres);
	
	// ajouter  ce qui génère un click sur le lien "afficher tout"
    $('#menuLettre .triggerAfficherToutesLettres').trigger('click');
}
/* ------------------------------------------------------------------- */
/* Initialise afficher/cacher des extraits des résultats */
var extraitAffiche = true;
function cacheExtraitsResultats (evt) {
	evt.preventDefault();
	if(extraitAffiche) {
		extraitAffiche = false;
		$('.listResultat p').addClass('invisible');
		$(this).addClass('inactif');
		$(this).parent().parent().find('.triggerAfficherExtraitsResultats').removeClass('inactif');
	}
}

function afficheExtraitsResultats (evt) {
	evt.preventDefault();
	if(!extraitAffiche) {
		extraitAffiche = true;
		$('.listResultat p').removeClass('invisible');
		$(this).addClass('inactif');
		$(this).parent().parent().find('.triggerCacherExtraitsResultats').removeClass('inactif');
	}
}

function initAfficheCacheExtraitsResultats () {
 $('.triggerCacherExtraitsResultats').bind ('click', cacheExtraitsResultats);
 $('.triggerAfficherExtraitsResultats').bind ('click', afficheExtraitsResultats);
 $('.triggerAfficherExtraitsResultats').bind ('focus', afficheExtraitsResultats);

 /*$('.triggerCacherExtraitsResultats').trigger('click');*/
 
 extraitAffiche = false; /* pour forcer la mise en gras du lien */
 $('.triggerAfficherExtraitsResultats').trigger('click');
}

/* ------------------------------------------------------------------- */
/* Initialisation de la page */
$(document).ready(function () {
	/* Indique que le javascript est bien activé */
	$('body.noScript').removeClass('noScript');
	
	/* liens d'accessibilité */
	if ($('ul.liensAccessibilite').size() > 0) {
		$('ul.liensAccessibilite a').addClass ('accessibleHiddenLink');
		$('ul.liensAccessibilite a').bind ('focus', afficheLienAccessible);
	}
	
	/* Augmentation et diminuton de la taille des typo */
	$('.triggerAugmTypo').bind('click', augmenterTailleTypo);
	$('.triggerDimTypo').bind('click', diminuerTailleTypo);
	tailleDeDepart = $('#colonne21').css('font-size');
	
	/* Impression */
	$('.triggerImprimerPage').bind('click', imprimerPage);
	
	
	/* initialise le systeme de rollover */
   	rolloverTool.rollover.init();
   
	/* initialise le systeme permettant d'ouvrir les pages dans une nouvelle fenetre */
   $('a.triggerNouvelleFenetre').bind("click", ouvrirDansNouvelleFenetre);
   
   /* Supprime tout le contenu d'un champ au focus */
   $('.triggerSupprimerContenu').bind("focus", supprimerLeContenu);
   
   /* Affiche ou cache les plans d'access */
   $('.triggerAfficherCacherPlanAcces').bind("click", afficherCacherPlanAcces);
   $('.triggerAfficherCacherPlanAcces').bind("focus", afficherCacherPlanAcces);
   $('.triggerAfficherCacherPlanAcces').trigger("click");
   /* Affiche ou cache les réponses */
   $('.triggerAfficherCacherReponse').bind("click", afficherCacherReponse);
   $('.triggerAfficherCacherReponse').bind("focus", afficherCacherReponse);
   $('.triggerAfficherCacherReponse').trigger("click");
   /* Affiche ou cache les critères */
   $('.triggerAfficheCriteresSup').bind("click", afficherCacherCriteresSupp);
   $('.triggerAfficheCriteresSup').bind("focus", afficherCacherCriteresSupp);
   $('.triggerAfficheCriteresSup').trigger("click");
     
   /* Affiche ou cache les extraits des résultats */
   initAfficheCacheExtraitsResultats();
   
	/* Listes dépliantes */
	if ($('.listDepliante').size() > 0) {
		/* on replie toutes les listes */
		$('.listDepliante .detail').each(function () {
			$(this).addClass("invisible");
			$(this).parent().find("a.triggerDeplier").addClass("plus");
		});
		/* on lie la fonction de déplie et repli aux liens */
		$('.listDepliante a.triggerDeplier').bind("click", deplierReplierListe);
		$('.listDepliante a.triggerDeplier').bind("focus", deplierReplierListe);
	}
	$('a.triggerToutDeplier').bind('click', toutDeplier);
	$('a.triggerToutReplier').bind('click', toutReplier);
	
	/* Active le bouton affichant les réseaux sociaux */
	if ($('#btReseauxSociaux').size() > 0) {
		$('a.triggerAfficheReseauxSociaux').bind("click", afficheReseauxSociaux);
		$('a.triggerAfficheReseauxSociaux').bind("focus", afficheReseauxSociaux);
		$('#btReseauxSociaux a.triggerFermerReseauxSociaux').bind("click", masqueReseauxSociaux);
		$('a.triggerAfficheReseauxSociaux').bind("click", masqueFaireUnLien);
		$('a.triggerAfficheReseauxSociaux').bind("focus", masqueFaireUnLien);
	}
	 
	/* 
	SDUL : handlers pour afficher/masque la fenêtre "faire un lien" 
	*/
	if ($('#btFaireUnLien').size() > 0) {
		$('a.triggerAfficheFaireUnLien').bind("click", afficheFaireUnLien);
		$('a.triggerAfficheFaireUnLien').bind("focus", afficheFaireUnLien);
		$('#btFaireUnLien a.triggerFermerFaireUnLien').bind("click", masqueFaireUnLien);
		$('a.triggerAfficheFaireUnLien').bind("click", masqueReseauxSociaux);
		$('a.triggerAfficheFaireUnLien').bind("focus", masqueReseauxSociaux);
		
	}
	
	
	/* Active les infobulles de définitions */
	if ($('div.blocDef').size() > 0) {
		$('a.triggerAfficheDefinition').hover(afficheDefinition, masqueDefinition);
		$('a.triggerAfficheDefinition').bind('click', function (evt) { evt.preventDefault() });
	}
	
	/* Active les onglets */
	if ($('.listOnglet').size() > 0) {
		initListOnglet();
	}
	
	if($('#menuLettre').size() > 0 && $('.blocLettre').size() > 0) {
		initGlossaire();
	}
   
   /* Correctifs pour IE6 */
	if ($.browser.msie && parseInt($.browser.version.substr(0,1),0) <= 6) {
		ie6Fixes ();
	}
	
	/* Affiche un item par défaut -DF - MA- */
   $('.DFouvert').trigger("click");
   $('.DFouvert2').trigger("click");
     	 
	/* Bascule pour affichage du bloc FaireLien */
	$("a.FaireLien").click(function () {
      $(".ZoneAdresse").slideToggle("slow");
	});
	/* $("div.ZoneAdresse").addClass("invisible");*/
	

  });
/* Ajouts SDul pour barre d'outils */
function afficheFaireUnLien (evt) {
	evt.preventDefault();
	if ($('#btFaireUnLien') && !$('#btFaireUnLien').hasClass('ouvert')) {
		$('#btFaireUnLien').addClass('ouvert');				
		$('#urlFaireUnLien').focus(function() {this.select();}); 
	}
	 
	$('#urlFaireUnLien').focus();
}
function masqueFaireUnLien (evt) {
	evt.preventDefault();
	if ($('#btFaireUnLien') && $('#btFaireUnLien').hasClass('ouvert')) {
		$('#btFaireUnLien').removeClass('ouvert');
	}
	$('#urlFaireUnLien').blur();
}
/* Pour les requêtes du moteur de recherche */
function unaccent(str) {
    var s = str.replace(/[ÀÁÂÄàáâä]/g, "a");
    s = s.replace(/[ÈÉÊËèéêë]/g, "e"); 
    s = s.replace(/[ÌÍÎÏìíîï]/g, "i"); 
    s = s.replace(/[ÒÓÔÖòóôö]/g, "o");
    s = s.replace(/[ÙÚÛÜùúûü]/g, "u"); 
    s = s.replace(/[ç]/g, "c");
    s = s.replace(/[Ññ]/g, "n");
    return s;      
}

