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

/**
 * Recoit en parametre la référence au checkboxs.
 * ne pas mettre this mais plutôt le nom complet vers l'objet.
 */

function runSubmitLocation(form){
	if (form.periode48.value == "" && form.periode24.value == "" && form.location_heure_additionnelle.value == "" && form.premiere_heure.value == "" && form.heure_additionnelle.value == "" && form.cours_initiation.value == "") {
		alert ("Vous devez sélectionner une quantité.");		
	} else {
		form.submit();
	}
}; 

function runSubmit(form){
	if (form.initiation.value == "" && form.initiation2.value == "" && form.famille.value == "" && form.groupe.value == "" && form.initiation_prive.value == "") {
		alert ("Vous devez sélectionner une quantité.");		
	} else {
		form.submit();
	}
};

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)){
         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);
         eval('valref = iform.' + valname + ';');

         switch(valref.type){
            case 'text' : case 'hidden' : case 'file' : case 'textarea' : case 'password' :
               val = valref.value;
               break;
            //NON SUPPORTÉ PARCE QUE BUG DANS IE 5, à vérifier
            //~ case 'radio' : case 'checkbox' :
               //~ for(j=0; j < valref.length; j++) {
                  //~ if(valref[j].checked) val = valref[j].value;
               //~ };
               //~ break;
            case 'select-one' :
               val = valref.options[valref.selectedIndex].value;
               break;

            case 'select-multiple' :
            val = 0;
            for(var j = 0; j < valref.options.length; j++)
            {
              if(valref.options[j].selected && valref.options[j].value != '')
              {
                val++;
              }
            }
            break;

            default : 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((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' :
                  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,4}$','');
                  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' :
                  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' :
                  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 ) { eval('document.' + iform.name + '.' + fieldfocus + '.focus();'); };
      return false;
   }
}


/**
  Mnu, un petit objet tres simplet
  et quelques methodes de over/out

  tester avec ie6 et op7
  @todo - Rendre ceci cross browser full compatible
*/

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('Édition','Ajouter','Modifier','Supprimer','Copier','Couper','Coller');

   this.getMnu = function(){
     if(this.langueAdmin == 'eng') { txt = new Array('Edit','Add','Modify','Delete','Copy','Cut','Paste'); };

      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_';
			}
			
			id_elem += ((idRegex.test(this.ordre)) ? this.ordre : this.ordre + '.000');
			
			if (!first_id) first_id = id_elem;
			
			var codeEditor = escape(getEditorForJS(this.page, this.idc, this.ordre, this.section, this.langue, ''));
			
      var btn = new Array(
         new Array(
         		new Array(txt[0],'#','if (editor) return false;disableElemLinks();edit_ordre = "' + this.ordre + '";edit_idc = "' + this.idc + '";document.getElementById("' + id_elem + '").innerHTML="' + unescape(codeEditor) + '" + document.getElementById("' + id_elem + '").innerHTML;initEditor();showHide("mnu_' + this.id + '","hidden");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 == "HTMLArea")
      {
      	id_elem = 'text_' + ((idRegex.test(this.ordre)) ? this.ordre : this.ordre + '.000');

      	btn[0][2][1] = '#';
      	btn[0][2][2] = 'if (editor) return false;modifier = true;disableElemLinks();last_text = document.getElementById("' + id_elem + '").innerHTML;var codeEditor = getEditorForHTML("' + this.page + '","' + this.idc + '","' + this.ordre + '","' + this.section + '","' + this.langue + '",document.getElementById("' + id_elem + '").innerHTML);edit_ordre = "' + this.ordre + '";edit_idc = "' + this.idc + '";document.getElementById("' + id_elem + '").innerHTML=codeEditor;initEditor();showHide("mnu_' + this.id + '","hidden");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' && editor) return;
   eval('clearTimeout(timeoutpopup' + mnuid + ')')
   eval('timeoutpopup' + mnuid + ' = setTimeout(\'document.all.' + 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 enableElemLinks()
{
	var i, links = document.getElementsByTagName('A');
	
	var pageRegex = /(element_modif|formMenu)/;
	for (i = 0; i < links.length; i++)
	{
		if (elemLinks[i] && pageRegex.test(elemLinks[i]))
		{
			links[i].href = elemLinks[i];
		}
	}
	
	editor = null;
}

function disableElemLinks()
{
	var i, links = document.getElementsByTagName('A');
	elemLinks = new Array(links.length);
	
	var pageRegex = /(element_modif|formMenu)/;
	for (i = 0; i < links.length; i++)
	{
		if (pageRegex.test(links[i].href))
		{
			elemLinks[i] = links[i].href;
			links[i].href = '#';
		}
		else
		{
			elemLinks[i] = null;
		}
	}
}

function getEditorForJS(page, idc, ordre, section, langue, content)
{
	var elem = 
	'<input type=\\"hidden\\" name=\\"CMS_1page\\" value=\\"' + page + '\\" />' +
	'<input type=\\"hidden\\" name=\\"CMS_1idc\\" value=\\"' + idc + '\\" />' +
	'<input type=\\"hidden\\" name=\\"CMS_1ordre\\" value=\\"' + ordre + '\\" />' +
	'<input type=\\"hidden\\" name=\\"CMS_1aed\\" value=\\"a\\" />' +
	'<input type=\\"hidden\\" name=\\"CMS_1section\\" value=\\"' + section + '\\" />' +
	'<input type=\\"hidden\\" name=\\"CMS_1langue\\" value=\\"' + langue + '\\" />' +
	'<input type=\\"hidden\\" name=\\"CMS_1type\\" value=\\"HTMLArea\\" />' +
	'<input type=\\"hidden\\" name=\\"CMS_1p1\\" value=\\"\\" />';

	var out = '<form action=\\"element_aed.cgi\\" method=\\"post\\" id=\\"edit\\" name=\\"edit\\" style=\\"margin:0px;padding:0px;\\">' + elem + '<textarea id=\\"editor\\" name=\\"editor\\" style=\\"width:100%\\" rows=\\"30\\" cols=\\"80\\">' + content + '</textarea></form>';  
	return out;
}

function getEditorForHTML(page, idc, ordre, section, langue, content,rows)
{
if (!rows) rows = 30;
	var elem = 
	'<input type="hidden" name="CMS_1page" value="' + page + '" />' +
	'<input type="hidden" name="CMS_1idc" value="' + idc + '" />' +
	'<input type="hidden" name="CMS_1ordre" value="' + ordre + '" />' +
	'<input type="hidden" name="CMS_1aed" value="e" />' +
	'<input type="hidden" name="CMS_1section" value="' + section + '" />' +
	'<input type="hidden" name="CMS_1langue" value="' + langue + '" />' +
	'<input type="hidden" name="CMS_1type" value="HTMLArea" />' +
	'<input type="hidden" name="CMS_1p1" value="" />';

	var out = '<form action="element_aed.cgi" method="post" id="edit" name="edit" style="margin:0px;padding:0px;">' + elem + '<textarea id="editor" id="editor" style="width:100%" rows="'+rows+'" cols="80">' + content + '</textarea></form>';
	return out;
}

function moveToolbar() {
	var toolbar = document.getElementById('toolbar');
	var ns6 = document.getElementById && !document.all;
  var ie4 = document.all;
  
	if (ie4) toolbar.style.pixelTop=document.body.scrollTop;
	else if (ns6) toolbar.style.top = window.pageYOffset;
	else eval(toolbar.top=eval(window.pageYOffset));
	
	with (toolbar.style)
	{
		position = 'absolute';
		left = '0px';
		width = '1000px';
		height = '70px';
	}
	
	if (ie4 || ns6 || document.layers) eval('editor_timer = setTimeout(function(){ moveToolbar() },0)');
}

function initEditor()
{
  document.body.style.marginTop='71px';
	tinyMCE.execCommand('mceAddControl',null,'editor');
	editor = 1
	
	moveToolbar();
}

function removeEditor(editor)
{
  document.body.style.marginTop='0px';

	var ns6 = document.getElementById && !document.all;
  var ie4 = document.all;
	if (modifier)
	{
		var idRegex = /\./;
    var id_elem = 'text_' + ((idRegex.test(edit_ordre)) ? edit_ordre : edit_ordre + '.000');
		var content;
		content = document.getElementById(id_elem);
		content.innerHTML = last_text;
		
		if (ns6) {
			// résolution du problème de rafraîchissement de Firefox
			document.getElementById(first_id).innerHTML = '<div></div>' + document.getElementById(first_id).innerHTML;
			content = document.getElementById(first_id);
			content.removeChild(content.firstChild);
		}
		modifier = false;
	}
	else
	{
    // 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(edit_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
    {
      if (edit_idc)
      	id_elem = 'idc_' + edit_idc + '_elem_';
    	else
      	id_elem = 'tinymce_section_';
      	
		}
		
		id_elem += ((idRegex.test(edit_ordre)) ? edit_ordre : edit_ordre + '.000');
		
		var content;
		
		if (ns6) {
			content = document.getElementById(id_elem);
			content.removeChild(content.childNodes[0]);

			// résolution du problème de rafraîchissement de Firefox
			document.getElementById(first_id).innerHTML = '<div></div>' + document.getElementById(first_id).innerHTML;
			content = document.getElementById(first_id);
			content.removeChild(content.firstChild);
		}
		else if (ie4) {
			content = document.getElementById(editor);
			content.parentNode.removeChild(content);
		}
	}

  modif_section = '';
	editor = null;
}

function customSave(id, content)
{
	tinyMCE.switchClass('mce_editor_0_save', 'mceButtonDisabled');
	tinyMCE.switchClass('mce_editor_0_cancel', 'mceButtonDisabled');
	document.edit.CMS_1p1.value = content;
}

function customCancel()
{
	enableElemLinks();
	eval('clearTimeout(editor_timer)');
	removeEditor('edit');
}

var browseWindow = null;
var browse_input_name = null;
var browse_type = null;

function fileBrowserCallBack(field_name, url, type, win) {
	// This is where you insert your custom filebrowser logic
  browseWindow = win;
  browse_input_name = field_name;
  browse_type = type;

  var path = '/';

  if (browse_type == 'file')
    path = '/doc';

  if (browse_type == 'flash')
    path = '/doc';

  else if (browse_type == 'image')
    path = '/img';


  window.open('/cgi-bin/admin/utils_browse.cgi?form=formAjout&input=CMS_1p1&path='+path,'Browse','scrollbars=0,menubar=0,toolbar=0,location=0,directories=0,status=1,resizable=1,width=650,height=350,top=100,left=100');
}

function fileBrowserChooseFile(myfile)
{
  var prefixe_filename='';
  switch(browse_type)
  {
    case 'image':
    prefixe_filename='../../web/img/'
    break;
    
    case 'file':
    prefixe_filename='../../web/doc/'
    break;
    
    case 'flash':
    prefixe_filename='../../web/doc/'
    break;

  }
  
  browseWindow.document.forms[0].elements[browse_input_name].value = prefixe_filename+myfile;
  var elm = browseWindow.document.getElementById('prev');
  if (elm)
  {
    var src = prefixe_filename+myfile;
    src = src == "" ? src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
  
  	if (src == "")
  		elm.innerHTML = "";
  	else
  		elm.innerHTML = '<img src="' + src + '" border="0" />'
  }
}

function editSectionWithTinyMCE(nom_fichier,section_name)
{
  if (!modifier)
  {
    edit_idc='';
    modif_section = section_name;
    edit_ordre = section_name;
    modifier = true;
    last_text = document.getElementById('text_'+section_name+'.000').innerHTML;

    var codeEditor = getEditorForHTML(section_name, '', '120.000', nom_fichier, '', last_text,25);
    if (editor) return false;
    disableElemLinks();

    document.getElementById('text_'+section_name+'.000').innerHTML=unescape(codeEditor);
    initEditor();
  }
  return false;
}

/* TinyMCE Editor */

var editor = null;
var modifier = false;
var last_text = '';
var edit_ordre = null;
var edit_idc = null;
						
var first_id = null;
var elemLinks;

function loadTinyMCEEditor(langue_admin)
{
	tinyMCE.init({
		language : langue_admin,
		mode : "textareas",
		theme : "advanced",
		elements : "editor",
		save_callback : "customSave",
		plugins : "table,save,advimage,advlink,flash,searchreplace,print,contextmenu,paste,directionality",
		theme_advanced_buttons1_add_before : "save,cancel,separator",
		theme_advanced_buttons1_add : "forecolor,backcolor,separator,sub,sup,charmap,separator,fontselect,fontsizeselect",
		theme_advanced_buttons2_add : "separator,search,replace,separator,flash,separator,hr,removeformat,separator,code",
		theme_advanced_buttons2_add_before: "cut,copy,paste,separator",														
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "bottom",
		content_css : "/js/tinymce/jscripts/tiny_mce/word.css,/css/style.css",
	  plugi2n_insertdate_dateFormat : "%Y-%m-%d",
	  plugi2n_insertdate_timeFormat : "%H:%M:%S",
		file_browser_callback : "fileBrowserCallBack",
		paste_use_dialog : false,
		theme_advanced_resizing : true,
		theme_advanced_resize_horizontal : false,
		paste_auto_cleanup_on_paste : true,
		paste_convert_headers_to_strong : false,
		paste_strip_class_attributes : "all",
		paste_remove_spans : false,
		paste_remove_styles : false		
	});
}