prompts_param.js
上传用户:shjujing
上传日期:2022-07-28
资源大小:11244k
文件大小:36k
源码类别:

Email客户端

开发平台:

Visual C++

  1. //////////////////////////////
  2. // FOR DEBUGGING ONLY
  3. var debug = false;
  4. function dumpFormFields(formName)
  5. {
  6.     theForm = document.forms[formName];
  7.     for ( idx = 0; idx < theForm.elements.length; ++idx )
  8.         alert ( theForm.elements[idx].name + " - " + theForm.elements[idx].value );
  9. }
  10. //////////////////////////////
  11. // GLOBAL VAR
  12. var needURLEncode = false;  // only need to do url encode in java
  13. var promptPrefix = "promptex-";
  14. var CR_NULL = "_crNULL_";
  15. var CR_USE_VALUE = "_crUseValue_";
  16. var _bver    = parseInt(navigator.appVersion);
  17. var Nav4     = ((navigator.appName == "Netscape") && _bver==4);
  18. var Nav4plus = ((navigator.appName == "Netscape") && _bver >= 4);
  19. var IE4plus  = ((navigator.userAgent.indexOf("MSIE") != -1) && _bver>4);
  20. if (Nav4plus)
  21.     var userLanguage = (navigator.language.substr(0, 2));
  22. else
  23.     var userLanguage = (navigator.browserLanguage.substr(0, 2));
  24. ///////////////////////////////
  25. // substitue range string
  26. function ConstructRangeDisplayString(rangeStr, param0, param1)
  27. {
  28.         var newString = rangeStr.replace("{0}", param0);
  29.         newString = newString.replace("{1}", param1);
  30.         return newString;
  31. }
  32. ///////////////////////////////
  33. // Display string for range value in ListBox
  34. function GetRangeValueDisplayText(rangeStr, param0, param1, paramType)
  35. {
  36.         if (paramType == "dt" || paramType == "d" || paramType == "t")
  37.         {
  38.                 if (param0.length != 0)
  39.                 {
  40.                         param0 = NeutralDT2D(param0);
  41.                 }
  42.                 if (param1.length != 0)
  43.                 {
  44.                         param1 = NeutralDT2D(param1);
  45.                 }
  46.         }
  47.         return ConstructRangeDisplayString(rangeStr, param0, param1);
  48. }
  49. ///////////////////////////////
  50. // properly encode prompt values
  51. function encodePrompt (prompt)
  52. {
  53.     if (needURLEncode)
  54.     {
  55.         return encodeURIComponent(prompt);
  56.     }
  57.     else
  58.     {
  59.         return prompt;
  60.     }
  61. }
  62. function clickSetNullCheckBox(inForm, paramName, suffix)
  63. {
  64.     var nullCtrl = inForm[paramName + "NULL"];
  65.     var textCtrl = inForm[paramName + suffix];
  66.     var hiddenCtrl = inForm[paramName + suffix + "Hidden"];
  67.     var hourCtrl = inForm[paramName + suffix + "Hour"];
  68.     var minuteCtrl = inForm[paramName + suffix + "Minute"];
  69.     var secondCtrl = inForm[paramName + suffix + "Second"];
  70.     var ampmCtrl = inForm[paramName + suffix + "AMPM"];
  71.     if (nullCtrl.checked)
  72.     {
  73.         if (textCtrl != null) textCtrl.disabled = true;
  74.         if (hourCtrl != null) hourCtrl.disabled = true;
  75.         if (minuteCtrl != null) minuteCtrl.disabled = true;
  76.         if (secondCtrl != null) secondCtrl.disabled = true;
  77.         if (ampmCtrl != null) ampmCtrl.disabled = true;
  78.     }
  79.     else
  80.     {
  81.         if (textCtrl != null) textCtrl.disabled = false;
  82.         if (hourCtrl != null) hourCtrl.disabled = false;
  83.         if (minuteCtrl != null) minuteCtrl.disabled = false;
  84.         if (secondCtrl != null) secondCtrl.disabled = false;
  85.         if (ampmCtrl != null) ampmCtrl.disabled = false;
  86.         
  87.     }
  88. }
  89. function ClearListBoxAndSetNULL(theList)
  90. {
  91.     // delete everything in the listbox, add _crNULL_ as an item
  92.     promptEntry = new Option(L_NoValue, CR_NULL,false,false);
  93.     for ( var idx = 0; idx < theList.options.length; )
  94.     {
  95.         theList.options[0] = null;
  96.         idx++;
  97.     }
  98.     theList.options[0] = promptEntry;
  99.     return;
  100. }
  101. ////////////////////////////////
  102. // add number, currency, string from dropdown/textbox to list box
  103. // where multiple prompt values are supported
  104. function DateTimePromptValueHelper(type, hiddenCtrl, hourCtrl, minuteCtrl, secondCtrl, ampmCtrl)
  105. {
  106.     var promptValue = "";
  107.     var year;
  108.     var month;
  109.     var day;
  110.     if ((type == "dt") || (type == "d"))
  111.     {
  112.         var d = hiddenCtrl.value;
  113.         if (d.length == 0)
  114.         {
  115.           alert(L_NoDateEntered);
  116.           return "";
  117.         }
  118.         var leftIndex = d.indexOf("(");
  119.         var rightIndex = d.indexOf(")");
  120.         d = d.substr(leftIndex + 1, rightIndex - leftIndex - 1);
  121.         var dArray = d.split(",");
  122.         year = dArray[0];
  123.         month = dArray[1];
  124.         day = dArray[2];
  125.     }
  126.     if (type == "dt")
  127.     {
  128.         promptValue = "DateTime(";
  129.         promptValue += year;
  130.         promptValue += ",";
  131.         promptValue += month;
  132.         promptValue += ",";
  133.         promptValue += day;
  134.         promptValue += ",";
  135.         var hour = 0;
  136.         if (ampmCtrl != undefined)
  137.         {
  138.             var i = 0;
  139.             if (ampmCtrl.selectedIndex == 1)
  140.                 i = 1;
  141.             hour = hourCtrl.selectedIndex + 1 + i * 12;
  142.             if (hour == 12) hour = 0;
  143.             else if (hour == 24) hour = 12;
  144.         }
  145.         else
  146.         {
  147.             hour = hourCtrl.selectedIndex;
  148.         }
  149.             
  150.         promptValue += hour;
  151.         promptValue += ",";
  152.         promptValue += minuteCtrl.selectedIndex;
  153.         promptValue += ",";
  154.         promptValue += secondCtrl.selectedIndex;
  155.         promptValue += ")";
  156.     }
  157.     else if (type == "d")
  158.     {
  159.         promptValue = "Date(";
  160.         promptValue += year;
  161.         promptValue += ",";
  162.         promptValue += month;
  163.         promptValue += ",";
  164.         promptValue += day;
  165.         promptValue += ")";
  166.         
  167.     }
  168.     else if (type == "t")
  169.     {
  170.         promptValue = "Time(" 
  171.         var hour = 0;
  172.         if (ampmCtrl != undefined)
  173.         {
  174.             var i = 0;
  175.             if (ampmCtrl.selectedIndex == 1)
  176.                 i = 1;
  177.             hour = hourCtrl.selectedIndex + 1 + i * 12;
  178.             if (hour == 12) hour = 0;
  179.             else if (hour == 24) hour = 12;
  180.         }
  181.         else
  182.         {
  183.             hour = hourCtrl.selectedIndex;
  184.         }
  185.        
  186.             
  187.         promptValue += hour;
  188.         promptValue += ",";
  189.         promptValue += minuteCtrl.selectedIndex;
  190.         promptValue += ",";
  191.         promptValue += secondCtrl.selectedIndex;
  192.         promptValue += ")";
  193.     }
  194.     return promptValue;
  195. }
  196. function DateTimeDisplayStringHelper(type, hiddenCtrl, hourCtrl, minuteCtrl, secondCtrl, ampmCtrl)
  197. {
  198.     var neutralstring = DateTimePromptValueHelper(type, hiddenCtrl, hourCtrl, minuteCtrl, secondCtrl, ampmCtrl);
  199.     return NeutralDT2D(neutralstring);
  200. }
  201. function addPromptDiscreteValueHelper(inForm, type, paramName, suffix)
  202. {
  203.     theList = inForm[paramName + "ListBox"];
  204.     // if there is a NULL checkbox and it is set
  205.     if ( inForm[paramName + "NULL"] != null && inForm[paramName + "NULL"].checked )
  206.     {
  207.         // delete everything in the listbox, add _crNULL_ as an item
  208.         ClearListBoxAndSetNULL(theList);
  209.         return;
  210.     }
  211.     // if the listbox already has a NULL value in it, don't do anything, unless user removes NULl value from the listbox
  212.     if (theList.options.length > 0 && theList.options[0].value == CR_NULL)
  213.     {
  214.         alert(L_NoValueAlready);
  215.         return;
  216.     }
  217.     // if defaultdropdownlist selected item is _crNULL_, put it into multiple listbox
  218.     var dropDownListName = "";
  219.     if (suffix == "DiscreteValue")
  220.         dropDownListName = paramName + "SelectValue";
  221.     else
  222.         dropDownListName = paramName + "SelectLowerBound";
  223.     var dropDownListCtrl = inForm[dropDownListName];
  224.     if (dropDownListCtrl != null)
  225.     {
  226.         if (dropDownListCtrl.options[dropDownListCtrl.selectedIndex].value  == CR_NULL)
  227.         {
  228.             // delete everything in the listbox, add _crNULL_ as an item
  229.             ClearListBoxAndSetNULL(theList);
  230.             return;
  231.         }
  232.     }
  233.     
  234.     var textCtrl = inForm[paramName + suffix];
  235.     var hiddenCtrl = inForm[paramName + suffix + "Hidden"];
  236.     var hourCtrl = inForm[paramName + suffix + "Hour"];
  237.     var minuteCtrl = inForm[paramName + suffix + "Minute"];
  238.     var secondCtrl = inForm[paramName + suffix + "Second"];
  239.     var ampmCtrl = inForm[paramName + suffix + "AMPM"];
  240.     var obj;
  241.     var editables = true;
  242.     if (textCtrl == undefined && hourCtrl == undefined)
  243.     {
  244.         //select box not a textbox, hour, minute, and second, ampm dropdown are not there either
  245.         editables = false;
  246.         obj = dropDownListCtrl;
  247.         obj = obj.options[obj.selectedIndex];
  248.     }
  249.     else
  250.     {
  251.         if (type == "t")
  252.             obj = hourCtrl;
  253.         else
  254.             obj = textCtrl;
  255.     }
  256.     if (editables && (type == "dt" || type == "d" || type == "t"))
  257.     {   
  258.         promptValue = DateTimePromptValueHelper(type, hiddenCtrl, hourCtrl, minuteCtrl, secondCtrl, ampmCtrl);
  259.         if (promptValue.length == 0) return false;
  260.         
  261.         displayString = DateTimeDisplayStringHelper(type, hiddenCtrl, hourCtrl, minuteCtrl, secondCtrl, ampmCtrl);   
  262.     }
  263.     else
  264.     {
  265.         promptValue =  encodePrompt(obj.value);
  266.         displayString = ( obj.text ) ? obj.text : obj.value;
  267.     }
  268.     if ( ! checkSingleValue (promptValue, type ) )
  269.     {
  270.         return false;
  271.     }
  272.     promptEntry = new Option(displayString,promptValue,false,false);
  273.     theList.options[theList.length] = promptEntry;
  274. }
  275. function addPromptDiscreteValue ( inForm, type , paramName)
  276. {
  277.     addPromptDiscreteValueHelper(inForm, type, paramName, "DiscreteValue");
  278. }
  279. ////////////////////////////////////
  280. // adds Range prompt to listbox where multiple values are supported
  281. function addPromptDiscreteRangeValue ( inForm, type , paramName )
  282. {
  283.     lowerOption = inForm[paramName + "SelectLowerOptions"];
  284.     // exactly
  285.     if (lowerOption.selectedIndex == 1)
  286.     {
  287.         // add discrete
  288.         addPromptDiscreteValueHelper(inForm, type, paramName, "LowerBound");
  289.     }
  290.     else
  291.     {
  292.        // add range
  293.        addPromptRangeValue(inForm, type, paramName);
  294.     }
  295. }
  296. ////////////////////////////////////
  297. // adds Range prompt to listbox where multiple values are supported
  298. function addPromptRangeValue ( inForm, type , paramName )
  299. {
  300.     theList = inForm[paramName + "ListBox"];
  301.     // if there is a NULL checkbox and it is set
  302.     if ( inForm[paramName + "NULL"] != null && inForm[paramName + "NULL"].checked )
  303.     {
  304.         // delete everything in the listbox, add _crNULL_ as an item
  305.         ClearListBoxAndSetNULL(theList);
  306.         return;
  307.     }
  308.     // if the listbox already has a NULL value in it, don't do anything, unless user removed NULl value from the listbox
  309.     if (theList.options.length > 0 && theList.options[0].value == CR_NULL)
  310.     {
  311.         alert(L_NoValueAlready);
  312.         return;
  313.     }
  314.     // if both defaultdropdownlists selected item is _crNULL_, put it into multiple listbox
  315.     // if one of them is _crNULL_, it is not a valid option, do nothing
  316.     var lowerDropDownListName = paramName + "SelectLowerBound";
  317.     var upperDropDownListName = paramName + "SelectUpperBound";
  318.     var lowerDropDownListCtrl = inForm[lowerDropDownListName];
  319.     var upperDropDownListCtrl = inForm[upperDropDownListName];
  320.     if (lowerDropDownListCtrl != null && upperDropDownListCtrl != null)
  321.     {
  322.         if (lowerDropDownListCtrl.options[lowerDropDownListCtrl.selectedIndex].value  == CR_NULL
  323.             && upperDropDownListCtrl.options[upperDropDownListCtrl.selectedIndex].value  == CR_NULL)
  324.         {
  325.             // delete everything in the listbox, add _crNULL_ as an item
  326.             ClearListBoxAndSetNULL(theList);
  327.             return;
  328.         }
  329.         else if (lowerDropDownListCtrl.options[lowerDropDownListCtrl.selectedIndex].value  == CR_NULL
  330.             || upperDropDownListCtrl.options[upperDropDownListCtrl.selectedIndex].value  == CR_NULL)
  331.         {
  332.            alert(L_BadValue);
  333.            return;
  334.         }
  335.     }
  336.     lowerOption = inForm[paramName + "SelectLowerOptions"];
  337.     upperOption = inForm[paramName + "SelectUpperOptions"];
  338.     lowerBound = inForm[paramName + "LowerBound"];
  339.     upperBound = inForm[paramName + "UpperBound"];
  340.     lowerBoundHidden = inForm[paramName + "LowerBoundHidden"];
  341.     upperBoundHidden = inForm[paramName + "UpperBoundHidden"];
  342.     var lhourCtrl = inForm[paramName+"LowerBound" + "Hour"];
  343.     var lminuteCtrl = inForm[paramName + "LowerBound" + "Minute"];
  344.     var lsecondCtrl = inForm[paramName + "LowerBound" + "Second"];
  345.     var lampmCtrl = inForm[paramName + "LowerBound" + "AMPM"];
  346.     var uhourCtrl = inForm[paramName+"UpperBound" + "Hour"];
  347.     var uminuteCtrl = inForm[paramName + "UpperBound" + "Minute"];
  348.     var usecondCtrl = inForm[paramName + "UpperBound" + "Second"];
  349.     var uampmCtrl = inForm[paramName + "UpperBound" + "AMPM"];
  350.     var editable = true;
  351.     //handle select box, not text box case
  352.     if ( lowerBound == undefined && lhourCtrl == undefined)//either upper or lower, doesn't matter
  353.     {
  354.         editable = false;
  355.         
  356.         lowerBound = inForm[paramName + "SelectLowerBound"];
  357.         upperBound = inForm[paramName + "SelectUpperBound"];
  358.         lowerBound = lowerBound.options[lowerBound.selectedIndex];
  359.         upperBound = upperBound.options[upperBound.selectedIndex];
  360.     }
  361.     lowerUnBounded = (inForm[paramName+"SelectLowerOptions"].selectedIndex == (inForm[paramName + "SelectLowerOptions"].options.length - 1));
  362.     upperUnBounded = (inForm[paramName+"SelectUpperOptions"].selectedIndex == (inForm[paramName + "SelectUpperOptions"].options.length - 1));
  363.     lvalue = uvalue = "";
  364.     if ( ! lowerUnBounded )
  365.     {
  366.         if ((type == "dt" || type == "d" || type == "t") && (editable))
  367.         {   
  368.             lvalue = DateTimePromptValueHelper(type, lowerBoundHidden, lhourCtrl, lminuteCtrl, lsecondCtrl, lampmCtrl);
  369.             if (lvalue.length == 0) return false;
  370.         }
  371.         else
  372.             lvalue = lowerBound.value;
  373.         if ( ! checkSingleValue ( lvalue, type ) ) {
  374.             if ( lowerBound.focus && lowerBound.type.toLowerCase () != "hidden")
  375.                 lowerBound.focus ();
  376.             return false;
  377.         }
  378.     }
  379.     if ( ! upperUnBounded )
  380.     {
  381.         if ((type == "dt" || type == "d" || type == "t") && (editable))
  382.         {   
  383.             uvalue = DateTimePromptValueHelper(type, upperBoundHidden, uhourCtrl, uminuteCtrl, usecondCtrl, uampmCtrl);
  384.             if (uvalue.length == 0) return false;
  385.         }
  386.         else
  387.             uvalue = upperBound.value;
  388.         if ( ! checkSingleValue ( uvalue, type ) ) {
  389.             if ( upperBound.focus && upperBound.type.toLowerCase () != "hidden")
  390.                 upperBound.focus ();
  391.             return false;
  392.         }
  393.     }
  394.     var ldisplay = "";
  395.     var udisplay = "";
  396.     if ((type == "dt" || type == "d" || type == "t") && (editable))
  397.     {
  398.         if (!lowerUnBounded)
  399.             ldisplay = DateTimeDisplayStringHelper(type, lowerBoundHidden, lhourCtrl, lminuteCtrl, lsecondCtrl, lampmCtrl);
  400.         if (!upperUnBounded)
  401.             udisplay = DateTimeDisplayStringHelper(type, upperBoundHidden, uhourCtrl, uminuteCtrl, usecondCtrl, uampmCtrl);
  402.     }
  403.     else
  404.     {
  405.         ldisplay = lvalue;
  406.         udisplay = uvalue;
  407.     }
  408.     lowerChecked = (inForm[paramName+"SelectLowerOptions"].selectedIndex == 0);
  409.     upperChecked = (inForm[paramName+"SelectUpperOptions"].selectedIndex == 0);
  410.    
  411.     value = lowerUnBounded ? "{" : lowerChecked ? "[" : "(";
  412.     if ( ! lowerUnBounded ) //unbounded is empty string not quoted empty string (e.g not "_crEMPTY_")
  413.         value += encodePrompt(lvalue);
  414.     value += "_crRANGE_"
  415.     if ( ! upperUnBounded )
  416.         value += encodePrompt(uvalue);
  417.     value += upperUnBounded ? "}" : upperChecked ? "]" : ")";
  418.     if ( debug ) alert (value);
  419.     if ( !lowerUnBounded && !upperUnBounded && !checkRangeValue(lvalue, uvalue, type))
  420.     {
  421.                 return false;
  422.     }
  423.     var display = "";
  424.     if (lowerChecked && upperUnBounded)
  425.     {
  426.                 display = ConstructRangeDisplayString(L_FROM, ldisplay, "");
  427.     }
  428.     else if (lowerUnBounded && upperChecked)
  429.     {
  430.                 display = ConstructRangeDisplayString(L_TO, udisplay, "");
  431.     }
  432.     else if (!lowerChecked && upperUnBounded)
  433.     {
  434.                 display = ConstructRangeDisplayString(L_AFTER, ldisplay, "");
  435.     }
  436.     else if (lowerUnBounded && !upperChecked)
  437.     {
  438.                 display = ConstructRangeDisplayString(L_BEFORE, udisplay, "");
  439.     }
  440.     else if (lowerChecked  && upperChecked)
  441.     {
  442.                 display = ConstructRangeDisplayString(L_FROM_TO, ldisplay, udisplay);
  443.     }
  444.     else if (lowerChecked && !upperUnBounded && !upperChecked)
  445.     {
  446.                 display = ConstructRangeDisplayString(L_FROM_BEFORE, ldisplay, udisplay);
  447.     }
  448.     else if (!lowerChecked && !lowerUnBounded && upperChecked)
  449.     {
  450.                 display = ConstructRangeDisplayString(L_AFTER_TO, ldisplay, udisplay);
  451.     }
  452.     else if (!lowerChecked && !lowerUnBounded && !upperChecked && !upperUnBounded)
  453.     {
  454.                 display = ConstructRangeDisplayString(L_AFTER_BEFORE, ldisplay, udisplay);
  455.     }
  456.    
  457.     if ((!lowerUnBounded) || (!upperUnBounded))
  458.     {
  459.         promptEntry = new Option(display,value,false,false);
  460.         theList.options[theList.length] = promptEntry;
  461.     }
  462.     else
  463.     {
  464.         alert(L_BadBound);
  465.     }
  466. }
  467. ////////////////////////////////////
  468. // disable check boxes based on user selection on the range parameters
  469. function disableBoundCheck(lowOrUpBound, inform, paramName) {
  470.     if (lowOrUpBound == 0) {
  471.         if (inform[paramName + "NoLowerBoundCheck"].checked) {
  472.             inform[paramName + "NoUpperBoundCheck"].disabled = true;
  473.             inform[paramName + "LowerCheck"].disabled = true;
  474.             inform[paramName + "LowerBound"].disabled = true;
  475.         }
  476.         else {
  477.             inform[paramName + "NoUpperBoundCheck"].disabled = false;
  478.             inform[paramName + "LowerCheck"].disabled = false;
  479.             inform[paramName + "LowerBound"].disabled = false;
  480.         }
  481.     } else if (lowOrUpBound == 1) {
  482.         if (inform[paramName + "NoUpperBoundCheck"].checked) {
  483.             inform[paramName + "NoLowerBoundCheck"].disabled = true;
  484.             inform[paramName + "UpperCheck"].disabled = true;
  485.             inform[paramName + "UpperBound"].disabled = true;
  486.         } else {
  487.             inform[paramName + "NoLowerBoundCheck"].disabled = false;
  488.             inform[paramName + "UpperCheck"].disabled = false;
  489.             inform[paramName + "UpperBound"].disabled = false;
  490.         }
  491.     }
  492. }
  493. ////////////////////////////////////
  494. // puts "select" value into text box for an editable prompt which also has defaults
  495. function setSelectedValue (inForm, selectCtrlName, textCtrlName, type, namePlusFix)
  496. {
  497.     var textCtrl = inForm[textCtrlName];
  498.     var selectCtrl = inForm[selectCtrlName];
  499.     var hiddenCtrl = inForm[namePlusFix+"Hidden"];
  500.     var hourCtrl = inForm[namePlusFix+"Hour"];
  501.     var minuteCtrl = inForm[namePlusFix+"Minute"];
  502.     var secondCtrl = inForm[namePlusFix+"Second"];
  503.     var ampmCtrl = inForm[namePlusFix+"AMPM"];
  504.     // if no editable input fields are there, return, do nothing;
  505.     if (textCtrl == null && hourCtrl == null)
  506.         return;
  507.     // if selectedItem is UseValue,do nothing, and return
  508.     if (selectCtrl.options[selectCtrl.selectedIndex].value == CR_USE_VALUE)
  509.     {
  510.        return;
  511.     }
  512.     if (selectCtrl.options[selectCtrl.selectedIndex].value == CR_NULL)
  513.     {
  514.        if (textCtrl != null) textCtrl.disabled = true;
  515.        if (hourCtrl != null) hourCtrl.disabled = true;
  516.        if (minuteCtrl != null) minuteCtrl.disabled = true;
  517.        if (secondCtrl != null) secondCtrl.disabled = true;
  518.        if (ampmCtrl != null) ampmCtrl.disabled = true;
  519.        return;
  520.     }
  521.     else
  522.     {
  523.        if (textCtrl != null) textCtrl.disabled = false;
  524.        if (hourCtrl != null) hourCtrl.disabled = false;
  525.        if (minuteCtrl != null) minuteCtrl.disabled = false;
  526.        if (secondCtrl != null) secondCtrl.disabled = false;
  527.        if (ampmCtrl != null) ampmCtrl.disabled = false;
  528.     }
  529.     var year, month, day;
  530.     var hour, minute, second;
  531.     if (type == "dt" || type == "d" || type == "t")
  532.     {
  533.         var sDateTime = selectCtrl.options[selectCtrl.selectedIndex].value;
  534.         if (sDateTime.length == 0)
  535.             return;
  536.         var leftIndex = sDateTime.indexOf("(");
  537.         sDateTime = sDateTime.substr(leftIndex+1, sDateTime.length - leftIndex);
  538.         var rightIndex = sDateTime.indexOf(")");
  539.         sDateTime = sDateTime.substr(0, rightIndex);
  540.         var a = sDateTime.split(",");
  541.         if (type == "dt")
  542.         {
  543.             year = a[0];
  544.             month = a[1];
  545.             day = a[2];
  546.             hour = parseInt(a[3]);
  547.             minute = parseInt(a[4]);
  548.             second = parseInt(a[5]);
  549.         }
  550.         else if (type == "d")
  551.         {
  552.             year = a[0];
  553.             month = a[1];
  554.             day = a[2];
  555.         }
  556.         else if (type == "t")
  557.         {   
  558.             hour = parseInt(a[0]);
  559.             minute = parseInt(a[1]);
  560.             second = parseInt(a[2]);
  561.         }
  562.     }
  563.     selectedOption = selectCtrl.options[selectCtrl.selectedIndex];
  564.     if (type == "dt")
  565.     {
  566.         var dt = new Date(year, month - 1, day, hour, minute, second);
  567.         textCtrl.value = GLDT(dt, true, false);
  568.         hiddenCtrl.value = "Date(";
  569.         hiddenCtrl.value += year;
  570.         hiddenCtrl.value += ",";
  571.         hiddenCtrl.value += month;
  572.         hiddenCtrl.value += ",";
  573.         hiddenCtrl.value += day;
  574.         hiddenCtrl.value += ")";
  575.         if (ampmCtrl != undefined)
  576.         {
  577.             if (hour == 0 || hour == 12)
  578.                 hourCtrl.selectedIndex = 11;
  579.             else if (hour > 12)
  580.                 hourCtrl.selectedIndex = hour - 12 - 1;
  581.             else
  582.                 hourCtrl.selectedIndex = hour - 1;
  583.         }
  584.         else
  585.             hourCtrl.selectedIndex = hour;
  586.         minuteCtrl.selectedIndex = minute;
  587.         secondCtrl.selectedIndex = second;
  588.         if (ampmCtrl != null)
  589.         { 
  590.             if ( hour >= 12)
  591.                 ampmCtrl.selectedIndex = 1;
  592.             else
  593.                 ampmCtrl.selectedIndex = 0;
  594.         }
  595.     }
  596.     else if (type == "d")
  597.     {
  598.         var dt = new Date(year, month - 1, day, 0, 0, 0);
  599.         textCtrl.value = GLDT(dt, true, false);
  600.         hiddenCtrl.value = "Date(";
  601.         hiddenCtrl.value += year;
  602.         hiddenCtrl.value += ",";
  603.         hiddenCtrl.value += month;
  604.         hiddenCtrl.value += ",";
  605.         hiddenCtrl.value += day;
  606.         hiddenCtrl.value += ")";
  607.     }
  608.     else if (type == "t")
  609.     {
  610.         if (ampmCtrl != null)
  611.         {
  612.             if (hour == 0 || hour == 12)
  613.                 hourCtrl.selectedIndex = 11;
  614.             else if (hour > 12)
  615.                 hourCtrl.selectedIndex = hour - 12 - 1;
  616.             else
  617.                 hourCtrl.selectedIndex = hour - 1;
  618.         }
  619.         else
  620.             hourCtrl.selectedIndex = hour;
  621.         minuteCtrl.selectedIndex = minute;
  622.         secondCtrl.selectedIndex = second;
  623.         if (ampmCtrl != null)
  624.         { 
  625.             if ( hour >= 12)
  626.                 ampmCtrl.selectedIndex = 1;
  627.             else
  628.                 ampmCtrl.selectedIndex = 0;
  629.         }
  630.     }
  631.     else
  632.     {
  633.         textCtrl.value = selectedOption.value;
  634.     }
  635.     if (selectCtrl.options[0].value == CR_USE_VALUE)
  636.     {
  637.         // always show USE_VALUE as selectedItem for the dropdownlist
  638.         selectCtrl.selectedIndex = 0;
  639.     }
  640. }
  641. ///////////////////////////////////
  642. // remove value from listbox where multiple value prompts are supported
  643. function removeFromListBox ( inForm, paramName )
  644. {
  645.     lbox = inForm[paramName + "ListBox"];
  646.     for ( var idx = 0; idx < lbox.options.length; )
  647.     {
  648.         if ( lbox.options[idx].selected )
  649.             lbox.options[idx] = null;
  650.         else
  651.             idx++;
  652.     }
  653. }
  654. /////////////////////////////////////
  655. // sets prompt value into the hidden form field in proper format so that it can be submitted
  656. function setPromptSingleValue (inform, type, paramName)
  657. {
  658.     //alert("SetPromptSingleValue");
  659.     hiddenField = inform[promptPrefix + paramName];
  660.     value = "";
  661.     if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked )
  662.     {
  663.         value = CR_NULL; //NULL is a literal for, uhmm.. a NULL
  664.         hiddenField.value = value;
  665.         return true;
  666.     }
  667.     // if defaultdropdownlist selected item is _crNULL_, put it into multiple listbox
  668.     var dropDownListName = paramName + "SelectValue";
  669.     var dropDownListCtrl = inform[dropDownListName];
  670.     if (dropDownListCtrl != null)
  671.     {
  672.         if (dropDownListCtrl.options[dropDownListCtrl.selectedIndex].value  == CR_NULL)
  673.         {
  674.             hiddenField.value = CR_NULL;
  675.             return true;
  676.         }
  677.     }
  678.         
  679.     discreteVal = inform[paramName + "DiscreteValue"];
  680.     if (discreteVal != undefined || inform[paramName + "DiscreteValueHour"] != undefined)
  681.     { // editable
  682.           
  683.         if ( type == "dt" || type == "d" || type == "t")
  684.         {
  685.            var hiddenCtrl = inform[paramName+"DiscreteValueHidden"];
  686.            var hourCtrl = inform[paramName+"DiscreteValueHour"];
  687.            var minuteCtrl = inform[paramName + "DiscreteValueMinute"];
  688.            var secondCtrl = inform[paramName + "DiscreteValueSecond"];
  689.            var ampmCtrl = inform[paramName + "DiscreteValueAMPM"];
  690.            value = DateTimePromptValueHelper(type, hiddenCtrl, hourCtrl, minuteCtrl, secondCtrl, ampmCtrl);
  691.            if (value.length == 0) return false;
  692.         }
  693.         else
  694.            value = discreteVal.value;
  695.     }
  696.     else
  697.     {
  698.         // not editable
  699.         discreteVal = inform[paramName+"SelectValue"];
  700.         value = discreteVal.options[discreteVal.selectedIndex].value;
  701.         //alert(value);
  702.     }
  703.     if ( ! checkSingleValue ( value, type ) ) {
  704.         if (discreteVal.focus && discreteVal.type.toLowerCase ())
  705.            discreteVal.focus ();
  706.         return false;
  707.     }
  708.     else
  709.         value = encodePrompt(value);
  710.     hiddenField.value = value;
  711.     return true;
  712. }
  713. /////////////////////////////////////
  714. // sets prompt value for a range into the hidden form field in proper format so that it can be submitted
  715. function setPromptRangeValue (inform, type, paramName)
  716. {
  717.     hiddenField = inform[promptPrefix + paramName];
  718.     if ( inform[paramName + "NULL"] != null && inform[paramName + "NULL"].checked )
  719.     {
  720.         value = CR_NULL; //NULL is a literal for, uhmm.. a NULL
  721.         hiddenField.value = value;
  722.         return true;
  723.     }
  724.         // if both defaultdropdownlists selected item is _crNULL_, put it into hiddenfield
  725.     // if one of them is _crNULL_, it is not a valid option, do nothing
  726.     var lowerDropDownListName = paramName + "SelectLowerBound";
  727.     var upperDropDownListName = paramName + "SelectUpperBound";
  728.     var lowerDropDownListCtrl = inform[lowerDropDownListName];
  729.     var upperDropDownListCtrl = inform[upperDropDownListName];
  730.     if (lowerDropDownListCtrl != null && upperDropDownListCtrl != null)
  731.     {
  732.         if (lowerDropDownListCtrl.options[lowerDropDownListCtrl.selectedIndex].value  == CR_NULL
  733.             && upperDropDownListCtrl.options[upperDropDownListCtrl.selectedIndex].value  == CR_NULL)
  734.         {
  735.             hiddenField.value = "_crNULL_";
  736.             return true;
  737.         }
  738.         else if (lowerDropDownListCtrl.options[lowerDropDownListCtrl.selectedIndex].value  == CR_NULL
  739.             || upperDropDownListCtrl.options[upperDropDownListCtrl.selectedIndex].value  == CR_NULL)
  740.         {
  741.             alert(L_BadValue);
  742.             return false;
  743.         }
  744.     }
  745.     lowerOptions = inform[paramName + "SelectLowerOptions"];
  746.     upperOptions = inform[paramName + "SelectUpperOptions"];
  747.     lowerBound = inform[paramName + "LowerBound"];
  748.     upperBound = inform[paramName + "UpperBound"];
  749.     lowerBoundHidden = inform[paramName + "LowerBoundHidden"];
  750.     upperBoundHidden = inform[paramName + "UpperBoundHidden"];
  751.     lowerBoundDropdown = inform[paramName + "SelectLowerBound"];
  752.     upperBoundDropdown = inform[paramName + "SelectUpperBound"];
  753.     var editables = true;
  754.     //handle select box, not text box case
  755.     if (lowerBound == undefined && inform[paramName + "LowerBound" + "Hour"] == undefined)
  756.     {
  757.         editables = false;
  758.         lowerBound = lowerBoundDropdown;
  759.         upperBound = upperBoundDropdown;
  760.         lowerBound = lowerBound.options[lowerBound.selectedIndex];
  761.         upperBound = upperBound.options[upperBound.selectedIndex];
  762.     }
  763.     lowerUnBounded = (lowerOptions.selectedIndex == (lowerOptions.length - 1));
  764.     upperUnBounded = (upperOptions.selectedIndex == (upperOptions.length - 1));
  765.     lowerChecked = (lowerOptions.selectedIndex == 0);
  766.     upperChecked = (upperOptions.selectedIndex == 0);
  767.     uvalue = lvalue = "";
  768.     if ( ! lowerUnBounded )
  769.     {
  770.         if ( (type == "dt" || type == "d" || type == "t") && (editables))
  771.         {
  772.             var lhourCtrl = inform[paramName+"LowerBound" + "Hour"];
  773.             var lminuteCtrl = inform[paramName + "LowerBound" + "Minute"];
  774.             var lsecondCtrl = inform[paramName + "LowerBound" + "Second"];
  775.             var lampmCtrl = inform[paramName + "LowerBound" + "AMPM"];
  776.             lvalue = DateTimePromptValueHelper(type, lowerBoundHidden, lhourCtrl, lminuteCtrl, lsecondCtrl, lampmCtrl);
  777.             if (lvalue.length == 0) return false;
  778.         }
  779.         else
  780.             lvalue = lowerBound.value;
  781.         if ( ! checkSingleValue ( lvalue, type ) ) {
  782.             if (lowerBound != undefined && lowerBound.focus)
  783.                 lowerBound.focus();
  784.             return false;
  785.         }
  786.     }
  787.     if ( ! upperUnBounded )
  788.     {
  789.         if (( type == "dt" || type == "d" || type == "t") &&  (editables))
  790.         {
  791.             var uhourCtrl = inform[paramName+"UpperBound" + "Hour"];
  792.             var uminuteCtrl = inform[paramName + "UpperBound" + "Minute"];
  793.             var usecondCtrl = inform[paramName + "UpperBound" + "Second"];
  794.             var uampmCtrl = inform[paramName + "UpperBound" + "AMPM"];
  795.             uvalue = DateTimePromptValueHelper(type, upperBoundHidden, uhourCtrl, uminuteCtrl, usecondCtrl, uampmCtrl);
  796.             if (uvalue.length == 0) return false;
  797.         }
  798.         else
  799.             uvalue = upperBound.value;
  800.         if ( ! checkSingleValue ( uvalue, type ) ) {
  801.             if (upperBound != undefined && upperBound.focus)
  802.                 upperBound.focus();
  803.             return false;
  804.         }
  805.     }
  806.     
  807.     value = lowerUnBounded ? "{" : lowerChecked ? "[" : "(";
  808.     if ( ! lowerUnBounded )
  809.         value += encodePrompt(lvalue);
  810.     value += "_crRANGE_"
  811.     if ( ! upperUnBounded )
  812.         value += encodePrompt(uvalue);
  813.     value += upperUnBounded ? "}" : upperChecked ? "]" : ")";
  814.     if ( debug )
  815.         alert (value);
  816.     if (lowerUnBounded && upperUnBounded)
  817.     {
  818.         alert(L_BadBound);
  819.         return false;
  820.     }
  821.     if (!lowerUnBounded && !upperUnBounded && !checkRangeValue(lvalue, uvalue, type))
  822.     {
  823.             return false;
  824.     }
  825.     hiddenField.value = value;
  826.     return true;
  827. }
  828. /////////////////////////////////////
  829. // sets prompt value into the hidden form field in proper format so that it can be submitted
  830. function setPromptMultipleValue (inform, type, paramName)
  831. {
  832.     hiddenField = inform[promptPrefix + paramName];
  833.     values = inform[paramName + "ListBox"].options;
  834.     if ( values.length == 0 )
  835.     {
  836.         value = "_crEMPTY_";     //if value is empty, set to empty string
  837.     }
  838.     else
  839.     {
  840.         value = "";
  841.         for ( idx = 0; idx < values.length; ++idx )
  842.         {
  843.             // first value could be empty string, then chcking value.length != 0 could miss one empty string
  844.             if ( idx != 0 )
  845.                 value += "_crMULT_"
  846.             value += values[idx].value;
  847.         }
  848.     }
  849.     
  850.     if ( debug )
  851.         alert (value);
  852.     
  853.     hiddenField.value = value;
  854.     //NOTE: we'll always return true as the validation is done before values are added to select box
  855.     return true;
  856. }
  857. ///////////////////////////////////////
  858. // check and alert user about any errors based on type of prompt
  859. var regNumber    = /^(+|-)?((d+(.|,| |u00A0)?d*)+|(d*(.|,| |u00A0)?d+)+)$/
  860. var regCurrency  = regNumber;
  861. 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)) *)$/
  862. 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 *)$/
  863. var regTime  = /^(T|t)(I|i)(M|m)(E|e) *( *([0-1]?d|2[0-3]) *, *[0-5]?d *, *[0-5]?d *)$/
  864. function checkSingleValue ( value, type )
  865. {
  866.     if ( type == 'n' && ! regNumber.test ( value ) )
  867.     {
  868.         alert ( L_BadNumber );
  869.         return false;
  870.     }
  871.     else if ( type == 'c' && ! regCurrency.test ( value ) )
  872.     {
  873.         alert ( L_BadCurrency );
  874.         return false;
  875.     }
  876.     /*else if ( type == 'd' && ! regDate.test ( value ) )
  877.     {
  878.         alert ( L_BadDate );
  879.         return false;
  880.     }
  881.     else if ( type == "dt" && ! regDateTime.test ( value ) )
  882.     {
  883.         alert ( L_BadDateTime );
  884.         return false;
  885.     }
  886.     else if ( type == 't' && ! regTime.test ( value ) )
  887.     {
  888.         alert ( L_BadTime );
  889.         return false;
  890.     }*/
  891.     //by default let it go...
  892.     return true;
  893. }
  894. function checkRangeValue (fvalue, tvalue, type)
  895. {
  896.     // determine if the start is smaller than the end
  897.     if ((type == "n") || (type == "c"))
  898.     {
  899.        // Is a number, or currency
  900.         if (eval (DelocalizeNum (fvalue)) > eval (DelocalizeNum (tvalue)))
  901.         {
  902.             alert(L_RangeError);
  903.             return false;
  904.         }
  905.     }
  906.     else if (type == "d"){
  907.         //Is a Date
  908.         if (eval("new " + fvalue) > eval("new " + tvalue)){
  909.             alert(L_RangeError);
  910.             return false;
  911.         }         
  912.     }else if (type == "t"){
  913.         //Is a Time
  914.         var comp1 = eval("new Date(0,0,0," + fvalue.substring(fvalue.indexOf('(') + 1, fvalue.indexOf(')') + 1));
  915.         var comp2 = eval("new Date(0,0,0," + tvalue.substring(tvalue.indexOf('(') + 1, tvalue.indexOf(')') + 1));
  916.         if (comp1 > comp2){
  917.             alert(L_RangeError);
  918.             return false;
  919.         }         
  920.     }else if (type == "dt"){
  921.         //Is a DateTime
  922.         var comp1 = eval("new Date" + fvalue.substring(8, fvalue.length));
  923.         var comp2 = eval("new Date" + tvalue.substring(8, tvalue.length));
  924.         if (comp1 > comp2){
  925.             alert(L_RangeError);
  926.             return false;
  927.         }         
  928.     }
  929.     else if (type == "text")
  930.     {
  931.          // is a string
  932.          if (fvalue.toLowerCase() > tvalue.toLowerCase())
  933.          {
  934.             alert(L_RangeError);
  935.             return false;
  936.          }
  937.     }
  938.     // otherwise, let it go
  939.         return true;
  940. }
  941. function DelocalizeNum(value)
  942. {
  943.         // trim spaces first
  944.         var numStr = value.replace(/s/g, "");
  945.                 
  946.         // get rid of grouping first    
  947.         var tempStr = "";
  948.         var index = numStr.indexOf(groupSep);
  949.         
  950.         while (index != -1)
  951.         {
  952.                 tempStr += numStr.substr(0, index);
  953.                 numStr = numStr.substr(index + groupSep.length, numStr.length - index - groupSep.length);
  954.                 index = numStr.indexOf(groupSep);
  955.         }
  956.         
  957.         tempStr += numStr;
  958.         index = tempStr.indexOf(decimalSep);
  959.         var neutralStr = "";
  960.         if (index != -1)
  961.         {       
  962.                 neutralStr += tempStr.substr(0, index);
  963.                 neutralStr += ".";
  964.                 neutralStr += tempStr.substr(index + decimalSep.length, tempStr.length - index - decimalSep.length);
  965.         }
  966.         else
  967.         {
  968.                 neutralStr = tempStr;
  969.         }
  970.         return neutralStr;
  971. }
  972. // Disable enter key checking for multibyte languages since the enter key is used for committing characters
  973. var isEnabledLanguage = (! ((userLanguage == "ja") || (userLanguage == "ko") || (userLanguage == "zh")) )
  974. var isNav = (navigator.appName == "Netscape");
  975. if (isEnabledLanguage)
  976. {
  977.     if(isNav) {
  978.         document.captureEvents(Event.KEYUP);
  979.     }
  980.     document.onkeyup = checkValue;
  981. }
  982. function checkValue(evt) {
  983.   var buttonVal = "";
  984.   if (isNav) {
  985.     if (evt.which == 13 && (evt.target.type == "text" || evt.target.type == "password")) {
  986.         buttonVal = evt.target.value;
  987.     }
  988.   } else {
  989.     if (window.event.keyCode == 13 && (window.event.srcElement.type == "text" || window.event.srcElement.type == "password")) {
  990.         buttonVal = window.event.srcElement.value;
  991.     }
  992.   }
  993.   if (buttonVal != "") {
  994.     submitParameterValues ();
  995.   }
  996. }