var gbooOnBlurIEAlert = 1;
var ELEMENT_FOCUS = null;

function fctSetFormTabIndex(pForm,pFocus){
 var lintFound = 0;

 if (pForm) {
     for (var i = 1; i < pForm.length+1; i++) {
         pForm.elements[i-1].tabIndex = i;
         if (lintFound==0 && pForm.elements[i-1].disabled==false && pForm.elements[i-1].type!="hidden" && (!pForm.elements[i-1].parentElement || pForm.elements[i-1].parentElement.name != "frm_hidden")) {
             if(!pForm.elements[i-1].style || pForm.elements[i-1].style.visibility != "hidden"){
                 if(!pFocus || pFocus == "" || pForm.elements[i-1].name == pFocus) {
                     try{
                        pForm.elements[i-1].focus();
                    }catch(err){;}
                     lintFound=1;
                 }
             }
         }
     }
 }
}

function fctFocusNextElement(pwField){
 var lintFound=0;
 if (self.document.getElementById(pwField.form.name + "DEFACT")) {
    self.document.getElementById(pwField.form.name + "DEFACT").focus();
    //alert("Found!");
    lintFound=1;
 }
 if (lintFound==0) {
     if (self.document.getElementById("FRMITEMDEFACT")) {
        self.document.getElementById("FRMITEMDEFACT").focus();
        lintFound=1;
     }
 }
 if (lintFound==0 && pwField.tabIndex) {
     var lnextIndex = (pwField.tabIndex + 1);

     if (lnextIndex == pwField.form.elements.length + 1) {
         lnextIndex = 1;
     }
     var lstrType;
     var lResIndex=lnextIndex;
     //Remplacer par while
     for (var i = lnextIndex; i < pwField.form.elements.length+1 && lintFound==0; i++) {
         lstrType = pwField.form.elements[i-1].type;
         lstrId = pwField.form.elements[i-1].id;
         if (lstrType=="button" || lstrType=="submit" || lstrType=="image") {
             if(!lstrId || lstrId.indexOf("IMGDATE") == -1) {
                 lResIndex=i;
                 lintFound=1;
             }
         }
     }
     if (
        pwField.form.elements[lResIndex - 1].type == "hidden" ||
        pwField.form.elements[lResIndex - 1].disabled==true ||
        (pwField.form.elements[lResIndex - 1].style && pwField.form.elements[lResIndex - 1].style.visibility == "hidden") ||
        (pwField.form.elements[lResIndex - 1].parentElement && pwField.form.elements[lResIndex - 1].parentElement.name == "frm_hidden")
     ) {
        //on passe au champ suivant
        fctFocusNextElement(pwField.form.elements[lResIndex - 1]);
    }
     else
     {
         pwField.form.elements[lResIndex - 1].focus();
     }
  }
}


function hdlonkeypressField(pwField){
 var lnbKeyCode;
 if (gbooBrowserIE != -1) {
     lnbKeyCode = event.keyCode;
 }
 else {
     lnbKeyCode = gnbKeyCode;
 }
 if (gbooRaccourcis == 1) {
     if (gbooBrowserIE != -1) {
         self.event.returnValue = false;
     }
     else {
         return false;
     }
 }
 if (lnbKeyCode == 13) {
     gnbKeyCode = -1;
     fctFocusNextElement(pwField);
     if (gbooBrowserIE != -1) {
         self.event.returnValue = false;
     }
     else {
         return false;
     }
 }
}

function hdlonkeypresswTexteArea(pwTxtArea,pNBMaxLen){
 var lstrTxtArea = pwTxtArea.value;
 var lnbKeyCode;
 if (gbooBrowserIE != -1) {
     lnbKeyCode = event.keyCode;
 }
 else {
     lnbKeyCode = gnbKeyCode;
 }

 if (pNBMaxLen != 0) {
     if (lstrTxtArea.length >= pNBMaxLen) {
         if (gbooBrowserIE != -1) {
             pwTxtArea.value = lstrTxtArea;
             self.event.returnValue = false;
         }
         else {
             pwTxtArea.value = lstrTxtArea.substring(0, (lstrTxtArea.length - 1));
             return false;
         }
     }
 }
}

function hdlonblurwTexteArea(pwTxtArea,pNBMaxLen){
 if(pwTxtArea.domNode) return;
 var lstrTxtArea = pwTxtArea.value;
 var lnbKeyCode;
 if (gbooBrowserIE != -1) {
     lnbKeyCode = event.keyCode;
 }
 else {
     lnbKeyCode = gnbKeyCode;
 }

 if (pNBMaxLen != 0) {
     if (lstrTxtArea.length >= pNBMaxLen) {
         if (gbooBrowserIE != -1) {
             pwTxtArea.value = lstrTxtArea;
             self.event.returnValue = false;
         }
         else {
             pwTxtArea.value = lstrTxtArea.substring(0, (lstrTxtArea.length - 1));
             return false;
         }
     }
 }
 hdlonblurField(pwTxtArea);
}

function fctCheckDate(pwDate,pintDateInf){

    pwDate.value = fctTrim(pwDate.value);
 var lstrRes = "";
 var lstrDate = pwDate.value;
 if (lstrDate != "") {
     var lstrAlert = fstrDateCheckFormat(lstrDate,pintDateInf);
     pwDate.value = lstrAlert[1];
     lstrRes = lstrAlert[0];
 }
 return lstrRes;
}

function hdlonblurwDate(pwDate,pintDateInf){
 if(pwDate.domNode) return;
 var lstrRes = fctCheckDate(pwDate,pintDateInf);
 if ((gbooBrowserIE != -1)&&(gbooOnBlurIEAlert == 1)) {
     if (lstrRes != "") {
         alert(lstrRes);
         pwDate.value="";
         pwDate.focus();
         self.event.returnValue = false;
     }
 }
 hdlonblurField(pwDate);
}

function fctCheckTexte(pwText,pwToUpper,pwNotInChars){

    pwText.value = fctTrim(pwText.value);
 var lstrRes = "";
 var lstrText = pwText.value;
 var Idx = 0;
 var lIdxOf = -1;
 var lChar;
 if (lstrText != "") {
     if (pwToUpper) {
         pwText.value = pwText.value.toUpperCase();
         lstrText = pwText.value;
     }
     while ((Idx < pwNotInChars.length) && (lIdxOf == -1)) {
         var lChar = String.fromCharCode(pwNotInChars[Idx]);
         lIdxOf = lstrText.indexOf(lChar);
         Idx = Idx + 1;
     }
     if (lIdxOf != -1) {
         lstrRes = "Il faut éviter le caractère " + lChar;
     }
 }
 return lstrRes;
}

function hdlonblurwTexte(pwText,pwToUpper,pwNotInChars){
 if(pwText.domNode) return;
 var lstrRes = fctCheckTexte(pwText,pwToUpper,pwNotInChars);
 if ((gbooBrowserIE != -1)&&(gbooOnBlurIEAlert == 1)) {
     if (lstrRes != "") {
         alert(lstrRes);
         pwText.focus();
         self.event.returnValue = false;
     }
 }
 hdlonblurField(pwText);
}


function fctCheckNB(pwNB){
    pwNB.value = fctTrim(pwNB.value);
 var lstrRes = "";
 var lvarNB = pwNB.value;
 if (lvarNB != "") {
     if (isNaN(parseInt(lvarNB,10))) {
         lstrRes = "Il faut entrer un nombre";
     }
     else {
         pwNB.value = parseInt(lvarNB,10);
     }
 }
 return lstrRes;
}

function hdlonblurwNB(pwNB){
 if(pwNB.domNode) return;
 var lstrRes = fctCheckNB(pwNB);
 if ((gbooBrowserIE != -1)&&(gbooOnBlurIEAlert == 1)) {
     if (lstrRes != "") {
         alert(lstrRes);
         pwNB.value = "";
         pwNB.focus();
         self.event.returnValue = false;
     }
 }
 hdlonblurField(pwNB);
}

function fctCheckNBPos(pwNB){
    pwNB.value = fctTrim(pwNB.value);
 var lstrRes = ""
 var lvarNB = pwNB.value;
 if (lvarNB != "") {
     if (isNaN(parseInt(lvarNB,10))) {
         lstrRes = "Il faut entrer un nombre";
     }
     else {
         pwNB.value = parseInt(lvarNB,10);
         if (pwNB.value < 0) {
             lstrRes = "Il faut entrer un nombre positif";
         }
     }
 }
 return lstrRes;
}

function hdlonblurwNbPos(pwNB){
 if(pwNB.domNode) return;
 var lstrRes = fctCheckNBPos(pwNB);
 if (gbooBrowserIE != -1) {
     if (lstrRes != "") {
         alert(lstrRes);
         pwNB.value = "";
         pwNB.focus();
         self.event.returnValue = false;
     }
 }
}

function fctCheckDEC(pwNB,nbEnt,nbDec,psign){
 var reg=new RegExp("(,)", "g");
 pwNB.value = pwNB.value.replace(reg, '.');
    pwNB.value = fctTrim(pwNB.value);
 var lstrRes = "";
 var lvarNB = pwNB.value;
 var lIdxOf = -1;
 var lEnt = "";
 var lDec = "";
 var lLenSign = 0;

 if(!nbEnt) nbEnt = 0;
 if(!nbDec) nbDec = 0;
 if(!psign) psign = 0;

 if (lvarNB != "") {
     if (isNaN(parseFloat(lvarNB))) {
         lstrRes = "Veuillez entrer un nombre";
     }
     else if(nbEnt != 0 && nbDec != 0){
         pwNB.value = fctDecFormat(parseFloat(lvarNB),nbDec);
         lvarNB = pwNB.value;
         lIdxOf = lvarNB.indexOf(".");
         if (lIdxOf == -1)
         {
             lEnt = lvarNB;
             lDec = "";
         }
         else
         {
             lEnt = lvarNB.substring(0,lIdxOf);
             lDec = lvarNB.substring(lIdxOf+1,lvarNB.length);
         }
         if (lvarNB.charAt(0) == "-")
            lLenSign = 1;
         if (((lEnt.length - lLenSign) > (nbEnt - nbDec)) || (lDec.length > nbDec))
           lstrRes = "Veuillez entrer un nombre,\n Partie entière : " + (nbEnt - nbDec) + ", Partie décimale : " + nbDec;
         if (psign == 1 && lvarNB < 0) // positif
           lstrRes = "Veuillez entrer un nombre positif";
         else if (psign == -1 && lvarNB > 0) // negatif
           lstrRes = "Veuillez entrer un nombre négatif";
     }
 }
 return lstrRes;
}

function hdlonblurwDEC(pwNB,nbEnt,nbDec,psign){
 if(pwNB.domNode) return;
 var lstrRes = fctCheckDEC(pwNB,nbEnt,nbDec,psign);
 if ((gbooBrowserIE != -1)&&(gbooOnBlurIEAlert == 1)) {
     if (lstrRes != "") {
         pwNB.value = "";
         pwNB.focus();
         self.event.returnValue = false;
         alert(lstrRes);
     }
 }
 hdlonblurField(pwNB);
}

function fctCheckHour(pwHour){
    pwHour.value = fctTrim(pwHour.value);
 var lstrRes = "";
 var lstrHour = pwHour.value;
 if (lstrHour != "") {
     var lstrAlert = fstrHourCheckFormat(lstrHour);
     pwHour.value = lstrAlert[1];
     lstrRes = lstrAlert[0];
 }
 return lstrRes;
}

function hdlonblurwHour(pwHour){
 if(pwHour.domNode) return;
 var lstrRes = fctCheckHour(pwHour);
 if ((gbooBrowserIE != -1)&&(gbooOnBlurIEAlert == 1)) {
     if (lstrRes != "") {
         alert(lstrRes);
         pwHour.value="";
         pwHour.focus();
         self.event.returnValue = false;
     }
 }
 hdlonblurField(pwHour);
}

function fctCheckFile(pwFile){
 var lvarFile = pwFile;
 if (lvarFile == ""){
    return "";
 }
 var pwTabText = fctDecoupe(lvarFile,"\\");
 var numpwText = pwTabText.length - 1;
 var pwText = pwTabText[numpwText][1];
 var pwNotInChars = [226,230,224,194,198,192,231,199,233,234,232,201,202,200,238,206,244,212,251,219,249,217,39,34,37,38,61,43];
 pwText = fctTrim(pwText);
 var lstrRes = "";
 var lstrText = pwText;
 var Idx = 0;
 var lIdxOf = -1;
 var lChar;
 if (lstrText != "") {
     while ((Idx < pwNotInChars.length) && (lIdxOf == -1)) {
         var lChar = String.fromCharCode(pwNotInChars[Idx]);
         lIdxOf = lstrText.indexOf(lChar);
         Idx = Idx + 1;
     }
     if (lIdxOf != -1) {
         lstrRes = "Il faut éviter le caractère " + lChar +" ("+pwNotInChars[Idx]+") dans le nom du document.";
     }
 }
 return lstrRes;
}

function hdlonblurwMail(pwMail){
 if(pwMail.domNode) return;
 var lstrRes = fctCheckMail(pwMail);
 if ((gbooBrowserIE != -1)&&(gbooOnBlurIEAlert == 1)) {
     if (lstrRes != "") {
         alert(lstrRes);
         //pwMail.value="";
         pwMail.focus();
         self.event.returnValue = false;
     }
 }
 hdlonblurField(pwMail);
}

function fctCheckMail(pwMail){
 var lvarMail = pwMail.value;
 if (lvarMail == ""){
    return "";
 }
 lvarMail = fctTrim(lvarMail);
 var lstrRes = "";

 if (lvarMail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)
    lstrRes="Adresse Email saisie invalide";

 return lstrRes;
}

function hdlonblurwBoampTexte(pwText, pwNotInChars) {
    if(pwText.domNode) return;
    //mise en forme 1er caractère majuscule
    pwText.value = FirstToUpperCase(pwText.value);

    var lstrRes = fctCheckTexte(pwText,false,pwNotInChars);
    if ((gbooBrowserIE != -1)&&(gbooOnBlurIEAlert == 1)) {
         if (lstrRes != "") {
             alert(lstrRes);
             pwText.focus();
             self.event.returnValue = false;
         }
    }
    hdlonblurField(pwText);
}

function hdlonblurwBoampTexteArea(pwTxtArea, pNBMaxLen) {
    if(pwTxtArea.domNode) return;
    //mise en forme BOAMP
    pwTxtArea.value = strFormatBoamp(pwTxtArea.value);

    hdlonkeypresswTexteArea(pwTxtArea,pNBMaxLen);
}

function hdlonkeypressPwd(pwField){
 var lnbKeyCode;
 if (gbooBrowserIE != -1) {
     lnbKeyCode = event.keyCode;
 }
 else {
     lnbKeyCode = gnbKeyCode;
 }
 if (gbooRaccourcis == 1) {
     if (gbooBrowserIE != -1) {
         self.event.returnValue = false;
     }
     else {
         return false;
     }
 }
 if (lnbKeyCode == 13) {
     gnbKeyCode = -1;
     if (fctLoginOK())
        self.document.formLogin.submit();
     if (gbooBrowserIE != -1) {
         self.event.returnValue = false;
     }
     else {
         return false;
     }
 }
}

function fctCheckVersion(pwText){

    pwText.value = fctTrim(pwText.value);
 var lstrRes = "";
 var lstrText = pwText.value;

 if (lstrText != "") {
 	 if(lstrText.length == 7)
 	 	{
 	 		pwText.value = "";
 	 		for(var i=0; i <7;i++)
 	 			{
 	 				var temp = lstrText.substr(i,1);
 	 				if (isNaN(parseInt(temp,10))) {
			  			pwText.value = "";
			        	return lstrRes = "Il faut entrer un nombre";
			     		}
 	 				pwText.value = pwText.value + temp;
 	 				if(i!=6)
 	 					pwText.value = pwText.value + ".";
 	 			}
 	 	}
 	 else
 	 	{
		 var number = lstrText.split(".");
		 if (number.length != 7){
		 		pwText.value = "";
		 		return lstrRes = "Version incorrecte";
		 	}
		 for (var i=0; i < number.length;i++)
		 	{
			  if (isNaN(parseInt(number[i],10))) {
			  		pwText.value = "";
			        return lstrRes = "Il faut entrer un nombre";
			     }
			}
		}
 }
 return lstrRes;
}

function hdlonfocusField(pwField)
{
    if(gstrAjaxEnable == 'O') {
        if(pwField){
            dojo.addClass(pwField,'focused');
        }
        return;
    }
    ELEMENT_FOCUS = pwField;
    //alert(ELEMENT_FOCUS.name);
}


function hdlonblurField(pwField)
{
    //console.debug(gstrAjaxEnable);
    if(gstrAjaxEnable == 'O') {
        if(pwField){
            dojo.removeClass(pwField,'focused');
        }
        return;
    }
    ELEMENT_FOCUS = null;
}


/******** fonctions pour la gestion de 2 select multiples *****/
function fctcopyToList(pnbSens,pformname,pnamedisp, pnameselect) {

  if (pnbSens == 1)
    {
    eval("var fromList = self.document." + pformname + "." + pnamedisp + ";");
    eval("var toList = self.document." + pformname + "." + pnameselect + ";");
    var direction = "right";
    }
  else
    {
    eval("var toList = self.document." + pformname + "." + pnamedisp + ";");
    eval("var fromList = self.document." + pformname + "." + pnameselect + ";");
    var direction = "left";
    }
  for ( i = 0; i <= fromList.length-1;) {
    if (fromList.options[i].selected) {

        txt = fromList.options[i].text;
        val = fromList.options[i].value;

        if ( val != "" ) {
           if ( val == "spacer" ) {

                if ( direction == "left" ) {
                     fromList.options[i]= null;
                }
                else {
                    fromList.options[i].selected = false;
                    toList.options[toList.length] = new Option( txt, val, false, false );
                }
           }
           else {
             toList.options[toList.length] = new Option( txt, val, false, false );
             fromList.options[i]= null;
           }
        }
    }
    else i++;
  }

  fctdeleteBlankRowIfNotEmpty(toList);
  return false;
}

function fctdblclickcopyToList(elem,pformname,from,to) {
    eval("var toList = self.document." + pformname + "." + to + ";");
    eval("var fromList = self.document." + pformname + "." + from + ";");

    txt = elem.text;
    val = elem.value;
    toList.options[toList.length] = new Option( txt, val, false, false );
    toList.options[toList.length-1].ondblclick = function(){
        fctdblclickcopyToList(toList.options[toList.length-1],pformname,to,from);
    }

    for(var i=0;i<fromList.options.length && fromList.options[i] != elem;i++);
    fromList.options[i]= null;
}

function fctdeleteBlankRowIfNotEmpty(toList)
{
   var idx = -1;
   var val = "";
   for (i = 0; i < toList.length; i++){
        val = toList.options[i].value;
        if (val == "") {
           idx = i;
           break;
        }
   }
   if (idx >= 0 && (toList.length > 1))
      toList.options[idx] = null;
}

function newOrder(toList,toString) {
    toString.value = "";
    for (var i = 0; i <= toList.length - 1; i++){
        if (toList.options[i].value != "") {
           toString.value += toList.options[i].value;
           if (i < toList.length - 1 && toList.options[i+1].value != "")
              toString.value += ",";
              }
        }
 }
function selectAll(fromList)
{
  for ( i = 0; i <= fromList.length-1; i++ )
    fromList.options[i].selected = true;
  return false;
}
function unSelectAll(fromList)
{
  for ( i = 0; i <= fromList.length-1; i++ )
    fromList.options[i].selected = false;
  return false;
}
function clearList(fromList)
{
  fromList.length = 0;
}
function fctcopyAll(pnbSens,pformname,pnamedisp, pnameselect) {

  if (pnbSens == 1)
    {
    eval("var fromList = self.document." + pformname + "." + pnamedisp + ";");
    eval("var toList = self.document." + pformname + "." + pnameselect + ";");
    var direction = "right";
    }
  else
    {
    eval("var toList = self.document." + pformname + "." + pnamedisp + ";");
    eval("var fromList = self.document." + pformname + "." + pnameselect + ";");
    var direction = "left";
    }

    indexofspacer = -1;
    spacerval = "";
    spacertxt = "";
    indexofitem = toList.length;

    for ( i = 0; i <= fromList.length-1; i++ ) {
         txt = fromList.options[i].text;
         val = fromList.options[i].value;
         if ( val != "" ) {
             if ( val != "spacer") {
                  toList.options[indexofitem] = new Option( txt, val, false, true );
                  toList.options[indexofitem].selected = false;
                     indexofitem++;
                }
                else {
                    indexofspacer = i;
                    spacerval = val;
                    spacertxt = txt;
                }
            }
     }
        if (indexofspacer != -1 && direction == "right" )
            fromList.length = 1;
        else
            clearList(fromList);

     fctdeleteBlankRowIfNotEmpty(toList);
     unSelectAll(toList);

     return false;
}

function fctChgFRMSelect(pwField){
 var n = pwField.name;
 var idx = n.indexOf("DSELECT");
 if(idx == -1)
     self.document.getElementById(n + "DSELECT").value  = pwField.value;
 else
     self.document.getElementById(n.substring(0,idx)).value  = pwField.value;
 return false;
}

function FirstToUpperCase(texte) {
  texte = fctTrim(texte);
  var t = new Array();
  //met en majuscule le 1er caractere
  for(i=0 ; i < texte.length ;i++) {
    if(i == 0) t[i] = texte.substr(i,1).toUpperCase();
    else t[i] = texte.substr(i,1).toLowerCase();
  }
  return t.join('');
}

function strFormatBoamp(texte) {
  var t = new Array();
  for(i=0 ; i < texte.length ;i++) {
    if(i == 0) t[i] = texte.substr(i,1).toUpperCase(); //1er caractère en majuscule
    else if(t[i-1] != ' '){
        t[i] = texte.substr(i,1).toLowerCase(); //et met en minuscule que si il n'y a pas de ' ' avant
    }
  }
  return t.join('');
}

