
function createRequestObject()
{
    var http;
    if(window.XMLHttpRequest)
    { // Mozilla, Safari, ...
        xhr = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    { // Internet Explorer
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xhr;
}


function handleAJAXReturn() // permet de vérifier si la réponse est arrivée et effectue le résultat
{
  if(xhr.readyState == 4) // la réponse est arrivée
	    {
		if(xhr.status == 200) // code html qui défini que la requête est OK , prêt à afficher
		{
		    // Utilisation du résultat
		    //document.getElementById('curseur').innerHTML = xhr.responseText;
		    GetId("curseur").innerHTML = xhr.responseText;
		}
	    } 
}

/** retourne la position d'un élément **/
function findPos(element_id)
{
	AObject = getId(element_id);
	
	var posX = 0, posY = 0;
	do
	{
		posX += AObject.offsetLeft;
		posY += AObject.offsetTop;
		AObject = AObject.offsetParent;
	}
	while( AObject != null );
	
	var pos = [];
	pos['X'] = posX;
	pos['Y'] = posY;
	
	return pos;
}

/** retourne la taille d'un élément (plus ses borders) **/
function findSize(element_id)
{
	AObject = getId(element_id);
	
	var sizeX = 0, sizeY = 0;
	
	sizeX += AObject.offsetWidth;
	sizeY += AObject.offsetHeight;
	
	var size = [];
	size['X'] = sizeX;
	size['Y'] = sizeY;
	
	return size;
}

function montre_bulle(id_prog,region,x,y) {
	 
	  if(i==false) {
		manuel=false;
		var cas = '';
		var img_id = 'region_'+region;
		var taille_carte = findSize(img_id);
		
		if(x > taille_carte['X']/2) cas += 'd';
			else cas += 'g';
	  
	// Si il est cacher (la verif n'est qu'une securité) on le rend visible.
		GetId("curseur").style.visibility="visible";
		GetId("curseur").style.display="block";	
		
		xhr = createRequestObject();
		xhr.open("POST","site/includes/cartes/ajax_carte.php",true);
		xhr.onreadystatechange =   handleAJAXReturn;
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
		var data = "id_prog="+id_prog;
		data += "&cas="+cas;
		xhr.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
		i=true;
	  }
}

function montre_bulle_liste(id_prog,x,y,region) {

	
	if(i==false) 
	{
		manuel=true;
		i=true;
	  	var cas = '';
		var img_id = 'region_'+region;
		var taille_carte = findSize(img_id);
		var position = findPos(img_id);
		
		if(x > taille_carte['X']/2) cas += 'd';
			else cas += 'g';
		
		switch(cas)
		{
		case 'g':
			var posX = 26;
			break;
		
		case 'd':
			var posX = -262;
			break;
		}
		
		GetId("curseur").style.left = position['X'] + x + posX +"px";
		GetId("curseur").style.top= position['Y'] + y + -47 +"px";
		
	  	GetId("curseur").style.visibility="visible";
		GetId("curseur").style.display="block";		// Si il est cacher (la verif n'est qu'une securité) on le rend visible.
		xhr = createRequestObject();
		xhr.open("POST","site/includes/cartes/ajax_carte.php",true);
		xhr.onreadystatechange =   handleAJAXReturn;
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // on envoi le header avec la requete
		var data = "id_prog="+id_prog;
		data += "&cas="+cas;
		xhr.send(data); // on envoi des paramètres au serveur , si on en envoi pas il faut mettre "null"
		
	}
}

function cache_bulle() {
	if(i==true) {
	/* 	getId("curseur").className = 'bulle_vide';
		getId("curseur").innerHTML = ''; */
		getId("curseur").style.display = 'none';
		getId("curseur").style.visibility = 'hidden';
		getId("curseur").style.left = 10000;
		getId("curseur").style.top= 10000;
	i=false;
	}
}

function GetId(id)
{
	return document.getElementById(id);
}

var i=false; // La variable i nous dit si la bulle est visible ou non
var manuel=false;
	

 function move(e) {
	  if(manuel == false)
	  {
		if(i==true) 
		{  // Si la bulle est visible, on calcul en temps reel sa position ideale
		
		var cas = GetId("cas").innerHTML;
			if (navigator.appName!="Microsoft Internet Explorer") 
			{ // Si on est pas sous IE
		
				if(cas == 'g')
				{
					GetId("curseur").style.left=e.pageX + 25+"px";
				}
				else if(cas == 'd')
				{
					GetId("curseur").style.left=e.pageX + -275+"px";
				}
				GetId("curseur").style.top=e.pageY + -55+"px";
			}
			else 
			{ 
				if(document.documentElement.clientWidth>0) 
				{
					if(cas == 'g')
					{
						GetId("curseur").style.left= 25+event.x+document.documentElement.scrollLeft+"px";
					}
					else if(cas == 'd')
					{
						GetId("curseur").style.left= -275+event.x+document.documentElement.scrollLeft+"px";
					}
					
					GetId("curseur").style.top=-55+event.y+document.documentElement.scrollTop+"px";
				}
				else 
				{
					if(cas == 'g')
					{
						GetId("curseur").style.left=25+event.x+document.body.scrollLeft+"px";
					}
					else if(cas == 'd')
					{
						GetId("curseur").style.left=-275+event.x+document.body.scrollLeft+"px";
					}
					GetId("curseur").style.top=-55+event.y+document.body.scrollTop+"px";
				}
			}
		}
	}
}


document.onmousemove=move; // des que la souris bouge, on appelle la fonction move pour mettre a jour la position de la bulle.
