
// Recuperation de la taille de la fenetre : http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
function findHauteurFenetre() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
//  window.alert( 'Width = ' + myWidth );
//  window.alert( 'Height = ' + myHeight );
  return myHeight;
}

function findLargeurFenetre() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
//  window.alert( 'Width = ' + myWidth );
//  window.alert( 'Height = ' + myHeight );
  return myWidth;
}

function max(texte, longueurMax){
  return texte.substr(0,longueurMax);
}

function isKeyEnter(e){

	if (window.event){
		return e.keyCode == 13;
	}
	else {
		return e.which == 13;
	}
}

function updateAffichage(nomElement, valeurDisplay){

  iElement = -1; // on commence a -1 pour l'objet sans suffixe
  while (iElement<20){

		x = document.getElementById(nomElement + ((iElement>=0) ? iElement : ""));
    if (x != null){
      x.style.display = valeurDisplay;
    }
//    else if (iElement>0){ // si a 1 on a rien trouve, on abandonne
//      break;
//    }
    iElement++;
  }
}

function afficheElement(nomElement){
  updateAffichage(nomElement, "");
  updateAffichage(nomElement + "Cache", "none");
}

function cacheElement(nomElement){
  updateAffichage(nomElement, "none");
  updateAffichage(nomElement + "Cache", "");
}

function afficheCategorie(nomElement, categorie){

  iCategorie = 0; 
  while (iCategorie<26){

    ch = null;
    switch(iCategorie){

      case 0: ch = 'A'; break;    
      case 1: ch = 'B'; break;    
      case 2: ch = 'C'; break;    
      case 3: ch = 'D'; break;    
      case 4: ch = 'E'; break;    
      case 5: ch = 'F'; break;    
      case 6: ch = 'G'; break;    
      case 7: ch = 'H'; break;    
      case 8: ch = 'I'; break;    
      case 9: ch = 'J'; break;    
      case 10: ch = 'K'; break;    
      case 11: ch = 'L'; break;    
      case 12: ch = 'M'; break;    
      case 13: ch = 'N'; break;    
      case 14: ch = 'O'; break;    
      case 15: ch = 'P'; break;    
      case 16: ch = 'Q'; break;    
      case 17: ch = 'R'; break;    
      case 18: ch = 'S'; break;    
      case 19: ch = 'T'; break;    
      case 20: ch = 'U'; break;    
      case 21: ch = 'V'; break;    
      case 22: ch = 'W'; break;    
      case 23: ch = 'X'; break;    
      case 24: ch = 'Y'; break;    
      case 25: ch = 'Z'; break;    
    }
    
    if (categorie==ch){
      afficheElement(nomElement + ch);
    }
    else {
      cacheElement(nomElement + ch);
    }
    iCategorie++;
  }
}

/////////////////////////////////////////////////////////////////
/////////////////// MESSAGE PAR POPUP TEMPORAIRE ////////////////
/////////////////////////////////////////////////////////////////

//cree une popup dispraissant apres un certain délai et dont le contenu est
//le message passé en parametre
function popupTemporaire(pMessage, pDuree, pClasse)
{
	//on cree la popup
	creerPopup(pMessage, pClasse);
	popup = document.getElementById('message');
	//on peux ensuite recuperer sa taille pour la centrer
	var longueur = parseInt(popup.offsetWidth);
	var hauteur = parseInt(popup.offsetHeight);
	//les avail... ne marche po sur cette version de IE, on va a peu pret ajuster tout ca
	var posCentreX = (screen.availWidth - longueur) / 2;
	var posCentreY = ((screen.availHeight - hauteur) / 2) - (screen.availHeight/5);
	//on la bouge et l'affiche
	popup.style.left = posCentreX;
	popup.style.top = posCentreY;
	popup.style.visibility = 'visible';
	setTimeout("popup.style.visibility='hidden';", pDuree);
}


function creerPopup(message, classe)
{
	document.write("<div class='"+classe+"' style='position:absolute; visibility:hidden' id='message'>"+message+"</div>");
}


/////////////////////////////////////////////////////////////////
//////////////////////////// FORMULAIRES ////////////////////////
/////////////////////////////////////////////////////////////////

// Soumet le formulaire avec un parametre d'action
var submitOnesGlobal = false;
function doAction(name)
{
	// Si le formulaire est deja soumit, on ne fait rien
	if (!submitOnesGlobal){
			submitOnesGlobal = true;
		formulaire = document.forms['globalForm'];
		formulaire.elements['action'].value = name;
		formulaire.submit();
	}
	else return false;
}

// Soumet le formulaire avec un parametre d'action
function doActionSansSubmit(name)
{
  // Si le formulaire est deja soumit, on ne fait rien
  if (!submitOnesGlobal){
      submitOnesGlobal = true;
    formulaire = document.forms['globalForm'];
    formulaire.elements['action'].value = name;
  }
  else return false;
}

/////////////////////////////////////////////////////////////////
//////////////////////////// TRAITEMENT /////////////////////////
/////////////////////////////////////////////////////////////////

// Insere dans la zone de log du traitement les nouvelles lignes d'information
// on insere les lignes en bas de la zone alors on scroll toujours vers le bas
function updateLog(nomZoneLog, tracesSauvegarde, maxTextArea){

  x = document.getElementById(nomZoneLog);
  nbAjouts = 0;
  if (x != null){
    valtext = x.value;
    for (i = 0; i < tracesSauvegarde.length; i++){
    
      // Constante definissant la largeur maximun du composant
      maximumLargeur = 150;

      // Ordre de suppression d'une ligne
      if (tracesSauvegarde[i] != null
          && tracesSauvegarde[i].indexOf('SUPPRESSION LIGNE') >= 0){
          
        valtext = valtext.substring(0, x.value.lastIndexOf('\n'));
        nbAjouts++;
      }
      else {
        // Si la longueur du textarea est courte pour afficher le message, on l'agrandie dans la limite de 200 (initialisee a 100)
        if (tracesSauvegarde[i] != null
            && tracesSauvegarde[i].length > maxTextArea){
          if (tracesSauvegarde[i].length > maximumLargeur){
            x.cols = maximumLargeur; 
            maxTextArea=maximumLargeur;
          }
          else {x.cols = tracesSauvegarde[i].length; maxTextArea=tracesSauvegarde[i].length;}
        }
        valtext += "\n" + max(tracesSauvegarde[i],maximumLargeur);
        nbAjouts++;
      }      
    }
    if (nbAjouts>0){
      x.value = valtext;
      x.scrollTop = x.scrollHeight;
    }
  }
  return maxTextArea;
}

// Modifie le pourcentage d'avancement
function updatePct(nomZonePourcentage, nbElementsATraiter, nbElementsTraites){
  x = document.getElementById(nomZonePourcentage);
  pct = "";
  if (x != null){
    if (nbElementsATraiter == 0){
      x.innerHTML = "";
    }
    else {
      pct = Math.round((nbElementsTraites / nbElementsATraiter)*100);
      x.innerHTML = "traitement en cours : "+ pct + "%";  
    }
  }
}

// Modifie les zones du traitement a la fin du traitement
function updateFin(traitementInterrompu, nomZoneEnCours, nomZoneDemarrer){
  // Le traitement est termine, 
  // cache les elements indiquant que la sauvegarde et en cours,
  // cache la zone de log du traitement de sauvegarde,
  // indique que la sauvegarde est terminee
  if (!traitementInterrompu ){
    x.innerHTML = "traitement terminee : 100%";  
    cacheElement(nomZoneEnCours);
    cacheElement(nomZoneDemarrer);
  }
  // Le traiment est fini, il a ete interrompu par l'utilisateur avant d'avoir traite tous les elements
  else {
    x.innerHTML = "traitement interrompu";
    if (pct != ""){ 
      x.innerHTML = x.innerHTML + " a " + pct + "%"; 
    }  
    cacheElement(nomZoneEnCours);
    cacheElement(nomZoneDemarrer);
  }
}

function adressepourave(pref, dom, sit, classe){
  if (dom != "" && sit != "" && pref != "")
  {
	  chaineClasse = "";
	  if (classe) {chaineClasse+=" class='"+classe+"'";}
	  commande1 = "&#109;&#97;i";
	  commande2 = "&#108;t&#111;:";
	  aro = "&#64;";
	  reste = sit+"&#46;"+dom;
	  document.write("<a href=" + commande1 + commande2 + pref + aro + reste + chaineClasse + ">" + pref + aro + reste + "</a>");	
  }
  return "";
}

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

ie = (navigator.appName=="Microsoft Internet Explorer")? true:false;

function afficherFenetreAction(evt, actionBouton, libelleChamp, libelleBouton, size, maxlength)
{
  //Pour ajouter un élément, on va ouvrir une petite fenetre afin de rentrer le nom
  var contenu = libelleChamp+'&nbsp;:&nbsp;<input type="text" size="'+size+'" maxlength="'+maxlength+'" id="champData">&nbsp;&nbsp;<input type="button" onclick="'+actionBouton+'" id="boutonValidation" name="boutonValidation" value="'+libelleBouton+'" />';
  //on crée la div
  divAjout = document.createElement("div");
  divAjout.style.visibility = 'hidden';
  divAjout.id = "divFenetreAction";
  divAjout.style.position = "fixed";
  divAjout.style.backgroundColor = "#E2E2E2";
  divAjout.style.border = "outset 2px";
  divAjout.innerHTML = contenu;
  document.body.appendChild(divAjout);
  var estClique = new Function("evt, objet", "if (ie) {var srcClick = window.event.srcElement; while (srcClick.parentElement != null) {if (srcClick.id==objet.id) {return true;} srcClick = srcClick.parentElement;}return false;} else {var srcClick = evt.target; while (srcClick.parentNode != null) {if (srcClick.id==objet.id) {return true;}       srcClick = srcClick.parentNode;}return false;}");
  //on va regarder où placer la popup
  if(!evt) {evt = window.event;}
  var posX=evt.clientX;
  var posY=evt.clientY;
  divAjout.style.left = posX+"px";
  divAjout.style.top = posY + 15+"px";
  //on rajoute une petite transition pour le fun
  if (ie)
  {
    // on modifie la taille dans ce cas (bidouille merdique car marche pas avec IE, si on ne spécifie pas de taille la div est trop grande)
    divAjout.style.width = '145px';
  }
  divAjout.style.visibility = 'visible';
  document.onmousedown = function(NSevent){if (!estClique(NSevent, divAjout)){divAjout.style.visibility='hidden';}}
}


function changeSensOrdreListe(nomType, sens, elementAction){

  formulaire = document.forms['globalForm'];
  formulaire.elements['sensOrdre'].value = sens;
  formulaire.elements['typeOrdre'].value = nomType;
  formulaire.elements['typeRecherche'].value = elementAction;
  doAction("recherche");
}




	
