// (c) 2002 LANSA // XHTML Standard Scripts // $Workfile:: std_script.js $ // $Revision:: 1.85 $ // Global Locale Manager. var g_StdLocaleMgr = null; function stdGetMTextMessageText(messageId) { return g_StdLocaleMgr.getMessageText(messageId); } function stdGetMTextMessageTextArr(messageId) { return g_StdLocaleMgr.getMessageTextArr(messageId); } // Sets up the function to call based on the language to retrieve multilingual messages function StdLocaleMgr(languageId, isDBCS) { this.m_langId = languageId; this.m_isDBCS = isDBCS != null ? isDBCS : false; this.getMessageText = StdGetMessageText; this.getMessageTextArr = StdGetMessageTextArr; g_StdLocaleMgr = this; } // Deprecated function StdMessageMgr(languageId) { new StdLocaleMgr(languageId, false); } // Numeric values parser constructor function StdNumberParser(dec_sep) { var expr = dec_sep == '.' ? "[^\\d.]" : dec_sep == ',' ? "[^\\d,]" : dec_sep == 'e' ? "(\\+|-)\\d+\\.\\d{1,16}E\\+\\d{3}" : "[\\D]"; this.regExp = new RegExp(expr, "g"); this.negValueExp = new RegExp("(^-)|((-|CR)$)"); this.isCommaSep = dec_sep == ','; this.parseInt = StdNumberParser_parseInt; this.parseDecimal = StdNumberParser_parseDecimal; this.parseFloat = StdNumberParser_parseFloat; } function StdNumberParser_parseInt(str) { var isNegative = str.search(this.negValueExp) != -1; var intStr = str.replace(this.regExp, ""); var intValue = intStr.length > 0 ? parseInt(intStr, 10) : 0; return isNegative ? -intValue : intValue; } function StdNumberParser_parseDecimal(str) { var isNegative = str.search(this.negValueExp) != -1; var floatStr = str.replace(this.regExp, ""); var floatValue = floatStr.length > 0 ? parseFloat(this.isCommaSep ? floatStr.replace(",", ".") : floatStr) : 0; return isNegative ? -floatValue : floatValue; } function StdNumberParser_parseFloat(str) { var isValidFloat = str.search(this.regExp) == 0; return isValidFloat ? parseFloat(str) : 0; } // Convert the value property of input elements to upper or lower case as required. // Deprecated: Use toValueCase() called from isValidText() function SetValueCase(oInput, propertyName) { if( oInput == null ) { return; } if( propertyName == "value" ) { var textTransform = oInput.currentStyle.textTransform; if( textTransform == "uppercase" ) { var value = oInput.value; var valueUpper = value.toUpperCase(); if( value != valueUpper ) { oInput.value = valueUpper; } } else if( textTransform == "lowercase" ) { var value = oInput.value; var valueLow = value.toLowerCase(); if( valueLow != value ) { oInput.value = valueLow; } } } } function _HandleEvent(WAM, WebRoutine, techServ, actionRequest, partition, language, optForm, optTarget, optProtocol, optSessionKey, optDebugMode) { if( optForm == null ) { optForm= document.LANSA; } var prevAction = optForm.action; var action=""; if( optProtocol != null && optProtocol.length > 0 ) { action += optProtocol; if( optProtocol.search(new RegExp("//", "g")) < 0 ) { action += "//" + stdGetOwnerDocument(optForm).location.host; } } action += actionRequest + "?webapp="; action += WAM; action += "+webrtn="; action += WebRoutine; action += "+ml=" + techServ; action += "+partition=" + partition + "+language=" + language; if( optDebugMode != null && optDebugMode.length > 0 ) { action += "+debug=" + optDebugMode; } if( optSessionKey != null ) { action += "+sid=" + optSessionKey; } optForm.action = action; var prevTarget; if( optTarget != null ) { prevTarget = optForm.target; optForm.target = optTarget; } optForm.submit(); if( optTarget != null ) { optForm.target = prevTarget; } optForm.action = prevAction; } function _HandleServiceEvent(ServiceName, techServ, actionRequest, partition, language, optForm, optTarget, optProtocol, optSessionKey, optDebugMode) { var Form = optForm != null ? optForm : document.LANSA; var prevAction = Form.action; var action = ""; if( optProtocol != null && optProtocol.length > 0 ) { action += optProtocol; if( optProtocol.search(new RegExp("//", "g")) < 0 ) { action += "//" + stdGetOwnerDocument(Form).location.host; } } action += actionRequest + "?srve=" + ServiceName + "+part=" + partition + "+lang=" + language; action += "+ml=" + techServ; if( optDebugMode != null && optDebugMode.length > 0 ) { action += "+debug=" + optDebugMode; } if( optSessionKey != null ) { action += "+sid=" + optSessionKey; } Form.action = action; if (optTarget != null) { var prevTarget = Form.target; Form.target = optTarget; Form.submit(); Form.target = prevTarget; } else { Form.submit(); } Form.action = prevAction; } function _HandleEventTarget(Form, Target, techServ, actionRequest, partition, language, WebApp, WebRoutine, optProtocol, optSessionKey, optDebugMode) { if( Form == null ) { Form = document.LANSA; } var prevTarget = Form.target; Form.target = Target; var prevAction = Form.action; var action=""; if( optProtocol != null && optProtocol.length > 0 ) { action += optProtocol; if( optProtocol.search(new RegExp("//", "g")) < 0 ) { action += "//" + stdGetOwnerDocument(Form).location.host; } } action += actionRequest + "?webapp="; action += WebApp; action += "+webrtn="; action += WebRoutine; action += "+ml=" + techServ; action += "+partition=" + partition + "+language=" + language; if( optDebugMode != null && optDebugMode.length > 0 ) { action += "+debug=" + optDebugMode; } if( optSessionKey != null ) { action += "+sid=" + optSessionKey; } Form.action = action; Form.submit(); Form.target = prevTarget; Form.action = prevAction; } function _HandleDefaultSubmit(oForm) { if( oForm == null ) { return false; } var oHandler = oForm.getAttribute("__defaultSubmitHandler"); if( oHandler == null ) { return false; } // Can't call oHandler directly, as that fails in Mozilla, so do it indirectly. return new Function("oForm", oHandler)(oForm); } function _HandleWebEventEx(Process, Webevent, Form, Target, actionRequest, Partition, Language, optDebugMode, optAnchorValue, argArr, startArgPos) { if( Form == null ) { Form = document.LANSA; } var html; var bIsIE = IsIE(); if( bIsIE ) { html = "
"; } else { html = "form"; } var oTempForm = stdGetOwnerDocument(Form).createElement(html); if( oTempForm != null ) { if( !bIsIE ) { oTempForm.setAttribute("method", "post"); } stdGetOwnerDocument(Form).body.appendChild(oTempForm); var argLen = argArr.length;//arguments.length; if( argLen > startArgPos ) { for(var index = startArgPos; index < argLen; index++) { var fieldNameWithPrefix = argArr[index]; var fieldName = fieldNameWithPrefix.substr(1, fieldNameWithPrefix.length-1); var fieldValue = Form.elements[fieldName].value; InsertHidden(oTempForm, fieldNameWithPrefix, fieldValue); } } if( optAnchorValue != null ) { InsertHidden(oTempForm, "ASTDANCHOR", optAnchorValue); } var prevAction = oTempForm.action; var action = ""; if( actionRequest == null || actionRequest.length <= 0 ) { actionRequest = "/cgi-bin/lansaweb"; } action += actionRequest + "?" + "procfun+"; action += Process; action += "+"; action += Webevent; action += "+" + Partition + "+" + Language; if( optDebugMode != null && optDebugMode.length > 0 ) { action += "+BDEBUG"; } oTempForm.action = action; var prevTarget; if( Target != null ) { prevTarget = Target.target; oTempForm.target = Target; } oTempForm.submit(); if( Target != null ) { oTempForm.target = prevTarget; } oTempForm.action = prevAction; oTempForm.parentNode.removeChild(oTempForm); } } function _HandleWebEvent(Process, Webevent, Form, Target, actionRequest, Partition, Language, optDebugMode, optAnchorValue/*, field1, field2, etc...*/) { _HandleWebEventEx(Process, Webevent, Form, Target, actionRequest, Partition, Language, optDebugMode, optAnchorValue, arguments, 9); } function IsIE() { return (navigator.userAgent.indexOf("MSIE")>-1); } function InsertHidden(Form, FieldName, FieldValue) { if( Form == null ) { return; } var field = Form.elements[FieldName]; if (field == null) { var bIsIE = IsIE(); var html; if( bIsIE ) { html = ""; } else { html = "input"; } var elem; if( !bIsIE ) { elem = stdGetOwnerDocument(Form).createElement(html); } else { elem = Form.document.createElement(html); } if( elem != null ) { if( !bIsIE ) { elem.setAttribute("type", "hidden"); elem.setAttribute("name", FieldName); elem.setAttribute("value", FieldValue); } Form.appendChild(elem); } } else { field.value = FieldValue; } } ////////////////////////////////////////////////////////////////////////////////////////// // // Inserts a hidden list for submitting it on a form // ////////////////////////////////////////////////////////////////////////////////////////// function stdInsertHiddenList(Form, listName, listColumnNameArr, listValueArrOfArr) { if( listName == null || listName.length <= 0 ) { return false; } if( listColumnNameArr == null || listValueArrOfArr == null ) { return false; } var index = 0; InsertHidden(Form, listName + "..", listValueArrOfArr.length.toString()); for(index = 0; index < listValueArrOfArr.length; index++) { var row = listValueArrOfArr[index]; var rowid = (index+1).toString(); for( count = rowid.length; count < 4; count++) { rowid = "0" + rowid; } for(var colIndex = 0; colIndex < row.length; colIndex++) { var name = listName + "."; name += rowid; name += "."; name += listColumnNameArr[colIndex]; var tagValue = row[colIndex]; InsertHidden(Form, name, tagValue); } } var bBreakLoop = false; while(!bBreakLoop) { var name; var rowid = (index+1).toString(); for( count = rowid.length; count < 4; count++) { rowid = "0" + rowid; } for(var colIndex = 0; colIndex < listColumnNameArr.length; colIndex++) { name = listName + "."; name += rowid; name += "."; name += listColumnNameArr[colIndex]; var elem = Form.elements[name]; if( elem != null ) { elem.removeNode(true); } else { bBreakLoop = true; break; } } index++; } return true; } function _isValidNumber(theObj, integers, decimals, decimalPoint) { var FieldValue = theObj.value; var returnString = ""; var befdecCount = 0; var PastDec = false; var aftdecCount = 0; for (var i = 0; i < FieldValue.length; i++) { if (isDigit(FieldValue.charAt(i))) { if (PastDec) { aftdecCount++ if (aftdecCount <= decimals) returnString += FieldValue.charAt(i) } else { befdecCount++ if (befdecCount <= integers) returnString += FieldValue.charAt(i) } } else { if (FieldValue.charAt(i) == decimalPoint) PastDec = true returnString += FieldValue.charAt(i); } } if ((befdecCount > integers) || (aftdecCount > decimals)) { alert(stdGetMTextMessageText("BadNum1") + integers + stdGetMTextMessageText("BadNum2") + decimals + stdGetMTextMessageText("BadNum3")) theObj.value = returnString return false } return true } function isDigit(theDigit) { digitArray = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9') for (var j = 0; j < digitArray.length; j++) if (theDigit == digitArray[j]) return true return false } function isNumeric(valueStr, length) { if( valueStr.length > length ) { return false; } for(var index = 0; index < valueStr.length; index++) { if( !isDigit(valueStr.charAt(index)) ) { if( index != 0 || valueStr.charAt(index) != "-" ) { return false; } } } return true; } function isValidInteger(theObj, size) { if( theObj != null ) { var valueStr = theObj.value; if( valueStr.length <= 0 ) { return true; } var length = size; var minVal = 0; var maxVal = 0; if( size == 1 ) { length = 4; minVal = -128; maxVal = 127; } else if( size == 2 ) { length = 7; minVal = -32768; maxVal = 32767; } else if( size == 4 ) { length = 14; minVal = -2147483648; maxVal = 2147483647; } else if( size >= 8 ) { length = 26; minVal = -9223372036854775808; maxVal = 9223372036854775807; } if( !showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadInt"), isNumeric(valueStr, length)) ) { return false; } } var number_var = new Number(valueStr); return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadInt") + g_StdLocaleMgr.getMessageText("BadInt1") + minVal.toString() + g_StdLocaleMgr.getMessageText("BadInt2") + maxVal.toString(), number_var>=minVal&&number_var<=maxVal); } function isValidFloat(theObj, size) { if( theObj != null ) { var valueStr = theObj.value; var numeric = new Number(valueStr); return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadFloat"), !isNaN(numeric)); } return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadFloat"), false); } function isValidDate(theObj) { if( theObj != null ) { var dateStr = theObj.value; var partArr = dateStr.split("-"); if( partArr.length == 3 ) { dateStr = partArr[1]; dateStr += "-"; dateStr += partArr[2]; dateStr += "-"; dateStr += partArr[0]; var oDate = new Date(dateStr); return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadDate"), !isNaN(oDate.valueOf())); } } return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadDate"), false); } function isValidTime(theObj) { if( theObj != null ) { var timeStr = theObj.value; if( timeStr.length > 0 ) { var timeComps = timeStr.split(":"); if( timeComps.length == 3 ) { var hours = new Number(timeComps[0]); if( hours >= 0 && hours < 24 ) { var mins = new Number(timeComps[1]); if( mins >= 0 && mins < 60 ) { var secs = timeComps[2]; var secComps = secs.split("."); if( secComps.length == 1 ) { secs = new Number(timeComps[2]); if( secs >= 0 && secs < 60 ) { return true; } } } } } } } return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadTime"), false); } function isValidDateTime(theObj, size) { if( theObj == null ) { return false; } var dateStr = theObj.value; var milliSecs = null; if( dateStr.length > 0 ) { var dateComps = dateStr.split("T"); if( dateComps.length >= 1 ) { var datePart = dateComps[0]; var partArr = datePart.split("-"); if( partArr.length == 3 ) { dateStr = partArr[1]; dateStr += "-"; dateStr += partArr[2]; dateStr += "-"; dateStr += partArr[0]; } else { dateStr = dateComps[0]; } } if( dateComps.length == 2 ) { var timePart = dateComps[1]; dateStr += " "; var partArr = timePart.split("Z"); if( partArr.length == 2 ) { var fracSec = partArr[0].split("."); if( fracSec.length == 2 ) { dateStr += fracSec[0]; milliSecs = fracSec[1].substring(0, 3); } else { dateStr += partArr[0]; } dateStr += " UTC"; } else { var tzdChar = "+"; partArr = timePart.split(tzdChar); if( partArr.length != 2 ) { tzdChar = "-"; partArr = timePart.split(tzdChar); } if( partArr.length == 2 ) { dateStr += partArr[0]; dateStr += " UTC"; dateStr += tzdChar; dateStr += partArr[1]; } else { dateStr += dateComps[1]; } } } } var oDate = new Date(dateStr); if( !isNaN(oDate.valueOf()) ) { if( milliSecs != null ) { oDate.setMilliseconds(milliSecs); } return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadDateTime"), !isNaN(oDate.valueOf())); } return showMessageOnFalse(theObj, g_StdLocaleMgr.getMessageText("BadDateTime"), false); } function isValidLength(elem, maxlen) { if (elem.value.length < maxlen) { return true; } else { alert(g_StdLocaleMgr.getMessageText("BadLength1")); return false; } } function showMessageOnFalse(theObj, message, bResult) { if( !bResult ) { if( theObj != null ) { theObj.focus(); theObj.select(); } alert(message); } return bResult; } function isValidBoolean(theObj) { toValueCase(theObj); var FieldValue = theObj.value; if ((FieldValue == "true") || (FieldValue == "false")) return true; alert(g_StdLocaleMgr.getMessageText("BadBool")); theObj.focus(); theObj.select(); return false; } function isValidText(theObj, KeybdShift) { toValueCase(theObj); if (KeybdShift == '') KeybdShift = ' '; return g_StdLocaleMgr.m_isDBCS ? isValidDBCS(theObj, KeybdShift, theObj.maxLength) : true; } function isValidTextArea(theObj, KeybdShift, maxlen) { toValueCase(theObj); if (KeybdShift == '') KeybdShift = ' '; return g_StdLocaleMgr.m_isDBCS ? isValidDBCS(theObj, KeybdShift, maxlen) : isValidLength(theObj, maxlen); } // Convert the value property of input elements to upper or lower case as required. function toValueCase(theObj) { var value = theObj.value; var textTransform = theObj.currentStyle.textTransform; if (textTransform == "uppercase") value = value.toUpperCase(); else if (textTransform == "lowercase") value = value.toLowerCase(); if (theObj.value != value) { theObj.value = value; if (theObj.id != "") setTimeout("stdSetElementValue('" + theObj.id + "', '" + value + "')", 1); // Workaround IE bug } } function stdSetElementValue(id, value) { var elem = document.getElementById(id); if (elem != null) elem.value = value; } function isValidDBCS(theObj, KeybdShift, EBCDICLength) { var FieldValue = theObj.value; var returnString = ""; var totalDBCS = 0; var totalSBCS = 0; var totalLength = 0; var inDBCS = false; var chkDBCSChar = false; for (var i = 0; i < FieldValue.length; i++) { var ch = FieldValue.charAt(i); chkDBCSChar = isDBCSChar(ch); if (chkDBCSChar) { if (!inDBCS) { inDBCS = true; totalLength += 2; } totalLength += 2; if ((totalLength <= EBCDICLength) && (KeybdShift != 'A')) { returnString += ch; } totalDBCS++; } else { totalLength += 1; if ((totalLength <= EBCDICLength) && (KeybdShift != 'J')) { returnString += ch; } if (inDBCS) inDBCS = false; totalSBCS++; } } if (totalLength > EBCDICLength) { alert(g_StdLocaleMgr.getMessageText("BadDBCS") + totalLength + g_StdLocaleMgr.getMessageText("BadDBCS12") + EBCDICLength + "."); theObj.value = returnString; theObj.focus(); theObj.select(); return false; } if ((KeybdShift == 'J') && (totalSBCS > 0)) { alert(g_StdLocaleMgr.getMessageText("BadDBCS1") + totalSBCS + g_StdLocaleMgr.getMessageText("BadDBCS2") + g_StdLocaleMgr.getMessageText("BadDBCS3")); theObj.value = returnString; theObj.focus(); theObj.select(); return false; } if ((KeybdShift == 'E') && (totalSBCS > 0) && (totalDBCS > 0)) { alert(g_StdLocaleMgr.getMessageText("BadDBCS4") + g_StdLocaleMgr.getMessageText("BadDBCS5") + totalSBCS + g_StdLocaleMgr.getMessageText("BadDBCS6") + totalDBCS + g_StdLocaleMgr.getMessageText("BadDBCS7") + g_StdLocaleMgr.getMessageText("BadDBCS8")); theObj.focus(); theObj.select(); return false; } if ((KeybdShift == 'A') && (totalDBCS > 0)) { alert(g_StdLocaleMgr.getMessageText("BadDBCS9") + totalDBCS + g_StdLocaleMgr.getMessageText("BadDBCS10") + g_StdLocaleMgr.getMessageText("BadDBCS11")); theObj.value = returnString; theObj.focus(); theObj.select(); return false; } return true; } function isDBCSChar(theChar) { return (escape(theChar).length >= 4) ? true : false; } function SetFocus() { var formArr = document.forms; var length = formArr.length; var elemToFocus = null; for(var index = 0; index < length; index++) { var oForm = formArr[index]; if( oForm == null ) { return; } var NumElements = oForm.elements.length; for (i = 0; i < NumElements; i++) { var elem = oForm.elements[i]; var type = elem.type; if (type == "checkbox" || type == "password" || type == "radio" || type == "select-one" || type == "text" || type == "textarea") { try { // Only set focus if not disabled, not readonly and tabIndex is not negative. if( elem.disabled != true && elem.readOnly != true && (elem.tabIndex == null || elem.tabIndex >= 0) ) { // If focus is already set on an element and this elements tabIndex <= the current focus element's tabIndex // then set the focus, so that it is in correct tab order. if( elemToFocus == null || (elem.tabIndex == null || (elemToFocus.tabIndex != null && elemToFocus.tabIndex > elem.tabIndex)) ) { elem.focus(); elemToFocus = elem; } } } catch(exception) { } } } } if( elemToFocus != null ) { elemToFocus.focus(); } } function preload(imgObj, imgSrc) { if (document.images) { eval(imgObj + ' = new Image()'); eval(imgObj + '.src = "' + imgSrc + '"'); } } function changeImage(layer, imgObj, imgName) { if (document.images) { if (document.layers && layer!=null) eval('document.' + layer + '.document.images["' + imgName + '"].src = ' + imgObj + '.src'); else document.images[imgName].src = eval(imgObj + ".src"); } } function CheckNUpdate(Fld, Value) { if( RFld == null || RFld == "" ) { return; } var NumElements = document.LANSA.elements.length; for (i = 0; i < NumElements; i++) { if (document.LANSA.elements[i].name == Fld) { document.LANSA.elements[i].value = Value; break; } } } function FieldExists(Fld) { if( RFld == null || RFld == "" ) { return false; } var NumElements = document.LANSA.elements.length; for (i = 0; i < NumElements; i++) { if (document.LANSA.elements[i].name == Fld) return true; } return false; } function SetState(obj, RFld, chkValue, unchkValue) { if( RFld == null || RFld == "" || obj == null ) { return; } var oForm = null; try { oForm = obj.form; } catch(exception) { oForm = null; } if( oForm == null ) { var oParentElem = obj; while(oParentElem != null) { if( oParentElem.nodeName.toLowerCase() == "form" ) { oForm = oParentElem; break; } oParentElem = oParentElem.parentNode; } } if( oForm == null ) { return; } var oFieldInput = oForm.elements[RFld]; if( oFieldInput != null ) { oFieldInput.value = obj.checked ? chkValue : unchkValue; } } function GetFieldValue(RFld) { if( RFld == null || RFld == "" ) { return null; } var NumElements = document.LANSA.elements.length; for (i = 0; i < NumElements; i++) { if (document.LANSA.elements[i].name == RFld) return document.LANSA.elements[i].value; } return null; } function SetCBState(obj, RFld, CY, CN) { if( RFld == null || RFld == "" ) { return; } var NumElements = document.LANSA.elements.length; for (i = 0; i < NumElements; i++) { if (document.LANSA.elements[i].name == RFld) { if (obj.checked) document.LANSA.elements[i].value = CY; else document.LANSA.elements[i].value = CN; break; } } } function trapError(errorMsg, url, line) { return true; } // Debug scripts function pathOnly(InString) { LastSlash = InString.lastIndexOf('/', InString.length - 1); OutString = InString.substring(0, LastSlash + 1); return OutString; } ////////////////////////////////////////////////////////////////////////////////////////// // // Javascript support for std_datetime weblets // ////////////////////////////////////////////////////////////////////////////////////////// function datetimeProxyChangedHandler(oInputBox, oHiddenInput, date_mask, bDateOnly, bDUTC, bAllowSQLNull) { var dateStr = oInputBox.value; bDUTC = (bDUTC == null) ? false : bDUTC; bAllowSQLNull = (bAllowSQLNull == null) ? false : bAllowSQLNull; if (dateStr.length <= 0) { if (bAllowSQLNull) { datetimeSetDateValue(null, oInputBox, oHiddenInput, date_mask, bDateOnly, bDUTC); return true; } else { alert(g_StdLocaleMgr.getMessageText("BlankDate2")); datetimeSetDateValue(datetimeGetUTCDate(oHiddenInput.value), oInputBox, oHiddenInput, date_mask, bDateOnly, bDUTC); return false; } } var part1; var part2; var part3; var year; var month; var date; var dateCompArr = dateStr.split("-"); if( dateCompArr.length != 3 ) { dateCompArr = dateStr.split("/"); } if( dateCompArr.length != 3 ) { alert(dateStr + g_StdLocaleMgr.getMessageText("BadDate1")); return false; } part1 = new Number(dateCompArr[0]); part2 = new Number(dateCompArr[1]); var dateCompArr = dateCompArr[2].split(" "); if( dateCompArr.length < 1 ) { alert(dateStr + g_StdLocaleMgr.getMessageText("BadDate1")); return false; } part3 = new Number(dateCompArr[0]); year = part1; month = part2; date = part3; if( date_mask=="DD/MM/YYYY" ) { year = part3; month = part2; date = part1; } else if( date_mask=="DD-MM-YYYY" ) { year = part3; month = part2; date = part1; } else if( date_mask=="MM/DD/YYYY" ) { year = part3; month = part1; date = part2; } else if( date_mask=="MM-DD-YYYY" ) { year = part3; month = part1; date = part2; } var timeStr = ""; if( dateCompArr.length > 1 ) { var len = dateCompArr.length; for(var index = 1; index < len; index++) { timeStr += dateCompArr[index]; if( index < len-1 ) { timeStr += " "; } } } var enteredDateStr = dateStr; var dateStr = month.toString() + "-" + date.toString() + "-" + year.toString(); if( !bDateOnly ) { dateStr += " "; dateStr += timeStr; } if (bDUTC) { dateStr += " UTC"; } var oDate = new Date(dateStr); if( isNaN(oDate.valueOf()) ) { alert(enteredDateStr + g_StdLocaleMgr.getMessageText("BadDate1")); return false; } var bDateMatch = bDUTC ? (oDate.getUTCMonth()+1) == month && (oDate.getUTCDate() == date) && (oDate.getUTCFullYear() == year) : (oDate.getMonth()+1) == month && (oDate.getDate() == date) && (oDate.getFullYear() == year); if( !bDateMatch ) { alert(enteredDateStr + g_StdLocaleMgr.getMessageText("BadDate1")); return false; } datetimeSetDateValue(oDate, oInputBox, oHiddenInput, date_mask, bDateOnly, bDUTC); return true; } function timeProxyChangedHandler(oInputBox, oHiddenInput, bAllowSQLNull) { var dateStr = oInputBox.value; bAllowSQLNull = (bAllowSQLNull == null) ? false : bAllowSQLNull; if( dateStr.length <= 0 ) { if (bAllowSQLNull) { timeSetDateValue(null, oInputBox, oHiddenInput); return true; } else { alert(g_StdLocaleMgr.getMessageText("BlankTime")); timeSetDateValue(new Date(), oInputBox, oHiddenInput); return false; } } var curDate = new Date(); var year = new Number(curDate.getYear()); var month = new Number(curDate.getMonth()+1); var date = new Number(curDate.getDate()); var dateCompArr = dateStr.split(" "); if( dateCompArr.length < 1 ) { alert(dateStr + g_StdLocaleMgr.getMessageText("BadTime1")); return false; } var timeStr = ""; if( dateCompArr.length > 0 ) { var len = dateCompArr.length; for(var index = 0; index < len; index++) { timeStr += dateCompArr[index]; if( index < len-1 ) { timeStr += " "; } } } var dateStr = month.toString() + "-" + date.toString() + "-" + year.toString(); dateStr += " "; dateStr += timeStr; var oDate = new Date(dateStr); if( isNaN(oDate.valueOf()) ) { alert(timeStr + g_StdLocaleMgr.getMessageText("BadTime1")); return false; } timeSetDateValue(oDate, oInputBox, oHiddenInput); return true; } function datetimeSetDateValue(oDate, oInputBox, oHiddenInput, date_mask, bDateOnly, bDUTC) { var dateStr = ""; if (oDate != null) { if (bDateOnly) { dateStr = oDate.getFullYear(); dateStr += "-"; dateStr += oDate.getMonth() < 9 ? "0" + (oDate.getMonth() + 1) : (oDate.getMonth() + 1); dateStr += "-"; dateStr += oDate.getDate() < 10 ? "0" + oDate.getDate() : oDate.getDate(); } else { dateStr = oDate.getUTCFullYear(); dateStr += "-"; dateStr += oDate.getUTCMonth() < 9 ? "0" + (oDate.getUTCMonth() + 1) : (oDate.getUTCMonth() + 1); dateStr += "-"; dateStr += oDate.getUTCDate() < 10 ? "0" + oDate.getUTCDate() : oDate.getUTCDate(); dateStr += "T"; dateStr += oDate.getUTCHours() < 10 ? "0" + oDate.getUTCHours() : oDate.getUTCHours(); dateStr += ":"; dateStr += oDate.getUTCMinutes() < 10 ? "0" + oDate.getUTCMinutes() : oDate.getUTCMinutes(); dateStr += ":"; dateStr += oDate.getUTCSeconds() < 10 ? "0" + oDate.getUTCSeconds() : oDate.getUTCSeconds(); dateStr += "."; dateStr += oDate.getUTCMilliseconds() < 10 ? "00" + oDate.getUTCMilliseconds() : oDate.getUTCSeconds() < 100 ? "0" + oDate.getUTCMilliseconds() : oDate.getUTCMilliseconds(); dateStr += "Z"; } } datetimeSetUTCDate(dateStr, true, oInputBox, oHiddenInput, date_mask, bDateOnly, bDUTC); oInputBox.focus(); } function timeSetDateValue(oDate, oInputBox, oHiddenInput) { var utcDateStr = oHiddenInput.value; var dateStr = ""; var oTime = null; var timeStr = ""; if (oDate != null) { if( isNaN(oDate.getTime()) ) { if( utcDateStr.length > 0 ) { timeStr += utcDateStr; } else { oTime = new Date(); } } else { oTime = oDate; } } if( oTime != null ) { timeStr += (oTime.getHours()<10?"0" + oTime.getHours():oTime.getHours()); timeStr += ":"; timeStr += (oTime.getMinutes()<10?"0" + oTime.getMinutes():oTime.getMinutes()); timeStr += ":"; timeStr += (oTime.getSeconds()<10?"0" + oTime.getSeconds():oTime.getSeconds()); } dateStr += timeStr; timeSetUTCDate(dateStr, true, oInputBox, oHiddenInput); oInputBox.focus(); } // Get Date object from ISO 8601 date string function datetimeGetUTCDate(utcDateStr) { var dateStr = utcDateStr; var milliSecs = null; if( utcDateStr.length > 0 ) { var dateComps = utcDateStr.split("T"); if( dateComps.length >= 1 ) { var datePart = dateComps[0]; var partArr = datePart.split("-"); if( partArr.length == 3 ) { dateStr = partArr[1]; dateStr += "-"; dateStr += partArr[2]; dateStr += "-"; dateStr += partArr[0]; } else { dateStr = dateComps[0]; } } if( dateComps.length == 2 ) { var timePart = dateComps[1]; dateStr += " "; var partArr = timePart.split("Z"); if( partArr.length == 2 ) { var fracSec = partArr[0].split("."); if( fracSec.length == 2 ) { dateStr += fracSec[0]; milliSecs = fracSec[1].substring(0, 3); } else { dateStr += partArr[0]; } dateStr += " UTC"; } else { var tzdChar = "+"; partArr = timePart.split(tzdChar); if( partArr.length != 2 ) { tzdChar = "-"; partArr = timePart.split(tzdChar); } if( partArr.length == 2 ) { var fracSec = partArr[0].split("."); if( fracSec.length == 2 ) { dateStr += fracSec[0]; milliSecs = fracSec[1].substring(0, 3); } else { dateStr += partArr[0]; } dateStr += " UTC"; dateStr += tzdChar; dateStr += partArr[1].replace(":", ""); } else { dateStr += dateComps[1]; } } } } var oDate = new Date(dateStr); if( milliSecs != null ) { oDate.setMilliseconds(milliSecs); } oDate.sqlNull = utcDateStr.length > 0 ? false : true; return oDate; } // Sets the hidden date field in ISO 8601 and sets the proxy formatted in the requested date mask // from an input date string in ISO 8601 format function datetimeSetUTCDate(utcDateStr, bInputMode, oInputBox, oHiddenInput, date_mask, bDateOnly, bDUTC) { if( bInputMode ) { oHiddenInput.value = utcDateStr; } var oDate = datetimeGetUTCDate(utcDateStr); if ((oDate != null) && !isNaN(oDate.valueOf())) { var year; var month; var date; bDUTC = (bDUTC == null) ? false : bDUTC; // If true, use UTC value to display proxy if (bDUTC) { year = oDate.getUTCFullYear(); month = (oDate.getUTCMonth()<9?"0" + (oDate.getUTCMonth()+1):(oDate.getUTCMonth()+1)); date = (oDate.getUTCDate()<10?"0" + oDate.getUTCDate():oDate.getUTCDate()); } else { year = oDate.getFullYear(); month = (oDate.getMonth()<9?"0" + (oDate.getMonth()+1):(oDate.getMonth()+1)); date = (oDate.getDate()<10?"0" + oDate.getDate():oDate.getDate()); } var part1 = year; var part2 = month; var part3 = date; var sep = "-"; if( date_mask=="DD/MM/YYYY" ) { part1 = date; part2 = month; part3 = year; sep = "/"; } else if( date_mask=="DD-MM-YYYY" ) { part1 = date; part2 = month; part3 = year; } else if( date_mask=="MM/DD/YYYY" ) { part1 = month; part2 = date; part3 = year; sep = "/"; } else if( date_mask=="MM-DD-YYYY" ) { part1 = month; part2 = date; part3 = year; } var dispStr = part1; dispStr += sep; dispStr += part2; dispStr += sep; dispStr += part3; if( !bDateOnly ) { var timeDispStr; if (!bDUTC) { timeDispStr = oDate.toLocaleTimeString(); } else { oCheatDate = new Date(); // Offset time so that "local time" shows UTC time instead oCheatDate.setTime(oDate.getTime() + (oDate.getTimezoneOffset() * 60000)); timeDispStr = oCheatDate.toLocaleTimeString(); } if( timeDispStr != null && timeDispStr.length > 0 ) { dispStr += " "; dispStr += timeDispStr; } } if( bInputMode ) { oInputBox.value = dispStr; } else { oInputBox.innerText = dispStr; } } else { if( bInputMode ) { oInputBox.value = utcDateStr; } else { oInputBox.innerText = utcDateStr; } } } function timeSetUTCDate(utcDateStr, bInputMode, oInputBox, oHiddenInput) { if( bInputMode ) { oHiddenInput.value = utcDateStr; } var dispStr = ""; if (utcDateStr.length > 0) { var oDate = new Date(); dispStr = oDate.toLocaleDateString() + " "; dispStr += utcDateStr; oDate = new Date(dispStr); dispStr = oDate.toLocaleTimeString(); if (isNaN(oDate.valueOf())) { dispStr = utcDateStr; } } if( bInputMode ) { oInputBox.value = dispStr; } else { oInputBox.innerText = dispStr; } } // Offsets the Date for calendar to show the "UTC date" function datetimeOffsetUTCDate(oDate, subtract) { if (!isNaN(oDate.valueOf())) { var offset = oDate.getTimezoneOffset() * 60000; // East of UTC is negative oDate.setTime(subtract ? oDate.getTime() + offset : oDate.getTime() - offset); } return oDate; } ////////////////////////////////////////////////////////////////////////////////////////// // // Javascript support for std_button and std_image_button weblets // ////////////////////////////////////////////////////////////////////////////////////////// // Call inside