var CR = "\n";

function isEmpty(str) {
 for (var bcl=0; bcl< str.length; bcl++)
  if (str.charAt(bcl) != ' ') return false;
 return true;
}

function whichRadioChecked(fo, el) {
 for (var i=0; i<fo.elements[el].length; i++) {
  if (fo.elements[el][i].checked)
   return i;
 }
 return -1;
}

function checkRequired(f) {
 var erreur = '';
 var msg;
 // FIX ME : langue
 msg = "-------------------------------------------------------------------------------" + CR;
 msg += "Le formulaire n'a pas été soumis à cause des erreurs suivantes." + CR;
 msg += "Veuillez les corriger puis soumettre le formulaire à nouveau." + CR;
 msg += "-------------------------------------------------------------------------------" + CR + CR;

 // bcl dans la liste des caracteristiques de l'element de formulaire
 for (var bcl=0; bcl< f.elements.length; bcl++) {
  var libelle_input = 'unknown';
  if (f.elements[bcl].getAttribute('reqtxt')) {
   libelle_input = f.elements[bcl].getAttribute('reqtxt');
  }
  // contient une REQUIRED ?
  if (f.elements[bcl].getAttribute('required') || !isEmpty(f.elements[bcl].value)) {
   // vide ?
   if (isEmpty(f.elements[bcl].value)) {
    erreur += ' - ' + f.elements[bcl].getAttribute('required') + CR;
   } else {
    // pas vide
    // contient une REQTYP ?
    if (f.elements[bcl].getAttribute('reqtyp')) {
     // cas different selon le REQTYP (gere : int, flo, cha)
     switch (f.elements[bcl].getAttribute('reqtyp')) {
      case 'int':
       value = parseInt(f.elements[bcl].value, 10);
       // contient une REQMINI?
       if (f.elements[bcl].getAttribute('reqmini')) {
        reqmini = parseInt(f.elements[bcl].getAttribute('reqmini'), 10);
        // value<REQMINI ?
        if (value<reqmini) {
         erreur += ' - ' + libelle_input + " doit être supérieur à " + reqmini + CR;
        }
       }
       // contient une REQMAXI?
       if (f.elements[bcl].getAttribute('reqmaxi')) {
        reqmaxi = parseInt(f.elements[bcl].getAttribute('reqmaxi'), 10);
        // value>REQMAXI ?
        if (value>reqmaxi) {
         erreur += ' - ' + libelle_input + " doit être inférieur à " + reqmaxi + CR;
        }
       }
      break;
      case 'flo':
       value = parseFloat(f.elements[bcl].value, 10);
       // contient une REQMINI?
       if (f.elements[bcl].getAttribute('reqmini')) {
        reqmini = parseFloat(f.elements[bcl].getAttribute('reqmini'), 10);
        // value<REQMINI ?
        if (value<reqmini) {
         erreur += ' - ' + libelle_input + " doit être supérieur à " + reqmini + CR;
        }
       }
       // contient une REQMAXI?
       if (f.elements[bcl].getAttribute('reqmaxi')) {
        reqmaxi = parseFloat(f.elements[bcl].getAttribute('reqmaxi'), 10);
        // value>REQMAXI ?
        if (value>reqmaxi) {
         erreur += ' - ' + libelle_input + " doit être inférieur à " + reqmaxi + CR;
        }
       }
      break;
      case 'cha':
       value = f.elements[bcl].value.length;
       // contient une REQMINI?
       if (f.elements[bcl].getAttribute('reqmini')) {
        reqmini = parseInt(f.elements[bcl].getAttribute('reqmini'), 10);
        // value<REQMINI ?
        if (value<reqmini) {
         erreur += " - " + libelle_input + " doit contenir au moins " + reqmini + " caractères" + CR;
        }
       }
       // contient une REQMAXI?
       if (f.elements[bcl].getAttribute('reqmaxi')) {
        reqmaxi = parseInt(f.elements[bcl].getAttribute('reqmaxi'), 10);
        // value>REQMAXI ?
        if (value>reqmaxi) {
         erreur += " - " + libelle_input + " doit contenir au plus " + reqmini + " caractères" + CR;
        }
       }
      break;
     }
    }
   }
  }
 }
 if (erreur != '') alert(msg + erreur);
 return (erreur == '');
// return false;
}

var caracNbr = '1234567890';
var caracMinuscule = 'abcdefghijklmnopqrstuvwxyz';
var caracMajuscule = caracMinuscule.toUpperCase();
var caracAccent = 'éèëêöôàäâïîüûç';
var caracSpec = '"?,.;/:!&#{([-_@)]=+} ';
var caracText = caracMinuscule + caracMajuscule + caracNbr + caracAccent + caracSpec;
var caracDate = caracNbr + '/';
var caracNbrPt = caracNbr + '.';
var caracEmail = caracMinuscule + caracNbrPt + '@-_';
var caracUrl = caracEmail + ':#/~';
var caracLogPwd = caracMinuscule + caracMajuscule + caracNbr;

function checkInput(jeu) {
 // FIX ME : problem sous mozilla
 return true;
 var agt = navigator.userAgent.toLowerCase();
 var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
 var cod = is_ie ? event.keyCode : event.charCode;
 var key = String.fromCharCode(cod);
 if (jeu.indexOf(key)>-1) {
  return true;
 } else {
  if ((aff_stand==aff_courant) && top.setStatusBarText) top.setStatusBarText('<strong>' + jeu + '</strong>');
  return false;
 }
}

function AlphaIEPng(doc) {
 if (typeof doc == 'undefined') doc = document;
 if (/MSIE [56].*Windows/.test(navigator.userAgent)) {
  var blank = new Image;
  blank.src = '/images/admin/generic/transparent.png';
  var imgs = doc.getElementsByTagName("img");
  for (var i = imgs.length; --i >= 0;) {
   var img = imgs[i];
   var src = img.src;
   if (!/\.png$/.test(src))
    continue;
   var s = img.runtimeStyle;
   s.width = img.offsetWidth + "px";
   s.height = img.offsetHeight + "px";
   s.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
   img.src = blank.src;
  }
 }
}

function rgbToHex(rgb) {
 for (i=0; i<3; i++) rgb[i] = (256 + rgb[i]).toString(16).substring(1);
 return '#' + rgb.join("");
}