package org.apache.jsp.js;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import com.edeal.frontline.*;
import java.util.*;

public final class checkFields_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();

  private static java.util.List _jspx_dependants;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.AnnotationProcessor _jsp_annotationprocessor;

  public Object getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
  }

  public void _jspDestroy() {
  }

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    PageContext pageContext = null;
    HttpSession session = null;
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;


/******************************************************************************
 * Copyright (c) 2000-2004 e-Deal
 *
 * e-Deal S.A.
 * 55 rue Brillat Savarin
 * 75013 Paris
 * France
 *
 * T: +33 (0)1 53 80 80 30
 * F: +33 (0)1 73 01 69 77
 * http://www.e-deal.com
 * 
 * La diffusion de ce code source sous quelque forme que ce soit sans
 * l'autorisation de E-DEAL est interdite.
 *
 * Vous êtes autorisés à modifier ce code source uniquement pour votre usage
 * propre et sous réserve que les mentions de copyright demeurent intactes.
 *
 * Ce code est fourni en l'état. Aucune garantie d'aucune sorte, explicite ou
 * implicite n'est donnée. En aucun cas E-DEAL ne pourra être tenu pour
 * responsable des dommages pouvant résulter de l'utilisation de ce code
 * source.
 *
 * CVS Info for $RCSfile$
 *
 * $Revision$
 * $Author$                  $Date$
 ******************************************************************************/

      out.write("\n");
      out.write("// Ce fichier contient les fonctions de contrÃ´le de saisie\n");
      out.write("// \n");
      out.write("// La fonction principale est checkField(-, -, -, -, -)\n");
 	
	final org.apache.commons.logging.Log logger = org.apache.commons.logging.LogFactory.getLog(getClass());
	String contextPath = (String)session.getAttribute("contextPath");
	FlContext context = null;
	if(contextPath != null) {
		context = Frontline.getContext(contextPath);
	} else {
		context = Frontline.getContext(request.getContextPath());
	}
	DataDictionary dico = context.getDataDictionary();
	if (context.isFullUnicode() || context.isDbOracle()) {
		response.setContentType("application/x-javascript; charset=UTF-8");
	} else {
		response.setContentType("application/x-javascript; charset=ISO-8859-1");
	}
	FlLocale locale = FlLocale.getInstance(session);

      out.write("\n");
      out.write("\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("// Declaration des formats par défaut\n");
      out.write("//==================================================\n");
      out.write("\n");
      out.write("var centuryLimit = 90;\n");
      out.write("\n");
      out.write("var separateurDecimal = \"");
      out.print( FlLocale.getInstance(session).getDecimalSeparator() );
      out.write("\";\n");
      out.write("var separateurMilliers = \"");
      out.print( FlLocale.getInstance(session).getGroupingSeparator() );
      out.write("\";\n");
      out.write("var dateFormatIn = \"");
      out.print( FlLocale.getInstance(session).getInputJavascriptDateFormat() );
      out.write("\";\n");
      out.write("var dateFormatOut = \"");
      out.print( FlLocale.getInstance(session).getOutputJavascriptDateFormat() );
      out.write("\";\n");
      out.write("var dateSeparator = \"");
      out.print( FlLocale.getInstance(session).getDateSeparator() );
      out.write("\";\n");
      out.write("var hourSeparator = \"");
      out.print( FlLocale.getInstance(session).getHourSeparator() );
      out.write("\";\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("//  tempStatus ecrit un message dans la barre d'état\n");
      out.write("//    et l'enlève automatiquement au bout de 4 sec\n");
      out.write("//==================================================\n");
      out.write("function tempStatus(message)\n");
      out.write("{\n");
      out.write("\twindow.status = message;\n");
      out.write("\twindow.setTimeout(\"window.status=''\", 4000);\n");
      out.write("}\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("//  myReplace remplace une sous-chaine sans la \n");
      out.write("//   considérer comme une expression régulière regex\n");
      out.write("//==================================================\n");
      out.write("function myReplace(str, oldStr, newStr) {\n");
      out.write("\treturn str.split(oldStr).join(newStr);\n");
      out.write("}\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("//  removeLeadingZeros enlève les 0 du début de la \n");
      out.write("//   chaine afin d'éviter qu'elle ne soit considérée\n");
      out.write("//   comme un entier en base 8 ou 16\n");
      out.write("//==================================================\n");
      out.write("function removeLeadingZeros(str) {\n");
      out.write("\tif (str == '')\n");
      out.write("\t\treturn str;\n");
      out.write("\tvar i = 0;\n");
      out.write("\twhile (i < str.length && str.substr(i , 1) == '0')\n");
      out.write("\t\ti++;\n");
      out.write("\tif (i == str.length)\n");
      out.write("\t\treturn '0';\n");
      out.write("\treturn str.substr(i);\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("// checkDate controle si une chaine (non vide) \n");
      out.write("//   peut Ãªtre intertprÃ©tÃ©e en date Ã©tant donnÃ©\n");
      out.write("//   un format d'entrÃ©e Si c'est le cas, elle\n");
      out.write("//   elle rend la date suivant un format de retour,\n");
      out.write("//   sinon elle rend la chaine vide\n");
      out.write("//==================================================\n");
      out.write("function checkDate(strDate, srcFormat, dstFormat) {\n");
      out.write("\n");
      out.write("// Le format :\n");
      out.write("// mm, MM, dd, DD, yy, yyyy\n");
      out.write("\n");
      out.write("//--------------------------------------------------\n");
      out.write("// On verifie que le format d'entrÃ©e est acceptable\n");
      out.write("//--------------------------------------------------\n");
      out.write("\tvar srcFmt = srcFormat.split(dateSeparator);\n");
      out.write("\tvar srcIndex = new Array(-1, -1, -1);\n");
      out.write("\tvar i;\n");
      out.write("\n");
      out.write("\tif(srcFmt.length != 3) {\n");
      out.write("\t\treturn '';\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tfor(i = 0; i < 3; i++) {\n");
      out.write("\t\tif(srcFmt[i].toLowerCase() == 'dd') {\n");
      out.write("\t\t\tsrcIndex[0] = i;\n");
      out.write("\t\t} else if(srcFmt[i].toLowerCase() == 'mm') {\n");
      out.write("\t\t\tsrcIndex[1] = i;\n");
      out.write("\t\t} else if(srcFmt[i].toLowerCase() == 'yy' || srcFmt[i].toLowerCase() == 'yyyy') {\n");
      out.write("\t\t\tsrcIndex[2] = i;\n");
      out.write("\t\t} else {\n");
      out.write("\t\t\treturn '';\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\tfor(i = 0; i < 3; i++) {\n");
      out.write("\t\tif(srcIndex[i] == -1) return '';\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("//--------------------------------------------------\n");
      out.write("// On verifie si le format de retour est acceptable\n");
      out.write("//--------------------------------------------------\n");
      out.write("\tvar dstIndex;\n");
      out.write("\tvar dstFmt;\n");
      out.write("\tif (!dstFormat || dstFormat == '') {\n");
      out.write("\t\tdstFmt = srcFmt;\n");
      out.write("\t\tdstIndex = srcIndex;\n");
      out.write("\t} else {\n");
      out.write("\t\t\n");
      out.write("\t\tdstFmt = dstFormat.split(dateSeparator);\n");
      out.write("\t\tdstIndex = new Array(-1, -1, -1);\n");
      out.write("\n");
      out.write("\t\tif(dstFmt.length != 3) return '';\n");
      out.write("\n");
      out.write("\t\tfor(i = 0; i < 3; i++) {\n");
      out.write("\t\t\tif(dstFmt[i].toLowerCase() == 'dd') {\n");
      out.write("\t\t\t\tdstIndex[0] = i;\n");
      out.write("\t\t\t} else if(dstFmt[i].toLowerCase() == 'mm') {\n");
      out.write("\t\t\t\tdstIndex[1] = i;\n");
      out.write("\t\t\t} else if(dstFmt[i].toLowerCase() == 'yy' || dstFmt[i].toLowerCase() == 'yyyy') {\n");
      out.write("\t\t\t\tdstIndex[2] = i;\n");
      out.write("\t\t\t} else {\n");
      out.write("\t\t\t\treturn '';\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t\tfor(i = 0; i < 3; i++) {\n");
      out.write("\t\t\tif(dstIndex[i] == -1) return '';\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("//--------------------------------------------------\n");
      out.write("// Les formats sont OK, on vÃ©rifie la valeur donnÃ©e\n");
      out.write("//--------------------------------------------------\n");
      out.write("\tvar majFmt = new Array('DD', 'MM', 'YY');\n");
      out.write("\tvar unsortedDate = strDate.split(dateSeparator);\n");
      out.write("\t\n");
      out.write("\tif (unsortedDate.length != 3)\n");
      out.write("\t\treturn '';\n");
      out.write("\t\n");
      out.write("\tfor(i = 0; i < 3; i++) {\n");
      out.write("//\t\tif(isNaN(unsortedDate[i])) {\n");
      out.write("\t\tif(isNaN(removeLeadingZeros(unsortedDate[i]))) {\n");
      out.write("\t\t\treturn '';\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tvar sortDate = new Array(3);\n");
      out.write("\n");
      out.write("\tfor(i = 0; i < 3; i++) {\n");
      out.write("//\t\tsortDate[i] = parseInt(unsortedDate[srcIndex[i]]);\n");
      out.write("\t\tsortDate[i] = parseInt(removeLeadingZeros(unsortedDate[srcIndex[i]]));\n");
      out.write("\t\t// modif\n");
      out.write("\t\t// rajoutÃ© par RaF pour èµ©ter que dd/mm/ se transforme en dd/mm/NaN\n");
      out.write("\t\tif (isNaN(sortDate[i])) {\n");
      out.write("\t\t\treturn '';\n");
      out.write("\t\t}\n");
      out.write("\t\t// fin modif\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\t\t// vÃ©rification du mois\n");
      out.write("\tif(sortDate[1] < 1 || sortDate[1] > 12) {\n");
      out.write("\t\treturn '';\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\t\t// passage Ã  4 chiffres de l'annÃ©e\n");
      out.write("\tif(sortDate[2] < 100) {\n");
      out.write("\t\tif(sortDate[2] > centuryLimit) {\n");
      out.write("\t\t\tsortDate[2] += 1900;\n");
      out.write("\t\t} else {\n");
      out.write("\t\t\tsortDate[2] += 2000;\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\t\t// vÃ©rification du jours\n");
      out.write("\tvar maxDays;\n");
      out.write("\tswitch (sortDate[1]) {\n");
      out.write("\t\tcase 2:\n");
      out.write("\t\t\tif((sortDate[2] % 4) == 0 && (!((sortDate[2] % 100) == 0) || (sortDate[2] % 400) == 0)) {\n");
      out.write("\t\t\t\tmaxDays = 29;\n");
      out.write("\t\t\t} else {\n");
      out.write("\t\t\t\tmaxDays = 28;\n");
      out.write("\t\t\t}\n");
      out.write("\t\t\tbreak;\n");
      out.write("\t\tcase 4:\n");
      out.write("\t\tcase 6:\n");
      out.write("\t\tcase 9:\n");
      out.write("\t\tcase 11:\n");
      out.write("\t\t\tmaxDays = 30;\n");
      out.write("\t\tdefault:\n");
      out.write("\t\t\tmaxDays = 31;\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tif(sortDate[0] < 1 || sortDate[0] > maxDays) return '';\n");
      out.write("\n");
      out.write("\n");
      out.write("//--------------------------------------------------\n");
      out.write("// La valeur donnÃ©e est OK, \n");
      out.write("//     on la rend selon le format de retour\n");
      out.write("//--------------------------------------------------\n");
      out.write("\tfor(i = 0; i < 3; i++) {\n");
      out.write("\t\tif(dstFmt[dstIndex[i]].substring(0, 2) == majFmt[i]) {\n");
      out.write("\t\t\tunsortedDate[dstIndex[i]] = '0000' + sortDate[i].toString();\n");
      out.write("\t\t\tunsortedDate[dstIndex[i]] = unsortedDate[dstIndex[i]].substring(unsortedDate[dstIndex[i]].length - dstFmt[dstIndex[i]].length);\n");
      out.write("\t\t} else {\n");
      out.write("\t\t\tunsortedDate[dstIndex[i]] = sortDate[i].toString();\n");
      out.write("\t\t\tif(unsortedDate[dstIndex[i]].length > dstFmt[dstIndex[i]].length) {\n");
      out.write("\t\t\t\tunsortedDate[dstIndex[i]] = parseInt(unsortedDate[dstIndex[i]].substring(unsortedDate[dstIndex[i]].length - dstFmt[dstIndex[i]].length)).toString();\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\treturn unsortedDate.join(dateSeparator);\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("// checkHour verifie si une chaine peut être\n");
      out.write("//  inteprétée en une heure. Le second paramètre\n");
      out.write("//  est le séparateur des heures / minutes\n");
      out.write("//==================================================\n");
      out.write("function checkHour(strHour, key) {\n");
      out.write("\tvar dstHour = new Array(0, 0);\n");
      out.write("\tvar srcHour = strHour.split(key);\n");
      out.write("\n");
      out.write("\tif(srcHour.length == 2) {\n");
      out.write("\t\tfor(i = 0; i < 2; i++) {\n");
      out.write("\t\t\tdstHour[i] = srcHour[i];\n");
      out.write("\t\t}\n");
      out.write("\t} else {\n");
      out.write("\t\tif(strHour.length <= 2) {\n");
      out.write("\t\t\tdstHour[0] = strHour;\n");
      out.write("\t\t} else if(strHour.length <= 4) {\n");
      out.write("\t\t\tdstHour[0] = strHour.substring(0, strHour.length - 2);\n");
      out.write("\t\t\tdstHour[1] = strHour.substring(strHour.length - 2);\n");
      out.write("\t\t} else {\n");
      out.write("\t\t\treturn '';\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tvar hourLimit = new Array(23, 59);\n");
      out.write("\tfor(i = 0; i < 2; i++) {\n");
      out.write("\t\tif(isNaN(dstHour[i])) {\n");
      out.write("\t\t\treturn '';\n");
      out.write("\t\t} else if(parseInt(dstHour[i]) < 0 || parseInt(dstHour[i]) > hourLimit[i]) {\n");
      out.write("\t\t\treturn '';\n");
      out.write("\t\t} else {\n");
      out.write("\t\t\tdstHour[i] = '00' + dstHour[i];\n");
      out.write("\t\t\tdstHour[i] = dstHour[i].substring(dstHour[i].length - 2);\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\treturn dstHour.join(key);\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("// checkEmail contrôle si une chaine peut être \n");
      out.write("//  syntaxiquement considérée comme une adresse\n");
      out.write("//  e-mail, si c'est le cas elle rend la valeur\n");
      out.write("//  d'entrée sinon elle rend la chaine vide.\n");
      out.write("//==================================================\n");
      out.write("<!-- <!-- /*function checkEmail(laValeur) { -->\n");
      out.write("<!--    pos = laValeur.indexOf(\"@\"); -->\n");
      out.write("<!--    if (pos == -1) -->\n");
      out.write("<!--       return \"\"; -->\n");
      out.write("\n");
      out.write("<!--    gauche = laValeur.substring(0 , pos); -->\n");
      out.write("<!--    droite = laValeur.substr(pos + 1); -->\n");
      out.write("<!--    if ( gauche == \"\" || encodeURIComponent(gauche) != gauche ) -->\n");
      out.write("<!--       return \"\"; -->\n");
      out.write("<!--    pos = droite.indexOf(\".\"); -->\n");
      out.write("<!--    if (pos == 0) -->\n");
      out.write("<!--       return \"\"; -->\n");
      out.write("<!--    pos = droite.indexOf(\"..\"); -->\n");
      out.write("<!--    if (pos != -1) -->\n");
      out.write("<!--       return \"\"; -->\n");
      out.write("<!--    pos = droite.lastIndexOf(\".\"); -->\n");
      out.write("<!--    if  (pos == -1)  -->\n");
      out.write("<!--       return \"\"; -->\n");
      out.write("<!--    if (droite.indexOf(\"@\") != -1)  -->\n");
      out.write("<!--    \t   return \"\";  \t    -->\n");
      out.write("<!--    \tif (encodeURIComponent(droite) != droite)  -->\n");
      out.write("<!--    \t\treturn \"\";\t -->\n");
      out.write("<!--    \tif ( (pos != (droite.length - 3)) && (pos != (droite.length - 4)) && (pos!=(droite.length-5)) )  -->\n");
      out.write("<!--    \t\treturn \"\";    -->\n");
      out.write("<!--    return laValeur; -->\n");
      out.write("<!-- }   -->\n");
      out.write("<!-- modifiée vers celle en dessous à cause d'un problème de validation d'email le 24/11/2015 par amb & htu  -->\n");
      out.write("<!-- http://u-project2.umanis.com/view.php?id=31724 */--> -->\n");
      out.write("\n");
      out.write("\n");
      out.write("function checkEmail(laValeur) {\n");
      out.write("\tvar re = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,32}(?:\\.[a-z]{2,32})?)$/i;\n");
      out.write("\t\n");
      out.write("    if (re.test(laValeur))\n");
      out.write("\t\treturn laValeur;\n");
      out.write("\telse\n");
      out.write("\t\treturn \"\";\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("//  checkInteger essaie de convertir une chaine en \n");
      out.write("//    un nombre entier; si elle y arrive, elle rend\n");
      out.write("//    une chaine qu'est le nombre trouvé reformatté\n");
      out.write("//    avec l'éventuel séparateur de milliers.\n");
      out.write("//==================================================\n");
      out.write("function checkInteger(laValeur , sepMil) {\n");
      out.write("\tvar sep=separateurMilliers; var valTxt; var i; var j; var c; var res=\"\"; var neg=0;\n");
      out.write("\t\n");
      out.write("\tif (sepMil)\n");
      out.write("\tsep = sepMil;\n");
      out.write("\t\n");
      out.write("\tvalTxt = removeLeadingZeros(laValeur);\n");
      out.write("\tvalTxt = myReplace(valTxt, \" \", \"\");\n");
      out.write("\tvalTxt = myReplace(valTxt, sep, \"\");\n");
      out.write("\t\n");
      out.write("\tif (valTxt == null || valTxt == '') {\n");
      out.write("\t\tvalTxt = '0';\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tfor (i=0 ; i<valTxt.length ; i++) {\n");
      out.write("\t\tc = valTxt.substr(i , 1);\n");
      out.write("\t\tif (i>0)\n");
      out.write("\t\t\tif (c<\"0\" || c>\"9\")\n");
      out.write("\t\t\t\treturn \"\";\n");
      out.write("\t\t\telse if ((c<\"0\" || c>\"9\") && c!=\"-\") \n");
      out.write("\t\t\t\treturn \"\";\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tnVal = parseInt(valTxt);   \n");
      out.write("\tif (isNaN(nVal))\n");
      out.write("\t  return \"\";\n");
      out.write("\n");
      out.write("\tvalTxt = nVal.toString();\n");
      out.write("   \n");
      out.write("\tif (valTxt.substr(0 , 1) == \"-\") {\n");
      out.write("\t\tneg = 1;\n");
      out.write("\t\tvalTxt = valTxt.substr(1);\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tres=\"\";\n");
      out.write("\tfor (j=0 , i=valTxt.length-1 ; i>=0 ; i-- , j++) {\n");
      out.write("\t\tif (j!=0 && j%3 == 0)\n");
      out.write("\t\t\tres = sep + res;\n");
      out.write("\t\tres = valTxt.substr(i , 1) + res;\n");
      out.write("\t}\n");
      out.write("\tif (neg == 1)\n");
      out.write("\t\tres = \"-\" + res;\n");
      out.write("   \t\n");
      out.write("\treturn res;\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("//  checkFloat essaie de convertir une chaine en\n");
      out.write("//   un nombre réel; si elle y arrive, elle rend\n");
      out.write("//   une chaine qu'est le nombre trouvé reformatté\n");
      out.write("//   avec le séparateur de décimaux et l'éventuel \n");
      out.write("//   séparateur de milliers. \n");
      out.write("//==================================================\n");
      out.write("function checkFloat(laValeur , sepDeci, sepMil) {\n");
      out.write("   var sep=separateurMilliers; var sepDec=separateurDecimal; var valTxt; var i; var j; var c; var res=\"\"; var neg=0; var pos; var sepDec;\n");
      out.write("   \n");
      out.write("   if (sepMil)\n");
      out.write("   \tsep = sepMil;\n");
      out.write("   \t\n");
      out.write("   if (sepDeci)\n");
      out.write("   \tsepDec = sepDeci;\n");
      out.write("\n");
      out.write("   if (laValeur != '0' && laValeur != ('0' + sepDec + '0')) {\n");
      out.write("   \t\tvalTxt = removeLeadingZeros(laValeur);\n");
      out.write("   } else {\n");
      out.write("   \t\tvalTxt = laValeur;\n");
      out.write("   }\n");
      out.write("   \n");
      out.write("   valTxt = myReplace(valTxt, \" \", \"\");\n");
      out.write("   valTxt = myReplace(valTxt, sep, \"\");\n");
      out.write("   valTxt = myReplace(valTxt , sepDec , \".\");\n");
      out.write("   \n");
      out.write("\tfor (i=0 ; i<valTxt.length ; i++) {\n");
      out.write("\t\tc = valTxt.substr(i , 1);\n");
      out.write("\t\tif (i>0)\n");
      out.write("\t\t\tif ((c<\"0\" || c>\"9\") && c!=\".\") \n");
      out.write("\t\t\t\treturn \"\";\n");
      out.write("\t\t\telse if ((c<\"0\" || c>\"9\") && c!=\".\" && c!=\"-\")\n");
      out.write("\t\t\t\treturn \"\";\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("   if ( valTxt.indexOf(\".\") > -1 && valTxt.lastIndexOf(\".\") != valTxt.indexOf(\".\") )\n");
      out.write("   \treturn \"\";\n");
      out.write("   \n");
      out.write("   nVal = parseFloat(valTxt);\n");
      out.write("   if (isNaN(nVal))\n");
      out.write("      return \"\";\n");
      out.write("\n");
      out.write("\n");
      out.write("   valTxt = nVal.toString();\n");
      out.write("   \n");
      out.write("   if (valTxt.substr(0 , 1) == \"-\") {\n");
      out.write("   \tneg = 1;\n");
      out.write("   \tvalTxt = valTxt.substr(1);\n");
      out.write("   }\n");
      out.write("   \n");
      out.write("   pos = valTxt.indexOf(\".\");\n");
      out.write("   if (pos == -1) {\n");
      out.write("   \tpartieEntiere = valTxt;\n");
      out.write("   \tpartieDecimale = \"\";\n");
      out.write("   } else if (pos == 0) {\n");
      out.write("   \tpartieEntiere = \"0\";\n");
      out.write("   \tpartieDecimale = valTxt.substr(1);\n");
      out.write("   } else {\n");
      out.write("   \tpartieEntiere = valTxt.substr(0, pos);\n");
      out.write("   \tpartieDecimale = valTxt.substr(pos+1);\n");
      out.write("   }\n");
      out.write("   \n");
      out.write("   res=\"\";\n");
      out.write("   for (j=0 , i=partieEntiere.length-1 ; i>=0 ; i-- , j++) {\n");
      out.write("   \tif (j!=0 && j%3 == 0)\n");
      out.write("   \t\tres = sep + res;\n");
      out.write("   \tres = partieEntiere.substr(i , 1) + res;\n");
      out.write("   }\n");
      out.write("   \n");
      out.write("   if (neg == 1)\n");
      out.write("   \tres = \"-\" + res;\n");
      out.write("   \t\n");
      out.write("   if (partieDecimale != \"\")\n");
      out.write("   \tres = res + sepDec + partieDecimale;\n");
      out.write("   \t\n");
      out.write("   return res;\n");
      out.write("}\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("// checkString permet d'appliquer un format sur une\n");
      out.write("//  chaîne de caractères. Le format est spécifié \n");
      out.write("//  dans le second paramètre. Il vaut 'lower', \n");
      out.write("//  'upper', 'capitalize' ou 'remaccents' (to remove accents).\n");
      out.write("//==================================================\n");
      out.write("function checkString(val, op) {\n");
      out.write("\tif (val == '') {\n");
      out.write("\t\treturn '';\n");
      out.write("\t}\n");
      out.write("\tif (op.toLowerCase() == 'upper') {\n");
      out.write("\t\treturn val.toUpperCase();\n");
      out.write("\t} else if (op.toLowerCase() == 'lower') {\n");
      out.write("\t\treturn val.toLowerCase();\n");
      out.write("\t} else if (op.toLowerCase() == 'capitalize') {\n");
      out.write("\t\tresult = val.substring(0,1).toUpperCase();\n");
      out.write("\t\tfor (i=1 ; i<val.length ; i++)\n");
      out.write("\t\t  if (val.substring(i-1, i) == ' ' || val.substring(i-1, i) == '-' || val.substring(i-1, i) == '\\\\' || val.substring(i-1, i) == '/')\n");
      out.write("\t\t     result += val.substring(i, i+1).toUpperCase();\n");
      out.write("\t\t  else\n");
      out.write("\t\t     result += val.substring(i, i+1).toLowerCase();\n");
      out.write("\t\treturn result;\n");
      out.write("\t} else if (op.toLowerCase() == 'remaccents') {\n");
      out.write("\t\tresult = val;\n");
      out.write("\t\tresult = val;\n");
      out.write("\t\twhile(result.indexOf('à') > -1) {\n");
      out.write("\t\t\tresult = result.replace('à', 'a');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('â') > -1) {\n");
      out.write("\t\t\tresult = result.replace('â', 'a');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ä') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ä', 'a');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ç') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ç', 'c');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('é') > -1) {\n");
      out.write("\t\t\tresult = result.replace('é', 'e');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('è') > -1) {\n");
      out.write("\t\t\tresult = result.replace('è', 'e');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ê') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ê', 'e');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ë') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ë', 'e');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ï') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ï', 'i');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('î') > -1) {\n");
      out.write("\t\t\tresult = result.replace('î', 'i');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ô') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ô', 'o');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ö') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ö', 'o');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ù') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ù', 'u');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('û') > -1) {\n");
      out.write("\t\t\tresult = result.replace('û', 'u');\n");
      out.write("\t\t}\n");
      out.write("\t\twhile(result.indexOf('ü') > -1) {\n");
      out.write("\t\t\tresult = result.replace('ü', 'u');\n");
      out.write("\t\t}\n");
      out.write("\t\treturn result;\n");
      out.write("\t} else {\n");
      out.write("\t\treturn val;\n");
      out.write("\t}\n");
      out.write("}\n");
      out.write("\n");
      out.write("function checkUrl(val) {\n");
      out.write("\tif (val == '') {\n");
      out.write("\t\treturn '';\n");
      out.write("\t}\n");
      out.write("\tif (val.substring(0,7).toLowerCase() == 'http://'.toLowerCase()) {\n");
      out.write("\t\tif (val.substring(7,8) !='' ){\n");
      out.write("\t\t\treturn true;\n");
      out.write("\t\t}else {\n");
      out.write("\t\t\treturn false;\n");
      out.write("\t\t}\n");
      out.write("\t} else if (val.substring(0,6).toLowerCase() == 'ftp://'.toLowerCase()) {\n");
      out.write("\t\tif (val.substring(6,7) !='' ){\n");
      out.write("\t\t\treturn true;\n");
      out.write("\t\t}else {\n");
      out.write("\t\t\treturn false;\n");
      out.write("\t\t}\n");
      out.write("\t} else if (val.substring(0,8).toLowerCase() == 'https://'.toLowerCase()) {\n");
      out.write("\t\tif (val.substring(8,9) !='' ){\n");
      out.write("\t\t\treturn true;\n");
      out.write("\t\t}else {\n");
      out.write("\t\t\treturn false;\n");
      out.write("\t\t}\n");
      out.write("\t} else if (val.substring(0,4).toLowerCase() == 'www.'.toLowerCase()) {\n");
      out.write("\t\tif (val.substring(4,5) !='' ){\n");
      out.write("\t\t\treturn true;\n");
      out.write("\t\t}else {\n");
      out.write("\t\t\treturn false;\n");
      out.write("\t\t}\n");
      out.write("\t} else {\n");
      out.write("\t\treturn false\n");
      out.write("\t}\n");
      out.write("}\n");
      out.write("// checkField est la fonction qui regroupe tous les tests\n");
      out.write("function checkField(laValeur , leType , estOblig , format1 , format2) {\n");
      out.write("   if (laValeur == \"\")\n");
      out.write("      if (estOblig)\n");
      out.write("         return false;\n");
      out.write("      else\n");
      out.write("         return true;\n");
      out.write("\n");
      out.write("\n");
      out.write("   if (leType.toLowerCase() == \"date\")\n");
      out.write("      return checkDate(laValeur , format1 , format2)\n");
      out.write("\n");
      out.write("   if (leType.toLowerCase() == \"hour\")\n");
      out.write("      return checkHour(laValeur , format1);\n");
      out.write("\n");
      out.write("   if (leType.toLowerCase() == \"email\")\n");
      out.write("      return checkEmail(laValeur);\n");
      out.write("\n");
      out.write("   if (leType.toLowerCase() == \"integer\")\n");
      out.write("      return checkInteger(laValeur , format1);\n");
      out.write("\n");
      out.write("   if (leType.toLowerCase() == \"float\")\n");
      out.write("      return checkFloat(laValeur , format1 , format2);\n");
      out.write("      \n");
      out.write("   if (leType.toLowerCase() == \"string\")\n");
      out.write("      return checkString(laValeur , format1);\n");
      out.write("\n");
      out.write("   return laValeur;\n");
      out.write("}\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("// toSysNum prend en premier paramètre une valeur\n");
      out.write("//  numérique en chaine, en second paramètre le\n");
      out.write("//  séparateur de décimaux, en 3eme paramètre le\n");
      out.write("//  séparateur de milliers; et rend une chaine\n");
      out.write("//  prête pour un parse.\n");
      out.write("//==================================================\n");
      out.write("function toSysNum(valeur , sepDeci , sepMil) {\n");
      out.write("\tvar sep=separateurMilliers; var sepDec=separateurDecimal;\n");
      out.write("\t\n");
      out.write("\tif (sepMil)\n");
      out.write("   \t\tsep = sepMil;\n");
      out.write("   \t\n");
      out.write("  \tif (sepDeci)\n");
      out.write("   \t\tsepDec = sepDeci;\n");
      out.write("   \t\n");
      out.write("\tvar res;\n");
      out.write("\tres = myReplace(valeur , \" \" , \"\");\n");
      out.write("\tres = myReplace(res , sep , \"\");\n");
      out.write("\tres = myReplace(res , sepDec , \".\");\n");
      out.write("\treturn res;\n");
      out.write("}\n");
      out.write("\n");
      out.write("//==================================================\n");
      out.write("// prepNumsForSubmit prend en premier paramètre le\n");
      out.write("//  séparateur de décimaux, en second paramètre le\n");
      out.write("//  séparateur de milliers; les paramètres suivants\n");
      out.write("//  étant les 'Field' à reformatter.\n");
      out.write("//==================================================\n");
      out.write("function prepNumsForSubmit() {\n");
      out.write("\targs = prepNumsForSubmit.arguments;\t\n");
      out.write("\tsepDec = args[0];\n");
      out.write("\tsepMil = args[1];\n");
      out.write("\t\n");
      out.write("\tfor (i=2 ; i<args.length ; i++) {\n");
      out.write("\t\tfld = args[i];\n");
      out.write("\t\tfldVal = fld.value;\n");
      out.write("\t\tfldVal = myReplace(fldVal, \" \", \"\");\n");
      out.write("\t\tfldVal = myReplace(fldVal , sepMil , \"\");\n");
      out.write("\t\tfldVal = myReplace(fldVal , sepDec , \".\");\n");
      out.write("\t\tfld.value = fldVal;\t\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("}\n");
      out.write("\n");
      out.write("function prepAutoNumsForSubmit(frmName, sepDec, sepMil) {\n");
      out.write("\treturn;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function ctrlNumField(aField, aType , mesg, sepDeci , sepMillier) {\n");
      out.write("\tif (myReplace(aField.value , \" \" , \"\") == \"\") {\n");
      out.write("\t\taField.value = \"\";\n");
      out.write("\t\treturn true;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar sepMil = separateurMilliers;\n");
      out.write("\tvar sepDec = separateurDecimal;\n");
      out.write("\tif (sepMillier)\n");
      out.write(" \t\tsepMil = sepMillier;\n");
      out.write(" \tif (sepDeci)\n");
      out.write(" \t\tsepDec = sepDeci;\n");
      out.write("\tvar v;\n");
      out.write("\n");
      out.write("\tif (aType.toLowerCase() == \"integer\")\n");
      out.write("\t\tv = checkField(aField.value, aType, false, sepMil);\n");
      out.write("\telse\n");
      out.write("\t\tv = checkField(aField.value, aType, false, sepDec, sepMil);\n");
      out.write("\n");
      out.write("\tif (v) {\n");
      out.write("\t\taField.value = v;\n");
      out.write("\t\treturn true;\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tif (mesg) {\n");
      out.write("\t\ttempStatus(mesg);\n");
      out.write(" \t}\n");
      out.write("\taField.value = '';\n");
      out.write("\treturn false;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function ctrlDateField(aField, mesg, formatIn, formatOut) {\n");
      out.write("\tif (myReplace(aField.value , \" \" , \"\") == \"\") {\n");
      out.write("\t\taField.value = \"\";\n");
      out.write("\t\treturn true;\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tvar formIn = dateFormatIn;\n");
      out.write("\tvar formOut = dateFormatOut;\n");
      out.write("\tif (formatIn) {\n");
      out.write("\t\tformIn = formatIn;\n");
      out.write("\t}\n");
      out.write("\tif (formatOut) {\n");
      out.write("\t\tformOut = formatOut;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tv = checkField(aField.value, 'date', false, formIn, formOut);\n");
      out.write("\t\n");
      out.write("\tif (v) {\n");
      out.write("\t\taField.value = v;\n");
      out.write("\t\treturn true;\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tif (mesg) {\n");
      out.write("\t\ttempStatus(mesg);\n");
      out.write("\t}\n");
      out.write("\taField.value = '';\n");
      out.write("\treturn false;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function ctrlHourField(aField, mesg, sep) {\n");
      out.write("\tif (myReplace(aField.value , \" \" , \"\") == \"\") {\n");
      out.write("\t\taField.value = \"\";\n");
      out.write("\t\treturn true;\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tvar separator = hourSeparator;\n");
      out.write("\tif (sep) {\n");
      out.write("\t\tseparator = sep;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tv = checkField(aField.value, 'hour', false, separator);\n");
      out.write("\t\n");
      out.write("\tif (v) {\n");
      out.write("\t\taField.value = v;\n");
      out.write("\t\treturn true;\n");
      out.write("\t}\n");
      out.write("\n");
      out.write("\tif (mesg) {\n");
      out.write("\t\ttempStatus(mesg);\n");
      out.write("\t}\n");
      out.write("\taField.value = '';\n");
      out.write("\treturn false;\n");
      out.write("}\n");
      out.write("//============================================\n");
      out.write("// Compare deux dates\n");
      out.write("// parametres :\n");
      out.write("//\t\tdate1 la partie jour de la première date (par defaut '01/01/1970')\n");
      out.write("// \t\thour1 la partie horaire de la première date (par défaut '00:00')\n");
      out.write("//\t\tdate2 la partie jour de la deuxième date (par defaut '01/01/1970')\n");
      out.write("// \t\thour2 la partie horaire de la deuxième date (par defaut '00:00')\n");
      out.write("// \t\tformatDate le format de la date en entrée (par défaut 'DD/MM/yyyy')\n");
      out.write("//\t\tsepHeure\tle séparateur des heures (par défaut : )\n");
      out.write("// renvoit le nombre de millisecondes de différence\n");
      out.write("//\t\t0 si (date1, hour1)==(date2, hour2)\n");
      out.write("//\t\t>0 si (date1, hour1) > (date2, hour2)\n");
      out.write("//\t\t<0 si (date1, hour1) < (date2, hour2)\n");
      out.write("//=============================================================\n");
      out.write("function compareDate(date1, hour1, date2, hour2, formatDate, sepHeure) {\n");
      out.write("\tfDate = dateFormatOut;\n");
      out.write("\tsep = hourSeparator;\n");
      out.write("\t\n");
      out.write("\tif (formatDate) {\n");
      out.write("\t\tfDate = formatDate;\n");
      out.write("\t}\n");
      out.write("\tif (sepHeure) {\n");
      out.write("\t\tsep = sepHeure;\n");
      out.write("\t}\n");
      out.write("\tvar d1;\n");
      out.write("\tvar h1;\n");
      out.write("\tvar d2;\n");
      out.write("\tvar h2;\t\n");
      out.write("\tif (date1) {\n");
      out.write("\t\td1 = date1;\n");
      out.write("\t} else {\n");
      out.write("\t\td1 = checkField(\"01/01/1970\", \"date\", false, dateFormatOut, fDate);\n");
      out.write("\t}\n");
      out.write("\tif (hour1) {\n");
      out.write("\t\th1 = hour1;\n");
      out.write("\t} else {\n");
      out.write("\t\th1 = checkField(\"00:00\", \"hour\", false, hourSeparator, sep);\n");
      out.write("\t}\n");
      out.write("\tif (date2) {\n");
      out.write("\t\td2 = date2;\n");
      out.write("\t} else {\n");
      out.write("\t\td2 = checkField(\"01/01/1970\", \"date\", false, dateFormatOut, fDate);\n");
      out.write("\t}\n");
      out.write("\tif (hour2) {\n");
      out.write("\t\th2 = hour2;\n");
      out.write("\t} else {\n");
      out.write("\t\th2 = checkField(\"00:00\", \"hour\", false, hourSeparator, sep);\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\t//controle\n");
      out.write("\t\n");
      out.write("\ts1 = checkHour(h1 , sep);\n");
      out.write("\ts2 = checkDate(d1, fDate, 'MM/DD/yyyy');\n");
      out.write("\t\n");
      out.write("\ts3 = checkHour( h2 , sep);\n");
      out.write("\ts4 = checkDate(d2, fDate, 'MM/DD/yyyy');\n");
      out.write("\t\n");
      out.write("\tstartTime = new Date(s2.concat(\" \").concat(s1));\n");
      out.write("\tendTime    = new Date(s4.concat(\" \").concat(s3));\n");
      out.write("\t\n");
      out.write("\tmillidiff = startTime - endTime;\n");
      out.write("\n");
      out.write("\treturn millidiff;\n");
      out.write("}\n");

/******************************************************************************
 * CVS Log File
 *
 * $Log$
 * Revision 1.13  2010-09-14 16:41:52  jeanseb
 * allow email to have 4 chars extension
 *
 * Revision 1.12  2010/02/17 10:40:44  jeanseb
 * erroneous chars
 *
 * Revision 1.11  2009/10/29 09:15:35  jeanseb
 * bug fix: if Oracle, the js has to be considered as UTF8
 *
 * Revision 1.10  2008/03/25 14:23:16  brian
 * On accepte la valeur '0' (avant on la remplace avec '')
 *
 * Revision 1.9  2008/01/25 18:20:01  brian
 * Fixed bug where integer zeros where getting cleared out as invalid
 *
 * Revision 1.8  2008/01/23 19:36:51  sali
 * fix bug on compare date
 *
 * Revision 1.7  2008/01/07 13:32:58  nomar
 * bug CIBLAGE V2:PreNumsForSubmit()
 *
 * Revision 1.6  2007/07/06 17:40:45  sali
 * correction bug 636: compareDate with locale
 *
 * Revision 1.5  2007/05/22 15:02:23  nomar
 * log system (Phase1 pour *.jsp)
 *
 * Revision 1.4  2006/11/16 21:18:57  omourad
 * adding date separator
 *
 * Revision 1.3  2005/10/14 12:35:19  raphael
 * utilisation du sparateur d'heure de la locale
correction des accents
 *
 * Revision 1.2  2005/08/24 07:50:08  raphael
 * dsactivation de prepNUmForSubmit et de prepAutoNumsForSubmit
 *
 * Revision 1.1  2005/06/07 09:02:14  raphael
 * version initiale
 *
 * Revision 1.2  2005/02/28 19:07:09  imad
 * Fixed thousands separator bug
 *
 * Revision 1.1  2004/07/23 18:20:32  brian
 * Initial Revision
 *
 *****************************************************************************/

      out.write('\n');
    } catch (Throwable t) {
      if (!(t instanceof SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try { out.clearBuffer(); } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else log(t.getMessage(), t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}
