/**
 * @FunctionFR initForm » Crée un objet HTTP, utilisé pour générer dynamiquement du code (AJAX)
 * @FunctionEN initForm » Create an HTTP object used to generate dynamically code (AJAX)
 */
function getHTTPObject()
{
   var xmlhttp;
   /*@cc_on
   @if (@_jscript_version >= 5)
   try
   {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   }
   catch (e)
   {
      try
      {
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (E)
      {
         xmlhttp = false;
      }
   }
   @else
      xmlhttp = false;
   @end @*/
   if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
   {
      try
      {
         xmlhttp = new XMLHttpRequest();
      }
      catch (e)
      {
         xmlhttp = false;
      }
   }
   return xmlhttp;
}


/**
 * @FunctionFR updatePage » Met à jour une page (AJAX)
 * @FunctionEN updatePage » Update a page (AJAX)
 * @ParamFR asPage String / » Nom de la page
 * @ParamEN asPage String / » Name of the page
 * @ParamFR asZoneIdHtml String / » Identifiant HTML de la partie à modifier
 * @ParamEN asZoneIdHtml String / » HTML ID of the part to modify
 * @ParamFR abLoading Boolean / » Affichage ou non de l'animation de chargement
 * @ParamEN abLoading Boolean / » Display or not of the animation of loading
 */
function updatePage(asPage)
{
   var asZoneIdHtml = "";
   if (updatePage.arguments.length > 1)
   {
      asZoneIdHtml = updatePage.arguments[1];
   }
   abLoading = false;
   if (updatePage.arguments.length > 2)
   {
      abLoading = updatePage.arguments[2];
   }
   var http = getHTTPObject();
   http.open("GET", asPage, true);
   /*http.onreadystatechange = handleHttpResponse;*/
   http.onreadystatechange = function()
   {
      if (http.readyState == 4)
      {
         if (http.status == 200)
         {
            var responseText = http.responseText;
            if (asZoneIdHtml == "") // Javascript
            {
               while (responseText.indexOf('<script type=\"text/javascript\">\n') != -1)
               {
                  responseText = responseText.replace('<script type=\"text/javascript\">\n', '');
               }
               while (responseText.indexOf('</script>\n') != -1)
               {
                  responseText = responseText.replace('</script>\n', '');
               }
               eval(responseText);
            }
            else // HTML
            {
               if (responseText.substr(0,9) == '<div id="')
               {
                  responseText = responseText.replace('<div id="' + asZoneIdHtml + '">\n', '');
                  responseText = responseText.substr(0, responseText.length-7);
               }
               if (document.getElementById(asZoneIdHtml))
               {
                  document.getElementById(asZoneIdHtml).innerHTML = responseText;
               }
               else if (parent.document.getElementById(asZoneIdHtml))
               {
                  parent.document.getElementById(asZoneIdHtml).innerHTML = responseText;
               }
               else if (window.opener && window.opener.document.getElementById(asZoneIdHtml))
               {
                  window.opener.document.getElementById(asZoneIdHtml).innerHTML = responseText;
               }
               
               var laJavascript = responseText.split('<script type=\"text/javascript\">\n');
               for (var index=0 ; index < laJavascript.length ; index++)
               {
                  var laJavascriptCode = laJavascript[index].split('</script>\n');
                  if (laJavascriptCode.length > 1)
                  {
                     eval(laJavascriptCode[0]);
                  }
               }
            }
         }
         else
         {
            //alert('Un problème est survenu dans le chargement des données.');
         }
      }
      else if (http.readyState == 1)
      {
         if (asZoneIdHtml != "" || abLoading)
         {
            if (document.getElementById('ajaxLoading'))
            {
               document.getElementById('nbAjaxCall').innerHTML = parseInt(document.getElementById('nbAjaxCall').innerHTML)+1;
               document.getElementById('ajaxLoading').style.display = 'block';
            }
            else if (parent.document.getElementById('ajaxLoading'))
            {
               parent.document.getElementById('nbAjaxCall').innerHTML = parseInt(parent.document.getElementById('nbAjaxCall').innerHTML)+1;
               parent.document.getElementById('ajaxLoading').style.display = 'block';
            }
         }
      }
   }
   http.send(null);
   working = true;
}

function openWindow(asPage, anWidth, anHeight, asName, anPosX, anPosY)
{
   if (!anWidth)
   {
      anWidth = screen.width;
   }
   if (!anHeight)
   {
      anHeight = screen.height;
   }
   if (!anPosX)
   {
      anPosX = (screen.width - anWidth) / 2;
   }
   if (!anPosY)
   {
      anPosY = (screen.height - anHeight) / 2;
   }
   if (!asName)
   {
      asName = 'window1';
   }
   window1 = window.open(asPage,asName,"toolbar=no,location=no,dependent=yes,directories=no,status=yes,menubar=no,resizable=yes,scrollbars=yes,left="+anPosX+",screenX="+anPosX+",top="+anPosY+",screenY="+anPosY+",width="+anWidth+",height="+anHeight);
}

function openMenu(index, cpt)
{
   var contentHeightMenu = document.getElementById('menu'+index).offsetHeight;
   if (contentHeightMenu != 32 && cpt+25 == contentHeightMenu)
   {
      document.getElementById('menu'+index).style.height = (contentHeightMenu+1)+'px';
      document.getElementById('left'+index).style.height = (contentHeightMenu+1)+'px';
      document.getElementById('right'+index).style.height = (contentHeightMenu+1)+'px';
      document.getElementById('middle'+index).style.marginTop = (cpt+1)+'px';
      setTimeout("openMenu(" + index + ", " + (cpt+1) + ")", 25);
   }
}

function closeMenu(index)
{
   var contentHeightMenu = document.getElementById('menu'+index).offsetHeight;
   if (contentHeightMenu != 25)
   {
      var cpt = contentHeightMenu - 25;
      document.getElementById('menu'+index).style.height = (contentHeightMenu-1)+'px';
      document.getElementById('left'+index).style.height = (contentHeightMenu-1)+'px';
      document.getElementById('right'+index).style.height = (contentHeightMenu-1)+'px';
      document.getElementById('middle'+index).style.marginTop = (cpt-1)+'px';
      setTimeout("closeMenu(" + index + ")", 25);
   }
}

// Les 3 fonctions permettent de gérer les événements de la souris sur le menu

function containsDOM(aoContainer, aoContainee)
{
   var isParent = false;
   do
   {
      if ((isParent = aoContainer == aoContainee))
      {
         break;
      }
      aoContainee = aoContainee.parentNode;
   }
   while (aoContainee != null);
   return isParent;
}

function checkMouseEnter(aoContainer, aoEvt)
{
   if (aoContainer.contains && aoEvt.fromElement)
   {
      return !aoContainer.contains(aoEvt.fromElement);
   }
   else if (aoEvt.relatedTarget)
   {
      return !containsDOM(aoContainer, aoEvt.relatedTarget);
   }
}

function checkMouseLeave(aoContainer, aoEvt)
{
   if (aoContainer.contains && aoEvt.toElement)
   {
      return !aoContainer.contains(aoEvt.toElement);
   }
   else if (aoEvt.relatedTarget)
   {
      return !containsDOM(aoContainer, aoEvt.relatedTarget);
   }
}

function formatNumber(asNumber) {
   var nbDecimales = 2, carPoint = ',', carSepMilliers = ' ';
   var nbArgs = arguments.length;
   asNumber = asNumber.toString();
   asNumber = asNumber.replace(" ","");
   asNumber = asNumber.replace(",",".");
   anNumber = parseFloat(asNumber);
   if (isNaN(anNumber)) return false;
   var intNb = parseInt(anNumber);
   var str = intNb.toString();
   var n = str.length;
   var puiss = Math.pow(10, nbDecimales);
   return ((n % 3) ? str.substr(0, n % 3) + carSepMilliers : '')
           + (n > 2 ? str.substr(n % 3).match(new RegExp('[0-9]{3}', 'g')).join(carSepMilliers) : "")
           + carPoint + (parseInt(puiss * anNumber.toFixed(nbDecimales) - puiss * intNb) == 0 ? '00' : parseInt(puiss * anNumber.toFixed(nbDecimales) - puiss * intNb));
}

function ctlTextArea(asFieldName, anMaxLength)
{
   var txt = document.principal.elements[asFieldName].value;
   var nb  = document.principal.elements[asFieldName].value.length;
   if (nb > anMaxLength)
   {
      document.principal.elements[asFieldName].value = txt.substring(0, anMaxLength);
      nb = anMaxLength;
   }
   if (document.getElementById(asFieldName + 'NbChar'))
   {
      document.getElementById(asFieldName + 'NbChar').innerHTML = anMaxLength - document.principal.elements[asFieldName].value.length;
   }
}
