/* Effectuer un appel Ajax.

- Traiter les caracteres spéciaux pour la compatibilité.
- Créer un objet Ajax spécifique au navigateur.
- Exécuter le code Javascript retourné.

$pageCible (string) Page contenant les méthodes à exécuter.
$paramListe (array[string]) Liste des paramètres ($paramListe[0]='Nom' $paramListe[1]='Valeur').
$infoAlert (bool) Activer la notification JavaScript.

*/

function v2_ajaxEnvoyer($pageCible,$paramListe,$infoAlert){
 var exeNom='v2_ajaxEnvoyer : ';
 var exeVerif=true;
 if($pageCible==''){ exeVerif=false; alert(exeNom+"La page cible est vide !"); }
 if(($infoAlert!=true)&&($infoAlert!=false)){ $infoAlert=false; }
 var $param='';
 for(var $paramNav=0; $paramNav<$paramListe.length; $paramNav++){
  while($paramListe[$paramNav].indexOf('&')!=(-1)){$paramListe[$paramNav]=$paramListe[$paramNav].replace('&','et');}
  while($paramListe[$paramNav].indexOf('"')!=(-1)){$paramListe[$paramNav]=$paramListe[$paramNav].replace('"',':');}
  while($paramListe[$paramNav].indexOf('+')!=(-1)){$paramListe[$paramNav]=$paramListe[$paramNav].replace('+','plus');}
  $param+='&'+$paramListe[$paramNav];
  $paramNav++;
  if($paramNav<$paramListe.length){
   $valeur=String($paramListe[$paramNav]);
   while($valeur.indexOf('&')!=(-1)){$valeur=$valeur.replace('&','et');}
   //while($valeur.indexOf('"')!=(-1)){$valeur=$valeur.replace('"',':');}
   while($valeur.indexOf('+')!=(-1)){$valeur=$valeur.replace('+','plus');}
   $param+='='+$valeur;
  };
 }
 if(window.XMLHttpRequest){var $ajax=new XMLHttpRequest();} else if(window.ActiveXObject){var $ajax=new ActiveXObject('Microsoft.XMLHTTP');}
 $ajax.open('POST',$pageCible,false);
 $ajax.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=utf-8');
 $ajax.send($param);
 if($ajax.readyState==4){
  if($infoAlert){alert($ajax.responseText);}
  eval($ajax.responseText);
 }
}


/* Générer un PDF à partir d'une URL via Free PDF Converter.
$URL (string) Adresse Web devant être exportée en PDF.
$iFrameID (string) Identifiant de la iFrance HTML pour contenir PDF Converter
return (file) Fichier PDF
*/
function v2_exporterPDF($URL,$iFrameID){
alert("Merci de cliquer sur OK et de patienter jusqu'à ce que le téléchargement du fichier PDF commence.");
var $web2PDF="http://web2pdf.freepdfconvert.com/HTMLtoPDFTemplate.aspx?cURL="+$URL;
$web2PDF+="&author=app-i.net";
$web2PDF+="&subj=app-i.net";
$web2PDF+="&title=app-i.net";
$web2PDF+="&app=http://www.freepdfconvert.com";
$web2PDF+="&keywords=";
$web2PDF+="&allowcpy=no";
$web2PDF+="&allowmodif=no";
$web2PDF+="&allowprn=yes";
$web2PDF+="&keylen=";
$web2PDF+="&userpass=";
$web2PDF+="&ownerpass=";
$web2PDF+="&preservelinks=no";
$web2PDF+="&compress=flate";
$web2PDF+="&marginleft=";
$web2PDF+="&marginright=";
$web2PDF+="&margintop=";
$web2PDF+="&marginbottom=";
$web2PDF+="&psize=A4";
$web2PDF+="&porient=Portrait";
$web2PDF+="&ctype=pdftext";
$web2PDF+="&allowscript=yes";
$web2PDF+="&wsize=";
$web2PDF+="&outputmode=stream";
document.getElementById($iFrameID).src=$web2PDF;
}


/* Retourner la date du jour au format US
return (string) Date au format AAAA-MM-JJ
*/
function v2_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);
}

/* Retourner la date du jour et l'heure au format US
return (string) Date au format AAAA-MM-JJ HH:MM:SS
*/
function v2_dateTimeUS(){
 var $dateTimeUS=v2_dateUS();
 var $dateJour=new Date();
 $dateTimeUS+=' '
 if($dateJour.getHours()<10){$dateTimeUS+='0';}
 $dateTimeUS+=$dateJour.getHours();
 $dateTimeUS+=':'
 if($dateJour.getMinutes()<10){$dateTimeUS+='0';}
 $dateTimeUS+=$dateJour.getMinutes();
 $dateTimeUS+=':'
 if($dateJour.getSeconds()<10){$dateTimeUS+='0';}
 $dateTimeUS+=$dateJour.getSeconds();
 return($dateTimeUS);
}




/* Source externe */

function number_format( number, decimals, dec_point, thousands_sep ) {
 var n = number, prec = decimals;  n = !isFinite(+n) ? 0 : +n; prec = !isFinite(+prec) ? 0 : Math.abs(prec);
 var sep = (typeof thousands_sep == "undefined") ? ',' : thousands_sep;  var dec = (typeof dec_point == "undefined") ? '.' : dec_point;
 var s = (prec > 0) ? n.toFixed(prec) : Math.round(n).toFixed(prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
 var abs = Math.abs(n).toFixed(prec); var _, i;
 if (abs >= 1000) { _ = abs.split(/\D/); i = _[0].length % 3 || 3; _[0] = s.slice(0,i + (n < 0)) + _[0].slice(i).replace(/(\d{3})/g, sep+'$1');  s = _.join(dec); } else { s = s.replace('.', dec); }
 return s;
}


/* Formatter une valeur numérique sur le standard monétaire français.
$valeur (float) Valeur numérique à formatter.
return (string) Valeur formattée avec €.
*/
function v2_euroFrance($valeur){
 $valeur=parseFloat($valeur);
 return(number_format($valeur,2,',',' ')+' €');
}

/* Formatter une valeur numérique sur le standard de poids français.
$valeur (float) Valeur numérique à formatter.
return (string) Valeur formattée avec g.
*/
function v2_grammeFrance($valeur){
 $valeur=parseFloat($valeur);
 return(number_format($valeur,2,',',' ')+' g');
}

/* Retourner la date du jour au format US.
return (string) AAAA-MM-JJ.
*/
function v2_dateUS() {
 var $dateJour=new Date();
 var $dateUS=$dateJour.getFullYear();
 if (($dateJour.getMonth()+1)<10) {$dateUS+="-0"+($dateJour.getMonth()+1);}
 else {$dateUS+="-"+($dateJour.getMonth()+1);}
 if (($dateJour.getDate())<10) {$dateUS+="-0"+($dateJour.getDate());}
 else {$dateUS+="-"+($dateJour.getDate());}
 return($dateUS);
}

/* Retourner la date du jour au format FR.
return (string) JJ-MM-AAAA
*/

function v2_dateFR() {
 var $dateJour=new Date();
 var $dateFR='JJ-MM-AAAA';
 if(($dateJour.getDate())<10) {$dateFR="0"+($dateJour.getDate());} else {$dateFR=($dateJour.getDate());}
 if (($dateJour.getMonth()+1)<10) {$dateFR+="-0"+($dateJour.getMonth()+1);} else {$dateFR+="-"+($dateJour.getMonth()+1);}
 $dateFR+='-'+$dateJour.getFullYear();
 return($dateFR);
}


/* Vérifier la validité d'une adresse électronique.
$adresse (string) Adresse électronique à vérifier.
return (bool) Confirmation de la validité : [ true ] Valide / [ false ] Non valide
*/
function v2_verifierAdresse($adresse){
 $valide = false;
 for(var j=1;j<($adresse.length);j++){
  if($adresse.charAt(j)=='@'){
	 if(j<($adresse.length-4)){
	  for(var k=j;k<($adresse.length-2);k++){ if($adresse.charAt(k)=='.') {$valide=true;}}
	 }
	}
 }
 return($valide);
}



/* Afficher un panneau.
$id (string) Propriété ID de l'élément HTML.
*/
function v2_HTMLAfficher($id){
 document.getElementById($id).style.visibility='visible';
 document.getElementById($id).style.display='block';
}


/* Afficher un panneau centré sur la page.
$divID (string) Propriété ID de l'élément DIV HTML.
*/
function v2_HTMLAfficherCentrer($divID){
 if(document.getElementById('divImageUploader')!=null){
  document.getElementById('divImageUploader').style.visibility='hidden';
  document.getElementById('divImageUploader').style.display='block';
 }
 document.getElementById($divID).style.position='absolute';
 document.getElementById($divID).style.left='0px';
 document.getElementById($divID).style.top='0px';
 document.getElementById($divID).style.zindex='1000';
 document.getElementById($divID).style.visibility='visible';
 document.getElementById($divID).style.display='block';
 var $cadreHauteurMarge=100;
 if(navigator.appName=='Microsoft Internet Explorer'){
  document.getElementById($divID).style.height=(document.body.scrollHeight-document.documentElement.scrollTop-$cadreHauteurMarge)+'px';
  document.getElementById($divID).style.paddingTop=(document.documentElement.scrollTop+$cadreHauteurMarge)+'px';
 } else {
  document.getElementById($divID).style.height=(document.documentElement.offsetHeight)+'px';
  document.getElementById($divID).style.paddingTop=(window.pageYOffset+$cadreHauteurMarge)+'px';
 }
}


/* Cacher un panneau.
$id (string) Propriété ID de l'élément HTML.
*/
function v2_HTMLCacher($id){
 document.getElementById($id).style.visibility='hidden';
 document.getElementById($id).style.display='none';
}



/* Afficher ou Cacher un panneau.
$id (string) Propriété ID de l'élément HTML.
*/
function v2_HTMLAfficherCacher($id){
 if(document.getElementById($id).style.visibility=='hidden'){
  document.getElementById($id).style.visibility='visible';
  document.getElementById($id).style.display='block';
 } else {
  document.getElementById($id).style.visibility='hidden';
  document.getElementById($id).style.display='none';
 }
}



/* Diminuer ou Augmenter l'opacité d'un calque.
$id (string) Propriété ID de l'élément HTML.
$opacite (integer) Valeur positive ou négative appliqué à l'opacité.
Attention, IE va de 0 à 100 et FF de 0 à 1 !
Utiliser la variable STimerOpacite pour un compteur.
*/
function v2_HTMLOpacite($id,$opacite){
 // Charger l'opacité actuelle de l'élément.
 var $opaciteInitiale = parseFloat(document.getElementById($id).style.opacity);
 var $opaciteCalcule = $opaciteInitiale + $opacite;
 // Parametrer les valeurs d'opacité maximum et minimum.
 if(navigator.appName=='Microsoft Internet Explorer'){ var $opaciteMax=100; var $opaciteMin=0; } else { var $opaciteMax=1; var $opaciteMin=0; }
 // Effectuer l'opération seulement si l'opacité calculée est dans les bornes valides.
 if(($opaciteCalcule>=$opaciteMin)&&($opaciteCalcule<=$opaciteMax)){
  document.getElementById($id).style.opacity=$opaciteCalcule;
  if(navigator.appName=='Microsoft Internet Explorer'){document.getElementById($id).filters.alpha.opacity=$opaciteCalcule;}
 }
 // Borner le STimerOpacite si il est en exécution.
 if(typeof(STimerOpacite)!='undefined'){
  // Si l'indice d'opacité diminue.
  if(($opacite<0)&&($opaciteCalcule<=$opaciteMin)){
   document.getElementById($id).style.opacity=$opaciteMin;
   if(navigator.appName=='Microsoft Internet Explorer'){document.getElementById($id).filters.alpha.opacity=$opaciteMin;}
   clearInterval(STimerOpacite);
  }
  // Si l'indice d'opacité augmente.
  if(($opacite>0)&&($opaciteCalcule>=$opaciteMax)){
   document.getElementById($id).style.opacity=$opaciteMax;
   if(navigator.appName=='Microsoft Internet Explorer'){document.getElementById($id).filters.alpha.opacity=$opaciteMax;}
   clearInterval(STimerOpacite);
  }
 }
}



/* Afficher ou Cacher un élément HTML en fondu.
$id (string) Propriété ID de l'élément HTML.
$direction (bool) 0 pour cacher, 1 pour afficher.
*/

function v2_HTMLFondre($id,$direction){
 if(navigator.appName=='Microsoft Internet Explorer'){ var $opacitePalier=6; var $timerInterval=10; }
 else { var $opacitePalier=0.06; var $timerInterval=1; }
 if($direction<=0){
  $opacitePalier=($opacitePalier*(-1));
  if(navigator.appName=='Microsoft Internet Explorer'){ var $opaciteMax=100; } else { var $opaciteMax=1; }
  document.getElementById($id).style.opacity=$opaciteMax;
  if(navigator.appName=='Microsoft Internet Explorer'){ document.getElementById($id).filters.alpha.opacity=$opaciteMax; } 
 } else { 
  document.getElementById($id).style.opacity=0;
  if(navigator.appName=='Microsoft Internet Explorer'){document.getElementById($id).filters.alpha.opacity=0;} 
 }
 if(typeof(STimerOpacite)!='undefined'){ clearInterval(STimerOpacite); }
 STimerOpacite=setInterval('v2_HTMLOpacite("'+$id+'",'+$opacitePalier+')',100);
}


/* Créer une chaine de caractéres de manière aléatoire.
$taille (int) Nombre de caractéres.
*/
function v2_creerChaineAleatoire($taille){
 var $carListe = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9");
 var $chaine='';
 for($nav=0;$nav<$taille;$nav++){ $chaine=$chaine+$carListe[Math.floor(Math.random()*$carListe.length)]; }
 return($chaine);
}

