var CR = "\n";
// FIX ME : remplacer function debug() par _debug(), car debug() existe maintenant dans htmlArea

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 = "-------------------------------------------------------------------------------\n";
 msg += "Le formulaire n'a pas été soumis à cause des erreurs suivantes.\n";
 msg += "Veuillez les corriger puis soumettre le formulaire à nouveau.\n";
 msg += "-------------------------------------------------------------------------------\n\n";

 // bcl dans la liste des caract?stiques de l'?ment de formulaire
 for (var bcl=0; bcl< f.elements.length; bcl++) {
  var libelle_input = 'unknown';
  // r?p?tion du libell?e l'input si existe
  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') + '\n';
   } else {
    // pas vide
    // contient une REQTYP ?
    if (f.elements[bcl].getAttribute('reqtyp')) {
     // cas diff?nt selon le REQTYP (g? : 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 + '\n';
        }
       }
       // 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 + '\n';
        }
       }
      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 + '\n';
        }
       }
       // 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 + '\n';
        }
       }
      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\n';
        }
       }
       // 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\n';
        }
       }
      break;
     }
    }
   }
  }
 }
 if (erreur != '') alert(msg + erreur);
 return (erreur == '');
// return false;
}

var caracNbr = '1234567890';
var caracMinuscule = 'abcdefghijklmnopqrstuvwxyz';
var caracMajuscule = caracMinuscule.toUpperCase();

// FIX ME : caracAccent tout cassé retrouver l'ancienne class caracSpec aussi ... tout ça à cause de l'utf-8 

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 _addEvent(el, evname, func) {
 var ua = navigator.userAgent;
 var is_ie = (i = ua.indexOf("MSIE")) >= 0;
 if (is_ie) {
  el.attachEvent("on" + evname, func);
 } else {
  el.addEventListener(evname, func, false);
 }
}

var debug_generated = false;
function debug(d) {
 if (!debug_generated) {
  debug_generated = true;
  var body = document.getElementsByTagName('body')[0];
  var el = document.createElement("div");
  el.id = "mondebug";
  el.style.position = "absolute";
  el.style.top = "10px";
  el.style.left = "500px";
  el.style.width = "500px";
  el.style.height = "500px";
  el.style.backgroundColor = "#ffffff";
  el.style.border = "1px dashed #ff0000";
  el.style.overflow = "auto";
  body.appendChild(el);
/*  if (typeof dragStart == "function") {
   el.className = "moveme";
   _addEvent(el, "click", function() { dragStart(event, "mondebug"); });
  }*/
 }
 if (d!=false) {
  var x = v = type = '';
  for (var k in d) {
   type = typeof d[k];
   v = d[k] 
//  if ('object'==type && 'null'!=v && null!=v) k = '<a href="#" onclick="debug(d[\'' + v + '\']); return false;">' + k + '</a>';
    x = x + k + " =&gt;" + v + "<br>\n";
  }
  document.getElementById('mondebug').innerHTML = x;
 }
}
function debugadd(x) {
 if (!debug_generated) debug(false);
 document.getElementById('mondebug').innerHTML = x + "<br>" + document.getElementById('mondebug').innerHTML;
}
rgbToHex = function(rgb) {
 for (i=0; i<3; i++) rgb[i] = (256 + rgb[i]).toString(16).substring(1);
 return '#' + rgb.join("");
}