1!org/apache/jsp/js/checkFields_jsp%org/apache/jasper/runtime/HttpJspBase,org/apache/jasper/runtime/JspSourceDependent _jspxFactoryLjavax/servlet/jsp/JspFactory;_jspx_dependantsLjava/util/List;_el_expressionfactoryLjavax/el/ExpressionFactory;_jsp_annotationprocessor Lorg/apache/AnnotationProcessor;()VCode javax/servlet/jsp/JspFactory getDefaultFactory ()Ljavax/servlet/jsp/JspFactory;  LineNumberTableLocalVariableTable  this#Lorg/apache/jsp/js/checkFields_jsp; getDependants()Ljava/lang/Object; $ _jspInit ' ()getServletConfig()Ljavax/servlet/ServletConfig; +-,javax/servlet/ServletConfig ./getServletContext ()Ljavax/servlet/ServletContext; 1 23getJspApplicationContextI(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext; 576'javax/servlet/jsp/JspApplicationContext 89getExpressionFactory()Ljavax/el/ExpressionFactory; ; =org/apache/AnnotationProcessor ?A@java/lang/Class BCgetName()Ljava/lang/String; EGFjavax/servlet/ServletContext HI getAttribute&(Ljava/lang/String;)Ljava/lang/Object; K  _jspDestroy _jspServiceR(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V ExceptionsQjava/io/IOExceptionSjavax/servlet/ServletExceptionU text/html WYX&javax/servlet/http/HttpServletResponse Z[setContentType(Ljava/lang/String;)V ] ^_getPageContext(Ljavax/servlet/Servlet;Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljava/lang/String;ZIZ)Ljavax/servlet/jsp/PageContext; a-bjavax/servlet/jsp/PageContext a' ae fg getSession"()Ljavax/servlet/http/HttpSession; ai jkgetOut()Ljavax/servlet/jsp/JspWriter;m oqpjavax/servlet/jsp/JspWriter r[writet>// Ce fichier contient les fonctions de contrôle de saisie v// x8// La fonction principale est checkField(-, -, -, -, -) z|{java/lang/Object }~getClass()Ljava/lang/Class; %org/apache/commons/logging/LogFactory getLog3(Ljava/lang/Class;)Lorg/apache/commons/logging/Log; contextPath Gjavax/servlet/http/HttpSessionjava/lang/String com/edeal/frontline/Frontline  getContext3(Ljava/lang/String;)Lcom/edeal/frontline/FlContext; %javax/servlet/http/HttpServletRequest CgetContextPath com/edeal/frontline/FlContext getDataDictionary&()Lcom/edeal/frontline/DataDictionary;  isFullUnicode()Z  isDbOracle'application/x-javascript; charset=UTF-8,application/x-javascript; charset=ISO-8859-1 com/edeal/frontline/FlLocale  getInstance@(Ljavax/servlet/http/HttpSession;)Lcom/edeal/frontline/FlLocale;5//================================================== '// Declaration des formats par défaut var centuryLimit = 90; var separateurDecimal = " getDecimalSeparator()C o print(C)V"; var separateurMilliers = " getGroupingSeparatorvar dateFormatIn = " CgetInputJavascriptDateFormat o [var dateFormatOut = " CgetOutputJavascriptDateFormatvar dateSeparator = " CgetDateSeparatorvar hourSeparator = " CgetHourSeparator6// tempStatus ecrit un message dans la barre d'état 4// et l'enlève automatiquement au bout de 4 sec function tempStatus(message) {  window.status = message; . window.setTimeout("window.status=''", 4000); } 0// myReplace remplace une sous-chaine sans la 8// considérer comme une expression régulière regex *function myReplace(str, oldStr, newStr) { ( return str.split(oldStr).join(newStr); 6// removeLeadingZeros enlève les 0 du début de la 8// chaine afin d'éviter qu'elle ne soit considérée %// comme un entier en base 8 ou 16 #function removeLeadingZeros(str) {  if (str == '')  return str;  var i = 0; 4 while (i < str.length && str.substr(i , 1) == '0')  i++;  if (i == str.length)  return '0';  return str.substr(i);  0// checkDate controle si une chaine (non vide)  ?// peut être intertprétée en date étant donné 1// un format d'entrée Si c'est le cas, elle 4// elle rend la date suivant un format de retour, $// sinon elle rend la chaine vide 4function checkDate(strDate, srcFormat, dstFormat) { // Le format : // mm, MM, dd, DD, yy, yyyy 5//-------------------------------------------------- 7// On verifie que le format d'entrée est acceptable . var srcFmt = srcFormat.split(dateSeparator);  ' var srcIndex = new Array(-1, -1, -1); " var i; $ if(srcFmt.length != 3) { & return ''; ( } * for(i = 0; i < 3; i++) { ,( if(srcFmt[i].toLowerCase() == 'dd') { . srcIndex[0] = i; 0/ } else if(srcFmt[i].toLowerCase() == 'mm') { 2 srcIndex[1] = i; 4T } else if(srcFmt[i].toLowerCase() == 'yy' || srcFmt[i].toLowerCase() == 'yyyy') { 6 srcIndex[2] = i; 8 } else { : return ''; < } ># if(srcIndex[i] == -1) return ''; @4// On verifie si le format de retour est acceptable B var dstIndex; D var dstFmt; F& if (!dstFormat || dstFormat == '') { H dstFmt = srcFmt; J dstIndex = srcIndex; L } else { N P+ dstFmt = dstFormat.split(dateSeparator); R$ dstIndex = new Array(-1, -1, -1); T$ if(dstFmt.length != 3) return ''; V for(i = 0; i < 3; i++) { X) if(dstFmt[i].toLowerCase() == 'dd') { Z dstIndex[0] = i; \0 } else if(dstFmt[i].toLowerCase() == 'mm') { ^ dstIndex[1] = i; `U } else if(dstFmt[i].toLowerCase() == 'yy' || dstFmt[i].toLowerCase() == 'yyyy') { b dstIndex[2] = i; d } else { f return ''; h } j$ if(dstIndex[i] == -1) return ''; l:// Les formats sont OK, on vérifie la valeur donnée n+ var majFmt = new Array('DD', 'MM', 'YY'); p2 var unsortedDate = strDate.split(dateSeparator); r t if (unsortedDate.length != 3) v!// if(isNaN(unsortedDate[i])) { x3 if(isNaN(removeLeadingZeros(unsortedDate[i]))) { z var sortDate = new Array(3); |7// sortDate[i] = parseInt(unsortedDate[srcIndex[i]]); ~I sortDate[i] = parseInt(removeLeadingZeros(unsortedDate[srcIndex[i]]));  // modif M // rajouté par RaF pour 赩ter que dd/mm/ se transforme en dd/mm/NaN  if (isNaN(sortDate[i])) {  // fin modif  // vérification du mois + if(sortDate[1] < 1 || sortDate[1] > 12) { + // passage à 4 chiffres de l'année  if(sortDate[2] < 100) { # if(sortDate[2] > centuryLimit) {  sortDate[2] += 1900;  sortDate[2] += 2000;  // vérification du jours  var maxDays;  switch (sortDate[1]) {  case 2: ] if((sortDate[2] % 4) == 0 && (!((sortDate[2] % 100) == 0) || (sortDate[2] % 400) == 0)) {  maxDays = 29;  maxDays = 28;  break;  case 4:  case 6:  case 9:  case 11:  maxDays = 30;  default:  maxDays = 31; 9 if(sortDate[0] < 1 || sortDate[0] > maxDays) return '';  // La valeur donnée est OK, ,// on la rend selon le format de retour 9 if(dstFmt[dstIndex[i]].substring(0, 2) == majFmt[i]) { @ unsortedDate[dstIndex[i]] = '0000' + sortDate[i].toString();  unsortedDate[dstIndex[i]] = unsortedDate[dstIndex[i]].substring(unsortedDate[dstIndex[i]].length - dstFmt[dstIndex[i]].length); 7 unsortedDate[dstIndex[i]] = sortDate[i].toString(); G if(unsortedDate[dstIndex[i]].length > dstFmt[dstIndex[i]].length) {  unsortedDate[dstIndex[i]] = parseInt(unsortedDate[dstIndex[i]].substring(unsortedDate[dstIndex[i]].length - dstFmt[dstIndex[i]].length)).toString(); * return unsortedDate.join(dateSeparator); .// checkHour verifie si une chaine peut être 4// inteprétée en une heure. Le second paramètre ,// est le séparateur des heures / minutes #function checkHour(strHour, key) {  var dstHour = new Array(0, 0); # var srcHour = strHour.split(key);  if(srcHour.length == 2) {  for(i = 0; i < 2; i++) {  dstHour[i] = srcHour[i];  if(strHour.length <= 2) {  dstHour[0] = strHour; # } else if(strHour.length <= 4) { : dstHour[0] = strHour.substring(0, strHour.length - 2); 7 dstHour[1] = strHour.substring(strHour.length - 2); $ var hourLimit = new Array(23, 59);  for(i = 0; i < 2; i++) {  if(isNaN(dstHour[i])) { O } else if(parseInt(dstHour[i]) < 0 || parseInt(dstHour[i]) > hourLimit[i]) { # dstHour[i] = '00' + dstHour[i]; = dstHour[i] = dstHour[i].substring(dstHour[i].length - 2);  return dstHour.join(key); 2// checkEmail contrôle si une chaine peut être 2// syntaxiquement considérée comme une adresse 0// e-mail, si c'est le cas elle rend la valeur .// d'entrée sinon elle rend la chaine vide. 0 )   2 / H '    (  +  , ! 8  n    " $t &> --> ( function checkEmail(laValeur) { *d var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,32}(?:\.[a-z]{2,32})?)$/i; , if (re.test(laValeur)) . return laValeur; 0 else 2 return ""; 44// checkInteger essaie de convertir une chaine en 64// un nombre entier; si elle y arrive, elle rend 86// une chaine qu'est le nombre trouvé reformatté :0// avec l'éventuel séparateur de milliers. <+function checkInteger(laValeur , sepMil) { >U var sep=separateurMilliers; var valTxt; var i; var j; var c; var res=""; var neg=0; @ if (sepMil) B sep = sepMil; D( valTxt = removeLeadingZeros(laValeur); F& valTxt = myReplace(valTxt, " ", ""); H& valTxt = myReplace(valTxt, sep, ""); J' if (valTxt == null || valTxt == '') { L valTxt = '0'; N% for (i=0 ; i0) T if (c<"0" || c>"9") V return ""; X) else if ((c<"0" || c>"9") && c!="-") Z nVal = parseInt(valTxt); \ if (isNaN(nVal)) ^ return ""; ` valTxt = nVal.toString(); b d$ if (valTxt.substr(0 , 1) == "-") { f neg = 1; h valTxt = valTxt.substr(1); j res=""; l4 for (j=0 , i=valTxt.length-1 ; i>=0 ; i-- , j++) { n if (j!=0 && j%3 == 0) p res = sep + res; r$ res = valTxt.substr(i , 1) + res; t if (neg == 1) v res = "-" + res; x z return res; |1// checkFloat essaie de convertir une chaine en ~2// un nombre réel; si elle y arrive, elle rend 5// une chaine qu'est le nombre trouvé reformatté 6// avec le séparateur de décimaux et l'éventuel // séparateur de milliers. 2function checkFloat(laValeur , sepDeci, sepMil) {  var sep=separateurMilliers; var sepDec=separateurDecimal; var valTxt; var i; var j; var c; var res=""; var neg=0; var pos; var sepDec;  if (sepMil)  sep = sepMil;  if (sepDeci)  sepDec = sepDeci; > if (laValeur != '0' && laValeur != ('0' + sepDec + '0')) { , valTxt = removeLeadingZeros(laValeur);  } else {  valTxt = laValeur;  } ( valTxt = myReplace(valTxt, " ", ""); ( valTxt = myReplace(valTxt, sep, ""); . valTxt = myReplace(valTxt , sepDec , "."); $ if ((c<"0" || c>"9") && c!=".") 2 else if ((c<"0" || c>"9") && c!="." && c!="-") U if ( valTxt.indexOf(".") > -1 && valTxt.lastIndexOf(".") != valTxt.indexOf(".") )  return "";  nVal = parseFloat(valTxt);  if (isNaN(nVal))  return "";  valTxt = nVal.toString(); & if (valTxt.substr(0 , 1) == "-") {  neg = 1;  valTxt = valTxt.substr(1);  pos = valTxt.indexOf(".");  if (pos == -1) {  partieEntiere = valTxt;  partieDecimale = "";  } else if (pos == 0) {  partieEntiere = "0"; ' partieDecimale = valTxt.substr(1); + partieEntiere = valTxt.substr(0, pos); + partieDecimale = valTxt.substr(pos+1);  res=""; = for (j=0 , i=partieEntiere.length-1 ; i>=0 ; i-- , j++) {  if (j!=0 && j%3 == 0)  res = sep + res; - res = partieEntiere.substr(i , 1) + res;  if (neg == 1)  res = "-" + res;  if (partieDecimale != "") ) res = res + sepDec + partieDecimale;  return res; 4// checkString permet d'appliquer un format sur une 6// chaîne de caractères. Le format est spécifié 1// dans le second paramètre. Il vaut 'lower', ?// 'upper', 'capitalize' ou 'remaccents' (to remove accents).  function checkString(val, op) {  if (val == '') { $ if (op.toLowerCase() == 'upper') {  return val.toUpperCase(); + } else if (op.toLowerCase() == 'lower') {  return val.toLowerCase(); 0 } else if (op.toLowerCase() == 'capitalize') { - result = val.substring(0,1).toUpperCase(); ! for (i=1 ; i -1) { ' result = result.replace('à', 'a');  % while(result.indexOf('â') > -1) {  ' result = result.replace('â', 'a'); % while(result.indexOf('ä') > -1) { ' result = result.replace('ä', 'a'); % while(result.indexOf('ç') > -1) { ' result = result.replace('ç', 'c'); % while(result.indexOf('é') > -1) { ' result = result.replace('é', 'e'); % while(result.indexOf('è') > -1) { ' result = result.replace('è', 'e'); % while(result.indexOf('ê') > -1) {  ' result = result.replace('ê', 'e'); "% while(result.indexOf('ë') > -1) { $' result = result.replace('ë', 'e'); &% while(result.indexOf('ï') > -1) { (' result = result.replace('ï', 'i'); *% while(result.indexOf('î') > -1) { ,' result = result.replace('î', 'i'); .% while(result.indexOf('ô') > -1) { 0' result = result.replace('ô', 'o'); 2% while(result.indexOf('ö') > -1) { 4' result = result.replace('ö', 'o'); 6% while(result.indexOf('ù') > -1) { 8' result = result.replace('ù', 'u'); :% while(result.indexOf('û') > -1) { <' result = result.replace('û', 'u'); >% while(result.indexOf('ü') > -1) { @' result = result.replace('ü', 'u'); B return val; Dfunction checkUrl(val) { FD if (val.substring(0,7).toLowerCase() == 'http://'.toLowerCase()) { H! if (val.substring(7,8) !='' ){ J return true; L }else { N return false; PJ } else if (val.substring(0,6).toLowerCase() == 'ftp://'.toLowerCase()) { R! if (val.substring(6,7) !='' ){ TL } else if (val.substring(0,8).toLowerCase() == 'https://'.toLowerCase()) { V! if (val.substring(8,9) !='' ){ XH } else if (val.substring(0,4).toLowerCase() == 'www.'.toLowerCase()) { Z! if (val.substring(4,5) !='' ){ \ return false ^:// checkField est la fonction qui regroupe tous les tests `Hfunction checkField(laValeur , leType , estOblig , format1 , format2) { b if (laValeur == "") d if (estOblig) f return false; h else j return true; l' if (leType.toLowerCase() == "date") n5 return checkDate(laValeur , format1 , format2) p' if (leType.toLowerCase() == "hour") r, return checkHour(laValeur , format1); t( if (leType.toLowerCase() == "email") v# return checkEmail(laValeur); x* if (leType.toLowerCase() == "integer") z/ return checkInteger(laValeur , format1); |( if (leType.toLowerCase() == "float") ~7 return checkFloat(laValeur , format1 , format2);  ) if (leType.toLowerCase() == "string") . return checkString(laValeur , format1);  return laValeur; 3// toSysNum prend en premier paramètre une valeur 2// numérique en chaine, en second paramètre le 4// séparateur de décimaux, en 3eme paramètre le 0// séparateur de milliers; et rend une chaine // prête pour un parse. /function toSysNum(valeur , sepDeci , sepMil) { ; var sep=separateurMilliers; var sepDec=separateurDecimal;  sep = sepMil;  if (sepDeci)  sepDec = sepDeci;  var res; % res = myReplace(valeur , " " , ""); " res = myReplace(res , sep , ""); & res = myReplace(res , sepDec , "."); 4// prepNumsForSubmit prend en premier paramètre le 6// séparateur de décimaux, en second paramètre le 6// séparateur de milliers; les paramètres suivants '// étant les 'Field' à reformatter. function prepNumsForSubmit() { & args = prepNumsForSubmit.arguments;  sepDec = args[0];  sepMil = args[1]; # for (i=2 ; i v = checkField(aField.value, aType, false, sepDec, sepMil);  if (v) {  aField.value = v;  if (mesg) {  tempStatus(mesg);  }  aField.value = '';  return false; 0 si (date1, hour1) > (date2, hour2) "*// <0 si (date1, hour1) < (date2, hour2) $@//============================================================= &Ifunction compareDate(date1, hour1, date2, hour2, formatDate, sepHeure) { ( fDate = dateFormatOut; * sep = hourSeparator; , if (formatDate) { . fDate = formatDate; 0 if (sepHeure) { 2 sep = sepHeure; 4 var d1; 6 var h1; 8 var d2; : var h2; < if (date1) { > d1 = date1; @F d1 = checkField("01/01/1970", "date", false, dateFormatOut, fDate); B if (hour1) { D h1 = hour1; F? h1 = checkField("00:00", "hour", false, hourSeparator, sep); H if (date2) { J d2 = date2; LF d2 = checkField("01/01/1970", "date", false, dateFormatOut, fDate); N if (hour2) { P h2 = hour2; R? h2 = checkField("00:00", "hour", false, hourSeparator, sep); T //controle V s1 = checkHour(h1 , sep); X* s2 = checkDate(d1, fDate, 'MM/DD/yyyy'); Z s3 = checkHour( h2 , sep); \* s4 = checkDate(d2, fDate, 'MM/DD/yyyy'); ^2 startTime = new Date(s2.concat(" ").concat(s1)); `3 endTime = new Date(s4.concat(" ").concat(s3)); b" millidiff = startTime - endTime; d return millidiff; of rg(I)Vi#javax/servlet/jsp/SkipPageException ok lm getBufferSize()I oo p clearBuffer ar sthandlePageException(Ljava/lang/Throwable;)V vxwjava/lang/Throwable yC getMessage { |}log*(Ljava/lang/String;Ljava/lang/Throwable;)V  releasePageContext"(Ljavax/servlet/jsp/PageContext;)Vrequest'Ljavax/servlet/http/HttpServletRequest;response(Ljavax/servlet/http/HttpServletResponse; pageContextLjavax/servlet/jsp/PageContext;session Ljavax/servlet/http/HttpSession;outLjavax/servlet/jsp/JspWriter; _jspx_out_jspx_page_contextLjava/lang/String;contextLcom/edeal/frontline/FlContext;tLjava/lang/Throwable; SourceFilecheckFields_jsp.javaSourceDebugExtension1   +  /*   !".#  %e3**&*04:**&*<>D<J2 3 L+  MNOPR&? N::::,TV*+, \N-:-`W-cW-d:-h::lnsnunwn*yW::  : +:  W  ,V ,VWlnlnlnnnnlnnlnnnn¶nŶnǶn̶nζnѶnӶnֶnضnlnn۶nݶnn߶nnnnnlnnnnnnnnlnnnnnnnnnnnnnnnnlnlnlnn n n nnnnnlnnnlnnnnnn!nln#n%n'nln)n+n-n/n1n3n5n7n9n;n'n)n=n'nlnn?nnAnCnEnGnInKnMnOnQnlnSnlnUnWnYn[n]n_nancnengn;nUnin;n'nlnnknnmnonqnsn%nqn)nunwn9n;n'nlnynln)n{n}nnnn9n;nn'nlnnn%n'nlnnnnn7nn;n'nlnnnnnnncnngnnnnnnnnn'nlnnlnlnnnnn)nnnn7nnnöngn;n'nqnŶnnlnlnlnnǶnɶn˶nnͶn϶nѶnlnӶnնn׶n;nKnٶn۶nݶn߶nn7n9n;n'nlnnnn9nn9n7nnn;n'nnnlnlnlnnnnnnnnnnnlnnnnnn nn n nnnnnnnnnnnn!n#n%nlnln'n)nqn+n-n/n1nnlnlnn3n5n7n9nn;n=nqn?nAnqnCnEnGnqnInKn'nqnMnOnQnSnUnWnUn'nlnYn[n]nln_nancnengn'nlninknmnonqn'nsnunwnynnlnlnlnn{n}nnnnnnnannnwnnnlnnnnnnannnnanMnOnQnnUnnUn'nlnnnannnnlnlnnannnnnannnnnnnönnŶnǶnnanɶn˶nͶn϶nѶnnanӶnնnwn׶nٶnwn۶nnlnnݶn߶nnnnnn%n'nnnnnnnnnnnnnnnnnn;n n n;n nn;nnn;nnn;nnn;nnn;n!n#n;n%n'n;n)n+n;n-n/n;n1n3n;n5n7n;n9n;n;n=n?n;nnKnAn'nnlnCnn%n'nEnGnInKnMn;nOnQnInKnMn;nSnUnInKnMn;nWnYnInKnMn;nKn[n'nn]n_nancnengninlnlnknmnlnonqnlnsnunlnwnynln{n}nnnnlnnnlnnnnnnnnnnqn?nnwnnnwnnnnnynnlnnnnnnnnnnnqnnnnnnnn'nqnnlnnönnlnŶnǶnɶn˶n'nqnͶn϶nѶnӶnնn׶nٶnln۶nݶn/n߶nlnnn˶n'nlnnnnnnnlnnǶnɶn˶n'nlnnnnn'nnn'nqnnqnnn˶n'nlnnn'nnnnlnnǶnɶn˶n'nlnnnn'nqnnqnnn˶n'nlnnn'nnnn n n nnnnnnnnnn!n#n%n'n)nqn+n-n'n/n1n'n3n5n7n9n;n=nKn?n'nAnCnKnEn'nGnInKnKn'nMnOnKnQn'nqnSnqnUnWnqnYn[nqn]n_nqnanlncnn eY:h7:j nW q*uz~: ~ ~svvP 2"#&( )-./".&0)1.23394?5CUJVQWXX_Zg[u\x]}^_`bcdefhjklmnopqrstuv"w/x6y=zJ{Q|X}e~ls  '.5<CJQX_fmu} %-5<DLT[cks{ "*29AHPX`hpx'/7?FNU]emu}      "*2:BJ R!Z"b#j$r%z&'()*+,-./0123456789:;'</=7>??G@OAVB]CdDkErFzGHIJKLMNOPQRSTUVWXYZ[ \']/^7_?`GaObWc_dgeofwghijklmnopqrstuvwx y z { | } (~ 0 8 @ H P X ` h p x                      " * 2 9 A I Q Y a i q y                      ' / 7 ? F N V ^ f n v ~                      ( / 7 ? G O W _ g o w                      $ , 4 < D L T \ d l t |                 ! )!1"9#A$H%P&X'`(h)p*x+,-./0123456789:;<=>? @(A0B8C@DHEPFXG`HhIpJxKLMNOPQRSTUVWXYZ[\]^_ `(a0b8c@dHePfXg`hhiojvk~lmnopqrstuvwxyz{|}~&.6>FNV^fnu}'/7?FNU\cks{ '/7>FNV^fnv~ "*2:BIQYaipx $,4<DL T \ d l t{ !"# $(%0&8'?(G)O*W+_,g-n.v/~0123456789:;<=>?@ABCD&E.F6G>HFINJVK^LfMnNvO~PQRSTUVWXYZ[\]^_`abcd&e.f6g>hFiNjVk]lemlsxp   ux x<SMAP checkFields_jsp.java JSP *S JSP *F + 0 checkFields.jsp js/checkFields.jsp *L 30:84,2 31,20:86 50,7:106 62,3:112 65,6:115,3 71,746:133 868:930,2 *E