isCheckAllCheckbox = false;
validDelStrict = true; //Validation chaque éléments, sinon seulement les conteneur non vide

innovaeditor = null;
modifier = false;
last_text = '';
edit_ordre = null;
edit_idc = null;
edit_section = null;
first_id = null;

/**
 * Recoit en parametre la référence au checkboxs.
 * ne pas mettre this mais plutôt le nom complet vers l'objet.
 */
function checkAllCheckbox(box){
   isCheckAllCheckbox = (isCheckAllCheckbox == false) ? true : false;
   if(typeof(box) != 'undefined'){
      if(typeof(box.length) != 'undefined'){
         for(i=0; i < box.length; i++){
            box[i].checked = isCheckAllCheckbox;
         }
      }
      else{ box.checked = isCheckAllCheckbox; }
   }
}

/**
 * Cette fonction est appelé lors de la suppresion d'un éléments dans la page index.cgi.
 * Il recoit en parametre, Une référence au formulaire, le nombre d'éléments que celui-ci contient, le nom du type de l'élément.
 * Retourne <code>true</code> si l'élément peut être supprimer, <code>false</code> sinon.
 */
function validDel(ihref, nbrElem, typeElem, langueAdmin){
   delall = false

   if(typeElem == 'Lien' || typeElem == 'Galerie')
      delall = true

   if(validDelStrict || nbrElem > 0){
      text = "L'élément va être supprimé !";
      if(langueAdmin == 'eng') { text = "The element will be deleted !"; };
      if(confirm(text)){
         text = "Les éléments contenus dans l'élément que vous supprimez vont être supprimés !";
         if(langueAdmin == 'eng') { text = "All the elements in the element that will be deleted will be deleted !"; };

         if(nbrElem > 0 && !delall && confirm(text))
            delall = true
         window.location.href = ihref + '&CMS_1delall=' + delall
      }
   }
   else
      window.location.href = ihref + '&CMS_1delall=' + delall
}

/**
 * GetCookie(name,[defaultValue])
 * retrieves the value  of a cookie (returns null if it doesn't exist)
 */
function GetCookie (name, d) {
	if (!d) var d = null;
	var arg = name + "=";
	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) {
			var endstr = document.cookie.indexOf (";", j);
			if (endstr == -1) endstr = document.cookie.length;
			return unescape(document.cookie.substring(j, endstr));
 		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return d;
}

/**
 * SetCookie(name, value, [expires])
 * sets the cookie name with value
 * (takes optional argument expires which is the time in hours till it expires)
 */
function SetCookie (name, value, expires,dontEscape) {
	if (expires) {
		var exp = new Date();
		exp.setTime(exp.getTime() + (expires*60*60*1000));
		expires = exp;
	}
	var escapedValue = value;
	
	if (!dontEscape)
	  escapedValue = escape(escapedValue);
	  
	document.cookie = name + "=" + escapedValue + ((expires == null) ? "" : ("; expires=" + expires.toGMTString()));
}

/**
 * DeleteCookie(name)
 * removes the cookie "name"
 */
function DeleteCookie (name) {
	var exp = new Date();
	exp.setTime (exp.getTime() - 1000);
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

/**
 * Effectue la validation des champs pour la référence au formulaire passé en parametre.
 * Il retourne <code>true</code> si le formulaire est valide, <code>false</code> sinon.
 * - iform, nom du formulaire a valider
 * - msgerr, le message d'erreur general a afficher avant le(s) message(s) particulier(s) ("" n'affiche pas de message general)
 * - maxmsg, le nombre de message maximum a afficher
 * - focus, si "1", set le focus sur le premier champs valide qui comporte une erreur
 * - Le select-multiple est maintenant supporté
       Dans le cas d'un SELECT multiple, la valeur testée sera le NOMBRE D'ITEMS SELECTIONNÉS ayant un VALUE non NULL 
       donc validés préférablement en type 'int'. On pourrait par exemple valider "Entre 1 et 5 valeurs sélectionnées"
 * @todo
 * - Si iform est undef, valider tout les formulaire de la page
 * - Faire la validation est éléments radio
 */ 
function validForm(iform,msgerr,maxmsg,focus){

   if(typeof(msgerr) != 'undefined'){ errBase = msgerr; }
   else{ 

    var langueAdmin;
    var cookieAdmin = GetCookie('admin');

    if (!cookieAdmin)
    {
        if (iform.langue)
            langueAdmin = iform.langue.value;
        else
            langueAdmin = 'fra';
    }
    else
    {
        langueAdmin = cookieAdmin.substring(cookieAdmin.length - 3);
    }
    
    if (langueAdmin == 'eng')
        errBase = 'An error prevents submitting the form.\n\n';
    else
        errBase = 'Une erreur empêche de soumettre le formulaire.\n\n';
   };

   var err = '';
   var iregx = new RegExp();
   var nbrerr = 0;
   var fieldfocus = '';

   for(i=0; i < iform.length; i++){
      iregx.compile('^V_.*$','');
      //si le nom du champ match une validation
      //c'est qu'une validation doit être effectué.
      if(iregx.test(iform.elements[i].name)){
         var isCheckBoxList = false;
         vername = new String(iform.elements[i].name);
         ver = new String(iform.elements[i].value);
         ver = ver.split('|',5);
         valname = vername.substr(2, vername.length - 2);
         valref = iform.elements[valname];
				 val = undefined;
                 
         switch(valref.type){
            case 'text' : case 'hidden' : case 'textarea' : case 'password' :
               val = valref.value;
               break;
            case 'file' : 
               val = valref.value;
               break;
            case 'checkbox' : case 'radio' :
							 if (valref.checked)
							 {
								 val = valref.value;
							 }
               break;
               
            case 'select-one' :
               val = valref.options[valref.selectedIndex].value;
               break;

            case 'select-multiple' :
	            tmp = new Array();
	            for(var j = 0; j < valref.options.length; j++)
	            {
	              if(valref.options[j].selected && valref.options[j].value != '')
	              {
	                tmp.push(valref.options[j].value);
	              }
	            }
	            val = tmp.join();
           		break;
            default : 
               if (typeof(valref.length) != "undefined")
               for (var j = 0; j < valref.length; j++)
               {
								 if (valref[j].type == "radio" && valref[j].checked)
								 {
									 val = valref[j].value;
								 } else if(valref[j].type == "checkbox") {
                                     val = valref[j].value;
                                     isCheckBoxList = true;
                                 }
               }
               break;
         }

         if(typeof(val) == 'undefined') val = '';

         if(ver[1] == 1 || val.length > 0){
            //Effectuer la validation sur le champs selon les parametres
            
            switch(ver[0]){
               case 'char' :
                  if(isCheckBoxList) {
                     if(ver[1] == "1") {
                         var nbrcheckbox=0;
                         for(var j = 0; j < valref.length; j++) {
    		                 if(valref[j].type == "checkbox") {
                                if(valref[j].checked) nbrcheckbox++;
                             }
                         }
                         if((ver[2] != 0) && (nbrcheckbox < ver[2])) {
                             err += ver[4] + '\n';
                             nbrerr += 1;
                         } else if((ver[3] != 0) && (nbrcheckbox > ver[3])) {
                             err += ver[4] + '\n';
                             nbrerr += 1;
                         }
                     }
                  } else if((ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){ 
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  };
                  break;
               case 'date' :
                  iregx.compile('^[0-9]{2}-[0-9]{2}-[0-9]{4}$','');
                  if(!iregx.test(val)){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  else {
                     var day = val.substr(0,2);
                     var month = val.substr(3,2);
                     var year = val.substr(6,4);
                     var leap = 0;

                     if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
                        leap = 1;
                     };

                     if( (year <= 0) || ((month < 1) || (month > 12)) || (day < 1) ||
                         ((month == 2) && (leap == 1) && (day > 29)) || ((month == 2) && (leap != 1) && (day > 28)) ||
                         ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) ||
                         ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11")))
                        ) {
                        if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                        nbrerr += 1;
                        if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                     };
                  };
                  break;
               case 'date2' :
                  iregx.compile('^[0-9]{4}(-|\/)[0-9]{2}(-|\/)[0-9]{2}$','');
                  if(!iregx.test(val)){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  else {
                     var day = val.substr(8,2);
                     var month = val.substr(5,2);
                     var year = val.substr(0,4);
                     var leap = 0;

                     if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
                        leap = 1;
                     };

                     if( (year <= 0) || ((month < 1) || (month > 12)) || (day < 1) ||
                         ((month == 2) && (leap == 1) && (day > 29)) || ((month == 2) && (leap != 1) && (day > 28)) ||
                         ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) ||
                         ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11")))
                        ) {
                        if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                        nbrerr += 1;
                        if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                     };
                  };
                  break;
               case 'doc' :
                  if(ver[2] == "undefined" || ver[2] == "") ver[2] = 0;
                  if(ver[3] == "undefined" || ver[3] == "") ver[3] = 0;
                  var reg = /([A-Z]|[0-9]|_)+\.(doc|zip|pdf|pps|ppt|xls|txt|wmv|wma)$/i;
                  if(!reg.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
//                  iregx.compile('^[a-z0-9\-_/.]+\.(doc|zip|pdf|xls|txt|pps|ppt|avi|wmv|wma)$','i');
//                  if(!iregx.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'domain' :
                  iregx.compile('^[a-z|0-9|-]*$','i');
                  if(!iregx.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'email' :
                  iregx.compile('^[a-z0-9]+[a-z0-9._-]+@[a-z0-9._-]+[.][a-z]{2,6}$','i');
                  if(!iregx.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'hexa' :
                  iregx.compile('^(#?[0-9|a-f]{0,6})?$','i');
                  if(!iregx.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'hour' :
                  iregx.compile('^[0-9]{1,2}:[0-5][0-9]$','');
                  if(!iregx.test(val)){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  else {
                     if(val.length == 4) { val = '0' + val; }
                     var hour = val.substr(0,2);
                     var min = val.substr(3,2);
                     if( (hour < 0 || hour > 24) || (min < 0 || min >59) ) {
                        if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                        nbrerr += 1;
                        if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                     };
                  }
                  break;
               case 'img' :
                  var reg = /([A-Z]|[0-9]|_)+\.(gif|jpg|jpeg|png)$/i;
                  if(!reg.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
//                  iregx.compile('^[a-z0-9\-_/.]+\.(gif|jpg|jpeg|png)$','i');
//                  if(!iregx.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'int' :
                  iregx.compile('^[0-9]+$','');
                  if(!iregx.test(val) || (parseInt(ver[2]) > 0 && parseInt(val) < parseInt(ver[2])) || (parseInt(ver[3]) > 0 && parseInt(val) > parseInt(ver[3]))){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'multi' :
                  var reg = /([A-Z]|[0-9]|_)+\.(swf|rm|ram|mp3|mpg|mpeg|avi|wmv|mov|wma)$/i;
                  if(!reg.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
//                  iregx.compile('^[a-z0-9\-_/.]+\.(swf|rm|ram|mp3|mpg|mpeg|avi|wmv|mov|wma)$','i');
//                  if(!iregx.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'passwd' :
                  eval('val_confirm = iform.' + valname + '_confirmation.value;');
                  if(val != val_confirm || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'pct' :
                  iregx.compile('%$','');
                  if( iregx.test(val) ) {
                     val = val.substr(0,val.length-1);
                     ver[3] = 100;
                  };
                  iregx.compile('^[0-9]*$','');
                  if(!iregx.test(val) || (parseInt(ver[2]) > 0 && parseInt(val) < parseInt(ver[2])) || (parseInt(ver[3]) > 0 && parseInt(val) > parseInt(ver[3]))){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               case 'regexp' :
                  iregx.compile(ver[2],'');
                  if(!iregx.test(val)){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  };
                  break;
               case 'user' :
                  iregx.compile('^[a-z|0-9|_|.|-]*$','i');
                  if(!iregx.test(val) || (ver[2] > 0 && val.length < ver[2]) || (ver[3] > 0 && val.length > ver[3])){
                     if( ! /^\d+$/.test(maxmsg) || nbrerr < maxmsg ) { err += ver[4] + '\n'; };
                     nbrerr += 1;
                     if( fieldfocus == '' && focus ) { fieldfocus = valname; };
                  }
                  break;
               default : break;
            }
         }
      }
   }

   if(err == ''){ return true; }
   else{
      alert(errBase + err + '\n\n'); 
      if( fieldfocus != '' && focus ) { i = ''; if (typeof(iform.elements[fieldfocus].length) != "undefined") i = "[0]"; eval('document.forms["' + iform.name + '"].elements["' + fieldfocus + '"]'+i+'.focus();'); };
      return false;
   }
}

var mlstimeout = 300
var timeoutpopup = null   //NE DOIT PAS ETRE GLOBAL !!!
var collerOff = '<span class="mnu_option_off">Coller</span>'

function Mnu(id){
   this.id = id
   this.bd_id = null
   this.page = null
   this.idc = null
   this.ordre = null
   this.type = null
   this.typeMsg = null
   this.imgSrc = null
   this.nbrc = null
   this.section = null
   this.langue = null
   this.langueAdmin = null

   var txt = new Array('Add edit box','Add element (period, script, ...)','Modify','Delete','Copy','Cut','Paste');

   this.getMnu = function(){
     if(this.langueAdmin == 'fra') { txt = new Array('Ajouter zone d\'édition','Ajouter élément (période, script, ...)','Modifier','Supprimer','Copier','Couper','Coller'); };

      var out = ''
      priv = arguments
            
      //Permet de restraindre les types d'éléments d'ajout/modif pour les Menu et Images de Galeries
      if (this.type == 'Menu' || this.type == 'GalerieImg') addType = this.type;
      else addType = '';
      
      // vérifie si le id est en version décimale
      var idRegex = /\./;
      // vérifie si le idc est en version décimale à 0
      // indique si je suis dans une cellule d'un tableau ou non
      var idcRegex = /\.0{3}$/;
      var id_elem;
      
      // si l'élément est dans un conteneur et s'il est une liste ordonnée ou symbolique
      // cela inclut les balises <ul> et <ol>, exclut les balises <p> et <blockquote>
      if (idcRegex.test(this.idc))
      {
      	id_elem = 'list_';
      }
      // si l'élément est dans une cellule d'un tableau ou simplement dans rien
      // cela inclut les éléments de la page, les cellules d'un tableau et les balises <p> et <blockquote>
      else
      {
      	id_elem = 'idc_' + this.idc + '_elem_';
			}
			
			if (this.type == "Editeur")
      {
      	id_elem = 'text_' + ((idRegex.test(this.ordre)) ? this.ordre : this.ordre + '.000');
			}
			else
			{
				id_elem += ((idRegex.test(this.ordre)) ? this.ordre : this.ordre + '.000');
			}
			
			if (!first_id) first_id = id_elem;
			
      var btn = new Array(
         new Array(
         		new Array(txt[0],'#','location.replace("index.cgi?page=' + this.page + '&section=' + this.section + '&langue=' + this.langue + '&edit=' + id_elem + '&scrollto=" + getAbsPos(document.getElementById("'+id_elem+'"),"Top"));return false;', ''),
            new Array(txt[1],'element_modify.cgi?CMS_1page=' + this.page + '&CMS_1idc=' + this.idc + '&CMS_1ordre=' + this.ordre + '&CMS_1aed=a&CMS_1section=' + this.section + '&CMS_1langue=' + this.langue + '&CMS_1type=' + addType,''),
            new Array(txt[2],'element_modify.cgi?CMS_1page=' + this.page + '&CMS_1idc=' + this.idc + '&CMS_1ordre=' + this.ordre + '&CMS_1type=' + this.type + '&CMS_1aed=e&CMS_1section=' + this.section + '&CMS_1langue=' + this.langue,''),
            new Array(txt[3],'#','if(GetCookie("ec") == ' + this.bd_id + '){SetCookie("ec","")}; validDel("element_aed.cgi?CMS_1page=' + this.page + '&CMS_1idc=' + this.idc + '&CMS_1ordre=' + this.ordre + '&CMS_1type=' + this.type + '&CMS_1aed=d&CMS_1section=' + this.section + '&CMS_1langue=' + this.langue + '&CMS_1nbrc=' + this.nbrc + '", ' + this.nbrc + ', "' + this.type + '", "' + this.langueAdmin + '");return false;')
         ),
         new Array(
            new Array(txt[4],'#','SetCookie("ecargs","0");SetCookie("ecpage","' + this.page + '");SetCookie("ec","' + this.bd_id + '");showHide("mnu_' + this.id + '","hidden");return false;'),
            new Array(txt[5],'#','SetCookie("ecargs","1&'+this.idc+'&'+this.nbrc+'&'+this.type+'",undefined,1);SetCookie("ecpage","' + this.page + '");SetCookie("ec","' + this.bd_id + '");showHide("mnu_' + this.id + '","hidden");return false;'),
            new Array(txt[6],'element_copy.cgi?ppage=' + this.page + '&idc=' + this.idc + '&paste=' + this.ordre + '&section=' + this.section + '&langue=' + this.langue,'' )
         )
      )
      
      if (this.type == "Editeur")
      {
      	btn[0][2][1] = '#';
      	btn[0][2][2] = 'location.replace("index.cgi?page=' + this.page + '&section=' + this.section + '&langue=' + this.langue + '&edit=' + id_elem + '&modif=1&scrollto=" + getAbsPos(document.getElementById("'+id_elem+'"),"Top"));return false;';
      }

      var mnuid = 'mnu_' + this.id

      if(priv.length > 0){
         out += '<table id="' + mnuid + '" class="mnu">'
         if(this.typeMsg != ''){ out += '<tr><td class="mnu_title" onmouseover="overCell(\'' + mnuid + '\',this);" onmouseout="outCell(\'' + mnuid + '\',this);">' + this.typeMsg + '</td></tr>'; }
         for(i=0;i<priv.length;i++){
            got = 0
            for(j=0;j<priv[i].length;j++){
               if(priv[i][j]){
                  out += '<tr><td id="' + mnuid + '_' + btn[i][j][0] + '" class="mnu_option" onmouseover="this.className=\'mnu_option_over\';overCell(\'' + mnuid + '\',this);" onmouseout="this.className=\'mnu_option\';outCell(\'' + mnuid + '\',this);"><a href="' + btn[i][j][1] + '" onclick=\'' + btn[i][j][2] + '\'>' + btn[i][j][0] + '</a></td></tr>'
                  got = 1
               }
            }
            //if(i!=priv.length-1 && got) out += '<tr><td class="mnu_separateur"></td></tr>'
         }
         out += '</table>'

      }
      
      return out
   }
   return this
}

//L'objet par défaut est créer.
mnu = new Mnu();


function showHide(mnuid,visibility){
		// quand le mode Édition est actif, le menu n'apparait pas
		if (visibility == 'visible' && innovaeditor) return;
   eval('clearTimeout(timeoutpopup' + mnuid + ')')
   eval('timeoutpopup' + mnuid + ' = setTimeout(\'document.getElementById(\"' + mnuid + '\").style.visibility = "' + visibility + '"\', mlstimeout)')
}

function overCell(mnuid, cell){
   eval('clearTimeout(timeoutpopup' + mnuid + ')')
}

function outCell(mnuid, cell){
   eval('timeoutpopup' + mnuid + ' = setTimeout("showHide(\'' + mnuid + '\',\'hidden\')", mlstimeout)')
}

function disableElems(langue_admin)
{
	var tags = new Array('A', 'INPUT');

	for (var j = 0; j < tags.length; j++)
	{
		var elems = document.getElementsByTagName(tags[j]);
		
		for (i = 0; i < elems.length; i++)
		{
			if (!isInToolbar(elems[i]))
			{
				elems[i].href = '#';
				elems[i].onclick = function () { if (langue_admin == 'fra') { alert('Vous êtes actuellement en mode édition.\n\nVeuillez sauvegarder vos modifications ou annuler pour retourner en mode normal.'); } else { alert('You are currently in the editing mode.\n\nPlease save your changes or cancel to go back in normal mode.'); } return false; };
			}
		}
	}
}

function isInToolbar(node)
{
	do {
		if (node.id == 'toolbar' || node.name == 'innovaeditor')
			return true;
	}
	while (node = node.parentNode);
	
	return false; 
}

function moveToolbar() {
	var ary26 = new Array('previewoEdit1', 'tableoEdit1', 'tablecreateoEdit1', 'formoEdit1');
	var btn26 = new Array('btnPreviewoEdit1', 'btnTableEditoEdit1', 'btnTableoEdit1', 'btnFormoEdit1');
	var ary52 = new Array('styleoEdit1', 'paragraphoEdit1', 'fontnameoEdit1', 'fontsizeoEdit1', 'customtagoEdit1', 'coloroColor1oEdit1', 'coloroColor2oEdit1');
	var btn52 = new Array('btnStyleAndFormatoEdit1', 'btnParagraphoEdit1', 'btnFontNameoEdit1', 'btnFontSizeoEdit1', 'btnCustomTagoEdit1', 'btnForeColoroEdit1', 'btnBackColoroEdit1');
  
  var toolbar = document.getElementById('toolbar');
  toolbar.style.width = document.body.scrollWidth;
  
	if (navigator.appName.indexOf('Microsoft') != -1) { toolbar.style.pixelTop = document.body.scrollTop; }
	else { toolbar.style.top = window.pageYOffset; }

	for (var i = 0; i < ary26.length; i++)
	{
		var ary = document.getElementById(ary26[i]);
		if (ary && ary.childNodes[0].style.display != "none")
		{
			ary.style.left = document.getElementById(btn26[i]).offsetParent.offsetLeft;
			
			if (navigator.appName.indexOf('Microsoft') != -1) { ary.style.pixelTop = document.body.scrollTop + 26; }
			else { ary.style.top = window.pageYOffset + 26; }
		}
	}

	for (var i = 0; i < ary52.length; i++)
	{
		var ary = document.getElementById(ary52[i]);
		if (ary && ary.childNodes[0].style.display != "none")
		{
			ary.style.left = document.getElementById(btn52[i]).offsetParent.offsetLeft;
			
			if (navigator.appName.indexOf('Microsoft') != -1) { ary.style.pixelTop = document.body.scrollTop + 52; }
			else { ary.style.top = window.pageYOffset + 52; }
		}
	}
}

function initEditor()
{
	document.body.style.marginTop = '54px';
	innovaeditor = 1;
	
	//moveToolbar();
	
	//window.onscroll = function() { moveToolbar(); }
	//window.onresize = function() { document.getElementById('toolbar').style.width = document.body.scrollWidth; }
}

function getAbsPos(elt,which) {
   iPos = 0;
   while (elt != null) {
      iPos += elt["offset" + which];
      elt = elt.offsetParent;
   }
   return iPos-80;
}

function iePrompt(str,lang){
	var settings = "dialogWidth: 290px; dialogHeight: 160px; center: yes; edge: raised; scroll: no; status: no;";
	return window.showModalDialog("/admin/"+lang+"/iePrompt.html", str, settings);
}

function cbPrompt(str,lang){
	try {
		if(window.showModalDialog){
			var out = iePrompt(str,lang);
			if (typeof(out) != 'boolean'){
				return out;
			}
			else {
				return '';
			}
		}
		else { return prompt(str, ""); }
	} catch (e) { 
		return ''; 
	} 	
}

function selectAll(form, checked, prefix)
{
	for (var i = 0; i < form.elements.length; i++)
	{
		if (form.elements[i].type == "checkbox")
		{
			if (!prefix || (prefix && form.elements[i].name.substring(0, prefix.length) == prefix))
			{
				form.elements[i].checked = checked;
			}
		}
	}
}
