<% /****************************************************************************** * 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. ******************************************************************************/ %><%@page session="true" import="com.edeal.frontline.*,java.util.*"%><%@taglib uri="http://www.e-deal.com/taglib/fl" prefix="fl" %><% 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"; } %> <%-- /** * openCalendar est la fonction appelée par les clients. Elle prend en premier paramètre le champ qu'il faut * renseigné, et en second paramètre (facultatif) un patern de date. Si le patern n'est pas fourni, elle utilise * celui de la Locale de l'utilisateur connecté, et encore à défaut le format francais. */ --%> function openCalendar(field, dateFormat) { var found=0; var pos=-1; while (found == 0) { pos++; if (document.forms[pos]) { if (document.forms[pos] == field.form) { found = 1; } } if (pos > 20) { pos = -1; found = 1; } } var curDateStr = ""; var curDate = parseDate((dateFormat ? dateFormat : "<%= dateFormat %>"), field.value); if (curDate != null) { curDateStr = "&calyear=" + curDate[0] + "&calmonth=" + curDate[1]; } var winDateSel = window.open("/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"); } function strReplace(pStr, pKey, pValue) { return pStr.split(pKey).join(pValue); } function removeLeadingZeros(inStr) { var res = inStr; while (res.length > 0 && res.substring(0,1) == "0") { res = res.substring(1); } return res; } <%-- /** * parseDate prend en premier paramètre une chaine qui est un patern de date, et en second paramètre une * chaine qui est la representation d'une valeur de date selon le patern. * Elle rend un tableau de 3 entiers (année, mois, jour). Si la seconde chaine de peut être interprétée selon * le patern, parseDate rend null. **/ --%> function parseDate(patern, value) { var yk = "yyyy"; var yp = patern.indexOf(yk); if (yp == -1) { yk = "yyy"; yp = patern.indexOf(yk); } if (yp == -1) { yk = "yy"; yp = patern.indexOf(yk); } var mk = "MM" var mp = patern.indexOf(mk); if (mp == -1) { mk = "M"; mp = patern.indexOf(mk); } var dk = "dd" var dp = patern.indexOf(dk); if (dp == -1) { dk = "d"; dp = patern.indexOf(dk); } if (yp == -1 || mp == -1 || dp == -1) { return null; } var yi=0, mi=0, di=0; if (yp < mp && mp < dp) { yi = 1; mi = 2; di = 3; } else if (mp < yp && yp < dp) { yi = 2; mi = 1; di = 3; } else if (yp < dp && dp < mp) { yi = 1; mi = 3; di = 2; } else if (dp < yp && yp < mp) { yi = 2; mi = 3; di = 1; } else if (mp < dp && dp < yp) { yi = 3; mi = 1; di = 2; } else if (dp < mp && mp < yp) { yi = 3; mi = 2; di = 1; } var strRegExp = patern; strRegExp = strReplace(strRegExp, "\\", "\\\\"); strRegExp = strReplace(strRegExp, "/", "\\/"); strRegExp = strReplace(strRegExp, "*", "\\*"); strRegExp = strReplace(strRegExp, "+", "\\+"); strRegExp = strReplace(strRegExp, "?", "\\?"); strRegExp = strReplace(strRegExp, ".", "\\."); strRegExp = strReplace(strRegExp, dk, "([\\d.]+)"); strRegExp = strReplace(strRegExp, mk, "([\\d.]+)"); strRegExp = strReplace(strRegExp, yk, "([\\d.]+)"); var regexpr, yvt, mvt, dvt; eval("regexpr = /" + strRegExp + "/"); yvt = value.replace(regexpr, "$"+yi); mvt = value.replace(regexpr, "$"+mi); dvt = value.replace(regexpr, "$"+di); if (yvt == value || mvt == value || dvt == value) { return null; } var yv, mv, dv; yv = parseInt(removeLeadingZeros(yvt)); mv = parseInt(removeLeadingZeros(mvt)); dv = parseInt(removeLeadingZeros(dvt)); if (isNaN(dv) || isNaN(mv) || isNaN(yv)) { return null; } return new Array(yv, mv, dv); }