////////////////////////////// // FOR DEBUGGING ONLY var debug = false; function dumpFormFields(formName) { theForm = document.forms[formName]; for ( idx = 0; idx < theForm.elements.length; ++idx ) alert ( theForm.elements[idx].name + " - " + theForm.elements[idx].value ); } ////////////////////////////// // GLOBAL VAR var needURLEncode = false; // only need to do url encode in java var promptPrefix = "promptex-"; /////////////////////////////// // properly encode prompt values function encodePrompt (prompt) { if (needURLEncode) { return encodeURIComponent(prompt); } else { return prompt; } } //////////////////////////////// // add number, currency, string from dropdown/textbox to list box // where multiple prompt values are supported function addPromptDiscreteValue ( inForm, type , paramName) { var widget, obj; widget = obj = inForm[paramName + "DiscreteValue"]; if ( obj.type && obj.type.toLowerCase() != "text" && obj.type.toLowerCase() != "hidden" && obj.type.toLowerCase() != "password") { //select box not a textbox obj = obj.options[obj.selectedIndex]; } if ( ! checkSingleValue ( obj.value, type ) ) { if (widget.focus && widget.type.toLowerCase() != "hidden") widget.focus(); return false; } promptValue = encodePrompt(obj.value); displayString = ( obj.text ) ? obj.text : obj.value; promptEntry = new Option(displayString,promptValue,false,false); theList = inForm[paramName + "ListBox"]; theList.options[theList.length] = promptEntry; if (widget.focus && widget.type.toLowerCase() != "hidden") widget.focus (); if ( widget.select ) widget.select (); if ( widget.type.toLowerCase != "text" && widget.type.toLowerCase != "hidden" && widget.type.toLowerCase != "password") if ( widget.selectedIndex < widget.length - 1 ) widget.selectedIndex = widget.selectedIndex + 1; //... or move to next selection in listbox } //////////////////////////////////// // adds Range prompt to listbox where multiple values are supported function addPromptRangeValue ( inForm, type , paramName ) { lowerBound = inForm[paramName + "LowerBound"]; upperBound = inForm[paramName + "UpperBound"]; //handle select box, not text box case if ( lowerBound.type.toLowerCase () != "text" && lowerBound.type.toLowerCase () != "hidden" && lowerBound.type.toLowerCase () != "password" ) //either upper or lower, doesn't matter { lowerBound = lowerBound.options[lowerBound.selectedIndex]; upperBound = upperBound.options[upperBound.selectedIndex]; } lowerUnBounded = inForm[paramName + "NoLowerBoundCheck"].checked; upperUnBounded = inForm[paramName + "NoUpperBoundCheck"].checked; lvalue = uvalue = ""; if ( ! lowerUnBounded ) { if ( ! checkSingleValue ( lowerBound.value, type ) ) { if ( lowerBound.focus && lowerBound.type.toLowerCase () != "hidden") lowerBound.focus (); return false; } lvalue = lowerBound.value; } if ( ! upperUnBounded ) { if ( ! checkSingleValue ( upperBound.value, type ) ) { if ( upperBound.focus && upperBound.type.toLowerCase () != "hidden") upperBound.focus (); return false; } uvalue = upperBound.value; } ldisplay = (lowerBound.text && !lowerUnBounded) ? lowerBound.text : lvalue; udisplay = (upperBound.text && !upperUnBounded) ? upperBound.text : uvalue; lowerChecked = inForm[paramName + "LowerCheck"].checked; upperChecked = inForm[paramName + "UpperCheck"].checked; value = ( lowerChecked && ! lowerUnBounded ) ? "[" : "("; if ( ! lowerUnBounded ) //unbounded is empty string not quoted empty string (e.g not "_crEMPTY_") value += encodePrompt(lvalue); value += "_crRANGE_" if ( ! upperUnBounded ) value += encodePrompt(uvalue); value += (upperChecked && ! upperUnBounded ) ? "]" : ")"; if ( debug ) alert (value); display = ( lowerChecked && ! lowerUnBounded ) ? "[" : "("; display += ldisplay; display += " .. " display += udisplay; display += (upperChecked && ! upperUnBounded ) ? "]" : ")"; promptEntry = new Option(display,value,false,false); theList = inForm[paramName + "ListBox"]; theList.options[theList.length] = promptEntry; } //////////////////////////////////// // disable check boxes based on user selection on the range parameters function disableBoundCheck(lowOrUpBound, inform, paramName) { if (lowOrUpBound == 0) { if (inform[paramName + "NoLowerBoundCheck"].checked) { inform[paramName + "NoUpperBoundCheck"].disabled = true; inform[paramName + "LowerCheck"].disabled = true; inform[paramName + "LowerBound"].disabled = true; } else { inform[paramName + "NoUpperBoundCheck"].disabled = false; inform[paramName + "LowerCheck"].disabled = false; inform[paramName + "LowerBound"].disabled = false; } } else if (lowOrUpBound == 1) { if (inform[paramName + "NoUpperBoundCheck"].checked) { inform[paramName + "NoLowerBoundCheck"].disabled = true; inform[paramName + "UpperCheck"].disabled = true; inform[paramName + "UpperBound"].disabled = true; } else { inform[paramName + "NoLowerBoundCheck"].disabled = false; inform[paramName + "UpperCheck"].disabled = false; inform[paramName + "UpperBound"].disabled = false; } } } //////////////////////////////////// // puts "select" value into text box for an editable prompt which also has defaults function setSelectedValue (inForm, selectCtrl, textCtrl) { selectedOption = inForm[selectCtrl].options[inForm[selectCtrl].selectedIndex]; inForm[textCtrl].value = selectedOption.value; } /////////////////////////////////// // remove value from listbox where multiple value prompts are supported function removeFromListBox ( inForm, paramName ) { lbox = inForm[paramName + "ListBox"]; for ( var idx = 0; idx < lbox.options.length; ) { if ( lbox.options[idx].selected ) lbox.options[idx] = null; else idx++; } } ///////////////////////////////////// // sets prompt value into the hidden form field in proper format so that it can be submitted function setPromptSingleValue (inform, type, paramName) { hiddenField = inform[promptPrefix + paramName]; value = ""; if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked ) value = "_crNULL_"; //NULL is a literal for, uhmm.. a NULL else { discreteVal = inform[paramName + "DiscreteValue"]; if ( discreteVal.type.toLowerCase () != "text" && discreteVal.type.toLowerCase () != "hidden" && discreteVal.type.toLowerCase () != "password") value = discreteVal.options[discreteVal.selectedIndex].value; else value = discreteVal.value; if ( ! checkSingleValue ( value, type ) ) { if (discreteVal.focus && discreteVal.type.toLowerCase ()) discreteVal.focus (); return false; } else value = encodePrompt(value); } hiddenField.value = value; return true; } ///////////////////////////////////// // sets prompt value for a range into the hidden form field in proper format so that it can be submitted function setPromptRangeValue (inform, type, paramName) { hiddenField = inform[promptPrefix + paramName]; if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked ) { value = "_crNULL_"; //NULL is a literal for, uhmm.. a NULL hiddenField.value = value; return true; } lowerBound = inform[paramName + "LowerBound"]; upperBound = inform[paramName + "UpperBound"]; //handle select box, not text box case if ( lowerBound.type.toLowerCase () != "text" && lowerBound.type.toLowerCase () != "hidden" && lowerBound.type.toLowerCase () != "password") //either upper or lower, doesn't matter { lowerBound = lowerBound.options[lowerBound.selectedIndex]; upperBound = upperBound.options[upperBound.selectedIndex]; } lowerUnBounded = inform[paramName + "NoLowerBoundCheck"].checked; upperUnBounded = inform[paramName + "NoUpperBoundCheck"].checked; lowerChecked = inform[paramName + "LowerCheck"].checked; upperChecked = inform[paramName + "UpperCheck"].checked; uvalue = lvalue = ""; if ( ! lowerUnBounded ) { if ( ! checkSingleValue ( lowerBound.value, type ) ) { if ( lowerBound.focus && lowerBound.type.toLowerCase () != "hidden") lowerBound.focus(); return false; } lvalue = lowerBound.value; } if ( ! upperUnBounded ) { if ( ! checkSingleValue ( upperBound.value, type ) ) { if ( upperBound.focus && upperBound.type.toLowerCase () != "hidden") upperBound.focus (); return false; } uvalue = upperBound.value; } value = ( lowerChecked && ! lowerUnBounded ) ? "[" : "("; if ( ! lowerUnBounded ) value += encodePrompt(lvalue); value += "_crRANGE_" if ( ! upperUnBounded ) value += encodePrompt(uvalue); value += (upperChecked && ! upperUnBounded ) ? "]" : ")"; if ( debug ) alert (value); hiddenField.value = value; return true; } ///////////////////////////////////// // sets prompt value into the hidden form field in proper format so that it can be submitted function setPromptMultipleValue (inform, type, paramName) { hiddenField = inform[promptPrefix + paramName]; values = inform[paramName + "ListBox"].options; if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked ) { value = "_crNULL_"; //NULL is a literal for, uhmm.. a NULL hiddenField.value = value; return true; } if ( values.length == 0 ) { value = "_crEMPTY_"; //if value is empty, set to empty string } else { value = ""; for ( idx = 0; idx < values.length; ++idx ) { // first value could be empty string, then chcking value.length != 0 could miss one empty string if ( idx != 0 ) value += "_crMULT_" value += values[idx].value; } } if ( debug ) alert (value); hiddenField.value = value; //NOTE: we'll always return true as the validation is done before values are added to select box return true; } /////////////////////////////////////// // check and alert user about any errors based on type of prompt var regNumber = /^(\+|-)?((\d+(\.|,| |\u00A0)?\d*)+|(\d*(\.|,| |\u00A0)?\d+)+)$/ var regCurrency = regNumber; var regDate = /^(D|d)(A|a)(T|t)(E|e) *\( *\d{4} *, *(0?[1-9]|1[0-2]) *, *((0?[1-9]|[1-2]\d)|3(0|1)) *\)$/ var regDateTime = /^(D|d)(A|a)(T|t)(E|e)(T|t)(I|i)(M|m)(E|e) *\( *\d{4} *, *(0?[1-9]|1[0-2]) *, *((0?[1-9]|[1-2]\d)|3(0|1)) *, *([0-1]?\d|2[0-3]) *, *[0-5]?\d *, *[0-5]?\d *\)$/ var regTime = /^(T|t)(I|i)(M|m)(E|e) *\( *([0-1]?\d|2[0-3]) *, *[0-5]?\d *, *[0-5]?\d *\)$/ function checkSingleValue ( value, type ) { if ( type == 'n' && ! regNumber.test ( value ) ) { alert ( L_BadNumber ); return false; } else if ( type == 'c' && ! regCurrency.test ( value ) ) { alert ( L_BadCurrency ); return false; } else if ( type == 'd' && ! regDate.test ( value ) ) { alert ( L_BadDate ); return false; } else if ( type == "dt" && ! regDateTime.test ( value ) ) { alert ( L_BadDateTime ); return false; } else if ( type == 't' && ! regTime.test ( value ) ) { alert ( L_BadTime ); return false; } //by default let it go... return true; } function checkValue(evt) { if (navigator.appName == "Netscape") { if (evt.which == 13 && (evt.target.type == "text" || evt.target.type == "password")) { checkSetAndSubmitValues (); } } else { if (window.event.keyCode == 13 && (window.event.srcElement.type == "text" || window.event.srcElement.type == "password")) { checkSetAndSubmitValues (); } } }