// Licensed Materials - Property of IBM // // IBM Cognos Products: pps // // (C) Copyright IBM Corp. 2005, 2017 // // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. // This forms the javascript functions used for the Add/Edit pane of the // Custom Exceptions feature of PowerPlay Studio. // The functions handle any minor browser differences. var PPWB_CUSTOM_EXCEPTION_DEFAULT_BACKGROUND = "FFFFFF"; var PPWB_CUSTOM_EXCEPTION_DEFAULT_FOREGROUND = "000000"; var isNSBrowser = navigator.appName.indexOf("Netscape")>=0; if( navigator.appVersion == "" ) isNSBrowser = false; var isNSMac = isNSBrowser && navigator.platform.indexOf("Mac") >= 0; var isIE = false; // Microsoft Internet Explorer var isNS4 = false; // Netscape 4+ var isW3C = false; // W3C compliant (inc NS6) var isUnknown = true; // in case something else comes along if (document.getElementById) { isW3C = true ; // NS6, MSIE 5, 6 and Opera 6.01 in Opera mode isUnknown = false; } if (document.all) { isIE = true ; // MSIE (all versions) and Opera 6.01 in MSIE 5 mode isUnknown = false; } if (document.layers) { isNS4 = true ; // NS 4 isUnknown = false; } var colorLookUpTable = new Array( "000000", "C0C0C0", "808080", "FFFFFF", "800000", "FF0000", "800080", "FF00FF", "008000", "00FF00", "808000", "FFFF00", "000080", "0000FF", "008080", "00FFFF"); function InputKeypress(event) { if ("13" == event.keyCode) { if (isNSBrowser) event.stopPropagation(); return false; } } function findObj(n, d) { var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p); } if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i 0) from = from.substr(0, pos) + "." + from.substr(pos+1, from.length); ranges += from; } ranges += _rseparator; //maximum if (to.toLowerCase() != strMax) { pos = to.search(eval(validChars)); if (pos != -1 || to.indexOf(decimalpt) != to.lastIndexOf(decimalpt)) { writeErrorMessage(invalidRangeValueErr); return (-1); } pos = to.search(decimalpt); if (pos > 0) to = to.substr(0,pos) + "." + to.substr(pos+1, to.length); ranges += to; } ranges += _rseparator; if (parseFloat(from) > parseFloat(to)) { writeErrorMessage(invalidRangeErr); return (-1); } var strFont = findObj("FGColor" + i).value; var strCell = findObj("BGColor" + i).value; var strFont = getHexColorValue(findObj("FGColor" + i)); var strCell = getHexColorValue(findObj("BGColor" + i)); strFont = strFont.toUpperCase(); ranges += strFont; ranges += _rseparator; strCell = strCell.toUpperCase(); ranges += strCell; ranges += ';'; } else if (from != "" || to != "") { writeErrorMessage(missingRangeValueErr); return (-1); } } //Error: no valid ranges if (ranges.length <= 0) { writeErrorMessage(noValidRangeErr); return (-1); } //trim off trailing ';' ranges = ranges.substr(0, ranges.length-1); def += ranges; return (def); } function isDuplicateName (name, otherEx) { //nothing to check! if (otherEx.length <= 0) { return false; } var tabPos = otherEx.indexOf('\t\t', 0); if (tabPos > 0) { otherEx = otherEx.substr(0, tabPos); } while (otherEx.charAt(0) == '\t') { otherEx = otherEx.substr(1); } var fwdPtr = 0; var backPtr = -1; while (fwdPtr >= 0) { fwdPtr = otherEx.indexOf('\t', backPtr+1); if (name.toLowerCase() == otherEx.substr(backPtr+1, fwdPtr-(backPtr+1)).toLowerCase()) { return true; //duplicate...return TRUE } fwdPtr = otherEx.indexOf('\t', fwdPtr+1); backPtr = fwdPtr; } //unique name...return FALSE return false; } function getStartPosition() { var selectedVal = parent.getSelException()-1; if (selectedVal < 0) { return -1; } var customX = findObj("EX1", winFX.document).value; var count = 0; for (var i = 0; i < selectedVal*2; i++) { count = customX.indexOf('\t', count+1) ; } if (customX.charAt(count) == '\t') { return count+1; } else { return count; } } function getEndPosition(startCount) { var customX = findObj("EX1", winFX.document).value; var endCount = customX.indexOf('\t', startCount); endCount = customX.indexOf('\t', endCount+1); if (endCount < 0) return customX.length; return endCount; } function saveDefinition() { if (parent.isXtabStillLoading()) { setTimeout("saveDefinition()", 50); return; } var beforeX, afterX, currentX; var customX = findObj("EX1", winFX.document).value; var end; var start = getStartPosition(); if (start < 0 || findObj("AddOrEdit").value == 'A') { //must be a new one!! look for '\t\t'... var tabPos = customX.indexOf('\t\t', 0); if (tabPos < 0) { if (customX.length > 0) { beforeX = customX + '\t'; } else { beforeX = ""; } end = -1; } else { if (tabPos > 0) beforeX = customX.substr(0, tabPos) + '\t'; else beforeX = ""; end = tabPos; } } else { beforeX = customX.substr(0, start); end = getEndPosition(start) ; } if (end < 0) { afterX = ""; } else { afterX = customX.substr(end); } // build the exception currentX = buildException(); if (currentX == -1) { return; } //now, finally, check for duplicate names var tempBeforeX = beforeX; if (beforeX.charAt(beforeX.length-1) == '\t') { tempBeforeX = beforeX.substr(0, beforeX.length-1); } otherEx = tempBeforeX + afterX; if ( isDuplicateName(currentX.substr(0, currentX.indexOf('\t', 0)), otherEx) ) { writeErrorMessage(duplicateNameErr); return; } findObj("EX1", winFX.document).value = beforeX + currentX + afterX; var command = findObj("AddOrEdit").value; if (command == 'A') selectedException = -1; else if (command == 'E' && selectedException == 0) selectedException = -1; winFX.doit('X' + command + ':' + selectedException); } function loadDefinition() { if ( parent.isXtabStillLoading() ) { setTimeout("loadDefinition()", 50); return; } parent.setSelException(selectedException); var currentX = findObj("EX1", winFX.document).value; var command = findObj("AddOrEdit").value; var start = getStartPosition(); var rangeCount=0; if (!(start < 0 || currentX.length == 0 || command == 'A')) { rangeCount = 1; if (findObj("ErrorMessage") != null) var err = findObj("ErrorMessage"); if ((isNS4 && err.document.length > 0) || (!isNS4 && err.innerHTML.length > 1)) { return; } var end = getEndPosition(start); if (end < 0) { currentX = currentX.substr(start); } else { currentX = currentX.substr(start, end-start); } //ok...we've got the exception specification...now, just populate the fields! count = currentX.indexOf('\t'); var name = currentX.substr(0, count); findObj("Exception_Name").value = name; currentX = currentX.substr(++count); var i=1; var marker=0; var rangeCount=1; while ( (marker = currentX.indexOf(";", marker+1)) > 0 ) { ++rangeCount; } count=0; // Start looping through and loading all the values for ( i = 1; i <= rangeCount; i++) { var minValue, maxValue, fgColorVal, bgColorVal; var minObj = findObj("From" + i); var maxObj = findObj("To" + i); var fontObj = findObj("FGColor" + i); var cellObj = findObj("BGColor" + i); //Lower bound minValue = localizedStrMinimum; if (currentX.charAt(0) == _rseparator) { currentX = currentX.substr(1); } else { count = currentX.indexOf(_rseparator); minValue = currentX.substr(0, count); var pos = minValue.indexOf('.'); if (pos > 0) minValue = minValue.substr(0, pos) + decimalpt + minValue.substr(pos+1, minValue.length); currentX = currentX.substr(++count); } //Upper bound maxValue = localizedStrMaximum; if (currentX.charAt(0) == _rseparator) { currentX = currentX.substr(1); } else { count = currentX.indexOf(_rseparator); maxValue = currentX.substr(0, count); var pos = maxValue.indexOf('.'); if (pos > 0) maxValue = maxValue.substr(0, pos) + decimalpt + maxValue.substr(pos+1, maxValue.length); currentX = currentX.substr(++count); } //Font color fgColorVal = PPWB_CUSTOM_EXCEPTION_DEFAULT_FOREGROUND; if (currentX.charAt(0) == _rseparator) { currentX = currentX.substr(1); } else { count = currentX.indexOf(_rseparator); fgColorVal = currentX.substr(0, count); currentX = currentX.substr(++count); } //BG cell color bgColorVal = PPWB_CUSTOM_EXCEPTION_DEFAULT_BACKGROUND; if (currentX.charAt(0) == _rseparator) { currentX = currentX.substr(1); } else { count = currentX.indexOf(_rseparator); bgColorVal = currentX.substr(0, count); currentX = currentX.substr(++count); } //Skip the next 5 values in the generic UI if (currentX.indexOf(';') > -1) currentX = currentX.substr(currentX.indexOf(';') + 1); count=0; minObj.value = minValue; maxObj.value = maxValue; setSelectedIndex(fontObj, fgColorVal); setSelectedIndex(cellObj, bgColorVal); } // end loop for populating fields } for (var i = rangeCount + 1; i <= 5; i++) { setSelectedIndex(findObj("FGColor" + i), PPWB_CUSTOM_EXCEPTION_DEFAULT_FOREGROUND); setSelectedIndex(findObj("BGColor" + i), PPWB_CUSTOM_EXCEPTION_DEFAULT_BACKGROUND); } } function writeErrorMessage (msg) { var err = findObj("ErrorMessage"); if (err) { if (document.getElementById) { //IE 5.5+ , Netscape 6.0+ err.innerHTML = '
' + msg + '


'; } else if (isNSBrowser) { // Other Netscape browsers err.visibility = "visible"; err.moveTo(11, document.layers["referenceLayer"].top + document.layers["referenceLayer"].clip.bottom); err.resizeTo(parent.FE.innerWidth - 25, 50); err.document.open(); err.document.write('
' + msg + '
'); err.document.close(); } else alert (msg); } } function doCancel() { var command = findObj("AddOrEdit").value; if (command == 'A') winFX.doit('XA:' + parent.getSelException()); else winFX.doit('XE:' + parent.getSelException()); }