/******************************************************************************/
/* RATP / DRYADE (www.dryade.net) : Ensemble des javascripts de Piviweb et Proxi                */
/******************************************************************************/


//////////////////////////// GESTION DE LA CARTO ///////////////////////////////
// Niveau d'echelle courant
var NiveauEchelle;
var AfficherReseau;
var NombreEchelle = 5; // nombre d'echelle

///////////////// GESTION DU LOADING /////////////////

/**
* Positionnenant du loading
*/
function PositionLoad()
{	
	// Recherche de l'element loading
	var divLoading=gE('loading');
	
	// On cherche la position (x et y ) de la carto
	var xPos=findPosX(document.images["CartoImage"]);
    var yPos=findPosY(document.images["CartoImage"]);
	
	// On positionne l'image loading un peu plus bas que la carto
	sX(divLoading, xPos + 5);
    sY(divLoading, yPos + 5);
	
	// Affichage
	sE(divLoading);	
};

////////////////// ROUTINES DHTML GENERIQUES ///////////////

/**
* Retourne la position d'un objet en X
*/
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
};

/**
 * Retourne la position d'un element en Y
 */
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
};

var d=document;
var ns=d.layers;
var op=navigator.userAgent.indexOf('Opera')!=-1;

/**
* Retourne un element
*/
function gE(e,f){
   if(document.layers)
   {
      f=(f)?f:self;
      var V=f.document.layers;
      if(V[e])
      	 return V[e];
      for(var W=0;W<V.length;)
      t=gE(e,V[W++]);
      return t;
   }
   else if(d.all)
   {
      return d.all[e]; 
   }
   else 
   {
      return d.getElementById(e);
   }
};

/**
* Positionne un objet en x
*/
function sX(e,x){ document.layers?e.left=x:op?e.style.pixelLeft=x:e.style.left=x+'px'; };

/**
* Positionne un objet en y
*/
function sY(e,y){document.layers?e.top=y:op?e.style.pixelTop=y:e.style.top=y+ 'px';};

/**
* Cache un objet
*/
function hE(e){document.layers?e.visibility='hide':e.style.visibility='hidden';};

/**
* Montre un objet
*/
function sE(e){document.layers?e.visibility='show':e.style.visibility='visible';};


////////////////

/**
* Action pour rendre visible un div
* TODO a supprimer
*/
function montre(id) 
{
   var objet = new getObj(id);
   objet.style.position="absolute";
   objet.style.top = "160px";
   objet.style.left = "192px";
   objet.style.display="block";
};

// Action pour cacher un div
function cache(id) 
{
	if (document.getElementById) 
    {
		document.getElementById(id).style.display="none";
	} 
	else if (document.all) 
	{
	    document.all[id].style.display="none";
	} 
	else if (document.layers) 
	{
	    document.layers[id].display="none";
	}
};

// R?cup?ration d'un objet sur la carte en fonction de son identifiants
function getObj(name)
{
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
   	this.obj = document.layers[name];
   	this.style = document.layers[name];
  }
};


/**
* Fixe le tooltip associ? au poi d'identifiant id
*/
var fixedPOI = new Array();
function fixe_poi(id, deltax, deltay)
{
   if (fixedPOI[id])
   {
   		cache(id);
   		fixedPOI[id] = 0;
   }
   else
   {
   		montre_poi(id, deltax, deltay);
      	fixedPOI[id] = 1;
   }
};

/**
* Affiche le tooltip associ? au poi d'identifiant id
*/
function montre_poi(id, deltax, deltay)
{
   // R?cup?ration du div
   var divPoi=gE(id);
   
   // Recup?ration des coordonn?es de l'image Plan PNG 
   var x = findPosX(document.Quartier.CartoImage);
   var y = findPosY(document.Quartier.CartoImage);

   // Calcul de l'abscisse du tooltip		
   var pos = x + deltax;
   
   // decalage de l'info bulle pour qu'elle reste dans l'image
   var tooltipSize = 200; // largeur du tooltip en pixel
   var iconSize = 22; // largeur d'un POI en pixel
   if(pos+tooltipSize>x+document.Quartier.CartoImage.width)
      pos = x+deltax-tooltipSize-iconSize;
   
   // Positionnement du tooltip   
   sX(divPoi, pos);
   sY(divPoi, y + deltay);
	
   // Affichage	
   divPoi.style.display="inline";
   
   //Tester la modification du style print
};

/**
* Masque le tooltip d'un POI
*/
function cache_poi(id)
{
   if (!fixedPOI[id])
   {
   		cache(id);
   }
};

/**
*
*/
function forcecache_poi(id)
{
   	cache(id);
   	fixedPOI[id] = 0;
};

