/******************************************
# Auteur : Julien Theler - www.twiip.ch
# Contact : julien.theler@twiip.ch
# Licence : CC-by-nc
******************************************/

function bulleinfo(element, text){
	var is_ie = ((navigator.userAgent.toLowerCase().indexOf("msie") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1));
	
	//Suppression du title de l'élément pour éviter une superposition
	element.title = '';
	
	//Création d'une div provisoire
	var bulleinfo = document.createElement('div');
	bulleinfo.innerHTML = text;
	bulleinfo.id = 'bulleinfo';
	bulleinfo.style.display = 'none';
	bulleinfo.style.opacity = '0';
	bulleinfo.style.filter = 'alpha(opacity=0)';
	document.body.appendChild(bulleinfo);
	
	bulleinfo.style.position = 'absolute';
	document.onmousemove = function(e){
		x = (!is_ie ? e.pageX : event.x+document.documentElement.scrollLeft)+15;
		y = (!is_ie ? e.pageY : event.y+document.documentElement.scrollTop)+15;
		
		var windowWidth = (!is_ie ? window.innerWidth : document.documentElement.clientWidth);
		var windowHeight = (!is_ie ? window.innerHeight : document.documentElement.clientHeight);
		var scrollLeft = document.documentElement.scrollLeft;
		var scrollTop = document.documentElement.scrollTop;
		
		//Calcul des dimensions de l'bulleinfo
		bulleinfo.style.display = '';
		var infoWidth = bulleinfo.offsetWidth;
		var infoHeight = bulleinfo.offsetHeight;
		bulleinfo.style.display = 'none';
		
		/*On vérifie que l'bulleinfo ne sorte pas de la fenêtre*/
		if((x+infoWidth) > (windowWidth+scrollLeft)){
			x = (!is_ie ? e.pageX : event.x+document.documentElement.scrollLeft)-infoWidth-5;
		}
		if((y+infoHeight) > (windowHeight+scrollTop)){
			y = (!is_ie ? e.pageY : event.y+document.documentElement.scrollTop)-infoHeight-5;
		}
		
		bulleinfo.style.left = x+'px';
		bulleinfo.style.top = y+'px';
		bulleinfo.style.display = '';
	}

	for(i=0; i<=100; i+=10){
		var time = ((i/20)*30);
		setTimeout('opacity('+i+', \'bulleinfo\');', time);
	}


	//Ajout de la fermeture lorsque la souris quitte l'élément
	element.onmouseout = function(){
		for(i=0; i<=100; i+=10){
			var time = ((i/20)*30);
			var opacity = (100-i);
			setTimeout('opacity('+opacity+', \'bulleinfo\', 1);', time);
		}
	};
	
	//Fonction servant à faire varier l'opacité
	opacity = function(opacity, id, close){
			var bulleinfo = document.getElementById(id);
			bulleinfo.style.opacity = (opacity/100);
			bulleinfo.style.filter = 'alpha(opacity='+opacity+')';
			if(opacity == 0 && close){
				document.body.removeChild(bulleinfo); //Suppression de la div provisoire
				document.onmousemove = '';
			}
	}
}
