var calcList;
var sizeofCalcListItem = 2;
function populateCalculationList (calcType, validCalcs, calcNumberType) {
var calcNumberBreaks = new Array(0, 9, 13, 21, 22);
var calcNumberBreaks = new Array(0, 9, 12, 20, 21);
var calcNumberList = false;
switch (calcType)
{
case "number":
calcNumberList = new Array(
"",
"",
""
/***** TEMPORARY *****/
//,
//""
/***** TEMPORARY *****/
);
calcList = new Array(
//Arithmetic
"", "+",
"", "-",
"", "*",
"", "/",
"", "power",
"", "absolute",
"", "round",
"", "round down",
"", "sqrt",
//Percentage
"", "%",
"", "% total Percentage",
"", "% footer Percentage",
"", "% difference",
//Analytic
"", "average",
"", "maximum",
"", "minimum",
"", "rank",
"", "% total Analytic",
"", "percentile",
"", "quartile",
"", "quantile"
/***** TEMPORARY *****/
//,
//"", "concat"
/***** TEMPORARY *****/
);
break;
case "string":
calcList = new Array(
"", "left",
"", "right",
"", "concat",
"", "trim"
);
break;
case "date":
calcList = new Array(
"", "-",
"", "daysBetween",
"", "monthsBetween",
"", "yearsBetween",
"", "addDays",
"", "addMonths",
"", "addYears",
"", "min",
"", "max",
"", "year",
"", "month",
"", "week",
"", "day"
/***** TEMPORARY *****/
//,
//"", "concat"
/***** TEMPORARY *****/
);
break;
case "time":
calcList = new Array(
"", "-",
"", "min",
"", "max",
"", "hour",
"", "minute",
"", "second"
/***** TEMPORARY *****/
//,
//"", "concat"
/***** TEMPORARY *****/
);
break;
case "datetime":
calcList = new Array(
"", "-",
"", "daysBetween",
"", "monthsBetween",
"", "yearsBetween",
"", "addDays",
"", "addMonths",
"", "addYears",
"", "min",
"", "max",
"", "year",
"", "month",
"", "week",
"", "day",
"", "hour",
"", "minute",
"", "second"
/***** TEMPORARY *****/
//,
//"", "concat"
/***** TEMPORARY *****/
);
break;
case "interval":
calcList = new Array(
"", "+",
"", "-",
"", "days",
"", "max",
"", "min",
"", "rank"
/***** TEMPORARY *****/
//,
//"", "concat"
/***** TEMPORARY *****/
);
break;
default:
calcList = new Array(
"", "concat"
);
break;
}
if (calcNumberList)
{
var ii, iiEnd;
// populate calculation list
switch (calcNumberType)
{
case "arithmetic":
ii = 0;
iiEnd = calcNumberBreaks[1];
break;
case "percentage":
ii = calcNumberBreaks[1];
iiEnd = calcNumberBreaks[2];
break;
case "analytic":
ii = calcNumberBreaks[2];
iiEnd = calcNumberBreaks[3];
break;
default:
ii = calcNumberBreaks[3];
iiEnd = calcNumberBreaks[4];
break;
}
for (var i = 0; i < validCalcs.length; i++)
{
if ((validCalcs[i] >= ii) && (validCalcs[i] < iiEnd))
{
// calcList load
var o = new Option();
o.name = calcList[validCalcs[i] * sizeofCalcListItem];
o.text = calcList[validCalcs[i] * sizeofCalcListItem];
o.value = calcList[validCalcs[i] * sizeofCalcListItem + 1];
document.f.calcList.options[document.f.calcList.options.length] = o;
}
}
for (ii = 0; ii < calcNumberList.length; ii++)
{
// calcNumberList load
var o = new Option();
o.name = calcNumberList[ii];
o.text = calcNumberList[ii];
o.value = calcNumberBreaks[ii];
document.f.calcNumberList.options[document.f.calcNumberList.options.length] = o;
}
}
else
{
// populate calculation list
for (var i = 0; i < validCalcs.length; i++)
{
// calcList load
var o = new Option();
o.name = calcList[validCalcs[i] * sizeofCalcListItem];
o.text = calcList[validCalcs[i] * sizeofCalcListItem];
o.value = calcList[validCalcs[i] * sizeofCalcListItem + 1];
document.f.calcList.options[document.f.calcList.options.length] = o;
}
}
getConfigFrame().cfgRemove("CALCULATION_REFRESH");
}
function loadHint() {
if (document.f.calc_hint != null)
document.f.calc_hint.value = generateName(true);
else
setTimeout("loadHint()", 10);
}
function onSelOperation() {
if (typeof load == "function")
load ();
setGlobals(calcType, false);
if (!getConfigFrame().refreshNewCalculation(calcType, getConfigFrame().cfgGet("CALCULATION_REFRESH")))
loadHint ();
}
function setGlobals(calcType, bClear) {
var cf = getConfigFrame();
// keep previous selection
var _calcIndex = cf.cfgGet("CALCULATION_INDEX_" + calcType.toUpperCase());
if (_calcIndex != null)
cf.cfgSet("CALCULATION_PREVIOUS_INDEX_" + calcType.toUpperCase(), _calcIndex);
if (bClear)
{
cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase());
cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER");
}
else
{
if (document.f.calcNumberList)
{
cf.cfgSet("CALCULATION_INDEX_NUMERIC_TYPE", document.f.calcNumberList.selectedIndex);
cf.cfgSet("CALCULATION_INDEX_NUMERIC_TYPE_VALUE", document.f.calcNumberList[document.f.calcNumberList.selectedIndex].value);
var indexToUse = -1;
for (var i = 0; i < calcList.length; i++)
{
if (document.f.calcList.value == calcList[i])
{
indexToUse = (i - 1) / sizeofCalcListItem;
indexToUse -= document.f.calcNumberList[document.f.calcNumberList.selectedIndex].value;
break;
}
}
if (indexToUse >= 0)
cf.cfgSet("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER", indexToUse);
else
cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER");
}
else
cf.cfgRemove("CALCULATION_INDEX_" + calcType.toUpperCase() + "_BUMPER");
cf.cfgSet("CALCULATION_INDEX_" + calcType.toUpperCase(), document.f.calcList.selectedIndex);
}
if (cf && cf.showDialogFrame)
cf.showDialogFrame(475);
cf.showDialogFrame(410);
}
function removeInsert() {
document.getElementById("calcInsert").removeAttribute("href");
}
function addInsert() {
document.getElementById("calcInsert").setAttribute("href", "javascript:doInsert(null)");
}
function doInsert(evt) {
if(goDialogManager.isSpaceOrEnterKeyEvent(evt))
{
setGlobals(calcType, true);
execute();
}
}
function cancelDialog(evt) {
if(goDialogManager.isSpaceOrEnterKeyEvent(evt))
{
setGlobals(calcType, true);
getConfigFrame().hideDialogFrame();
}
}
function stringReplace(origString, valToReplace, newString) {
var strRegExp = new RegExp();
strRegExp.compile(valToReplace, "g");
//if we have $ in string then replace $ lteral with $$ literal as $ carries special meaning of "End of String"
var repNewString = new String(newString);
repNewString = repNewString.replace(/\$/g,"$$$$");
return origString.replace(strRegExp, repNewString);
}
function catchSubmit(iKeyCode) {
//catch the Enter key code
if (iKeyCode == 13)
{
execute();
}
}
function updateValueField(substString, substValue)
{
//the case where text boxes need to be seamlessley hidden and shown depending on the type of data
if (document.getElementById("textBoxNumeric"))
{
if (substString == null)
{
if (getDisplayStyle("textBoxNumeric") != "none" && textBoxnumberValue && textBoxnumberValue.isValid())
{
textBoxnumberValue.m_oForm.select();
}
else
{
if (textBoxstringValue) {
textBoxstringValue.clear();
}
setDisplayStyle("textBoxString", "none");
if (document.all)
setDisplayStyle("textBoxNumeric", "inline");
else
setDisplayStyle("textBoxNumeric", "table-cell");
if (textBoxnumberValue && textBoxnumberValue.m_oForm) {
textBoxnumberValue.m_oForm.select();
}
redrawHint();
}
}
else
{
if (textBoxnumberValue) {
textBoxnumberValue.clear();
}
setDisplayStyle("textBoxNumeric", "none");
if (document.all)
setDisplayStyle("textBoxString", "inline");
else
setDisplayStyle("textBoxString", "table-cell");
if (textBoxstringValue && textBoxstringValue.m_oForm) {
textBoxstringValue.m_oForm.value=substString;
}
substVarValue = substValue;
redrawHint();
}
}
//the case where the textbox does not need to be hidden since a radio button is provided
else
{
document.f.inputValueRadio[1].checked = true;
if (textBoxstringValue && textBoxstringValue.m_oForm) {
textBoxstringValue.m_oForm.value = substString;
}
substVarValue = substValue;
redrawHint();
}
}
function setDisplayStyle(id, styleValue)
{
var obj = document.getElementById(id);
if (obj && obj.style && obj.style) {
obj.style.display = styleValue;
}
}
function getDisplayStyle(id)
{
var obj = document.getElementById(id);
if (obj && obj.style && obj.style.display) {
return obj.style.display;
}
return null;
}
function checkOverflowOnSelect(selectObj)
{
var minimumWidth = 260;
selectObj.style.width = "auto";
if (selectObj.offsetWidth <= minimumWidth)
selectObj.style.width = minimumWidth + "px";
}
function getCalcName()
{
var calcName = "";
if (document.f.calc_label[1].checked == true)
{
calcName = document.f.calc_label_text.value;
if (calcName == "")
{
calcName = generateName();
}
}
else
{
calcName = generateName();
}
return calcName;
}
javascript:if (event.keyCode == 13) execute();
var buttonContainerStyle = new CUIStyle('mainHeader3', '', '', '', '');
var buttonStyle = new CUIStyle('dialogButton', 'dialogButtonOver', '', '', '');
var menuItemStyle = new CUIStyle('menuItem_normal', 'menuItem_hover', '', '', 'menuItem_disabled');
var menuStyle = new CUIStyle('clsMenu', '', '', '', '');
var substButtonContainer = new CBar('buttonContainer', buttonContainerStyle, null, '/common/images/toolbar/');
var bHideMenuButton = true;
var substButton = new CToolbarButton(substButtonContainer, '', '/qs/images/substitution_variables.gif', '', buttonStyle, true, null, null, '');
var substButtonDropDown = substButton.createDropDownMenu(menuStyle);
new CMenuItem(substButtonDropDown, '', 'javascript:updateValueField(null, null);', '', menuItemStyle, '', '');
var numConstants = cf.dlgGlobalSize("xxSubstVarPair");
for (var i = 0; i < numConstants; i++)
{
var substVarPair = cf.dlgGlobalGetParmAt('xxSubstVarPair', i)
new CMenuItem(substButtonDropDown, substVarPair[0], 'javascript:updateValueField("' + substVarPair[0] + '", "' + substVarPair[1] + '");', '', menuItemStyle, '', '');
}
substButtonContainer.setMenuType(cHorizonalBar);
substButtonContainer.setAlign('left');
substButtonContainer.draw();