// +---------------------------+
// | Liste des modules chargés |
// +---------------------------+

var AL_Liste_librairie;

if (AL_Liste_librairie!=undefined)
  AL_Liste_librairie[AL_Liste_librairie.length]=new AL_Definir_module_librairie("image","V2.0");

// +----------------------------------------+
// | Gestion d'une zone dynamique à l'écran |
// +----------------------------------------+

// fonctions privees : Initialisation des proprietes d'une zone

function AL_Definir_proprietes_position()
{
  this.X = -1;
  this.Y = -1;
  this.Longueur = -1;
  this.Largeur = -1;

  return(this);
}

function AL_Definir_proprietes_clip()
{
  this.X1 = -1;
  this.Y1 = -1;
  this.X2 = -1;
  this.Y2 = -1;

  return(this);
}

function AL_Definir_proprietes_zone()
{
  this.Nom = "";
  this.Valeur = "";
  this.Position = new AL_Definir_proprietes_position();
  this.Clip = new AL_Definir_proprietes_clip();
  this.Visible = false;

  return(this);
}

// création d'une zone (DIV)

function AL_Creer_zone(Nom,X,Y,Longueur,Largeur,Valeur,Visible,Evt_Over,Evt_Out)
{
  var Code_zone;
  
  if (!Navigateur_valide)
    return(false);

  // l'element existe-t'il deja ?
  
  if (document.getElementById(Nom))
    return(false);

  Code_zone='<div id="'+Nom+'" style="position:absolute; top:'+Y+';'+
            ' left:'+X+'; visibility:'+(Visible?"visible":"hidden")+';'+
            ' width:'+Longueur+'; height:'+Largeur+';"';
  if (Evt_Over!=null) Code_zone+=' onMouseOver="'+Evt_Over+'"';
  if (Evt_Out!=null) Code_zone+=' onMouseOut="'+Evt_Out+'"';
  Code_zone+='>'+Valeur+'</div>';

  document.write(Code_zone);

  return(true);
}

// déplacement d'un DIV sur la page Web

function AL_Deplacer_zone(Nom,X,Y)
{
  if (!Navigateur_valide)
    return(false);

  // l'element doit exister ?

  var Zone = document.getElementById(Nom);
  if (!Zone)
    return(false);
    
  Zone.style.top = Y;
  Zone.style.left = X;
  
  return(true);
}

// fonction d'affichage de la zone

function AL_Afficher_zone(Nom,Profondeur)
{
  if (!Navigateur_valide)
    return(false);

  // l'element doit exister ?

  var Zone = document.getElementById(Nom);
  if (!Zone)
    return(false);
    
  Zone.style.visibility="visible";
  if (Profondeur!=null)
    Zone.style.zIndex=Profondeur;
  
  return(true);
}

// fonction rendant invisible une zone

function AL_Cacher_zone(Nom)
{
  if (!Navigateur_valide)
    return(false);

  // l'element doit exister ?

  var Zone = document.getElementById(Nom);
  if (!Zone)
    return(false);
    
  Zone.style.visibility="hidden";

  return(true);
}

// declaration des differentes valeurs de la zone (pour Anciennement Opera <7 seulement)
// fonction obsolète

function AL_Declarer_valeur_zone(Nom,Valeur)
{
  return(true);
}

// modification du contenu de la zone

function AL_Modifier_zone(Nom,Valeur)
{
  if (!Navigateur_valide)
    return(false);

  // l'element doit exister ?

  var Zone = document.getElementById(Nom);
  if (!Zone)
    return(false);
    
  Zone.innerHTML=Valeur;

  return(true);
}

// definit la zone d'affichage de la zone
//(gauche,Haut) - (droite,Bas)

function AL_Definir_clip(Nom,X1,Y1,X2,Y2)
{
  var Propriete = AL_Lire_proprietes_zone(Nom);

  if (!Propriete)
    return(false);

  // reparametrage de la zone de clip

  if (X2<X1) { X=X2; X2=X1; X1=X; }
  if (Y2<Y1) { Y=Y2; Y2=Y1; Y1=Y; }
  
  if (X1<0) X1=0;
  if (Y1<0) Y1=0;
  if (X2<0) X2=0;
  if (Y2<0) Y2=0;
  
  if (X1>Propriete.Position.Longueur) X1=Propriete.Position.Longueur;
  if (Y1>Propriete.Position.Largeur) Y1=Propriete.Position.Largeur;
  if (X2>Propriete.Position.Longueur) X2=Propriete.Position.Longueur;
  if (Y2>Propriete.Position.Largeur) Y2=Propriete.Position.Largeur;

  if (Navigateur_valide)
    document.getElementById(Nom).style.clip = "rect("+Y1+"px "+X2+"px "+Y2+"px "+X1+"px)";

  return(Navigateur_valide);
}

// Lecture des proprietes de la zone

function AL_Lire_proprietes_zone(Nom)
{
  if (!Navigateur_valide)
    return(null);
    
  var Propriete = new AL_Definir_proprietes_zone();

  Propriete.Nom = Nom;

  var Zone = document.getElementById(Nom);

  if (!Zone)
    return(null);
    
  Propriete.Valeur = Zone.innerHTML;
  Propriete.Position.X = Zone.offsetLeft;
  Propriete.Position.Y = Zone.offsetTop;
  Propriete.Visible = (Zone.style.visibility!="hidden");

  var Zone2 = Zone.offsetParent;
  while (!Zone2)
  {
    Propriete.Position.X += Zone2.offsetLeft;
    Propriete.Position.Y += Zone2.offsetTop;

    Zone2 = Zone2.offsetParent;
  }

  if (Compatible_internet)
  {
    Propriete.Position.Longueur = Zone.clientWidth;
    Propriete.Position.Largeur = Zone.clientHeight;
  }
  else
  {
    Propriete.Position.Longueur = Zone.offsetWidth;
    Propriete.Position.Largeur = Zone.offsetHeight;
  }
  
  if (Zone.style.clip=="")
  {
    Propriete.Clip.X1 = 0;
    Propriete.Clip.Y1 = 0;
    Propriete.Clip.X2 = Propriete.Position.Longueur;
    Propriete.Clip.Y2 = Propriete.Position.Largeur;
  }
  else
  {
    Clip = Zone.style.clip.split("rect(")[1].split(" ");
    Propriete.Clip.X1 = parseInt(Clip[3]);
    Propriete.Clip.Y1 = parseInt(Clip[0]);
    Propriete.Clip.X2 = parseInt(Clip[1]);
    Propriete.Clip.Y2 = parseInt(Clip[2]);
  }

  return(Propriete);
}

// +-------------------------------------+
// | Mis en cache d'un ensemble d'images |
// +-------------------------------------+

var AL_Images_chargees=new Array();

function AL_Prechargement_images()
{
  var Args = AL_Prechargement_images.arguments;
  var j=AL_Images_chargees.length;
  
  // initialise le chargement des images

  if (!Navigateur_valide)
    return(-1);

  document.write('<div style="position:absolute; top:0; left:0; visibility:hidden;">');

  for(var i=0; i<Args.length; i++)
  {
    document.write('<img id="AL_Img_'+j+'" name="AL_Img_'+j+'" src="'+Args[i]+'">');
    AL_Images_chargees[j]=Args[i];
    j++;
  }

  document.write('</div>');
  
  return(i);
}

// cette fonction retourne une image qui a été préalablement préchargée

function AL_Rechercher_image(Source)
{
  if (!Navigateur_valide)
    return(null);

  for (var i=0;i<AL_Images_chargees.length;i++)
    if (AL_Images_chargees[i]==Source)
      return(eval("document.images['AL_Img_"+i+"']"));

  return(null);
}