﻿// AJAX
// =============================================================================
// Rendre des champs INPUT compatible Ajax.
// -----------------------------------------------------------------------------
// Lorsque le système enregistre en Ajax la valeur champ d'un formulaire dans
// une base de données MySQL, il convient de transcoder les caractères spéciaux
// incompatibles avec Ajax. 
// -----------------------------------------------------------------------------
// $inputListe array[string] Liste des ID des INPUT
// return string
// -----------------------------------------------------------------------------
function ajaxInputVerif($inputListe) {
 for(var $inputNav=0; $inputNav<$inputListe.length; $inputNav++) {
  document.getElementById($inputListe[$inputNav]).value=document.getElementById($inputListe[$inputNav]).value.replace(new RegExp('&','g'),'et');
	document.getElementById($inputListe[$inputNav]).value=document.getElementById($inputListe[$inputNav]).value.replace(new RegExp('"','g'),'::');
	while(document.getElementById($inputListe[$inputNav]).value.indexOf('+')!=(-1)) {
	 document.getElementById($inputListe[$inputNav]).value=document.getElementById($inputListe[$inputNav]).value.replace('+','plus');
	}
 }
}
// =============================================================================
// Effectuer un appel Ajax.
// -----------------------------------------------------------------------------
// $ajaxPage string Page contenant les méthodes Ajax.
// $ajaxParam integer Chaine de paramètres Ajax.
// $ajaxInfo bool Active la notification JavaScript.
// -----------------------------------------------------------------------------
function ajaxEnvoyer($ajaxPage,$ajaxParam,$ajaxInfo) {
  if (window.XMLHttpRequest) {var $ajax=new XMLHttpRequest();}
  else if(window.ActiveXObject) {var $ajax=new ActiveXObject('Microsoft.XMLHTTP');} 
  $ajax.open('POST',$ajaxPage,false);
  $ajax.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=utf-8');
	while($ajaxParam.indexOf('& ')!=(-1)) {$ajaxParam=$ajaxParam.replace('& ','et');}
	//while($ajaxParam.indexOf('"')!=(-1)) {$ajaxParam=$ajaxParam.replace('"','::');}
  while($ajaxParam.indexOf('+')!=(-1)) {$ajaxParam=$ajaxParam.replace('+','plus');}
  $ajax.send($ajaxParam);
  if ($ajax.readyState==4) {
   if ($ajaxInfo) {alert($ajax.responseText);}
   eval($ajax.responseText);
  }
}
// =============================================================================


// DATE
// =============================================================================
// Retourner la date du jour et l'heure au format US.
// -----------------------------------------------------------------------------
function dateTimeUS() {
  var $dateJour = new Date();
  var $dateTimeUS = $dateJour.getFullYear();
  if (($dateJour.getMonth()+1)<10) { $dateTimeUS += '-0' + ($dateJour.getMonth()+1); } else { $dateTimeUS += '-' + ($dateJour.getMonth()+1); }
  if ($dateJour.getDate()<10)      { $dateTimeUS += '-0' + $dateJour.getDate(); }      else { $dateTimeUS += '-' + $dateJour.getDate(); }
  if ($dateJour.getHours()<10)     { $dateTimeUS += ' 0' + $dateJour.getHours(); }     else { $dateTimeUS += ' ' + $dateJour.getHours(); }
  if ($dateJour.getMinutes()<10)   { $dateTimeUS += ':0' + $dateJour.getMinutes(); }   else { $dateTimeUS += ':' + $dateJour.getMinutes(); }
  if ($dateJour.getSeconds()<10)   { $dateTimeUS += ':0' + $dateJour.getSeconds(); }   else { $dateTimeUS += ':' + $dateJour.getSeconds(); }
  return($dateTimeUS);
}
// =============================================================================
// Retourner la date du jour au format MySQL.
// -----------------------------------------------------------------------------
// retrun string Date au format AAAA-MM-JJ.
// -----------------------------------------------------------------------------
function dateUS() {
 var $date_jour=new Date();
 var $date_us=$date_jour.getFullYear();
 if (($date_jour.getMonth()+1)<10) {$date_us+="-0"+($date_jour.getMonth()+1);}
 else {$date_us+="-"+($date_jour.getMonth()+1);}
 if (($date_jour.getDate())<10) {$date_us+="-0"+($date_jour.getDate());}
 else {$date_us+="-"+($date_jour.getDate());}
 return($date_us);
}
// =============================================================================
 
 
 
 
 

var $curseur_pos_x=0; 
var $curseur_pos_y=0;
document.onmousemove=getCurseurPos;
function getCurseurPos(e) {
  if (navigator.appName!="Microsoft Internet Explorer") {
    $curseur_pos_x=e.pageX;
    $curseur_pos_y=e.pageY;
  }
  else {
    if (document.documentElement.clientWidth>0) {
	  $curseur_pos_x=event.x+document.documentElement.scrollLeft;
	  $curseur_pos_y=event.y+document.documentElement.scrollTop;
    } else {
	  $curseur_pos_x=event.x+document.body.scrollLeft;
	  $curseur_pos_y=event.y+document.body.scrollTop;
	}
  }
  //window.alert("X : "+$curseur_pos_x+" Y : "+$curseur_pos_y);
}

/**
 * Afficher un élément HTML au niveau de la souris sans sortir de l'écran.
 * 
 * @param string $nom Nom de l'élément HTML.
 * @param integer $taille_x Largeur de l'élément en pixels.
 * @param integer $taille_y Hauteur de l'élément en pixels.
 * @return mixed Affiche l'élément HTML.
 */

function postOnCursor($nom,$taille_x,$taille_y) {
  var $pos_x=$curseur_pos_x; var $marge_x=0;
  var $pos_y=$curseur_pos_y; var $marge_y=10;
  if (($pos_x+$taille_x+$marge_x)>screen.availWidth) {$pos_x=($pos_x-$taille_x-$marge_x);}
  {$pos_x=($pos_x+$marge_x);}
  if (($pos_y+$taille_y+$marge_y)>screen.availHeight) {$pos_y=($pos_y-$taille_y-($marge_y*2));}
  {$pos_y=($pos_y+$marge_y);}
  getChamp($nom).style.left=$pos_x+'px';
  getChamp($nom).style.top=$pos_y+'px';
  postElement($nom);
}

/**
 * Effectuer un appel Ajax.
 * 
 * @param string $page Nom de la page Ajax à appeller.
 * @param integer $param Chaine de paramètres Ajax.
 * @param bool $info Active la notification JavaScript.
 * @return mixed Appel Ajax
 */
 
function postAjax($page,$param,$info) {

  if (window.XMLHttpRequest) {var $ajax=new XMLHttpRequest();}
  else if(window.ActiveXObject) {var $ajax=new ActiveXObject("Microsoft.XMLHTTP");} 
  $ajax.open("POST",$page,false);
  $ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=iso-8859-15");
  $ajax.send($param);
  if ($ajax.readyState==4) {
    if ($info) {alert($ajax.responseText);}
    eval($ajax.responseText);
  }
}

/**
 * Afficher un panneau DIV parmis une liste et cacher les autres.
 * 
 * @param array[string] $liste Noms de tous les panneaux.
 * @param string $nom Nom du panneau à afficher.
 * @return mixed Cache tous les panneaux et affiche le bon.
 */

function postDiv($liste, $nom) {
   hideElements($liste);
   postElement($nom);
}

/**
 * Retourner la référence d'un champ d'un formulaire HTML.
 *
 * @param string $nom Nom du champ.
 * @return mixed Référence du champ.
 */

function getChamp($nom) {
  return(document.getElementById($nom));
}

/**
 * Mettre à jour la valeur d'un champ d'un formulaire HTML.
 *
 * @param string $nom Nom du champ.
 * @param string $valeur Valeur à enregistrer.
 * @return mixed Mise à jour.
 */
 
function updateChamp($nom,$valeur) {
  getChamp($nom).value=$valeur;
}

/**
 * Mettre à jour les valeurs de plusieurs champs d'un formulaire HTML.
 *
 * @param array[string] $liste_nom  Noms des champs.
 * @param array[string] $liste_valeur Valeurs à enregistrer.
 * @return mixed Mise à jour.
 */

function updateChamps($liste_nom,$liste_valeur) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    updateChamp($liste_nom[$nav],$liste_valeur[$nav]);
  }
}

/**
 * Remplacer un texte par un autre dans un champ d'un formulaire HTML.
 *
 * @param string $nom Nom du champ.
 * @param string $source Texte à remplacer.
 * @param string $cible Texte de remplacement.
 * @return mixed Mise à jour.
 */
 
function replaceChamp($nom,$source,$cible) {
  var $tmp=getChamp($nom).value;
  $tmp=$tmp.replace($source,$cible);
  updateChamp($nom,$tmp);
}

/**
 * Remplacer un texte par un autre dans plusieurs champs d'un formulaire HTML.
 *
 * @param array[string] $liste_nom Noms des champs.
 * @param string $source Texte à remplacer.
 * @param string $cible Texte de remplacement.
 * @return mixed Mise à jour.
 */

function replaceChamps($liste_nom,$source,$cible) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    replaceChamp($liste_nom[$nav],$source,$cible);
  }
}

/**
 * Activer un champ ou un bouton dans un formulaire HTML.
 *
 * @param string $nom Nom du champ ou du bouton.
 * @return mixed Activation.
 */

function enableChamp($nom){
  getChamp($nom).disabled=false;
}

/**
 * Activer plusieurs champs ou boutons dans un formulaire HTML.
 *
 * @param array[string] $liste_nom Noms des champs ou boutons.
 * @return string Activation.
 */

function enableChamps($liste_nom){
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    enableChamp($liste_nom[$nav]);
  }
}

/**
 * Désactiver un champ ou d'un bouton dans un formulaire HTML.
 *
 * @param string $nom Nom du champ ou du bouton.
 * @return mixed Désactivation.
 */

function disableChamp($nom){
  getChamp($nom).disabled=true;
}

/**
 * Désactiver plusieurs champs ou boutons dans un formulaire HTML.
 *
 * @param array[string] $liste_nom Noms des champs ou boutons.
 * @return mixed Désactivation.
 */
 
function disableChamps($liste_nom){
  for(var $nav=0;$nav<$$liste_nom.length;$nav++) {
    disableChamp($liste_nom[$nav]);
  }
}

/**
 * Cocher une case à cocher d'un formulaire HTML.
 *
 * @param string $nom Nom de la case.
 * @return mixed Cochage.
 */
 
function checkCase($nom) {
    getChamp($nom).checked=true;
}

/**
 * Cocher plusieurs cases à cocher d'un formulaire HTML.
 *
 * @param array[string] $liste_nom Noms des cases à cocher.
 * @return mixed Cochage.
 */

function checkCases($liste_nom){
  for(var $nav=0;$nav<$$liste_nom.length;$nav++) {
    checkCase($liste_nom[$nav]);
  }
}

/**
 * Décocher une case à cocher d'un formulaire HTML.
 *
 * @param string $nom Nom de la case.
 * @return mixed Décochage.
 */

function uncheckCase($nom) {
    getChamp($nom).checked=false;
}

/**
 * Décocher plusieurs cases à cocher d'un formulaire HTML.
 *
 * @param array[string] $liste_nom Noms des cases à cocher.
 * @return mixed Décochage.
 */
 
function uncheckCases($liste_nom){
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    uncheckCase($liste_nom[$nav]);
  }
}

/**
 * Inversser l'état d'une case à cocher d'un formulaire HTML.
 *
 * @param string $nom Nom de la case.
 * @return mixed Cochage ou Décochage.
 */
 
function reverseCase($nom) {
  if (getChamp($nom).checked==false) {checkCase($nom);}
  else {uncheckCase($nom);}
}

/**
 * Inversser l'état de plusieurs cases à cocher d'un formulaire HTML.
 *
 * @param array[string]  $liste_nom Noms des cases à cocher.
 * @return mixed Cochage ou Décochage.
 */
 
function reverseCases($liste_nom){
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    reverseCase($liste_nom[$nav]);
  }
}

/**
 * Afficher un lien HTML.
 *
 * @param string $nom Nom du lien.
 * @return mixed Affichage.
 */
 
function postLien($nom) {
  getChamp($nom).style.visibility="visible";
}

/**
 * Afficher plusieurs liens HTML.
 *
 * @param array[string] $liste_nom Noms des liens.
 * @return mixed Affichage.
 */
 
function postLiens($liste_nom) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    postLien($liste_nom[$nav]);
  }
}

/**
 * Cacher un lien HTML.
 *
 * @param string $nom Nom du lien.
 * @return mixed Cache le lien.
 */

function hideLien($nom) {
  getChamp($nom).style.visibility="hidden";
}

/**
 * Cacher de plusieurs liens HTML.
 *
 * @param array[string] $liste_nom Noms des liens.
 * @return mixed Cache les liens.
 */

function hideLiens($liste_nom) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    hideLien($liste_nom[$nav]);
  }
}


/**
 * Mettre à jour la valeur d'un élément HTML.
 *
 * @param string $nom Nom de l'élément.
 * @param string $valeur Valeur à enregistrer.
 * @return mixed Mise à jour.
 */
 
function updateElement($nom,$valeur) {
  getChamp($nom).innerHTML=$valeur;
}

/**
 * Mettre à jour les valeurs de plusieurs éléments HTML.
 *
 * @param array[string] $liste_nom Noms des éléments.
 * @param array[string] $liste_valeur Valeurs à enregistrer.
 * @return mixed Mise à jour.
 */

function updateElements($liste_nom,$liste_valeur) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    updateElement($liste_nom[$nav],$liste_valeur[$nav]);
  }
}

/**
 * Afficher un élément HTML.
 *
 * @param string $nom Nom de l'élément.
 * @return mixed Affichage l'élément.
 */
 
function postElement($nom) {
  if (navigator.appName=="Microsoft Internet Explorer") {
    //getChamp($nom).style.filter="blendTrans(duration=1)";
    //getChamp($nom).filters.blendTrans.Apply();
  }
  getChamp($nom).style.visibility="visible";
  getChamp($nom).style.display="block";
  if (navigator.appName=="Microsoft Internet Explorer") {
    //getChamp($nom).filters.blendTrans.Play();
  }
}

/**
 * Afficher plusieurs éléments HTML.
 *
 * @param array[string] $liste_nom Noms des éléments.
 * @return mixed Affichage les éléments.
 */
 
function postElements($liste_nom) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    postElement($liste_nom[$nav]);
  }
}

/**
 * Cacher un élément HTML.
 *
 * @param string $nom Nom de l'élément.
 * @return mixed Cache l'élément.
 */
 
function hideElement($nom) {
  if (navigator.appName=="Microsoft Internet Explorer") {
    //getChamp($nom).style.filter="blendTrans(duration=1)";
    //getChamp($nom).filters.blendTrans.Apply();
  }
  getChamp($nom).style.visibility="hidden";
  getChamp($nom).style.display="none";
  if (navigator.appName=="Microsoft Internet Explorer") {
    //getChamp($nom).filters.blendTrans.Play();
  }
}

/**
 * Cacher plusieurs éléments HTML.
 *
 * @param array[string] $liste_nom Noms des éléments.
 * @return mixed Cache les éléments.
 */

function hideElements($liste_nom) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    hideElement($liste_nom[$nav]);
  }
}

/**
 * Inversser l'état d'un élément HTML.
 *
 * @param string $nom Nom de l'élément.
 * @return mixed Affichage ou Cache l'élément.
 */
 
function reverseElement($nom) {
  if (getChamp($nom).style.visibility=="hidden") {postElement($nom);}
  else {hideElement($nom);}
}

/**
 * Inversser l'état de plusieurs éléments HTML.
 *
 * @param array[string] $liste_nom Noms des éléments.
 * @return mixed Affichage ou Cache les éléments.
 */

function reverseElements($liste_nom) {
  for(var $nav=0;$nav<$liste_nom.length;$nav++) {
    reverseElement($liste_nom[$nav]);
  }
}

/**
 * Insérer une option dans un SELECT HTML.
 *
 * @param string $nom Nom de la liste SELECT.
 * @param string $valeur Valeur de l'option à ajouter.
 * @param string $texte Label de l'option à ajouter.
 * @return mixed Insertion.
 */

function insertSelect($nom,$valeur,$texte) {
  getChamp($nom).options[getChamp($nom).options.length]=new Option($texte,$valeur);
}

/**
 * Ajax : Vider un SELECT HTML.
 *
 * @param string $nom Nom de la liste SELECT.
 * @return string Suppression de toutes les options.
 */

function eraseSelect($nom) {
  var $nav;
  for($nav=(getChamp($nom).options.length-1);$nav>=0;$nav--){
    getChamp($nom).options[$nav]=null;
  }
}

/**
 * Rechercher si une valeur existe dans une liste de selection.
 *
 * @param string $nom Nom de la liste SELECT.
 * @param string $valeur Valeur de l'option à trouver.
 * @return bool Sélection si l'option est disponible.
 */

function existInSelect($nom,$valeur) {
  var $nav; var $trouve=false;
  for($nav=(getChamp($nom).options.length-1);$nav>=0;$nav--){
    if (getChamp($nom).options[$nav].value==$valeur) {$trouve=true;}
  }
  return($trouve);
}

/**
 * Sélectionner une option dans une liste de sélection d'un formulaire HTML.
 *
 * @param string $nom Nom de la liste SELECT.
 * @param string $valeur Valeur de l'option à ajouter .
 * @return mixed Sélection si l'option est disponible.
 */

function selectInSelect($nom,$valeur) {
  if (existInSelect($nom,$valeur)==true) {
    updateChamp($nom,$valeur);
  }
}

/**
 * FCKeditor : Retourner le texte compatible Ajax.
 * 
 * Lorsque le système enregistre en Ajax la valeur HTML d'un champ FCKeditor dans une base de données MySQL, il convient
 * de transcoder les caractères spéciaux incompatibles avec Ajax. 
 * 
 * @param string $texte Texte HTML à rendre compatible Ajax.
 * @return string Texte compatible Ajax. 
 */

function saveWebString($texte) {
  $texte=$texte.replace(new RegExp('&','g'),'::and::');
  $texte=$texte.replace(new RegExp('"','g'),'::quote::');
  while ($texte.indexOf('+')!=(-1)) {$texte=$texte.replace('+','plus');}
	return($texte);
}

/**
 * FCKeditor : Retourner le texte compatible HTML.
 * 
 * Lorsque le système enregistre en Ajax la valeur HTML d'un champ FCKeditor dans une base de données MySQL, il
 * transcode les caractères spéciaux incompatibles avec Ajax. Lorsque le système affiche cette valeur dans une page
 * Web, il transcode cette valeur en sens inverse pour la rendre compatible HTML 
 * 
 * @param string $texte Texte Ajax à rendre compatible HTML.
 * @return string Texte compatible HTML. 
 */

function printWebString($texte) {
  $texte=$texte.replace(new RegExp('::and::','g'),'&');
  $texte=$texte.replace(new RegExp('::quote::','g'),'"');
	return($texte);
}

/**
 * FCKeditor : Rendre des champs INPUT compatible Ajax.
 * 
 * Lorsque le système enregistre en Ajax la valeur champ d'un formulaire dans une base de données MySQL, il convient
 * de transcoder les caractères spéciaux incompatibles avec Ajax. 
 * 
 * @param array[string] $liste Noms des champs à traiter
 * @return mixed Mise à jour du champ  
 */

function verifTexte($liste) {
  for (var $nav=0; $nav<$liste.length; $nav++) {
    document.getElementById($liste[$nav]).value=document.getElementById($liste[$nav]).value.replace(new RegExp('&','g'),'et');
	  document.getElementById($liste[$nav]).value=document.getElementById($liste[$nav]).value.replace(new RegExp('"','g'),'::');
	  while (document.getElementById($liste[$nav]).value.indexOf('+')!=(-1)) {
	    document.getElementById($liste[$nav]).value=document.getElementById($liste[$nav]).value.replace('+','plus');
	  }
  }
}

/**
 * Date : Retourner la date du jour au format MySQL.
 *
 * @return string Date au format AAAA-MM-JJ.
 */
 
function getDateUS() {
  var $date_jour=new Date();
  var $date_us=$date_jour.getFullYear();
  if (($date_jour.getMonth()+1)<10) {$date_us+="-0"+($date_jour.getMonth()+1);}
  else {$date_us+="-"+($date_jour.getMonth()+1);}
  if (($date_jour.getDate())<10) {$date_us+="-0"+($date_jour.getDate());}
  else {$date_us+="-"+($date_jour.getDate());}
  return($date_us);
}

/**
 * Date : Convertir une date US en date FRA.
 *
 * @param string $dateUS Date au format AAAA-MM-JJ.
 * @return string Date au format JJ-MM-AAAA.
 */

function convertDate2Fra($dateUS) {
  var $annee=$dateUS.substr(0,4);
  var $mois=$dateUS.substr(5,2);
  var $jour=$dateUS.substr(8,2);
  var $dateFRA=$jour+"-"+$mois+"-"+$annee;
  return($dateFRA);
}
