package org.apache.jsp.js;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;
import com.edeal.frontline.*;
import java.util.*;
import com.edeal.frontline.*;
import java.util.*;

public final class edit_005fjs_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;

  static {
    _jspx_dependants = new java.util.ArrayList(5);
    _jspx_dependants.add("/js/presentField.js");
    _jspx_dependants.add("/js/utils.js");
    _jspx_dependants.add("/js/checkFields.jsp");
    _jspx_dependants.add("/js/calendar.jsp");
    _jspx_dependants.add("/WEB-INF/taglib.tld");
  }

  private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005ffl_005fwebapp_005fnobody;

  private javax.el.ExpressionFactory _el_expressionfactory;
  private org.apache.AnnotationProcessor _jsp_annotationprocessor;

  public Object getDependants() {
    return _jspx_dependants;
  }

  public void _jspInit() {
    _005fjspx_005ftagPool_005ffl_005fwebapp_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
    _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
  }

  public void _jspDestroy() {
    _005fjspx_005ftagPool_005ffl_005fwebapp_005fnobody.release();
  }

  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;charset=UTF-8");
      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;

      out.write('\n');
      out.write("/******************************************************************************\n");
      out.write(" * Copyright (c) 2000-2008 e-Deal\n");
      out.write(" *\n");
      out.write(" * e-Deal S.A.\n");
      out.write(" * 55 rue Brillat Savarin\n");
      out.write(" * 75013 Paris\n");
      out.write(" * France\n");
      out.write(" *\n");
      out.write(" * T: +33 (0)1 53 80 80 30\n");
      out.write(" * F: +33 (0)1 73 01 69 77\n");
      out.write(" * http://www.e-deal.com\n");
      out.write(" * \n");
      out.write(" * La diffusion de ce code source sous quelque forme que ce soit sans\n");
      out.write(" * l'autorisation de E-DEAL est interdite.\n");
      out.write(" *\n");
      out.write(" * Vous ï¿½tes autorisï¿½s ï¿½ modifier ce code source uniquement pour votre usage\n");
      out.write(" * propre et sous rï¿½serve que les mentions de copyright demeurent intactes.\n");
      out.write(" *\n");
      out.write(" * Ce code est fourni en l'ï¿½tat. Aucune garantie d'aucune sorte, explicite ou\n");
      out.write(" * implicite n'est donnï¿½e. En aucun cas E-DEAL ne pourra ï¿½tre tenu pour\n");
      out.write(" * responsable des dommages pouvant rï¿½sulter de l'utilisation de ce code\n");
      out.write(" * source.\n");
      out.write(" ******************************************************************************/\n");
      out.write("\n");
      out.write("function presentFieldsValue()\n");
      out.write("{\n");
      out.write("\tvar elem = document.forms[0].elements;\n");
      out.write("\tvar sep = \"|\";\n");
      out.write("\tif (document.forms[0].$$multivalSeparator) {\n");
      out.write("\t\tsep = document.forms[0].$$multivalSeparator.value;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tif (typeof(Utils) == \"object\") {\n");
      out.write("\t\tfor (i=0;i<elem.length;i++) {\n");
      out.write("\t\t\tUtils.normalizeInputFromViewForSave(elem[i].name, document.forms[0], sep);\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar i=0;\n");
      out.write("\tmyTab = new Array();\n");
      out.write("\tmyTab.push(\"IntActID\");\n");
      out.write("\tfor (i=0;i<elem.length;i++)\n");
      out.write("\t{\n");
      out.write("\t\tif ( ($(elem[i]).attr(\"ed\") == \"true\") || (elem[i].type == \"select-multiple\") || (elem[i].type == \"checkbox\") || (elem[i].type == \"radio\"))\n");
      out.write("\t\t{\n");
      out.write("\t\t\tvar ignoreItem = false;\n");
      out.write("\t\t\tvar name = elem[i].name;\n");
      out.write("\t\t\tfor (j = myTab.length; (myTab[j] != name) && j>-1; j--);\n");
      out.write("\t\t\tif (j == -1)\n");
      out.write("\t\t\t{\n");
      out.write("\t\t\t\tmyTab[myTab.length] = name;\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\n");
      out.write("\tdocument.forms[0].elements[\"$$presentFields\"].value = myTab.join(sep);\n");
      out.write("}\n");
      out.write('\n');
      out.write('\n');
      out.write("/******************************************************************************\n");
      out.write(" * Copyright (c) 2000-2011 e-Deal\n");
      out.write(" *\n");
      out.write(" * e-Deal S.A.\n");
      out.write(" * 55 rue Brillat Savarin\n");
      out.write(" * 75013 Paris\n");
      out.write(" * France\n");
      out.write(" *\n");
      out.write(" * T: +33 (0)1 53 80 80 30\n");
      out.write(" * F: +33 (0)1 73 01 69 77\n");
      out.write(" * http://www.e-deal.com\n");
      out.write(" * \n");
      out.write(" * La diffusion de ce code source sous quelque forme que ce soit sans\n");
      out.write(" * l'autorisation de E-DEAL est interdite.\n");
      out.write(" *\n");
      out.write(" * Vous ï¿½tes autorisï¿½s ï¿½ modifier ce code source uniquement pour votre usage\n");
      out.write(" * propre et sous rï¿½serve que les mentions de copyright demeurent intactes.\n");
      out.write(" *\n");
      out.write(" * Ce code est fourni en l'ï¿½tat. Aucune garantie d'aucune sorte, explicite ou\n");
      out.write(" * implicite n'est donnï¿½e. En aucun cas E-DEAL ne pourra ï¿½tre tenu pour\n");
      out.write(" * responsable des dommages pouvant rï¿½sulter de l'utilisation de ce code\n");
      out.write(" * source.\n");
      out.write(" ******************************************************************************/\n");
      out.write("/**\n");
      out.write(" * Remove all selected items from a select multiple object.\n");
      out.write(" * fldName specified an hidden input containing list the values separated by '$$multivalSeparator'.\n");
      out.write(" * The name of the select multiple element is 'lbl' + fldName. If not exist, it is just fldName and\n");
      out.write(" * the string representation of the values list doesn't be store.\n");
      out.write(" *\n");
      out.write(" * @param fldName name of the field (required).\n");
      out.write(" * @param frmName name of the form (optional, default is forms[0]).\n");
      out.write(" */\n");
      out.write("function unselectMultiple(fldName, frmName) {\n");
      out.write("\tvar f = null;\n");
      out.write("\tvar i;\n");
      out.write("\tif(frmName) {\n");
      out.write("\t\tf = document.forms[frmName];\n");
      out.write("\t} else {\n");
      out.write("\t\tf = document.forms[0];\n");
      out.write("\t}\n");
      out.write("\tif(!f) return;\n");
      out.write("\n");
      out.write("\tvar lblFld = f.elements['lbl' + fldName];\n");
      out.write("\tvar realFld = f.elements[fldName];\n");
      out.write("\tvar multivalSeparator = (f.elements['$$multivalSeparator'] ? f.elements['$$multivalSeparator'].value : '|');\n");
      out.write("\n");
      out.write("\tvar usedFld = lblFld ? lblFld : realFld;\n");
      out.write("\n");
      out.write("\tif(usedFld && usedFld.selectedIndex != -1) {\n");
      out.write("\t\tif(lblFld) {\n");
      out.write("\t\t\tvar vectValue = realFld.value.split(multivalSeparator);\n");
      out.write("\t\t\tfor(i = lblFld.options.length - 1; i >= 0; i--) {\n");
      out.write("\t\t\t\tfldValue = lblFld.options[i].value;\n");
      out.write("\t\t\t\tif(fldValue != '_blank') { \n");
      out.write("\t\t\t\t\tif(lblFld.options[i].selected) {\n");
      out.write("\t\t\t\t\t\tlblFld.options[i] = null;\n");
      out.write("\t\t\t\t\t\tvectValue[i] = null;\n");
      out.write("\t\t\t\t\t}\n");
      out.write("\t\t\t\t}\n");
      out.write("\t\t\t}\n");
      out.write("\t\t\trealFld.value = '';\n");
      out.write("\t\t\tfor(i = 0, j = 0; i < vectValue.length; i++) {\n");
      out.write("\t\t\t\trealFld.value += (vectValue[i] == null ? '' : (j++ == 0 ? '' : multivalSeparator) + vectValue[i]);\n");
      out.write("\t\t\t}\n");
      out.write("\t\t} else {\n");
      out.write("\t\t\tfor(i = realFld.options.length - 1; i >= 0; i--) {\n");
      out.write("\t\t\t\tfldValue = realFld.options[i].value;\n");
      out.write("\t\t\t\tif(fldValue != '_blank') { \n");
      out.write("\t\t\t\t\tif(realFld.options[i].selected) {\n");
      out.write("\t\t\t\t\t\trealFld.options[i] = null;\n");
      out.write("\t\t\t\t\t}\n");
      out.write("\t\t\t\t}\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("}\n");
      out.write("\n");
      out.write("/**\n");
      out.write(" * Convert money (in String) in another currency\n");
      out.write(" * Conversion can be only from a euro-zone currency to euro or reverse\n");
      out.write(" * Symbols :\n");
      out.write(" *\t\tfrf : Franc francais\n");
      out.write(" *\t\tdem : Deutsch mark\n");
      out.write(" *\t\titl : Lire italienne\n");
      out.write(" *\t\tiep : Livre irlandaise\n");
      out.write(" *\t\tesp : Peseta espagnole\n");
      out.write(" *\t\tpte : Escudo portugais\n");
      out.write(" *\t\tnlg : Florin hollandais\n");
      out.write(" *\t\tfim : Mark finlandais\n");
      out.write(" *\t\tbef : Franc belge\n");
      out.write(" *\t\tluf : Franc luxembourgeois\n");
      out.write(" *\t\tats : Shilling autrichien\n");
      out.write(" *\t\teur : Euro\n");
      out.write(" */\n");
      out.write(" \n");
      out.write("function convert(money, curr1, curr2) {\n");
      out.write("\tif (money == '') {\n");
      out.write("\t\treturn '';\n");
      out.write("\t}\n");
      out.write("\tvar value = parseFloat(money);\n");
      out.write("\tif (isNaN(value)) {\n");
      out.write("\t\treturn '';\n");
      out.write("\t}\n");
      out.write("\tvar convVal;\n");
      out.write("\tif (curr1.toLowerCase() == 'frf' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion franc francais -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 6.55957;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'frf') {\n");
      out.write("\t\t// conversion euro -> franc francais\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 6.55957;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'dem' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion mark (Allemagne) -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 1.95583;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'dem') {\n");
      out.write("\t\t// conversion euro -> mark (Allemagne)\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 1.95583;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'itl' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion lire (Italie) -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 1936.27;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'itl') {\n");
      out.write("\t\t// conversion euro -> lire (Italie)\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 1936.27;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'iep' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion livre irlandaise -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 0.787564;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'iep') {\n");
      out.write("\t\t// conversion euro -> livre irlandaise\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 0.787564;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'esp' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion peseta (Espagne) -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 166.386;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'esp') {\n");
      out.write("\t\t// conversion euro -> peseta (Espagne)\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 166.386;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'pte' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion escudo (Portugal) -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 200.482;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'pte') {\n");
      out.write("\t\t// conversion euro -> escudo (Portugal)\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 200.482;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'nlg' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion florin (Pays-Bas) -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 2.20371;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'nlg') {\n");
      out.write("\t\t// conversion euro -> florin (Pays-Bas)\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 2.20371;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'fim' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion Mark finlandais (Finlande) -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 5.94573;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'fim') {\n");
      out.write("\t\t// conversion euro -> Mark finlandais (Finlande)\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 5.94573;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'bef' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion franc belge -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 40.3399;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'bef') {\n");
      out.write("\t\t// conversion euro -> franc belge\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 40.3399;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'luf' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion franc luxembourgeois -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 40.3399;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'luf') {\n");
      out.write("\t\t// conversion euro -> franc luxembourgeois\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 40.3399;\n");
      out.write("\n");
      out.write("\t} else if (curr1.toLowerCase() == 'ats' && curr2.toLowerCase() == 'eur') {\n");
      out.write("\t\t// conversion schilling (Autriche) -> euro\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) / 13.7603;\n");
      out.write("\t} else if (curr1.toLowerCase() == 'eur' && curr2.toLowerCase() == 'ats') {\n");
      out.write("\t\t// conversion euro -> schilling (Autriche)\n");
      out.write("\t\tconvVal = (100 *parseFloat(value)) * 13.7603;\n");
      out.write("\n");
      out.write("\t}\n");
      out.write("\treturn (Math.round(convVal)/100).toString();\n");
      out.write("}\n");
      out.write("\n");
      out.write("/* removing leading and tail spaces and replaces mlti^le spaces by one single space\n");
      out.write(" */\n");
      out.write("function trimStr(str) {\n");
      out.write("\tif (str == \"\") {\n");
      out.write("\t\treturn str;\n");
      out.write("\t}\n");
      out.write("\tvar res = str;\n");
      out.write("\twhile (res.indexOf(\"  \") > -1) {\n");
      out.write("\t\tres = res.split(\"  \").join(\" \");\n");
      out.write("\t}\n");
      out.write("\tif (res.indexOf(\" \") == 0) {\n");
      out.write("\t\tres = res.substring(1);\n");
      out.write("\t}\n");
      out.write("\tif (res.lastIndexOf(\" \") == (res.length - 1)) {\n");
      out.write("\t\tres = res.substring(0, res.length - 1);\n");
      out.write("\t}\n");
      out.write("\treturn res;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function flEscape(str) {\n");
      out.write("\tif (str == \"\") {\n");
      out.write("\t\treturn str;\n");
      out.write("\t}else {\n");
      out.write("\t\t//return escape(str).split(\"+\").join(\"%2b\");\n");
      out.write("\t\treturn encodeURIComponent(str).split(\"+\").join(\"%2b\");\n");
      out.write("\t}\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("/**\n");
      out.write(" * replaces some special caracters by corresponding codes\n");
      out.write(" */\n");
      out.write("function formatToWeb(str, edit) {\n");
      out.write("\tvar result;\n");
      out.write("//\tif (!str || trimStr(str).length == 0)\n");
      out.write("\tif (false)\n");
      out.write("\t\tresult = edit ? \"\" : \"&nbsp;\";\n");
      out.write("\telse {\n");
      out.write("\t\tvar buffer = \"\";\n");
      out.write("\t\tvar c;\n");
      out.write("\t\tvar i;\n");
      out.write("\t\tfor (i = 0; i < str.length; i++) {\n");
      out.write("\t\t\tc = str.substring(i, i+1);\n");
      out.write("\t\t\tswitch (c) {\n");
      out.write("\t\t\t\tcase '\\n' :\n");
      out.write("\t\t\t\t\tbuffer += edit ? \"\\n\" : \"<br>\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase '<' :\n");
      out.write("\t\t\t\t\tbuffer += \"&lt;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase '>' :\n");
      out.write("\t\t\t\t\tbuffer += \"&gt;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase '&' :\n");
      out.write("\t\t\t\t\tbuffer += \"&amp;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase '\"' :\n");
      out.write("\t\t\t\t\tbuffer += \"&quot;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã ' :\n");
      out.write("\t\t\t\t\tbuffer += \"&agrave;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã¢' :\n");
      out.write("\t\t\t\t\tbuffer += \"&acirc;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã¤' :\n");
      out.write("\t\t\t\t\tbuffer += \"&auml;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã©' :\n");
      out.write("\t\t\t\t\tbuffer += \"&eacute;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã¨' :\n");
      out.write("\t\t\t\t\tbuffer += \"&egrave;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ãª' :\n");
      out.write("\t\t\t\t\tbuffer += \"&ecirc;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã«' :\n");
      out.write("\t\t\t\t\tbuffer += \"&euml;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã®' :\n");
      out.write("\t\t\t\t\tbuffer += \"&icirc;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã¯' :\n");
      out.write("\t\t\t\t\tbuffer += \"&iuml;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã´' :\n");
      out.write("\t\t\t\t\tbuffer += \"&ocirc;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã¶' :\n");
      out.write("\t\t\t\t\tbuffer += \"&ouml;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã¹' :\n");
      out.write("\t\t\t\t\tbuffer += \"&ugrave;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã»' :\n");
      out.write("\t\t\t\t\tbuffer += \"&ucirc;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã¼' :\n");
      out.write("\t\t\t\t\tbuffer += \"&uuml;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Â¤' :\n");
      out.write("\t\t\t\t\tbuffer += \"&curren;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Â£' :\n");
      out.write("\t\t\t\t\tbuffer += \"&pound;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Âµ' :\n");
      out.write("\t\t\t\t\tbuffer += \"&micro;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Â²' :\n");
      out.write("\t\t\t\t\tbuffer += \"&sup2;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Â§' :\n");
      out.write("\t\t\t\t\tbuffer += \"&sect;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase 'Ã§' :\n");
      out.write("\t\t\t\t\tbuffer += \"&ccedil;\";\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tdefault :\n");
      out.write("\t\t\t\t\tbuffer += c;\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t\tresult = buffer;\n");
      out.write("\t}\n");
      out.write("\treturn result;\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("/**\n");
      out.write(" * replaces some special caracters by corresponding codes\n");
      out.write(" */\n");
      out.write("function formatToJavascript(pStr) {\n");
      out.write("\tvar i = 0;\n");
      out.write("\tvar strResult = '';\n");
      out.write("//\tif (!str || trimStr(str).length == 0)\n");
      out.write("\tif(pStr) {\n");
      out.write("\t\tfor(i = 0; i < pStr.length; i++) {\n");
      out.write("\t\t\tc = pStr.charAt(i);\n");
      out.write("\t\t\tswitch (c) {\n");
      out.write("\t\t\t\tcase '\\n' :\n");
      out.write("\t\t\t\t\tstrResult += '\\\\n';\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase '\"' :\n");
      out.write("\t\t\t\t\tstrResult += '\\\\\\\"';\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase '\\'' :\n");
      out.write("\t\t\t\t\tstrResult += '\\\\\\'';\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tcase '\\\\' :\n");
      out.write("\t\t\t\t\tstrResult += '\\\\\\\\';\n");
      out.write("\t\t\t\t\tbreak;\n");
      out.write("\t\t\t\tdefault :\n");
      out.write("\t\t\t\t\tstrResult += c;\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\treturn strResult;\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("/**\n");
      out.write(" * returns the given number rounded up to the given number of decimals\n");
      out.write(" */\n");
      out.write("function roundDecimal(nbr , nbDecimals) {\n");
      out.write("\tvar multi = 1;\n");
      out.write("\tvar i;\n");
      out.write("\tvar nbDec = 2;\n");
      out.write("\tif (nbDecimals)\n");
      out.write("\t\tnbDec = nbDecimals;\n");
      out.write("\t\t\n");
      out.write("\tfor (i=0 ; i < nbDec ; i++)\n");
      out.write("\t\tmulti *= 10;\n");
      out.write("\treturn (Math.round(multi * nbr)/multi);\n");
      out.write("}\n");
      out.write("\n");
      out.write("/**\n");
      out.write(" * replace key by value in specified string\n");
      out.write(" */\n");
      out.write("function strReplace(pStr, pKey, pValue) {\n");
      out.write("\treturn pStr.split(pKey).join(pValue);\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write("/**\n");
      out.write(" * lite Vector class\n");
      out.write(" */\n");
      out.write("function FlVector(pArray) {\n");
      out.write("\tthis.elements = pArray ? pArray : new Array();\n");
      out.write("\n");
      out.write("\tthis.size = FlVectorSize;\n");
      out.write("\tthis.isEmpty = FlVectorIsEmpty;\n");
      out.write("\tthis.addElement = FlVectorAddElement;\n");
      out.write("\tthis.removeElementAt = FlVectorRemoveElementAt;\n");
      out.write("\tthis.removeElement = FlVectorRemoveElement;\n");
      out.write("\tthis.elementAt = FlVectorElementAt;\n");
      out.write("\tthis.contains = FlVectorContains;\n");
      out.write("\tthis.toString = FlVectorToString;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorSize() {\n");
      out.write("\treturn this.elements.length;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorIsEmpty() {\n");
      out.write("\treturn this.elements.length == 0;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorAddElement(pObj) {\n");
      out.write("\tthis.elements[this.elements.length] = pObj;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorRemoveElementAt(pIndex) {\n");
      out.write("\tvar i = 0;\n");
      out.write("\tif(pIndex >= 0 && pIndex < this.elements.length) {\n");
      out.write("\t\tthis.elements[pIndex] = null;\n");
      out.write("\t\tfor(i = pIndex + 1; i < this.elements.length; i++) {\n");
      out.write("\t\t\tthis.elements[i - 1] = this.elements[i];\n");
      out.write("\t\t}\n");
      out.write("\t\tthis.elements.length = this.elements.length - 1;\n");
      out.write("\t}\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorRemoveElement(pObj) {\n");
      out.write("\tvar i = 0;\n");
      out.write("\tfor(i = 0; i < this.elements.length; i++) {\n");
      out.write("\t\tif(this.elements[i] == pObj) {\n");
      out.write("\t\t\tthis.removeElementAt(i);\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorElementAt(pIndex) {\n");
      out.write("\tif(pIndex >= 0 && pIndex < this.elements.length) {\n");
      out.write("\t\treturn this.elements[pIndex];\n");
      out.write("\t} else {\n");
      out.write("\t\treturn null;\n");
      out.write("\t}\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorContains(pObj) {\n");
      out.write("\tvar i = 0;\n");
      out.write("\tfor(i = 0; i < this.elements.length; i++) {\n");
      out.write("\t\tif(this.elements[i] == pObj) {\n");
      out.write("\t\t\treturn true;\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\treturn false;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function FlVectorToString(pSeparator) {\n");
      out.write("\treturn this.elements.join(pSeparator ? pSeparator : ';');\n");
      out.write("}\n");
      out.write("\n");
      out.write("function trimString(str) {\n");
      out.write("  str = this != window? this : str;\n");
      out.write("  return str.replace(/^\\s+/g, '').replace(/\\s+$/g, '');\n");
      out.write("}\n");
      out.write("\n");
      out.write("String.prototype.trim = trimString;\n");
      out.write("\n");
      out.write("function arrayIndexOf(value, array) {\n");
      out.write("\tarray = this != window ? this : array;\n");
      out.write("\tif (array) {\n");
      out.write("\t\tfor (var i = 0; i < array.length; i++) {\n");
      out.write("\t\t\tif (array[i] == value) {\n");
      out.write("\t\t\t\treturn i;\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\treturn -1;\n");
      out.write("}\n");
      out.write("function arrayLastIndexOf(value, array) {\n");
      out.write("\tarray = this != window ? this : array;\n");
      out.write("\tif (array) {\n");
      out.write("\t\tfor (var i = array.length - 1; i <= 0; i--) {\n");
      out.write("\t\t\tif (array[i] == value) {\n");
      out.write("\t\t\t\treturn i;\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\treturn -1;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function replaceParam(url, paramName, newValue){\n");
      out.write("\n");
      out.write("\tif (!url) {\n");
      out.write("\t\treturn;\n");
      out.write("\t}\n");
      out.write("\tvar queryStringIdx = url.indexOf(\"?\");\n");
      out.write("\tif (queryStringIdx == -1) {\n");
      out.write("\t\treturn url + \"?\" + paramName + \"=\" + encodeURIComponent(newValue);\n");
      out.write("\t} \n");
      out.write("\tvar queryString = url.substring(queryStringIdx + 1, url.length);\n");
      out.write("\tvar paramNames = new Array();\n");
      out.write("\tvar paramValues = new Array();\n");
      out.write("\tvar params = queryString.split('&');\n");
      out.write("\tvar paramIdx = -1;\n");
      out.write("\tfor (var i = 0; i < params.length; i++) {\n");
      out.write("\t\tvar idx = params[i].indexOf(\"=\");\n");
      out.write("\t\tparamNames[i] = params[i].substring(0, idx);\n");
      out.write("\t\tif (paramNames[i] == paramName && paramIdx == -1) {\n");
      out.write("\t\t\tparamIdx = i;\n");
      out.write("\t\t}\n");
      out.write("\t\tparamValues[i] = params[i].substring(idx + 1, params[i].length);\n");
      out.write("\t}\n");
      out.write("\tif (paramIdx == -1) {\n");
      out.write("\t\tparamNames.push(paramName);\n");
      out.write("\t\tparamValues.push(newValue);\n");
      out.write("\t} else {\n");
      out.write("\t\tparamValues[paramIdx] = newValue;\n");
      out.write("\t}\n");
      out.write("\tvar newQueryArray = new Array();\n");
      out.write("\tfor (var i =0; i < paramNames.length; i++) {\n");
      out.write("\t\tif (paramValues[i]) {\n");
      out.write("\t\t\tnewQueryArray.push(paramNames[i] + \"=\" + paramValues[i]);\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\treturn url.substring(0, queryStringIdx) + \"?\" + newQueryArray.join(\"&\");\n");
      out.write("}\n");
      out.write("\n");
      out.write("/*\n");
      out.write(" * Allowing to impose a max length for\n");
      out.write(" * provided object (textarea for example)\n");
      out.write(" * And display specified message in order\n");
      out.write(" * to inform current user if its text is\n");
      out.write(" * truncate\n");
      out.write(" */\n");
      out.write("function imposeMaxLength(Event, Object)\n");
      out.write("{\n");
      out.write("\tvar MaxLenght = 3000;\n");
      out.write("\tif(Event.type=\"blur\" && Object.value.length > MaxLenght){\n");
      out.write("\t\talert(getMessage(\"M903F\",\"Champ tronqu&eacute; &agrave; la limite de taille suivante:\", true)+\" \"+MaxLenght);\n");
      out.write("\t\tObject.value = Object.value.substring(0, MaxLenght);\n");
      out.write("\t}\n");
      out.write("\treturn (Object.value.length < MaxLenght)||(Event.keyCode == 8 ||Event.keyCode==46||(Event.keyCode>=35&&Event.keyCode<=40));\n");
      out.write("}\n");
      out.write("\n");
      out.write("\n");
      out.write('\n');
      out.write('\n');

/******************************************************************************
 * 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');
      out.write('\n');
      out.write('\n');

/******************************************************************************
 * 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.
 ******************************************************************************/


 	response.setContentType("application/x-javascript");
	FlLocale userLocale = (FlLocale.getInstance(session));
	String dateFormat = "dd/MM/yyyy";
	try {
		dateFormat = userLocale.getDateFormat().toPattern();
	} catch (Exception e) {
		dateFormat = "dd/MM/yyyy";
	}

      out.write('\n');
      out.write("\n");
      out.write("function openCalendar(field, dateFormat) {\n");
      out.write("\tvar found=0;\n");
      out.write("\tvar pos=-1;\n");
      out.write("\twhile (found == 0) {\n");
      out.write("\t\tpos++;\n");
      out.write("\t\tif (document.forms[pos]) {\n");
      out.write("\t\t\tif (document.forms[pos] == field.form) {\n");
      out.write("\t\t\t\tfound = 1;\n");
      out.write("\t\t\t}\n");
      out.write("\t\t}\n");
      out.write("\n");
      out.write("\t\tif (pos > 20) {\n");
      out.write("\t\t\tpos = -1;\n");
      out.write("\t\t\tfound = 1;\n");
      out.write("\t\t}\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar curDateStr = \"\";\n");
      out.write("\tvar curDate = parseDate((dateFormat ? dateFormat : \"");
      out.print( dateFormat );
      out.write("\"), field.value);\n");
      out.write("\tif (curDate != null) {\n");
      out.write("\t\tcurDateStr = \"&calyear=\" + curDate[0] + \"&calmonth=\" + curDate[1];\n");
      out.write("\t}\n");
      out.write("\tvar winDateSel = window.open(\"");
      if (_jspx_meth_fl_005fwebapp_005f0(_jspx_page_context))
        return;
      out.write("/common/calendar/calendar_popup.jsp?fn=\" + field.name + \"&fp=\" + pos + (dateFormat ? \"&df=\" + dateFormat : \"\") + curDateStr, \"DateSelector\", \"menubar=no,toolbar=no,scrollbars=auto,resizable=yes,width=250,height=280\");\n");
      out.write("}\n");
      out.write("\n");
      out.write("function strReplace(pStr, pKey, pValue) {\n");
      out.write("\treturn pStr.split(pKey).join(pValue);\n");
      out.write("}\n");
      out.write("\n");
      out.write("function removeLeadingZeros(inStr) {\n");
      out.write("\tvar res = inStr;\n");
      out.write("\twhile (res.length > 0 && res.substring(0,1) == \"0\") {\n");
      out.write("\t\tres = res.substring(1);\n");
      out.write("\t}\n");
      out.write("\treturn res;\n");
      out.write("}\n");
      out.write("\n");
      out.write("function parseDate(patern, value) {\t\n");
      out.write("\tvar yk = \"yyyy\";\n");
      out.write("\tvar yp = patern.indexOf(yk);\n");
      out.write("\tif (yp == -1) {\n");
      out.write("\t\tyk = \"yyy\";\n");
      out.write("\t\typ = patern.indexOf(yk);\n");
      out.write("\t}\n");
      out.write("\tif (yp == -1) {\n");
      out.write("\t\tyk = \"yy\";\n");
      out.write("\t\typ = patern.indexOf(yk);\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar mk = \"MM\"\n");
      out.write("\tvar mp = patern.indexOf(mk);\n");
      out.write("\tif (mp == -1) {\n");
      out.write("\t\tmk = \"M\";\n");
      out.write("\t\tmp = patern.indexOf(mk);\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar dk = \"dd\"\n");
      out.write("\tvar dp = patern.indexOf(dk);\n");
      out.write("\tif (dp == -1) {\n");
      out.write("\t\tdk = \"d\";\n");
      out.write("\t\tdp = patern.indexOf(dk);\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tif (yp == -1 || mp == -1 || dp == -1) {\n");
      out.write("\t\treturn null;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar yi=0, mi=0, di=0;\n");
      out.write("\tif (yp < mp && mp < dp) {\n");
      out.write("\t\tyi = 1; mi = 2; di = 3;\n");
      out.write("\t} else if (mp < yp && yp < dp) {\n");
      out.write("\t\tyi = 2; mi = 1; di = 3;\n");
      out.write("\t} else if (yp < dp && dp < mp) {\n");
      out.write("\t\tyi = 1; mi = 3; di = 2;\n");
      out.write("\t} else if (dp < yp && yp < mp) {\n");
      out.write("\t\tyi = 2; mi = 3; di = 1;\n");
      out.write("\t} else if (mp < dp && dp < yp) {\n");
      out.write("\t\tyi = 3; mi = 1; di = 2;\n");
      out.write("\t} else if (dp < mp && mp < yp) {\n");
      out.write("\t\tyi = 3; mi = 2; di = 1;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar strRegExp = patern;\n");
      out.write("\tstrRegExp = strReplace(strRegExp, \"\\\\\", \"\\\\\\\\\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, \"/\", \"\\\\/\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, \"*\", \"\\\\*\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, \"+\", \"\\\\+\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, \"?\", \"\\\\?\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, \".\", \"\\\\.\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, dk, \"([\\\\d.]+)\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, mk, \"([\\\\d.]+)\");\n");
      out.write("\tstrRegExp = strReplace(strRegExp, yk, \"([\\\\d.]+)\");\n");
      out.write("\t\n");
      out.write("\tvar regexpr, yvt, mvt, dvt;\n");
      out.write("\teval(\"regexpr = /\" + strRegExp + \"/\");\n");
      out.write("\tyvt = value.replace(regexpr, \"$\"+yi);\n");
      out.write("\tmvt = value.replace(regexpr, \"$\"+mi);\n");
      out.write("\tdvt = value.replace(regexpr, \"$\"+di);\n");
      out.write("\t\n");
      out.write("\tif (yvt == value || mvt == value || dvt == value) {\n");
      out.write("\t\treturn null;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\tvar yv, mv, dv;\n");
      out.write("\tyv = parseInt(removeLeadingZeros(yvt));\n");
      out.write("\tmv = parseInt(removeLeadingZeros(mvt));\n");
      out.write("\tdv = parseInt(removeLeadingZeros(dvt));\n");
      out.write("\n");
      out.write("\n");
      out.write("\tif (isNaN(dv) || isNaN(mv) || isNaN(yv)) {\n");
      out.write("\t\treturn null;\n");
      out.write("\t}\n");
      out.write("\t\n");
      out.write("\treturn new Array(yv, mv, dv);\n");
      out.write("}\n");
      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);
    }
  }

  private boolean _jspx_meth_fl_005fwebapp_005f0(PageContext _jspx_page_context)
          throws Throwable {
    PageContext pageContext = _jspx_page_context;
    JspWriter out = _jspx_page_context.getOut();
    //  fl:webapp
    com.edeal.frontline.WebappTag _jspx_th_fl_005fwebapp_005f0 = (com.edeal.frontline.WebappTag) _005fjspx_005ftagPool_005ffl_005fwebapp_005fnobody.get(com.edeal.frontline.WebappTag.class);
    _jspx_th_fl_005fwebapp_005f0.setPageContext(_jspx_page_context);
    _jspx_th_fl_005fwebapp_005f0.setParent(null);
    int _jspx_eval_fl_005fwebapp_005f0 = _jspx_th_fl_005fwebapp_005f0.doStartTag();
    if (_jspx_th_fl_005fwebapp_005f0.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
      _005fjspx_005ftagPool_005ffl_005fwebapp_005fnobody.reuse(_jspx_th_fl_005fwebapp_005f0);
      return true;
    }
    _005fjspx_005ftagPool_005ffl_005fwebapp_005fnobody.reuse(_jspx_th_fl_005fwebapp_005f0);
    return false;
  }
}
