/* *+------------------------------------------------------------------------+ *| Licensed Materials - Property of IBM *| BI and PM: prmt *| (C) Copyright IBM Corp. 2002, 2021 *| *| US Government Users Restricted Rights - Use, duplication or *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp. *| *+------------------------------------------------------------------------+ */ /* TEMPORARILY DUPLICATE CONTENT OF constants.js HERE FOR STUDIOS USING prompting.js */ var K_PRMT_DEBUG = 0; var K_PRMT_DEBUG_TABLEBORDER = 0; var K_PRMT_sAPOS = "'"; var K_PRMT_sEMPTY = ""; var K_PRMT_sBACKSLASH = "\\"; var K_PRMT_sCOLON = ":"; var K_PRMT_sDBL_BACKSLASH = K_PRMT_sBACKSLASH + K_PRMT_sBACKSLASH; var K_PRMT_sDOT = "."; var K_PRMT_sEQ_QU = '="'; var K_PRMT_sG = "g"; var K_PRMT_sGI = "gi"; var K_PRMT_sGT = ">"; var K_PRMT_sLT = "<"; var K_PRMT_sSL = "/"; var K_PRMT_sSP = " "; var K_PRMT_sQU = '"'; var K_PRMT_sQU_encoded = """; var K_PRMT_sLT_SL = K_PRMT_sLT + K_PRMT_sSL; var K_PRMT_sIMG_ERROR_PREFIX = "PRMT_IMG_ERROR_"; var K_PRMT_sTIME_MIN = "T00:00:00.000"; var K_PRMT_sTIME_MAX = "T23:59:59.999"; var K_PRMT_sDV = "dv"; var K_PRMT_sNULLUSE = "nullUse"; var K_PRMT_sUSE = "use"; var K_PRMT_sDISPLAY = "display"; var K_PRMT_sATTR_DISABLED = "@disabled"; var K_PRMT_sATTR_DISPLAY_VALUE = "@displayValue"; var K_PRMT_sATTR_NULL = "@nullUse"; var K_PRMT_sATTR_USE_VALUE = "@useValue"; var K_PRMT_sDEFAULTSKIN = "../skins/corporate"; var K_PRMT_sBOOLEAN = "boolean"; var K_PRMT_sFUNCTION = "function"; var K_PRMT_sOBJECT = "object"; var K_PRMT_sSTRING = "string"; var K_PRMT_sUNDEFINED = "undefined"; var K_PRMT_sXML = "XML"; var K_PRMT_sCLS_DISABLED = "clsDisabled"; var K_PRMT_sINTERVAL_PREFIX = "PRMT_INTERVAL_"; var K_PRMT_sINTERVAL_NEGATIVE = "negative"; var K_PRMT_sINTERVAL_DAYS = "days"; var K_PRMT_sINTERVAL_HOURS = "hours"; var K_PRMT_sINTERVAL_MINUTES = "minutes"; var K_PRMT_sINTERVAL_SECONDS = "seconds"; var K_PRMT_sINTERVAL_MILLIS = "millis"; var K_PRMT_sLIST_BOX_SELECT_PREFIX = "PRMT_LIST_BOX_SELECT_"; var K_PRMT_sLIST_BUTTON_INSERT_PREFIX = "PRMT_LIST_BUTTON_INSERT_"; var K_PRMT_sLIST_BUTTON_REMOVE_PREFIX = "PRMT_LIST_BUTTON_REMOVE_"; var K_PRMT_sLIST_FEEDBACK_PREFIX = "PRMT_FB_"; var K_PRMT_sLIST_LINK_DESELECT_PREFIX = "PRMT_LIST_LINK_DESELECT_"; var K_PRMT_sLIST_LINK_SELECT_PREFIX = "PRMT_LIST_LINK_SELECT_"; var K_PRMT_sNO_SUBMIT = "NO_SUBMIT"; var K_PRMT_sRANGE_FROM_PREFIX = "F_"; var K_PRMT_sRANGE_ROW_DEFAULT_PREFIX = "PRMT_RANGE_DEFAULT_"; var K_PRMT_sRANGE_ROW_INPUT_PREFIX = "PRMT_RANGE_INPUT_"; var K_PRMT_sRANGE_TO_PREFIX = "T_"; var K_PRMT_RANGE_FORCE_BOUNDRANGE = "@forceBoundRange"; var K_PRMT_sSV_LINK_DESELECT_PREFIX = "PRMT_SV_LINK_DESELECT_"; var K_PRMT_sSV_LINK_SELECT_PREFIX = "PRMT_SV_LINK_SELECT_"; var K_PRMT_sSV_PREFIX = "PRMT_SV_"; var K_PRMT_sTB_PREFIX = "PRMT_TB_"; var K_PRMT_ALERT_CHOICES_SUFFIX = "choices"; var K_PRMT_reBLANK_STRING = new RegExp( "^\\s*$" ); var K_PRMT_reINTERVAL_FORMAT = new RegExp( "\\s*(-)?\\s*(\\d+\\s+)?\\s*(\\d+)?\\s*(:\\d+)?\\s*(:\\d+)?\\s*(\\.\\d+\\s*)?$" ); var K_PRMT_reINTERVAL_NODIGITS = new RegExp( "[^\\d]", K_PRMT_sG ); var K_PRMT_reQU = new RegExp( K_PRMT_sQU, K_PRMT_sG ); var K_PRMT_reXSD_FORMAT = new RegExp( "(-)?P(\\d+D)?T?(\\d+H)?(\\d+M)?(\\d+)?(\\.\\d+S)?" ); var K_PRMT_reTIMEPART = new RegExp( "(T\\d\\d:\\d\\d:\\d\\d\\.\\d\\d\\d)?$" ); var K_ACTION_BACK = "back"; var K_ACTION_CANCEL = "cancel"; var K_ACTION_FINISH = "finish"; var K_ACTION_FORWARD = "forward"; var K_ACTION_NEXT = "next"; var K_ACTION_PROMPT = "prompt"; var K_ACTION_REPROMPT = "reprompt"; var K_ACTION_SEARCH = "search"; // custom labels // constants specific to C_Choices var K_PRMT_LABEL_CHOICES = "@choicesText"; var K_PRMT_LABEL_INSERT = "@insertText"; var K_PRMT_LABEL_REMOVE = "@removeText"; var K_PRMT_LABEL_CHOICES_SELECT_ALL = "@choicesSelectAllText"; var K_PRMT_LABEL_CHOICES_DESELECT_ALL = "@choicesDeselectAllText"; var K_PRMT_LABEL_RESULTS_SELECT_ALL = "@resultsSelectAllText"; var K_PRMT_LABEL_RESULTS_DESELECT_ALL = "@resultsDeselectAllText"; // select value var K_PRMT_LABEL_DESELECT = "@deselectText"; // range var K_PRMT_LABEL_RANGE_FROM = "@fromText"; var K_PRMT_LABEL_RANGE_TO = "@toText"; var K_PRMT_LABEL_RANGE_LOWEST = "@lowestValueText"; var K_PRMT_LABEL_RANGE_HIGHEST = "@highestValueText"; // search var K_PRMT_LABEL_SEARCH_KEYWORDS = "@keywordsText"; var K_PRMT_LABEL_SEARCH_INSTRUCTIONS_TEXT = "@searchInstructionsText"; var K_PRMT_LABEL_SEARCH_BTN_LABEL = "@searchText"; var K_PRMT_LABEL_SEARCH_OPTIONS_TEXT = "@optionsText"; var K_PRMT_LABEL_SEARCH_RESULTS_TEXT = "@resultsText"; // interval var K_PRMT_LABEL_INTERVAL_DAYS = "@daysText"; var K_PRMT_LABEL_INTERVAL_HOURS = "@hoursText"; var K_PRMT_LABEL_INTERVAL_MINUTES = "@minutesText"; var K_PRMT_LABEL_INTERVAL_SECONDS = "@secondsText"; var K_PRMT_LABEL_INTERVAL_MILLISECONDS = "@millisecondsText"; // tree var K_PRMT_TREE_MOVE_UP = -1; var K_PRMT_TREE_MOVE_DOWN = 1; var K_PRMT_TREE_MOVE_PARENT_LEVEL = -2; var K_PRMT_TREE_MOVE_CHILD_LEVEL = 2; var K_PRMT_TREE_EXPAND = 1; var K_PRMT_TREE_COLLAPSE = -1; var K_PRMT_FOCUS_MOVE_UP = -1; var K_PRMT_FOCUS_MOVE_DOWN = 1; // keycodes var K_KEY_LEFT = 0x25; var K_KEY_UP = 0x26; var K_KEY_RIGHT = 0x27; var K_KEY_DOWN = 0x28; var K_KEY_SPACE = 0x20; var K_KEY_ENTER = 0x0d; var K_KEY_TAB = 0x09; // CSS classnames var K_PRMT_CSS_CHECKBOX_CHECKED = "dijitInline dijitCheckBox dijitCheckBoxChecked"; var K_PRMT_CSS_RADIOBUTTON_CHECKED = "dijitInline dijitRadio dijitRadioChecked"; var K_PRMT_CSS_CHECKBOX = "dijitInline dijitCheckBox"; var K_PRMT_CSS_RADIOBUTTON = "dijitInline dijitRadio"; var K_PRMT_CSS_CHECKBOX_PARTIAL = "dijitInline dijitCheckBox dijitCheckBoxMixed"; var K_PRMT_TREE_TOGGLE_CLOSED = "dijitTreeExpando dijitTreeExpandoClosed"; var K_PRMT_TREE_TOGGLE_OPENED = "dijitTreeExpando dijitTreeExpandoOpened"; var K_PRMT_TREE_TOGGLE_NONE = "dijitTreeExpando dijitTreeExpandoNone"; var K_PRMT_TREE_TOGGLE_TEXT = "dijitExpandoText"; // ARIA, tree roles var K_PRMT_ARIA_ROLE = "role"; var K_PRMT_ARIA_SELECTED = "aria-selected"; var K_PRMT_ARIA_CHECKED = "aria-checked"; var K_PRMT_ARIA_ROLE_PRESENTATION = "presentation"; var K_PRMT_TREE_ROLE_TREEITEM = "treeitem"; var K_PRMT_TREE_ROLE_TREE = "tree"; var K_PRMT_TREE_ROLE_GROUP = "group"; var K_PRMT_TREE_ROLE_CHECKBOX = "checkbox"; var K_PRMT_TREE_STATE_EXPANDED = "aria-expanded"; var K_PRMT_TREE_ROLE_BUTTON = "button"; var K_PRMT_SF_CONTAINER = "PRMT_SF_CONTAINER"; var K_PRMT_SF_INPUT_PREFIX = "PRMT_SF_INPUT_"; /* END OF constants. */ // // This is the main JavaScript file for prompting. It is actually required for the report as well as prompt pages because // there is little difference between the two. // var gsCSS_DEFAULT_STYLE = "align,background,border,clear,direction,display,float,height,margin,overflow,padding,vertical-align,visibility,width"; // This function is used to specify whether to go back a prompt page // or go to the next prompt page // method='back' or 'forward' function SetPromptMethod(setting) { var frm = document.forms[0]; if (frm["ui.action"]) { frm["ui.action"].value = setting; } if (frm.method) { frm.method.value = setting; } } //return the current method (e.g. 'back' or 'forward') //the method determines whether to move forward or //backwards through prompt pages function GetPromptMethod() { var setting; var frm = document.forms[0]; if (frm) { if (frm.method) { setting = frm.method.value; } if (frm["ui.action"]) { setting = frm["ui.action"].value; } } return setting; } // This function is used to tell the server // to Finish a prompt page and run the report // finish now: 'false' // continue prompting: 'true' function SetPromptContinue(setting) { var frm = document.forms[0]; if (frm["run.prompt"]) { frm["run.prompt"].value = setting; } if (frm.prompt) { frm.prompt.value = setting; } } // This function is used to control reprompting. Call it with "prompt" and the request will be resubmitted and the query // will be reexectued, unlike the next page request function SetPromptControl(setting) { if ( f_CSW_tryCVPromptAction(setting) || f_getPromptRequestSubmitFlag() ) { return false; } f_setPromptRequestSubmitFlag(true); //test that all required fields are valid var bSubmit = true; var aPreProcess = getPreProcessControlArray(); if (aPreProcess) { preProcessForm(aPreProcess); //don't verify if this is a reprompt or search if ( needPromptValidation(setting) ) { bSubmit = canSubmitPrompt(); } } //validate are required fields before submitting if (bSubmit === true) { var frm = document.forms[0]; genHiddenInputHTML( frm.name, "_promptControl", setting ); if (setting == K_ACTION_REPROMPT) { //set the proper server method SetPromptMethod(K_ACTION_FORWARD); } frm.submit(); return true; } return false; } /** Call this function to know if all required prompts have valid inputs. */ function canSubmitPrompt(autoSubmitParameter, optionalCVObject) { var bFormValid = true; var aPreProcess = getPreProcessControlArray(optionalCVObject); if (aPreProcess) { var kCount = aPreProcess.length; var k = 0; for (k=0; k/g, ">"); } else if (!sInputString) { //return empty string if the value is null or false sOutputString = K_PRMT_sEMPTY; } return sOutputString; } //Localize Strings //Used to perform string substitutions to localize strings //in a placement neutral way. //for example: replace ^1 with '10' in the string //"values between ^1 and ^2" function sReplaceToken(sMessage, sTokenValue, sNewValue) { var newString = K_PRMT_sEMPTY; var startPtr = 0; var tempStrPtr = sMessage.indexOf(sTokenValue); while (tempStrPtr > -1) { newString += sMessage.substring(startPtr, tempStrPtr); newString += sNewValue; startPtr = tempStrPtr + sTokenValue.length; tempStrPtr = sMessage.indexOf(sTokenValue, startPtr); } newString += sMessage.substring(startPtr, sMessage.length); return newString; } //Strip leading and trailing quotes from a string //this function is used to return the value of a //string in single quotes function stripSingleQuote(s) { var newString = s; //strip the trailing quote var rTrailingQuote = /[']$/; newString = newString.replace (rTrailingQuote, K_PRMT_sEMPTY); //strip leading quote var rLeadingQuote = /^[']/; newString = newString.replace (rLeadingQuote, K_PRMT_sEMPTY); return newString; } //return a string for use in regular expressions //that takes care of escape values that may be part //of regular expression syntax function sEscapeRegularExpression(sRegExpString) { //replace . sRegExpString = sRegExpString.replace(/\./g, K_PRMT_sBACKSLASH + K_PRMT_sDOT); //replace $ sRegExpString = sRegExpString.replace(/\$/g, K_PRMT_sBACKSLASH + "$"); //replace ( sRegExpString = sRegExpString.replace(/\(/g, K_PRMT_sBACKSLASH + "("); //replace ) sRegExpString = sRegExpString.replace(/\)/g, K_PRMT_sBACKSLASH + ")"); //replace + sRegExpString = sRegExpString.replace(/\+/g, K_PRMT_sBACKSLASH + "+"); return sRegExpString; } /* button functions */ function buttonOver (obj) { obj.className = "clsToolbarButton_hover"; } function buttonOut (obj) { obj.className = "clsToolbarButton"; } function buttonDown (obj) { obj.className = "clsToolbarButton_active"; } /* Dynamic HTML positioning functions */ //walk up through a document and pass the total offset function iOffsetFromBodyX(obj) { var oChild = obj; var iTotalOffsetX = 0; do { if (iTotalOffsetX + oChild.offsetLeft >= 0) { iTotalOffsetX += oChild.offsetLeft; } oChild = oChild.offsetParent; } while (oChild !== null); return iTotalOffsetX; } //walk up through a document and pass the total offset function iOffsetFromBodyY(obj) { var oChild = obj; var iTotalOffsetY = 0; do { iTotalOffsetY += oChild.offsetTop; oChild = oChild.offsetParent; } while ((oChild !== null) && (oChild.id != 'RVContent')); return iTotalOffsetY; } /* Page level notification functions */ // This notifies observers of any changes on the page function notify(iState, oNotifier) { //notify any range controls to update their states if ((typeof rangeNotify != K_PRMT_sUNDEFINED) && (rangeNotify) ) { rangeNotify(); } //notify any prompt buttons to update their states if ((typeof promptButtonNotify != K_PRMT_sUNDEFINED) && (promptButtonNotify) ) { promptButtonNotify(); } //notify any multiple selection controls to update their states if ((typeof multipleObserverNotify != K_PRMT_sUNDEFINED) && (multipleObserverNotify) ) { multipleObserverNotify(); } for (var idxNotif = 0; idxNotif < gaNotifyTargets.length; idxNotif++) { var oTarget = gaNotifyTargets[idxNotif]; if (typeof oTarget != K_PRMT_sUNDEFINED && typeof oTarget.notify == K_PRMT_sFUNCTION) { oTarget.notify(iState, oNotifier); } } } //send notifications to multiple choice controls //this allows the compound multiple choice prompts to //listen for changes in state to their child controls function multipleObserverNotify() { if ((typeof multipleObserverArray != K_PRMT_sUNDEFINED) && (multipleObserverArray)) { var kCount = multipleObserverArray.length; var k = 0; for (k=0; k" + PMT_UIM_INSERT + " " + PMT_UIM_INSERTTIP + ""; renderPromptControlHTML("getInsertButton" + sPromptId, HTMLOut); } function genRemoveButtonHTML(sPromptId, defaultAction, sName) { if (!verifyPromptId(sPromptId)) { return; } var HTMLOut = ""; renderPromptControlHTML("getRemoveButton" + sPromptId, HTMLOut); } // This function returns the path to the skin folder // to use for prompt controls. function getPromptSkin() { if (typeof p_sSkinFolder == K_PRMT_sSTRING && p_sSkinFolder) { return p_sSkinFolder; } // return the default skin folder. return (getWebContentURI() + "/skins/corporate"); } function getWebContentURI() { var v_sURI = ".."; if (typeof p_sWebContentURI == K_PRMT_sSTRING && p_sWebContentURI) { v_sURI = p_sWebContentURI; } else { var vBase = document.getElementsByTagName("base"); if (vBase) { v_sURI += "/.."; } } return v_sURI; } function StringArray() { this.stringArray = []; this.append = StringArray_append; this.toString = StringArray_toString; this.reset = StringArray_reset; } function StringArray_append(strValue) { this.stringArray[this.stringArray.length]= strValue; } function StringArray_toString() { return this.stringArray.join(K_PRMT_sEMPTY); } function StringArray_reset() { this.stringArray = []; } function jsEncodeStr(str) { if (typeof str == K_PRMT_sUNDEFINED || !str) { return K_PRMT_sEMPTY; } if (typeof str != K_PRMT_sSTRING) { return str; } var reBackSlash = new RegExp( K_PRMT_sDBL_BACKSLASH, K_PRMT_sG ); return str.replace(reBackSlash, K_PRMT_sDBL_BACKSLASH).replace(K_PRMT_reQU, K_PRMT_sBACKSLASH + K_PRMT_sQU); } function jsDecodeStr(str) { if (typeof str == K_PRMT_sUNDEFINED || !str) { return K_PRMT_sEMPTY; } if (typeof str != K_PRMT_sSTRING) { return str; } var reBackSlashApos = new RegExp( K_PRMT_sDBL_BACKSLASH + K_PRMT_sAPOS, K_PRMT_sG ); var reBackSlashQuote = new RegExp( K_PRMT_sDBL_BACKSLASH + K_PRMT_sQU, K_PRMT_sG ); var reBSBS = new RegExp( K_PRMT_sDBL_BACKSLASH + K_PRMT_sDBL_BACKSLASH, K_PRMT_sG ); var reLT = new RegExp( K_PRMT_sDBL_BACKSLASH + K_PRMT_sLT, K_PRMT_sG ); var reGT = new RegExp( K_PRMT_sDBL_BACKSLASH + K_PRMT_sGT, K_PRMT_sG ); return str.replace(reBackSlashApos, K_PRMT_sAPOS).replace(reBackSlashQuote, K_PRMT_sQU).replace(reGT, K_PRMT_sGT).replace(reLT, K_PRMT_sLT).replace(reBSBS, K_PRMT_sBACKSLASH); } function verifyPromptId(sPromptId) { if (sPromptId.indexOf( K_PRMT_sBACKSLASH + "U003C") > -1 || sPromptId.indexOf(K_PRMT_sBACKSLASH + "U003E") > -1 ) { return false; } return true; } //creates an escape character that won't break when put in a javascript string or written to HTML function alterDoubleQuote(str) { if (typeof str == K_PRMT_sUNDEFINED || !str) { return K_PRMT_sEMPTY; } var reQ1 = new RegExp( K_PRMT_sDBL_BACKSLASH + K_PRMT_sQU, K_PRMT_sG ); return str.replace(reQ1, '~quote~').replace(K_PRMT_reQU, '~quote~'); } /** Add or update a field in a form. @param {string} sFormName name of the form in which to add/update the form field. @param {string} sInputName name of the form field to add/update @param {string} sValue value to use for the form field. */ function addHiddenInputHTML(sFormName, sInputName, sValue) { var sHTML = genHiddenInputHTML(sFormName, sInputName, sValue); if (sHTML) { document.write(sHTML); } } /** Update a field in a form or generate the HTML if the
is not ready yet. @param {string} sFormName name of the form in which to add/update the form field. @param {string} sInputName name of the form field to add/update @param {string} sValue value to use for the form field. @type string @return A HTML string that represents the field to add. The string is empty is the or the already exists. */ function genHiddenInputHTML(sFormName, sInputName, sValue) { var sHTML = K_PRMT_sEMPTY; var oInput = null; var oForm = document.forms[sFormName]; if (oForm) { oInput = oForm.elements[sInputName]; // [IE] We check for the readyState because IE have issues when adding nodes (with appendChild) when the page isn't fully parsed. if (!oInput && (!document.readyState || document.readyState == "complete")) { oInput = document.createElement("input"); oInput.type = "hidden"; oInput.id = sInputName; oInput.name = sInputName; oInput.value = sValue; oForm.appendChild(oInput); } } if (oInput) { oInput.value = (sValue === null ? K_PRMT_sEMPTY : sValue); } else { sHTML = ''; } return sHTML; } function addSelectChoices(oSubmit, sValues) { var sSubmitValues = oSubmit.value; if (typeof sSubmitValues != K_PRMT_sSTRING || !sSubmitValues) { sSubmitValues = ""; } if (typeof sValues == K_PRMT_sSTRING && sSubmitValues.indexOf(sValues) == -1) { // strip out from previous values sSubmitValues = sSubmitValues.replace(/^\s*\s*/i,K_PRMT_sEMPTY).replace(/\s*<\/selectChoices>\s*$/i,K_PRMT_sEMPTY); sValues = sValues.replace(/^\s*\s*/i,K_PRMT_sEMPTY).replace(/\s*<\/selectChoices>\s*$/i,K_PRMT_sEMPTY); // add new values sSubmitValues = "" + sSubmitValues + sValues + ""; } oSubmit.value = sSubmitValues; } function registerForNotications(oObject) { if (typeof oObject != K_PRMT_sUNDEFINED) { gaNotifyTargets[gaNotifyTargets.length] = oObject; } } function CPromptControl() { this.m_sCVId = K_PRMT_sEMPTY; } CPromptControl.prototype.checkPass = function() { if (this.m_oErrorFeedback) { this.m_oErrorFeedback.className = "clsFeedbackWidget"; } this.notify(gPASS, this); }; //render the validation error state CPromptControl.prototype.checkFail = function() { if (this.m_oErrorFeedback) { this.m_oErrorFeedback.className = (typeof this.m_sErrorFeedbackClass == K_PRMT_sSTRING ? this.m_sErrorFeedbackClass : "clsFeedbackWidgetParseError"); } this.notify(gFAIL, this); }; CPromptControl.prototype.getCV = function() { var oRetVal = window; if (typeof this.m_oCV == K_PRMT_sOBJECT) { oRetVal = this.m_oCV; } else { try { oRetVal = eval("oCV" + this.getCVId()); if (typeof oRetVal == K_PRMT_sOBJECT) { this.m_oCV = oRetVal; } } catch (e) { oRetVal = window; } } return oRetVal; }; CPromptControl.prototype.getCVId = function() { return this.m_sCVId; }; CPromptControl.prototype.getObserverArray = function(v_sName) { var v_a = null; var oCV = this.getCV(); if (typeof oCV != K_PRMT_sUNDEFINED) { v_a = oCV[v_sName]; } return v_a; }; //get the validity without checking the data first CPromptControl.prototype.getValid = function() { return this.m_bValid; }; CPromptControl.prototype.notify = function(iState, oNotifier) { var oCV = this.getCV(); if (oCV && typeof oCV.notify == K_PRMT_sFUNCTION) { oCV.notify(iState, oNotifier); } }; CPromptControl.prototype.f_isBUX = function() { var v_oCV = this.getCV(); return (typeof v_oCV == K_PRMT_sOBJECT && v_oCV.isBux? true :false); }; CPromptControl.prototype.isRequired = function() { return (this.m_bRequired===true); }; CPromptControl.prototype.isValid = function() { if (typeof this.checkData == K_PRMT_sFUNCTION) { this.checkData(); } return (this.m_bValid===true); }; //Trap whether the user has pressed the delete key //in the choices box. Note that this function is //IE specific CPromptControl.prototype.catchDeleteKey = function(iKeyCode) { //catch the Delete key code if (iKeyCode == 46 && typeof this.remove == K_PRMT_sFUNCTION) { this.remove(this.m_oLstChoices); } }; CPromptControl.prototype.removeSelectedChoices = function() { var iFirstSelection = null; if (typeof this.m_oLstChoices == K_PRMT_sOBJECT) { iFirstSelection = this.m_oLstChoices.selectedIndex; } if (typeof iFirstSelection != "number") { return; } if (iFirstSelection != -1) { for (var idxSelection = this.m_oLstChoices.options.length-1; idxSelection > -1 ; idxSelection--) { if (this.m_oLstChoices.options[idxSelection].selected) { this.m_oLstChoices.options[idxSelection] = null; } } } else { var sPrompt_Select_Item_First = "sPrompt_Select_Item_First"; if (typeof PMT_UIM_sPrompt_Select_Item_First == K_PRMT_sSTRING) { sPrompt_Select_Item_First = PMT_UIM_sPrompt_Select_Item_First; } alert(sPrompt_Select_Item_First); } this.checkData(); }; CPromptControl.prototype.addOptions = function(aOptions) { var sDisplayValue, sUseValue, bSel; if (aOptions instanceof Array) { for (var idxOption = 0; idxOption < aOptions.length; idxOption++) { var aOpt = aOptions[idxOption]; if (aOpt && aOpt.length) { sDisplayValue = (aOpt.length > 0 ? aOpt[0] : K_PRMT_sEMPTY); sUseValue = (aOpt.length > 1 ? aOpt[1] : K_PRMT_sEMPTY); bSel = (aOpt.length > 2 ? aOpt[2] : false); sParent = (aOpt.length > 3 ? aOpt[3] : null); this.addNoUpdate(sDisplayValue, sUseValue, bSel, sParent); } } this.update(); } }; CPromptControl.prototype.setCVId = function(sId) { if (typeof sId == K_PRMT_sSTRING && sId !== K_PRMT_sEMPTY & sId != K_PRMT_sUNDEFINED) { this.m_sCVId = sId; } // Signal viewer that a prompt control was created. // The assumption is all classes derived from this class invoke // this method in their constructor. var cv = this.getCV(); if (cv && typeof cv.setHasPrompts == "function") { cv.setHasPrompts(true); } }; function renderPromptControlHTML(sElementId, sHTML) { var oElement = document.getElementById(sElementId); if (oElement !== null) { oElement.innerHTML = sHTML; } } function executePromptControlJS(sJSCode) { eval(sJSCode); } function generatePromptProperties(oPropertiesSource, oPropertiesToAdd) { var sRetval = K_PRMT_sEMPTY; var oProperties = oPropertiesSource; if (oPropertiesToAdd) { // clone oProperties first, to prevent overridding values in oPropertiesSource. oProperties = {}; for (var idxProp in oPropertiesSource) { oProperties[idxProp] = oPropertiesSource[idxProp]; } // add new values for (var idxPropToAdd in oPropertiesToAdd) { oProperties[idxPropToAdd] = oPropertiesToAdd[idxPropToAdd]; } } for (var idxProp in oProperties) { if(sRetval) { sRetval += ","; } sRetval += idxProp + K_PRMT_sCOLON; switch(typeof oProperties[idxProp]) { case K_PRMT_sSTRING: // replace \ by \\, ' by \' and