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 : "dd/MM/yyyy"), field.value); if (curDate != null) { curDateStr = "&calyear=" + curDate[0] + "&calmonth=" + curDate[1]; } var winDateSel = window.open("/galaxie/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; } 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); }