
/********************************************************************/
/*  ULTRALIENS - CSS                                                */
/*  License Creative Commons BY                                     */
/*  http://creativecommons.org/licenses/by/2.0/fr/                  */
/*  01 février 2006 - V1.1                                          */
/*  Grégory Clément - YellowPimento - http://www.yellowpimento.com  */
/*  Plus d'info : http://www.ultraliens.com                         */
/********************************************************************/


// Espacement entre le curseur et l'ultralien
cursor_paddingX = 4;
cursor_paddingY = 17;

isVisible = false;
ie = document.all;

// Récupère les coordonnées de la souris
// les affecte au style du div ultraliens

function get_mouse(e){
	if (typeof document.body.style.maxHeight != "undefined") {
      // IE 7, mozilla, safari, opera 9
	  taille_scroll_top = document.documentElement.scrollTop;
    } else {
      // IE6, et versions antérieures
	  taille_scroll_top = document.body.scrollTop;
    }
	x = (navigator.appName.substring(0,3) == "Net") ? e.pageX+cursor_paddingX : event.x+document.body.scrollLeft+cursor_paddingX;
	y = (navigator.appName.substring(0,3) == "Net") ? e.pageY+cursor_paddingY : event.y+taille_scroll_top+cursor_paddingY;
	bubble = document.getElementById("ultraliens");
	if(isVisible){
		x = x - 30;  // pour decaler la bulle sur la gauche
		bubble.style.left = x + "px";
		bubble.style.top = y + "px";
	} else {
		// pour éviter les scrolls intempestifs quand le curseur n'est pas sur un lien
		bubble.style.left = "-999em";
		bubble.style.top = "0";
	}
}


// Création des ultraliens
function ultraliens() {

	var liens = document.getElementsByTagName('a');
	var bubble = document.getElementById("ultraliens");

	for( var nblien = 0 ; nblien < liens.length ; nblien++){
		if(liens[nblien].className.indexOf('ultralien')>-1){

		liens[nblien].onmouseover = function(){

			isVisible = true;

			// On recupere le title du lien pour afficher titre et texte (separes par /)
			texte_bulle = this.title;

            pos_separateur = texte_bulle.indexOf("#");

			/******* DEFINITION DU H1 ******/
			
			// Création du h1
			//var h1_node = document.createElement('h1');
			//bubble.appendChild(h1_node);
			// Cas par défaut
			//h1text = texte_bulle.substr(0,pos_separateur);
			//texte_bulle = texte_bulle.substr(pos_separateur+1,texte_bulle.length);

			// recupere les infos a afficher en roll-over : produit, categorie, format, reference
			var infos_article = new Array();
			cpt = 0;
			while(pos_separateur > 0) {
				infos_article[cpt] = texte_bulle.substr(0,pos_separateur);
				texte_bulle = texte_bulle.substr(pos_separateur+1,texte_bulle.length);
				pos_separateur = texte_bulle.indexOf("#");
				cpt++;
			}
			infos_article[cpt] = texte_bulle;
			
			if(this.className.indexOf('ultralien_externe')>-1){
				// ici on ajoute un texte dans le cas d'une nouvelle fenêtre
				h1text += " (nouvelle fenêtre)";
			}
			//h1_contenu = document.createTextNode(h1text);
			//bubble.firstChild.appendChild(h1_contenu);

			// Attribution de la classe
			// ATTENTION : vous pouvez aussi définir un style différent pour chaque h1 utilisé ici, puisqu'on y adjoint la classe.
			//bubble.firstChild.className = this.className;



			/******* DEFINITION DU CAS EXTERNE (DIV) ******/

			// Création du div
			//if(this.className.indexOf('ultralien_externe')>-1){
				//var div_node = document.createElement('div');
				//bubble.appendChild(div_node);
				// Attribution de la class "ultralien_externe"
				//bubble.lastChild.className = "ultralien_externe";
			//}
			
			/******* DEFINITION DU DECOR (DIV) ******/
			// Attention à bien faire correspondre chaque définition avec la CSS
			// Création du div
			var div_node = document.createElement('div');
			bubble.appendChild(div_node);
			// Attribution de la class sans "ultralien_externe"
			bubble.lastChild.className = (this.className.indexOf('ultralien_externe')>-1?this.className.substr(0,this.className.indexOf('ultralien_externe')-1):this.className);
			
			/******* DEFINITION DU P ******/

			for( var cpt = 0 ; cpt < infos_article.length ; cpt++){
				var texte_cour = infos_article[cpt];
				var debut_texte = texte_cour.substring(0,1);
				if (debut_texte=='*'){
					var p_node = document.createElement('h1');
					long = texte_cour.length;
					texte_cour = texte_cour.substr(1,long-1);
				}else{
					var p_node = document.createElement('p');
				}
				// Création du p
				bubble.appendChild(p_node);
			
				// Attribution du contenu de l'attribut title du lien initial
				//p_contenu = document.createTextNode(texte_bulle);
				p_contenu = document.createTextNode(texte_cour);
				bubble.lastChild.appendChild(p_contenu);

				// Attribution de la class
				bubble.lastChild.className = this.className;
			}
			
			
			
			/******* AFFICHAGE DE L'ULTRALIEN ******/
			bubble.style.visibility = "visible";
			// On sauvegarde le title du lien pour le réaffecter ensuite
			texte = this.title;
			// On vide le title pour éviter l'occurence
			this.title = "";
		}



		
		liens[nblien].onmouseout = function(){

			isVisible = false;
			// On efface tous les éléments créés dans le onmouseover
			while(bubble.childNodes[0])
				bubble.removeChild(bubble.childNodes[0]);
			bubble.style.visibility = "hidden";
			//on réaffecte le title au lien
			if(this.title.length==0) this.title = texte;
		}



		// ouverture dans un lien externe
		if(liens[nblien].className.indexOf('ultralien_externe')>-1){
			liens[nblien].onclick = function(){
				window.open(this.href);
				return false; 
			}
		}
		}
	}

}


// Initialisation des ultraliens
// Attention à ne pas utiliser plusieurs "window.onload" !
// Il sera alors préférable de copier la ligne ci-dessous dans votre document principal et y adjoindre les commandes supplémentaires désirées.
window.onload = function(){
	ultraliens();
	if(!ie){document.captureEvents(Event.MOUSEMOVE);}
	document.onmousemove = get_mouse;
}

