/*  Base javascript functions
 * ---------------------------------------------------------------------------
  20/02/2009 : migration LDO : on retire quelques fonctions pour ne pas avoir de conflit
 */



function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}
// fonction qui charge les images dans le cache
function ant_preload_images(a,txt,mode){
         // imgObjects est une variable globale
         var imgNames=a;
         for (var i = 0; i < imgNames.length; i++)
         {
          imgObjects[i] = new Image();
          imgObjects[i].src = 'data/' + mode + imgNames[i];
          imgObjects[i].alt = txt[i];
          }
         }

function ant_next_img(IDObj,IDClass,MaxItems,Color,TimeOut,Index)
{

  if (Mode == 'start') {  // controle le demarrage et l'arret de l'animation

      var nextit=IDObj+1;
      if (IDObj == (MaxItems-1)) nextit=Index;

      if (document.getElementById(IDClass + "Large")){
          monObj = document.getElementById(IDClass + "Large");
          monObj.src = imgObjects[nextit].src;
          monObj.alt = imgObjects[nextit].alt;
          monObj.title = imgObjects[nextit].alt;
          if (document.getElementById(IDClass + "Text")){
              monObjTxt = document.getElementById(IDClass + "Text");
              monObjTxt.innerHTML = imgObjects[nextit].alt;
              }
          }

      if (document.getElementById(IDClass + "Small" + IDObj)){
          // on remet tous à 0
          for (a=Index;a<MaxItems;a++){
               monObjSmallPrec = document.getElementById(IDClass + "Small" + a);
               monObjSmallPrec.style.border = "0px solid rgb(102,102,102)";
               monObjSmallPrec.style.margin = "5px";
               monObjSmallPrec.style.padding = "0px";
               }
          monObjSmall = document.getElementById(IDClass + "Small" + nextit);
          monObjSmall.style.border = "1px solid #" + Color;
          monObjSmall.style.margin = "3px";
          monObjSmall.style.padding = "1px";
          }

          self.setTimeout('ant_next_img('+nextit+',"'+IDClass+'",'+MaxItems+',"'+Color+'",'+TimeOut+','+Index+')',TimeOut);
      }

  else if (Mode == 'stop') {
       var nextit=IDObj;
       self.setTimeout('ant_next_img('+nextit+',"'+IDClass+'",'+MaxItems+',"'+Color+'",'+TimeOut+','+Index+')',TimeOut);
       }

}

function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   myfield.form.submit();
   return false;
   }
else
   return true;
}


// idem recherche avancée
function submitenter2(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   myfield.form.elements['ant_index'].value=0;
   myfield.form.adminop.value='advanced_search';
   myfield.form.submit();
   return false;
   }
else
   return true;
}

// 12/01/2008 : mise à jour champ texte (quantite dans transactions par ex)
function submitenter_text(myfield,e,it)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   myfield.form.adminop.value='save';
   // alert ('quant ' + myfield.value);
   myfield.form.elements['status_' + it].value=1;
   myfield.form.submit();
   return false;
   }
else
   return true;
}

// Permet de vider le contenu d'une boite de sélection
function antCleanSelectBox(selectid){
      for (x = document.getElementById(selectid).length; x >= 0; x = x - 1) {
             document.getElementById(selectid)[x] = null;
             }
    }

function getXYPosition(e){
         myMouseX=(e||event).clientX;
         myMouseY=(e||event).clientY;
         //if (document.documentElement.scrollTop > 0) {
	 if (document.body.scrollTop > 0) {
             //myMouseY = myMouseY + document.documentElement.scrollTop;
	     myMouseY = myMouseY + document.body.scrollTop;
             }
         return myMouseX;
         }


// Permet de posisition le cursor a la fin d'un champ

function ant_move_cursor(el){
         if (el.createTextRange) {
             var v = el.value;
             var r = el.createTextRange();
             r.moveStart('character', v.length);
             r.select();
             }
         }

/* ------------- 19/10/2007 defilement de texte ------------- */

// Declaration des variables
var brOK=false;
var mie=false;
var vitesse=50;
var loop, timer;

function Navigateur(){
         if (navigator.appName.indexOf("Netscape") > -1) {return "Netscape";}
         if (navigator.appName.indexOf("Explorer") > -1) {return "Explorer";}
         return "Unknown";
}

function Version(){
         return parseFloat(navigator.appVersion)
         }

function checkbrOK(){
         var nav=Navigateur();
         var ver=Version();
         if(nav=="Explorer"){
            mie=true;
            }
         if (ver>=4){
             brOK=true;
             }
         }

// Fonction de creation des objets
function creerObj(obj,cont){
         if (mie) {
             //this.el=document.all[obj];
             this.css=document.all[obj].style;
             this.scrollHeight=document.all[obj].offsetHeight;
             this.clipHeight=document.all[obj].offsetHeight;
             }
         else {
               if (cont!='') {
                   cont='document.'+cont+'.';
                   }
               this.css=eval(cont+'document.'+obj);
               this.scrollHeight=this.css.document.height;
               this.clipHeight=this.css.clip.height;
               }

         this.haut=haut;
         this.bas=bas;
         this.deplace=deplace;
         this.x=0;
         this.y=0;
         eval(this.obj+'=this');
         return this;
         }
function deplace(x,y){
         this.x=x;
         this.y=y;
         this.css.left=this.x
         this.css.top=this.y
         }
function bas(v){
         if(this.y>Container.clipHeight-this.scrollHeight){
            this.deplace(0,this.y-v)
            if(loop) setTimeout(this.obj+".bas("+v+")",vitesse)
            }
         }
function haut(v){
         if(this.y<0){
            this.deplace(0,this.y-v)
            if(loop) setTimeout(this.obj+".haut("+v+")",vitesse)
            }
         }

// Fonction lancant le defilement
function go(vitesse){
         loop=true;
         if(vitesse>0) Texte.bas(vitesse);
         else Texte.haut(vitesse);
         }

// Fonction stoppant le defilement
function stop(){
         loop=false;
         if(timer) clearTimeout(timer);
         }

// Initialisation
function Init(){
         checkbrOK();
         Container=new creerObj('divContainer','');
         Texte=new creerObj('divTexte','divContainer');
         Texte.deplace(0,0);
         }

/* ------------- 19/10/2007 defilement de texte ------------- */

/* -------------- Optimisation curseurs suggest --------------*/

function key_arrow_down(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 40)
   {
   var tmpfield=document.getElementById('suggestions');
   //var list=tmpfield.getElementsByTagName('span');
   var list=tmpfield.childNodes;
   var curhighlight=0;
   var nexthighlight=0;
   for (a=0;a<list.length;a++){
        if (list.item(a).className == 'highlight'){
            curhighlight=a;
            nexthighlight=a+1;
            }
        }
   // alert(list.length);
   // alert(list.item(0).antkey);
   if (curhighlight < (list.length-1)){
       list.item(curhighlight).className = '';
       list.item(nexthighlight).className = 'highlight';
       }
   else if (curhighlight == 0) list.item(curhighlight).className = 'highlight';
   // alert(list.item(0).innerHTML);
   return false;
   }

else if (keycode == 38)
   {
   var tmpfield=document.getElementById('suggestions');
   //var list=tmpfield.getElementsByTagName('span');
   var list=tmpfield.childNodes;
   var curhighlight=0;
   var previoushighlight=0;
   for (a=0;a<list.length;a++){
        if (list.item(a).className == 'highlight'){
            curhighlight=a;
            previoushighlight=a-1;
            }
        }
   // alert(list.length);
   // alert(list.item(0).antkey);
   if (curhighlight > 0){
       list.item(curhighlight).className = '';
       list.item(previoushighlight).className = 'highlight';
       }
   // alert(list.item(0).innerHTML);
   return false;
   }

else if (keycode == 13)
   {
   var tmpfield=document.getElementById('suggestions');
   //var list=tmpfield.getElementsByTagName('span');
   var list=tmpfield.childNodes;
   var curhighlight=0;
   for (a=0;a<list.length;a++){
        if (list.item(a).className == 'highlight'){
            curhighlight=a;
            }
        }
   //alert (list.item(curhighlight).antkey);
   if (list.item(curhighlight).className == 'highlight'){
       extSelectEntry(list.item(curhighlight));
       }

   // alert(list.item(0).innerHTML);
   return false;
   }
else
   return true;
}

function extSelectEntry (elem) {
         document.getElementById('string').value = elem.innerHTML;
         document.getElementById('datalink').value = elem.antkey;

         ant_move_cursor(document.getElementById('string'));
         //remoteSuggest.antGetSizes(elem.antkey,<?php echo $cle_langue;?>);
         // 6/02/2008 : specific Kilobye on lance automatiquement ajout des items que dans le cas des prix
         // updateOp('addallcustom');
         // idem que dans admin-object-header: il faut traiter l'affichage des réductions
         updateOp('search');
         }

// fonction pour écrire des textes verticalement
function writeDown(text) {
 for(i=0; i < text.length; i++)
  document.write(text.charAt(i) + "<br>" )
}

// fonction pour récupérer les positions d'éléments div, ou autre ...

getOffsetPosition = function(inID, inTYPE)
{
 var iVal = 0;
 var oObj = document.getElementById(inID);
 var sType = 'oObj.offset' + inTYPE;
 while (oObj && oObj.tagName != 'BODY') {
  iVal += eval(sType);
  oObj = oObj.offsetParent;
 }
 return iVal;
}


// fonction pour le menus dynamique

function antShowSubmenu(id,posleft){
         // on rend tous les menus invisibles et on montre celui qui est selectionne
         var list=document.getElementsByTagName('div');
         for (a=0;a<list.length;a++){
              if (list[a].className == 'antdynsub'){
                  list[a].style.visibility='hidden';
                  }
              }
         var antlink=document.getElementById('antlink' + id);

         var target=document.getElementById('anttarget' + id);
         if (posleft) {
             var curpos=getOffsetPosition('antlink' + id, 'Left');
             //alert (curpos);
             posleft=posleft + curpos;
             //alert (posleft);
             target.style.left=posleft+'px';
             }
         target.style.visibility='visible';
         }

function antHideSubmenu(id){
         // on rend  invisible le menu selectionne
         var target=document.getElementById('anttarget' + id);
         //alert('test'+id);
         target.style.visibility='hidden';
         }