You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
360 lines
12 KiB
360 lines
12 KiB
//////////////////////////////
|
|
// 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 ();
|
|
}
|
|
}
|
|
} |