
/********************************************************************/
/*  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 = 15;
cursor_paddingY = 10;

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){
	x = (navigator.appName.substring(0,3) == "Net") ? e.pageX+cursor_paddingX : event.clientX+document.documentElement.scrollLeft+cursor_paddingX;
	y = (navigator.appName.substring(0,3) == "Net") ? e.pageY+cursor_paddingY : event.clientY+document.documentElement.scrollTop+cursor_paddingY;
	bubble = document.getElementById("ultraliens");
	if(isVisible){
		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;

			/******* DEFINITION DU H1 ******/
			
			// Création du h1
			var h1_node = document.createElement('h1');
			bubble.appendChild(h1_node);
			// Cas par défaut
			h1text = "Lien";
			// Attribution du contenu
			
			if(this.className.indexOf('ultralien_site')>-1){
				h1text = "c  o  r  t  i  x";
			}
			if(this.className.indexOf('ultralien_down')>-1){
				h1text = "";
			}
/*			// Ce cas est à répéter pour tous les styles de liens que vous aurez définis
			if(this.className.indexOf('ultralien_xxx')>-1){
				h1text = "Text du xxx";
			}
*/
			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 ******/

			// Création du p
			var p_node = document.createElement('p');
			bubble.appendChild(p_node);
			
			// Attribution du contenu de l'attribut title du lien initial
			p_contenu = document.createTextNode(this.title);
			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;
}

