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

//////////////////////////////
// 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 ();
}
}
}