function EcrireCookie(nom, valeur)
{
  //A665	bureau/gauche: bloc escamotable réapparait tout seul
  // pour que le cookie soit valide dans tout le site
  // declarer path=/
  //nouvel objet date
  var aujourdhui = new Date() ; 
  //nouvel objet date
  var expdate = new Date() ; 
  //plus an an à partir d'aujourdh'ui le cookie ne s'efface jamais
  expdate.setTime( aujourdhui.getTime() + ( 24*60*60*1000 ) ) ;

  var argv = EcrireCookie.arguments;
  var argc = EcrireCookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  document.cookie = nom+"="+escape(valeur)+
  ((true) ? "" : ("; expires="+expdate.toGMTString()))+
  ((path==null) ? "; path=/" : ("; path=/"+path))+
  ((domain==null) ? "" : ("; domain="+domain))+
  ((secure==true) ? "; secure" : "");
}
function getCookieVal(offset)
{
  var endstr=document.cookie.indexOf (";", offset);
  if (endstr==-1) endstr=document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr)); 
}
function LireCookie(nom)
{
  var arg=nom+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var i=0;
  while (i<clen)
  {
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg) return getCookieVal(j);
      i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;
  }
  return null; 
}
function save_expand_state() {  
  if (document.getElementById('expand_form')) {
    document.getElementById('expand_form').value=document.contexte.expand.value;
  }
  
  return true;
}
function selectionner(p_form, p_name, p_fl_checked) {
  var i;

  for (i = 0; i < p_form.length; i++) {
    if (p_form[i].type == "checkbox") {
      if (p_name == "" || (p_form[i].name.indexOf(p_name) == 0)) {
        p_form[i].checked = p_fl_checked;
      }
    }
  }
}

function open_window(p_url, p_name, p_width, p_height) {
  var l_left = (screen.availWidth - p_width) / 2;
  var l_top = (screen.availHeight - p_height) / 2;
  l_left = (l_left < 0 ? 0 : l_left);
  l_top = (l_top < 0 ? 0 : l_top);

  //JVAU 30/10/2006
  //window.open(p_url, p_name, ' width=' + p_width + ', height=' + p_height + ', left=' + l_left + ', top=' + l_top);
  var argv = open_window.arguments;
  var argc = open_window.arguments.length;
    
  var moreParams = (argc > 4) ? argv[4] : null;

  if (moreParams!=null)
  {  
  window.open(p_url, p_name, ' width=' + p_width + ', height=' + p_height + ', left=' + l_left + ', top=' + l_top +', '+moreParams);
  } 
  else
  {
  window.open(p_url, p_name, ' width=' + p_width + ', height=' + p_height + ', left=' + l_left + ', top=' + l_top );
  }
}

// MFON 19/01/2007 : Copie de la fonction dans global.js
function EmailValide(p_input) {
  var l_re = /^(([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+)?$/
  l_valeur = p_input.value;
  l_retour = l_re.test(l_valeur);
  return l_retour;
}

// MFON 19/01/2007 : validation du format du numéro de fax/portable
// p_input : chaîne à valider
// Renvoi true si chaîne vide ou uniquement numérique préfixée d'un "0" ou un "+"
function FaxPortableValide(p_input) {
  var l_re = /^([\+0]\d+)?$/
  l_valeur = p_input.value;
  l_retour = l_re.test(l_valeur);
  return l_retour;
}

// MFON 28/02/2007 : validation du format court du numéro de téléphone
// p_input : chaîne à valider
// Renvoi true si chaîne vide ou uniquement numérique préfixée d'un  "+"
function TelephoneValide(p_input) {
  var l_re = /^(\+?\d+)?$/
  l_valeur = p_input.value;
  l_retour = l_re.test(l_valeur);
  return l_retour;
}

// MFON 26/01/2007 : validation d'un entier
function EntierValide(p_input) {
  var l_re = /^(\d+)?$/
  l_valeur = p_input.value;
  l_retour = l_re.test(l_valeur);
  return l_retour;
}

// MFON 18/07/2007 : validation d'une liste csv
function CsvValide(p_input) {
  var l_re = /^(([a-zA-Z0-9_-]+\,)*[a-zA-Z0-9_-]+)?$/
  l_valeur = p_input.value;
  l_retour = l_re.test(l_valeur);
  return l_retour;
}

// MFON 26/01/2007 : validation d'une date
// d'après http://www.smartwebby.com/DHTML/date_validation.asp
function stripCharsInBag(s, bag)
{
  var i;
  var returnString = "";
  // Search through string's characters one by one.
  // If character is not in bag, append to returnString.
  for (i = 0; i < s.length; i++)
  {
    var c = s.charAt(i);
    if (bag.indexOf(c) == -1) 
  	{
  	  returnString += c;
  	}
  }
  return returnString;
}

function daysInFebruary (year)
{
  // February has 29 days in any year evenly divisible by four,
  // EXCEPT for centurial years which are not also divisible by 400.
  return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) 
{
  for (var i = 1; i <= n; i++) 
  {
    this[i] = 31;
    if (i==4 || i==6 || i==9 || i==11) 
  	{
  	  this[i] = 30
  	}
    else if (i==2) 
  	{
  	  this[i] = 29
  	}
  } 
  return this
}

function DateValide(p_input)
{
  var dtStr = p_input.value;
  
  if(dtStr.length > 0)
  {
    var l_re = new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$","g");

    if(!l_re.test(dtStr))
    {
      return false;
    }
    else
    {
      var dtCh= "/";
      var minYear=1900;
      var maxYear=2100;

      var daysInMonth = DaysArray(12);
      var pos1=dtStr.indexOf(dtCh);
      var pos2=dtStr.indexOf(dtCh,pos1+1);
      var strDay=dtStr.substring(0,pos1);
      var strMonth=dtStr.substring(pos1+1,pos2);
      var strYear=dtStr.substring(pos2+1);
      var strYr=strYear;
      
      if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
      
      if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
      
      for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
      }
      month=parseInt(strMonth);
      day=parseInt(strDay);
      year=parseInt(strYr);
      
      if(pos1==-1 || pos2==-1)
      {
        return false;
      } 
      else if (strMonth.length<1 || month<1 || month>12)
      {
        return false;
      } 
      else if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
      {
        return false;
      } 
      else if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
      {
        return false;
      } 
      else
      {
        return true
      }
    }
  }
  else
  {
    return true;
  }
}

// MFON 26/01/2007 : Valide un contrôle en fonction de son type
// p_type ["tel","mail","int","date","faxPortable"]
// Attention : si le type n'est pas renseigné ou pas reconnu, un champs non obligatoire sera valide par défaut
function InputValide(p_control, p_type, p_requis)
{
  l_valide = false;
  // Validation du controle
  if (p_control!=null && typeof(p_control)!="undefined" && typeof(p_control.value)!="undefined") 
  {
    // Si le contrôle n'est pas vide et requis, test en fonction du type
    if( !p_requis || (p_control.value != null && p_control.value != "") )
    {
      switch(p_type)
      {
        case "faxPortable" :
          // Suppression des espaces, points et tirets
          if( p_control.value.match(/\s/) || p_control.value.match(/\./) || p_control.value.match(/-/) || p_control.value.match(/\//) )
          {
            p_control.innerText = p_control.value.replace(/\s/g,"");
            p_control.innerText = p_control.value.replace(/\./g,"");
            p_control.innerText = p_control.value.replace(/-/g,"");
            p_control.innerText = p_control.value.replace(/\//g,"");
          }
          l_valide = FaxPortableValide(p_control);
          break;
        case "tel" :
          // Suppression des espaces, points et tirets
          if( p_control.value.match(/\s/) || p_control.value.match(/\./) || p_control.value.match(/-/) || p_control.value.match(/\//) )
          {
            p_control.innerText = p_control.value.replace(/\s/g,"");
            p_control.innerText = p_control.value.replace(/\./g,"");
            p_control.innerText = p_control.value.replace(/-/g,"");
            p_control.innerText = p_control.value.replace(/\//g,"");
          }
          l_valide = TelephoneValide(p_control);
          break;
        case "mail" :
          l_valide = EmailValide(p_control);
          break;
        case "int" :
          l_valide = EntierValide(p_control);
          break;
        case "date" :
          l_valide = DateValide(p_control);
          break;
        case "csv" :
          l_valide = CsvValide(p_control);
          break;
        default :
          l_valide = true;
          break;
      }
    }
  }

  // Changement de la couleur de fond en fonction de la validité
  if( l_valide )
  {
    p_control.style.backgroundColor="";
  }
  else
  {
    p_control.style.backgroundColor="red";
  }
}

// MFON 06/02/07
// Création d'un div flottant
// parentId : id du contrôle parent dans lequel sera créer le div
// enfantId : id du div enfant
// texte : texte HTML à afficher dans l'enfant
// raz : effacer le contenu précédent ?
function creeDiv(parentId, enfantId, texte, raz)
{
  // Récupération des différents contrôles
  var l_parent = document.getElementById(parentId);
  var l_conteneurId = parentId + "_conteneur";
  var l_conteneur = document.getElementById(l_conteneurId);
  var l_div = document.getElementById(enfantId);
  
  // Si le container existe déjà, "nettoyage" du contenu
  if( l_conteneur != null )
  {
    // Suppression du div enfant s'il existe déjà
    if( l_div != null )
    {
      l_conteneur.removeChild(l_div);
    }

    // Suppression du container en fonction du paramètre ou d'un container vide
    if( raz == true || l_conteneur.getElementsByTagName('div').length == 0)
    {
      l_parent.removeChild(l_conteneur);
      l_conteneur = null;
    }
  }
  
  // Si le texte passé en paramètre n'est pas vide
  if (texte.length > 0)
  {
    // Initialisation du container
    if( l_conteneur == null )
    {
      // Création du container
      l_conteneur = document.createElement('div');
      l_conteneur.id = l_conteneurId;
      l_conteneur.className = 'divConsigneConteneur';
      l_parent.appendChild(l_conteneur);
    // Création du bouton de fermeture
      var l_aFermer = document.createElement('a');
      l_aFermer.innerHTML = "<img src ='/images/fermer.gif' class='divConsigneFermer' />";
      l_aFermer.href = "javascript:supprElem('"+parentId+"','"+l_conteneurId+"');";
      l_conteneur.appendChild(l_aFermer);
    }

    // Création du div de texte
    l_div = document.createElement('div');
    l_div.id = enfantId;
    l_div.innerHTML = texte;
    l_div.className = 'divConsigneInterne';
    l_conteneur.appendChild(l_div);
  }
}

// Suppression de l'enfant contenu dans le parent
function supprElem(parentId, enfantId)
{
  var l_parent = document.getElementById(parentId);
  var l_enfant = document.getElementById(enfantId);
  
  l_parent.removeChild(l_enfant);
}

// MFON A340 
function isIE55Plus()
{
  //Detect IE5.5+
  version=5.5;
  if (navigator.appVersion.indexOf("MSIE")!=-1)
  {
    temp=navigator.appVersion.split("MSIE")
    version = parseFloat(temp[1]);
  }
  
  return (version>=5.5);
}


