//Ce script permet d'ouvrir un lien dans une nouvelle fenêtre sans utiliser l'attribut target
//il faut que le lien est le style nouvfen
var curX;
var curY;

var blnModified=false; //Indique si l'utilisateur à modifié ou non les donnée du formulaire (si présent) - utiliser pour confimation de la fermeture de fenetre

if (document.getElementById) {
  addEvent(window, 'load', chargement) ;
  //addEvent(window, 'unload', dechargement) ;
}

function chargement(){

	prepareNWLinks();
	//prepareAutoCombos();
	
	var lnkNotice=document.getElementById('lnkNotice');
	//alert(  lnkNotice );
	if(lnkNotice!=null){
   var detailNotice=document.getElementById('detailNotice');
   detailNotice.style.display ="none";
   addEvent(lnkNotice, 'click', lnkNoticeClick) ;
	 }

  //getActiveStyleSheet("plustyles");

}


function nullfunction(){}


function addEvent(source, type, callback) {
  // fonction d'abstraction pour enregistrer un gestionnaire d'evenement
  // comprend le DOM standard, la syntaxe prorietaire MSIE, l'ancien modele HTML
  // source : objet sur lequel ajouter le gestionnaire d'evenement
  // type : type d'evenement
  // callback : fonction qui traitera l'evenement
  if (source.addEventListener){		// code standard DOM
    source.addEventListener(type, callback, false);
    return true;
  } else if (source.attachEvent){ 	// code propriétaire MSIE
    var r = source.attachEvent("on"+type, callback);
    return r;
  } else {        	// code navigateur sans support DOM-event
    eval('source.on' + type + '= callback') ;
  }
}
function getStandardEvent(e) {
 // abstraction pour recuperer un objet standard pour l'evenement en cours 
 // comprend le modele DOM standard et le modele proprietaire de MSIE
 // e : parametre recu lors de l'appel du gestionnaire d'evenement 
 // retour : objet d'evenement standard
 if (e == null && window.event) {
   // cas particulier de MSIE pour recuperer l'evenement en cours
   e = window.event ;
 }
 if (e.target == null && e.srcElement) {
   // cas particulier de MSIE pour recuperer la balise DOM cible
   e.target = e.srcElement ;
 }
 if (! e.preventDefault ){
   // cas particulier de MSIE pour empecher l'action par defaut du navigateur
   e.preventDefault = function () { this.returnValue = false ; } ;
 }
 return e ;
}

function openLinkInPopupWhenClick(e) {
  // gestionnaire d'evenement actif lors d'un clic sur les liens
  // ouvre le lien dans une popup et pas dans une page normale
  // e : evenement de clic

  e = getStandardEvent(e)  ;
  var link =  e.target  ;

  var addr = link.getAttribute('href') ;
  /*if( addr == null){
    addr=link.parentNode.getAttribute('href');
    }*/

  //window.open(addr, '_blank', 'resizable=yes,width=200,height=300')  ;
  //window.open(addr, '_blank', 'resizable=yes,menubar=yes,scrollbars=yes,status=yes,titlebar=yes,toolbar=yes,location=yes')  ;
   window.open(addr, '_blank');
  e.preventDefault()  ;
  return false ;
}


function prepareNWLinks() {
 // explore le document pour rechercher les liens externe
 // à chaque lien, on verifie s'il a "nouvfen" dans la liste de ses classes
 // si oui, on enregistre un gestionnaire d'evenement pour le clic de ce lien
 var linka, list, i ;
 list = document.getElementsByTagName('a') ;
 for(i=0; i<list.length; i++) {
   linka = list.item(i) ;
   if (linka.getAttribute('href') && linka.className) {
     if ((' '+linka.className+' ').indexOf(' nouvfen ') != -1) {

       addEvent(linka, 'click', openLinkInPopupWhenClick) ;
     }
   }
 }
}

//onchange=''
function formSubmit(e){
	e = getStandardEvent(e)  ;
  	var cbo =  e.target  ;
	cbo.form.submit();
	}
	
function prepareAutoCombos() {
 // explore le document pour rechercher les combos
 // à chaque lien, on verifie s'il a "cboAutomatic" dans la liste de ses classes
 // si oui, on enregistre un gestionnaire d'evenement pour le change de ce combo
 var cbo, list, i ;
 list = document.getElementsByTagName('select') ;
 for(i=0; i<list.length; i++) {
   cbo = list.item(i) ;
   if (cbo.className) {
     if ((' '+cbo.className+' ').indexOf(' cboAutomatic ') != -1) {
       addEvent(cbo, 'change', formSubmit) ;
     }
   }
 }
}

function wpopup(page)
   {
   var top=(screen.height-200)/2;
   var left=(screen.width-450)/2;
   window.open ('csv/popup.php?file='+page,'Message','width=470, height=220, left='+left+', top='+top+', toolbar=no, location=no, status=no, scrollbars=no, resizable=no, copyhistory=no');
   }


function  lnkNoticeClick(){
   var detailNotice=document.getElementById('detailNotice');
   if(detailNotice.style.display =="none"){
     detailNotice.style.display ="block";
     }
   else{
     detailNotice.style.display ="none";
     }
   }



function getSheetsActives() {
  /*fonction qui test si les feuilles de style sont activé ou pas (firefox)*/
  /*par une bidouille : je n'ai pas trouver de méthode plus propre*/
  a = document.getElementById("logotete"); //on teste la hauteur du ldif logo
  if(a.offsetHeight>90){ /*qui est égale à 0 si pas de feuille de style*/
    return true;
    }
  else {
    return false;
    }
  }
  
//Après avoir recréé une fonction JavaScript dans ce même langage,
//l'étape suivante consiste à pallier aux manques de ce langage.
//Notamment, nombre de développeurs se sont trouvés frustrés de pouvoir
//sélectionner un élément que par identifiant avec getElementById(),
// mais auraient voulu également pouvoir sélectionner l'ensemble des éléments correspondant
// à une certaine classe - ce que le DOM ne propose pas.
function getElementsByClass(searchClass, node, tag) {
     var classElements = new Array();
     if ( node == null )
       node = document;
       if ( tag == null )
         tag = '*';
         var els = node.getElementsByTagName(tag);
         var elsLen = els.length;
         var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
         for (i = 0, j = 0; i < elsLen; i++) {
           if ( pattern.test(els[i].className) ) {
             classElements[j] = els[i];
             j++;
             }
           }
         return classElements;
         }




// Attribut en une ligne
function addAttribute(nodecou,attrName,attrValue){
  Attribut = document.createAttribute(attrName);
  Attribut.nodeValue =  attrValue;
  nodecou.setAttributeNode(Attribut);
  }
  
function  createElementWithID(tag,id){
  var nodec;
  nodec = document.createElement(tag);
  addAttribute(nodec,"id",id);

  return nodec;
  }
  
function setAbsolutePosition(nodecou,newX,newY){
  //repositionnement d'un claque ou autre bloque
  nodecou.style.position='absolute';
  nodecou.style.left= newX+"px";
  nodecou.style.top=  newY+"px";
  }

function getPositionCurseur(e){
  //Récupère la position du curseur
  //ie
  if(document.all){
    curX = event.clientX;
    curY = event.clientY;
    }

  //netscape 4
  if(document.layers){
    curX = e.pageX;
    curY = e.pageY;
    }

  //mozilla
  if(document.getElementById){
    curX = e.clientX;
    curY = e.clientY;
    }
  }
function getAbsolutePositionCurseur(e){
  //Calcul la position de la souris en absolu
  //cad par rapport a la page, pas à la fenetre
  getPositionCurseur(e);
  if(document.all){
    curAX=document.documentElement.scrollLeft+curX;
    curAY=document.documentElement.scrollTop+curY;
    }
  else{
    curAX=window.pageXOffset+curX;
    curAY=window.pageYOffset+curY;

  }
  }
  
function getInnerText(nodecou){

  if(nodecou.textContent){ // Firefox
    return  nodecou.textContent;
    }
  else{ //IE
    return nodecou.innerText;
    }
}

function showMutable(){
  // on affiche les éléément mutable (en fait un seul)
  // c'est à dire des éléments html dont le contenu est sensé
  // etre transformer par js, et qui sont caché par défaut,
  // pour qu'il n'y est pas de clignotement au chargement de la page

  mutabls=getElementsByClass("jsmutable");
  for(i=0;i< mutabls.length;i++){
    mutabls[i].style.display="block";
    }
    
  }
  
function initConfirmClose(){
    //Si le formulaire est actif on ajoute l'évènnement de fermeture (confimation)
    addEvent( window, 'beforeunload', window_ConfirmBeforeUnload) ;
    blnModified=false;

    //Et l'evennement de submit form correspondant
    formcou=document.getElementsByTagName("form")[0];
    addEvent( formcou, 'submit', genericform_Submit) ;
    }
    
function window_ConfirmBeforeUnload(e){
  //Ceci pose la question de confirmation de fermetrue
  //et marche avec les dernier navigateur Firefox, IE 6+
  if(blnModified){
    e.returnValue ="Vous n'avez pas enregistré vos modifications.";
    }
  }
function genericform_Submit(){
  //L'utilisateur vient de valider le formulaire donc :
  blnModified=false;
  //Afin de ne pas lui demander la confirmation de la fermeture de la page.
  }
  

