/////////////////////////////////////////////////////////////////////////////////
// AJOUTER PAR FG LE 02/02/07
/////////////////////////////////////////////////////////////////////////////////
var anneeDeb = 2000;
var anneeFin = 2050;

var imgLoadAjax = 'ajaxloader';
var ErrorAjaxBox = 'ajaxerror';

var moisannees = new Array();
moisannees[1] = 'Janvier';
moisannees[2] = 'Fevrier';
moisannees[3] = 'Mars';
moisannees[4] = 'Avril';
moisannees[5] = 'Mai';
moisannees[6] = 'Juin';
moisannees[7] = 'Juillet';
moisannees[8] = 'Aout';
moisannees[9] = 'Septembre';
moisannees[10] = 'Octobre';
moisannees[11] = 'Novembre';
moisannees[12] = 'Decembre';

var moiscours = new Array();
moiscours[1] = 'Jan';
moiscours[2] = 'Fev';
moiscours[3] = 'Mar';
moiscours[4] = 'Avr';
moiscours[5] = 'Mai';
moiscours[6] = 'Jun';
moiscours[7] = 'Jui';
moiscours[8] = 'Aou';
moiscours[9] = 'Sep';
moiscours[10] = 'Oct';
moiscours[11] = 'Nov';
moiscours[12] = 'Dec';


//////////////////////////////////////////////////////////
///////         Générateur de Session_ID           ///////
//////////////////////////////////////////////////////////
function newSessionID() {
  var dt = new Date();
  var stmp = new String (Math.random());

  return 'ATG' + dt.getTime() + '_' + stmp.slice(10,16) ;
}


//////////////////////////////////////////////////////////
////////////         Fonctions AJAX           ////////////
//////////////////////////////////////////////////////////
var xhr = new Array; // Tableau nommé regroupant les objets AJAX

function DispatchAjaxResponse(obj_id, items, DispatchParams)
{
  try
  {
    OnDispatchAjaxResponse(obj_id, items, DispatchParams)
  }
  catch (e) {
    HideAjaxLoader (obj_id);
    throw(e);
  }
  HideAjaxLoader (obj_id);

  xhr[obj_id]=null;
}


function callAjax (url_ajax, obj_id, params, typeResp, noeu, waitTheEnd, DispatchParams)
{
  ShowAjaxLoader(obj_id);

  if (! xhr[obj_id])
  {
    xhr[obj_id] = getXMLHttpRequest();
  }

  var httpreq = xhr[obj_id];

  if (!typeResp) {
    typeResp='item';
  }

  if (waitTheEnd) {
    httpreq.open("POST", url_ajax, false);
  }
  else {
    httpreq.open("POST", url_ajax, true);
  }
  httpreq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  httpreq.setRequestHeader('Content-encoding', 'iso-8859-15');
  httpreq.setRequestHeader("Connection", "close");
  if (params) {
    httpreq.setRequestHeader("Content-length", params.length);
  }
  httpreq.setRequestHeader("Connection", "close");

  httpreq.onreadystatechange = function() {
    if(httpreq.readyState == 4 && httpreq.status == 200) {
      var response = httpreq.responseXML;
      try {
        if (typeResp == 'noeu') {
          var items = response.getElementsByTagName(noeu);
        }
        else if (typeResp == 'item') {
          var items = response.getElementsByTagName("item");
        }
        else if (typeResp == 'row') {
          items = response.getElementsByTagName("ROW");
        }
        else if (typeResp == 'onerow') {
          items = response.getElementsByTagName("ROW")[0];
        }
        else if (typeResp == 'text') {
          items = httpreq.responseText;
          items = items.replace( RegExp('&amp;',"gi") ,"&");
        }
      }
      catch(e) {
        document.getElementById(ErrorAjaxBox).getElementsByTagName('p')[0].innerHTML = 'Erreur AJAX ' + obj_id  + ' : ' + e.message + '\n' + httpreq.responseText;
        document.getElementById(ErrorAjaxBox).style.display = 'block';
        HideAjaxLoader (obj_id);
      }
      DispatchAjaxResponse(obj_id, items, DispatchParams);
    }
    else if(httpreq.readyState == 4 && httpreq.status == 500) {
      document.getElementById(ErrorAjaxBox).getElementsByTagName('p')[0].innerHTML = 'Erreur  AJAX ' + obj_id  + '\n' + httpreq.responseText;
      document.getElementById(ErrorAjaxBox).style.display = 'block';
      HideAjaxLoader (obj_id);
    }
  }
  httpreq.send(params);
}


function ShowAjaxLoader(obj_id)
{
  if (!document.getElementById('ajaxloaders')) { return; }

  if (document.getElementById('ajaxloader_' + obj_id)) {
    document.getElementById('ajaxloader_' + obj_id).style.display = '';
  }
  else {
    var aAt = new Array;
    aAt['id']    = 'ajaxloader_' + obj_id;
    aAt['alt']   = 'chargement en cours...';
    aAt['title'] = 'chargement en cours...';
    aAt['class'] = 'ajaxloader';
    aAt['src']   = 'images/ajax-loader.gif';
    CreerBalise (document.getElementById('ajaxloaders'), 'img', aAt, '');
  }
}

function HideAjaxLoader(obj_id)
{
  if (document.getElementById('ajaxloader_' + obj_id))  {
    document.getElementById('ajaxloader_' + obj_id).style.display = 'none';
  }
}

function getXMLHttpRequest() {
  var xhrres = null;

  if(window.XMLHttpRequest) {
    // Pour mozilla / firefox / IE7 / etc...
    xhrres = new XMLHttpRequest();
    isOldIE = false;
  }
  else if(window.ActiveXObject) {
    // pour Internet Explorer
    isOldIE = true;
    try {
       xhrres = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) {
      try {
        xhrres = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e) {  }
    }
  }

  if  (xhrres==null) {
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  }

  return xhrres;
}

function GetNodeVal (n_item, n_name, txtformat) {
  var retval='';

  if (!n_item) { return ''};

  if  (n_item.attributes.getNamedItem(n_name.toUpperCase())) {
    if  (n_item.attributes.getNamedItem(n_name.toUpperCase()).firstChild) {
      retval = n_item.attributes.getNamedItem(n_name.toUpperCase()).firstChild.nodeValue;
    }
  }
  else if  (n_item.attributes.getNamedItem(n_name)) {
    if  (n_item.attributes.getNamedItem(n_name).firstChild) {
      retval = n_item.attributes.getNamedItem(n_name).firstChild.nodeValue;
    }

  }
  else if (!n_item.getElementsByTagName(n_name)) {
    retval = '';
  }
  else if (!n_item.getElementsByTagName(n_name)[0]) {
    retval = '';
  }
  else if (!n_item.getElementsByTagName(n_name)[0].firstChild) {
    retval = '';
  }
  else {
    retval = n_item.getElementsByTagName(n_name)[0].firstChild.nodeValue;
  }

  if (retval=='&nbsp;') {
    return ' ';
  }
  else {
    return formatData(retval, txtformat);
  }
}

function formatData(strdata, txtformat) {
  if (txtformat=='noformat') {
    return strdata;
  }

  var strtmp = strdata.replace(/\n\r/gi,"<br\/>");
  strtmp = strtmp.replace(/\r/gi,"<br\/>");
  strtmp = strtmp.replace(/\n/gi,"<br\/>");

  strtmp = strtmp.replace( RegExp('&amp;',"gi") ,"&");

  strtmp = strtmp.replace( RegExp('&lt;b&gt;',"gi") ,"<b>");
  strtmp = strtmp.replace( RegExp('&lt;/b&gt;',"gi") ,"</b>");

  strtmp = strtmp.replace( RegExp('&lt;i&gt;',"gi") ,"<i>");
  strtmp = strtmp.replace( RegExp('&lt;/i&gt;',"gi") ,"</i>");

  strtmp = strtmp.replace( RegExp('&lt;u&gt;',"gi") ,"<u>");
  strtmp = strtmp.replace( RegExp('&lt;/u&gt;',"gi") ,"</u>");

  strtmp = strtmp.replace( RegExp('&lt;br&gt;',"gi") ,"<br/>");
  strtmp = strtmp.replace( RegExp('&lt;br/&gt;',"gi") ,"<br/>");


  if (txtformat == 'plain') {

  }
  else   if (txtformat == 'text') {
    strtmp = strtmp.replace( RegExp('<br/>',"gi") ,'\n');
    strtmp = strtmp.replace( RegExp('&lt;',"gi") ,'<');
    strtmp = strtmp.replace( RegExp('&gt;',"gi") ,'>');
  }
  else if (txtformat == 'html') {
    strtmp = strtmp.replace( RegExp('&lt;',"gi") ,'<');
    strtmp = strtmp.replace( RegExp('&gt;',"gi") ,'>');
  }
  else if (txtformat == 'date') {
    strtmp = (strtmp.substr(6,2)*1) + '/' + (strtmp.substr(4,2)*1) + '/' + (strtmp.substr(0,4)*1);
  }
  else if (txtformat == 'ldate') {
    strtmp = (strtmp.substr(6,2)) + '/' + (strtmp.substr(4,2)) + '/' + (strtmp.substr(0,4));
  }
  else if (txtformat == 'heure') {
    strtmp = (strtmp.substr(0,5));
  }

  return strtmp;
}


function CreerBalise(nParent, nType, a_Attrib, nText, useInnerHTML)
{
  var new_n = null;

  var sAttrib = ' ';
  for (var e in a_Attrib) {
    sAttrib += e + '="' + a_Attrib[e] + '" ';
  }

  try {
    new_n = nParent.appendChild(document.createElement('<' + nType + sAttrib + '>'));
  }
  catch(e) {
    // Ne fonctionne que sous IE
  }

  // Si ca n'a pas marché, c'est qu'on est sous Firefox/mozilla
  if (!new_n) {
    new_n = nParent.appendChild(document.createElement(nType));
    for (var e in a_Attrib) {
      new_n.setAttribute(e,a_Attrib[e]);
    }
  }

  if (nText) {
    if (useInnerHTML) {
      new_n.innerHTML=nText;
    }
    else {
      // Affecte le texte
      if (nText!='') {
        new_n.appendChild(document.createTextNode(nText));
      }
    }
  }

  //ajoute un retour chariot pour eclairsir le code
  nParent.appendChild(document.createTextNode('\n'));

  return new_n;
}



function GenereParams(formajax)
{
  var params = '';
  var count = formajax.length;
  for(var i = 0; i < count; i++) {
    if ((formajax[i].type == 'checkbox') || (formajax[i].type == 'radio')) {
      if (formajax[i].checked == true) {
        params +=  '&' + formajax[i].name + '=' + escape(formajax[i].value);
      }
    }
    else if (formajax[i].name != '') {
      params +=  '&' + formajax[i].name + '=' + escape(formajax[i].value);
    }
  }

  return params;
}

function getValueRadio(objRadio)
{
  var count = objRadio.length;
  for(var i = 0; i < count; i++) {
    if (objRadio[i].checked == true) {
        return objRadio[i].value;
    }
  }
}

/*******************************************************************/
/*******************************************************************/
/********************* Autres fonctions Diverse ********************/
/*******************************************************************/
/*******************************************************************/



function HideCalendar(formdate, selJ, selM, selA, divcal, cj)
{
    document.forms[formdate].elements[selJ].selectedIndex=(cj-1);
    document.getElementById(divcal).style.display='none';
    document.forms[formdate].elements[selJ].style.visibility = '';
    document.forms[formdate].elements[selM].style.visibility = '';
    document.forms[formdate].elements[selA].style.visibility = '';
    if (OnCloseCalendar) {
      OnCloseCalendar(formdate);
    }
}

function FillSelectDate (typeSelect, objSelDate ,formSelDate)
{
  var dt = new Date();
  var isDateDay = false;

  switch(typeSelect) {
    case 'j':
      for (var i = 1; i <= 31; i++) {
        objSelDate.options[objSelDate.length] = new Option(i, i, dt.getDate()==i, dt.getDate()==i);
      }
      break;
    case 'm':
      for (var i = 1; i <= 12; i++) {
        objSelDate.options[objSelDate.length] = new Option(moiscours[i], i, dt.getMonth()==i-1, dt.getMonth()==i-1);
      }
      break;
    case 'a':
      for (var i = anneeDeb; i <= anneeFin; i++) {
        isDateDay = ((dt.getYear()+1900==i) || (dt.getYear()==i));
        objSelDate.options[objSelDate.length] = new Option(i, i, isDateDay, isDateDay);
      }
      break;
  }
}


function clearObject(objSel)
{

  // Efface l'ancien Tableau HTML
  while(objSel.hasChildNodes()){
    objSel.removeChild(objSel.childNodes.item(0));
  }
  try {
    objSel.innerHTML = "";
  }
  catch(e) {
    //rien a faire .
  }
}


function SelectOption (sel_obj, optValue)
{
  if (!sel_obj) { return; }
  if (sel_obj.type != 'select-one') { return; }

  var i;
  var count = sel_obj.length;
  for (i = 0; i < count; i++) {
    if (sel_obj.options[i].value == optValue) {
      sel_obj.options[i].selected = true;
      return;
    }
  }
}

function SelectRadio (rad_obj, optValue)
{
  if (!rad_obj) { return; }

  for (var i in rad_obj) {
    if (rad_obj[i].value == optValue) {
      rad_obj[i].checked = true;
    } else {
      rad_obj[i].checked = false;
    }
  }
}

function show_hide (div_id,ishow, noSwapSelect)
{
  var divns6 = document.getElementById(div_id);
  if (ishow == 1) {
    divns6.style.display = 'block';
  } else {
    divns6.style.display = 'none';
  }

  if (!noSwapSelect) {
    fSwapSelect(div_id, true);
  }
}


// Fonction d'utilité diverses trouvé pour la plupart sur le net
function is_numeric( strString )
// check for valid numeric strings
{
     var strValidChars = "0123456789.-";
     var strChar;
     var blnResult = true;

     if (strString.length == 0) return false;

         // test strString consists of valid characters listed above
         for (var i = 0; i < strString.length && blnResult == true; i++)
         {
             strChar = strString.charAt(i);

             if (strValidChars.indexOf(strChar) == -1)
             {
                 blnResult = false;
             }
         }

         return blnResult;
}

function DateInt()
{
  var now = new Date();
  var h = now.getHours();
  var m = now.getMinutes();
  var s = now.getSeconds();

  return ( h * 60 * 60 ) + ( m * 60 ) + s;
}

function IntToTime(int_h, separ)
{
  var str_h   = parseInt(int_h/60);
  var str_min = (int_h-parseInt(int_h/60)*60);

  if (str_min<10) {
    return  str_h + separ + '0' + str_min;
  }
  else
  {
    return  str_h + separ + str_min;
  }


}

function trim(aString) {
  if (aString.trim) {
    return aString.trim();
  }
  return aString.replace(/^\s+|\s+$/g, '');
}

function sleep( intTime )
{
     if( !is_numeric( intTime ) )
     {
         return; // Arret de l'éxecution
     }

     intTime = ( intTime / 1000 );
     var Exp = DateInt() + intTime; // TimeOut

         while( Exp > DateInt() )
         {
             ;
         }
}

function copyadr2Clipboard() {
  // ***** fonction pour mozilla , mais ne fonctionne pas *****
  //  const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].
  //                                    getService(Components.interfaces.nsIClipboardHelper);
  //  gClipboardHelper.copyString('test clipborad');

  if (document.body.createTextRange) {
    var textRange = document.body.createTextRange();
    textRange.moveToElementText(document.forms['f_client'].adrclient);
    textRange.execCommand("Copy");
  } else {
    show_hide('clipboard',1);
  }
}

function fDomOffset ( oObj, sProp )
{
  var iVal = 0;
  while (oObj && oObj.tagName != 'BODY') {
   eval('iVal += oObj.' + sProp + ';');
    oObj = oObj.offsetParent;
  }
  return iVal;
}

function fSwapSelect(oDiv)
{
  var i = 0, oSlt = null, iST = 0, iSL = 0, iSW = 0, iSH = 0, isLeft = false, isTop = false, sVis = '';
  var oObj = document.getElementById(oDiv);
  var iOT  = fDomOffset(oObj, 'offsetTop');
  var iOL  = fDomOffset(oObj, 'offsetLeft');
  var iOW  = oObj.offsetWidth;
  var iOH  = oObj.offsetHeight;
  var oSelects = document.getElementsByTagName('SELECT');
  if (oSelects.length > 0) {
    for (i = 0; i < oSelects.length; i++) {
      if ((oSelects[i].name != 'edition') && (oSelects[i].name != 'sort_field') && (oSelects[i].name != 'filter_field') ) {
        isLeft = false; isTop = false; oSlt = oSelects[i];
        iST = fDomOffset(oSlt, 'offsetTop'); iSL = fDomOffset(oSlt, 'offsetLeft');
        iSW = oSlt.offsetWidth; iSH = oSlt.offsetHeight;
        // On verifie le Magical Square
        if ((iOL > (iSL - iOW)) && (iOL < (iSL + iSW))) {isLeft = true;}
        if ((iOT > (iST - iOH)) && (iOT < (iST + iSH))) {isTop = true;}
        if (isLeft && isTop) {
          sVis = (oObj.style.visibility == 'hidden') ? 'visible' : 'hidden';
          if (oSlt.style.visibility != sVis) {oSlt.style.visibility = sVis;}
          } else {
            if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';}
          }
      }
    }
  }
}

