Calculating 2 fields without a script error.

Is there a way to make a calculation of two fields not calculate until the 3rd field is reached.  I have a calculation that takes (field1/field2)*100.  Once the user puts in field1, it throws a script error, which is annoying.  Anyway around this???
Thanks for your help.

You need to test to make sure there is a value in the fields first.
Using FormCalc:
if (HasValue(field1) and HasValue(field2)) then
    $ = field1 / field2 * 100
endif
Or JavaScript:
if (!field1.isNull && !field2.isNull) {
     this.rawValue = field1.rawValue / field2.rawValue * 100;

Similar Messages

  • On XP SP3 can't run plug-in, get IE script error without running IE, click Yes or No, nothing more happens

    I am running XP SP3 and FF 3.6.18. I have been having trouble opening PDFs in FF but not in other browsers. FF tells me to update my Adobe PDF plug-in. I click in the FF list to update, go through the procedure and when I click on run I get the following message: "Internet Explorer script error," although I am not running IE and I have no other applications open or running other than Avast anti-virus. The pane gives me two options to the question "Do you want to continue running scripts on this page?": Yes or No. After clicking on either, the pane disappears, but nothing further happens. I have then downloaded the plug-in again, but when trying to run it I get the message: "Only a single instance of this application can run." I have tried downloading the plug-in to a different folder but get the same message. I have also turned off Avast with no change in the above. Now no PDFs open in FF. What to do? Thanks.

    Thanks for your response...
    I can wait.  After all, it was by waiting for the release of the 10h version after the 10e version sabotaged my flash installation, that I was eventually able to at least get Firefox up and running flash again...
    It's just frustrating to think that the folks at Adobe can't come up with a better product testing cycle so they are unleashing these problems on end users systems...
    I recognize that there may be some sort of issue with my particular system registry.  If so, I wish I knew what it was...but flash releases are the only installations I ever have any difficulty with...All of the other software I run updates without failing....sad to say...
    Perhaps I will try running a home edition version of secedit (See here)http://support.microsoft.com/kb/313222 instead of the clean or repair install...I'll let you know what I decide and how it works out...
    Anyway, thanks for the input..

  • Error when starting WD-Application without active scripting

    Hello together,
    at the moment I am writing a thesis about web dynpro and time is nearly gone...
    In the article:
    The Basic Facts About Web Dynpro - What Does It Do and How Does It Work?
    by Dr. Peter Tillert,
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/91b8c890-0201-0010-c787-be96f6fade89
    I´ve read about server-side rendering and  client-side rendering ( text under figure 6 ).
    Now I´ve got the following problem:
    Usually I use IE7 for testing my WD-Applications with enabled active scripting.
    Now I thought I disable active scripting on my client in order to test server-side rendering
    of plain html...
    I only get the error: WebDynpro Exception: Client Does Not Support JavaScript
    What´s wrong? I expected an other result... Thought WD is sooo flexible ???
    Many greetings,
    Oliver

    The article that you have chosen is rather old and represented some of the design goals of Web Dynpro back in 2004 before the project was completed.  I see other items in the article (like the Dynpro/Web Dynpro integration for ABAP) that were dropped before the final release of the product as well.
    I believe that quote you focused in on was:
    "While smart browsers (Internet Explorer as of version 5.5 and Netscape Navigator as of version 7.0) can run our client-side JavaScript, future versions of the Web Dynpro runtime will send server-side generated HTML without any scripting to every other browser."
    What you need to understand is that the idea of having a clear separation between the CSF and the SSF was an original design aspect of Web Dynpro that was elimated before the final product was delivered to market.  Part of the reasoning is that mainstream browser usage advanced to the point where the need to support non-JavaScript browsers was largely a moot point by the time Web Dynpro was released.  Therefore producing a rendering engine that has no scripting no longer had much value.  So deactiving scripting support in Web Dynpro today, does result in the error message that you received by design.  You can always check the latest supported browser versions for Web Dynpro by viewing the Platform Availability Matrix on the Service Marketplace.
    Using certain Application and URL parameters there certain features of the client side scritping that can be turned off:
    http://help.sap.com/saphelp_nw70/helpdata/EN/7b/fb57412df8091de10000000a155106/frameset.htm
    For instance you can deactivate the Delta Rendering (DOM Infusion of UI elements). 
    Web Dynpro rendering is still abstracted and very flexible.  Today we focus this multi-client rendering approach on vastly different rendering technologies.  We can output to the HTML with JavaScript and AJAX, to Adobe Flex and to the NetWeaver Business Client (.Net 3.0 runtime). Here are some screenshots that show the same WD application running in these three very different environments.
    NWBC:
    http://www.flickr.com/photos/tjung/2685619882/
    Flex:
    http://www.flickr.com/photos/tjung/2684804211/
    HTML/JavaScript:
    http://www.flickr.com/photos/tjung/2685619854/

  • Reflection errors in Field Data Edit Scripting context(Line Item class)

    Hello Experts,
    I have a script that does some validation in the Field Data Edit Scripting context of the "Line Item" class, and I  have "MATERIAL" as my target. when i try throwing an Application Exception in this context I get a reflection error message box instead of the message I have passed to the Application Exception constructor.
    your help will be greatly appreciated.
    kind regards,

    One thing to be aware of is that no matter how you choose to construct your exception in field, field data edit and collection scripts, the attribute is always set to the be the taget field/collection. Have you noticed that? The script designers made things that way. What's going on here is that the exception raised in the Interprer is caught by the Script Manager and rethrown with the script target as the attribute and your raised exception as the exception.
    One other thing I would point out is that scripts set to execute on the Collection Member Lifecycle event tend to be poor performers.  You can get a faster result if you edit whole collection and chain the errors onto one ChainException. I can only speculate as to why, but I have seen major improvements in complex scripts if I iterate the whole collection, versus implementing a collection memeber lifecycle validate event. This is counter-intuitive, but there it is.
    Finally, exceptions raised in Collection Lifecycle Events that interupt the overall save process in the prescence of parent document Lifecycle Validation events can result in partially saved data. I observed this issue a few years back and it may be resolved now. The only member lifecycle event I use is Created, to lock, default, etc.
    So, for your particular problem, you may want to rethink your strategy and see if you can get things to work for you bypassing that reflection issue. If you still can't raise the exception on MATERIAL, maybe you can raise it on another field, because another advantage of this approach is that you have full control to raise any error on any field on the Line Items.

  • Trouble calculating empty fields

    I have a calculation (script below) where DN or DV are not always part of the sum. Trouble is both DV and DN have to be filled in to get the result.
    How can I script these 2 fields to where one or both are calculated?
    SUM=(PD1*DN*DV[WD1*CT])/BPY

    Hi. Thanks for your previous responses.  I'm getting an error msg when I open this form in Reader and start entering info into the fields that are included in my calculation. Here's what the error  box says:
    Script failed (language is formcalc; content is xfa[0].form1[0].#subbform[0].WD1[0])
    script=
    Sum(PD1*DN/DV[WD1*CT])/BPY
    Error: arithmetic over/underflow.
    Can you tell me what this means? I can still get the result I want, but each time I enter a number into one of the calculated fields I get this error msg. I click OK in the error msg and can continue.
    Thanks!

  • Internet Explorer Script Error when running report with user-entered params

    We are using Crystal Reports Version 11.0.0.1282.  We have multiple copies each installed on a separate computer.  We have a relatively simple report with a prompt for 2 values (parameters) to be selected or input by the users.  The desktop is either Windows XP SP3 or Windows Server 2003 SP2  On all the XP/SP3 computers, this report works as expected.  On the exception computer, the Windows Server2003 Desktop, we see the prompting screen with place holders for graphics instead of the buttons.  When we attempt to select a value for the parameter by keying in the value and clicking on the OK link (no button), we see message box titled "Internet Explorer Script Error" with text: An error has occurred in the script on this page.
    Line: xxx (varies depending on param chosen)
    char 1
    error: Object expected
    url: file:///c:/doc...../temp/1/prompting1.html
    ===============================
    Searhing around the forum and using Google, I found a suggestion to be copying the "prompting" folder and dll from a known working system - tried this, it didn't work.
    So. I still need a solution. Any other suggestions??
    Edited by: Grant Ellsworth on Mar 16, 2009 10:29 PM

    >> I do not think it is because of the parameters you are entering/using, try without using the
    >> parameters (just for testing), if you still get the error then its not the parameters which is causing
    >> the problem.
    If I create the report without asking for user-entered params, it works.
    >> Can you please specify the browser and the tool to display the report you are using? Generally the
    >> error popps up when there are any mistakes in html or if you are using a javascript which has a error.
    The active browser on the computer is IE7 - 7.0.5730.13
    I am using the installed crystal reports 11 program to run the report.  I open the report in CR by going to File/Open and selecting the report. Then I get prompted for my ms sql login info, which I enter.  Then I see the "Enter Values" window with my data entry fields; but I don't see the nice formatting and buttons which I see when I run this from the other computers; I see only the placeholders.  I select or enter data and click on the "OK" link.  Then the message box pops up.  The message box pops up when I click on any of the links or on the "x" in the upper right.  Mesage box is explicit - Intenet Explorer Script Error, etc., as I described in my original post.
    Thanks
    Azhar

  • ReportServer Manager Script Error

    Hi All,
    I have been using ssrs for quite some time now.And All of a sudden, I have started getting
    scripts errors in reportingservices.js.
    Error:"Uncaught TypeError: Cannot set property 'className' of null
    Now I am not able to deploy new rdl files
    Many Thanks
    Deepak

    HI All, 
    Actually I have found the answer for that,thought that some one might get useful with this.ReportingServices.js in the path"C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER20122012\Reporting Services\ReportManager\js"
     was causing the problem.Kindly replace the script with the following one
    var checkBoxCount;
    var checkBoxId;
    var checkBoxHead;
    // Context menu
    var _divContextMenu; // The container for the context menu
    var _selectedIdHiddenField; // The id of the item that opened th context menu
    var _timeOutLimit = 3000; // How long the context menu stays for after the cursor in no longer over it
    var _timeOutTimer; // The timout for the context menu
    var _itemSelected = false;
    var _mouseOverContext = false; // If the mouse is over the context menu
    var _contextMenusIds; // The array of the diffrent context menus
    var _fadeTimeouts; // The array of timouts used for the fade effect
    var _onLink = false; // If the user is over a name link
    var _selectedItemId;
    var _tabFocusedItem = '';
    var _mouseOverItem = '';
    var _unselectedItemStyle;
    var _currentContextMenuId; // ID of currently displayed context menu
    var _currentMenuItemId = null; // ID of currently selected context menu item
    // Search bar
    var _searchTextBoxID;
    var _defaultSearchValue; // The value that the box defaults to.
    // start chris edit
    // new functions to find firstChild and lastChild but skipping whitespace elements
    function firstChildNoWS(element) {
    var child = element.firstChild;
    while (child != null && child.isElementContentWhitespace) {
    child = child.nextSibling;
    return child;
    function lastChildNoWS(element) {
    var child = element.lastChild;
    while (child != null && child.isElementContentWhitespace) {
    child = child.previousSibling;
    return child;
    // end chris edit
    function ToggleItem(itemId) {
    var item = document.getElementById(itemId);
    if (item.style.display == 'none')
    item.style.display = 'inline';
    else
    item.style.display = 'none';
    function ToggleButtonImage(image1ID, image2ID) {
    var image1 = document.getElementById(image1ID);
    var image2 = document.getElementById(image2ID);
    if (image1.style.display == 'none') {
    image1.style.display = 'inline-block';
    image2.style.display = 'none';
    else {
    image1.style.display = 'none';
    image2.style.display = 'inline-block';
    function SetFocus(id) {
    var obj = document.getElementById(id);
    if (obj != null && !obj.disabled)
    obj.focus();
    // Validates that an extension has been selected
    function ValidateDropDownSelection(source, args) {
    var obj = document.getElementById(source.controltovalidate);
    if (obj.options[0].selected && !obj.disabled)
    args.IsValid = false;
    else
    args.IsValid = true;
    /// selectAll
    /// selects all the checkBoxes with the given id
    function selectAll() {
    var i;
    var id;
    var checked = checkBoxHead.checked;
    for (i = 0; i < checkBoxCount; i++) {
    id = checkBoxId + i;
    document.getElementById(id).checked = checked;
    /// onSglCheck
    /// performs actions when a single checkBox is checked or unchecked
    /// cb -> the checkBox generating the event
    /// topId -> id of the "select all" checkBox
    function onSglCheck() {
    // uncheck the top checkBox
    checkBoxHead.checked = false;
    /// ToggleButton
    /// Toggle a buttons enable state
    function ToggleButton(id, disabled) {
    if (document.getElementById(id) != null)
    document.getElementById(id).disabled = disabled;
    function ToggleValidator(id, enabled) {
    document.getElementById(id).enabled = enabled;
    function SetCbVars(cbid, count, cbh) {
    checkBoxCount = count;
    checkBoxId = cbid;
    checkBoxHead = cbh;
    /// Check to see if any check boxes should disable
    /// a control
    /// cbid -> id prefix of the checkBoxes
    /// cbCount -> total checkBoxes to check
    /// hidden -> input to look for
    /// display -> control to disable
    function CheckCheckBoxes(cbid, hidden, display) {
    var i;
    var id;
    var disable;
    disable = false;
    for (i = 0; i < checkBoxCount; i++) {
    id = cbid + i;
    if (document.getElementById(id).checked) {
    id = hidden + id;
    if (document.getElementById(id) != null) {
    disable = true;
    break;
    ToggleButton(display, disable);
    function HiddenCheckClickHandler(hiddenID, promptID, promptStringID) {
    var hiddenChk = document.getElementById(hiddenID);
    var promptChk = document.getElementById(promptID);
    // prompt should be in opposite state of hidden
    promptChk.checked = !hiddenChk.checked;
    function validateSaveRole(source, args) {
    var i;
    var id;
    var c = 0;
    for (i = 0; i < checkBoxCount; i++) {
    id = checkBoxId + i;
    if (document.getElementById(id).checked) c++;
    if (0 == c)
    args.IsValid = false;
    else
    args.IsValid = true;
    /// Pad an integer less then 10 with a leading zero
    function PadIntWithZero(val) {
    var s = val.toString();
    if (val < 10 && val >= 0) {
    if (s.length == 1)
    s = "0" + s;
    else if (s.length > 2)
    s = s.substring(s.length - 2, s.length);
    return s;
    /// Pad the contents of an input with leading zeros if necesarry
    function PadInputInteger(id) {
    document.getElementById(id).value = PadIntWithZero(document.getElementById(id).value);
    /// text of confirmation popup when a single item is selected for deletion
    /// e.g. "Are you sure you want to delete this item"
    var confirmSingle;
    /// text of confirmation popup when multiple items are selected for deletion
    /// e.g. "Are you sure you want to delete these items"
    var confirmMultiple;
    function SetDeleteTxt(single, multiple) {
    confirmSingle = single;
    confirmMultiple = multiple;
    /// doCmDel: DoConfirmDelete
    /// Given a number of checked items, confirm their deletion
    /// return true if OK was clicked; false otherwise
    function doCmDel(checkedCount) {
    var confirmTxt = confirmSingle;
    if (checkedCount == 0)
    return false;
    if (checkedCount > 1)
    confirmTxt = confirmMultiple;
    return confirm(confirmTxt);
    /// on non-Netscape browsers, confirm deletion of 0 or more items
    function confirmDelete() {
    return doCmDel(getChkCount());
    /// confirm deletion of policies
    function confirmDeletePlcies(alertString) {
    var count = getChkCount();
    if (count >= checkBoxCount) {
    alert(alertString);
    return false;
    return doCmDel(count);
    /// counts whether 0, 1, or more than 1 checkboxes are checked
    /// returns 0, 1, or 2
    function getChkCount() {
    var checkedCount = 0;
    for (i = 0; i < checkBoxCount && checkedCount < 2; i++) {
    if (document.getElementById(checkBoxId + i).checked) {
    checkedCount++;
    return checkedCount;
    function ToggleButtonBasedOnCheckBox(checkBoxId, toggleId, reverse) {
    var chkb = document.getElementById(checkBoxId);
    if (chkb != null) {
    if (chkb.checked == true)
    ToggleButton(toggleId, reverse); // enable if reverse == false
    else
    ToggleButton(toggleId, !reverse); // disable if reverse == false
    function ToggleButtonBasedOnCheckBoxWithOverride(checkBoxId, toggleId, overrideToDisabled, reverse) {
    if (overrideToDisabled == true)
    ToggleButton(toggleId, true); // disable
    else
    ToggleButtonBasedOnCheckBox(checkBoxId, toggleId, reverse);
    function ToggleButtonBasedOnCheckBoxes(checkBoxId, checkboxId2, toggleId) {
    var chkb = document.getElementById(checkBoxId);
    if (chkb != null) {
    if (chkb.checked == true)
    ToggleButtonBasedOnCheckBox(checkboxId2, toggleId, false);
    else
    ToggleButton(toggleId, true); // disable
    function ToggleButtonBasedOnCheckBoxesWithOverride(checkBoxId, checkboxId2, toggleId, overrideToDisabled) {
    if (overrideToDisabled == true)
    ToggleButton(toggleId, true); // disable
    else
    ToggleButtonBasedOnCheckBoxes(checkBoxId, checkboxId2, toggleId);
    function ToggleValidatorBasedOnCheckBoxWithOverride(checkBoxId, toggleId, overrideToDisabled, reverse) {
    if (overrideToDisabled == true)
    ToggleValidator(toggleId, false);
    else {
    var chkb = document.getElementById(checkBoxId);
    if (chkb != null) {
    ToggleValidator(toggleId, chkb.checked != reverse);
    function ToggleValidatorBasedOnCheckBoxesWithOverride(checkBoxId, checkBoxId2, toggleId, overrideToDisabled, reverse) {
    if (overrideToDisabled == true)
    ToggleValidator(toggleId, false);
    else {
    var chkb = document.getElementById(checkBoxId);
    if (chkb != null) {
    if (chkb.checked == reverse)
    ToggleValidator(toggleId, false);
    else
    ToggleValidatorBasedOnCheckBoxWithOverride(checkBoxId2, toggleId, overrideToDisabled, reverse);
    function CheckButton(buttonID, shouldCheck) {
    document.getElementById(buttonID).checked = shouldCheck;
    function EnableMultiButtons(prefix) {
    // If there are no multibuttons, there is no reason to iterate the
    // list of checkboxes.
    if (checkBoxCount == 0 || multiButtonList.length == 0)
    return;
    var enableMultiButtons = false;
    var multipleCheckboxesSelected = false;
    // If the top level check box is checked, we know the state of all
    // of the checkboxes
    var headerCheckBox = document.getElementById(prefix + "ch");
    if (headerCheckBox != null && headerCheckBox.checked) {
    enableMultiButtons = true;
    multipleCheckboxesSelected = checkBoxCount > 1;
    else {
    // Look at each checkbox. If any one of them is checked,
    // enable the multi buttons.
    var foundOneChecked = false;
    var i;
    for (i = 0; i < checkBoxCount; i++) {
    var checkBox = document.getElementById(prefix + 'cb' + i);
    if (checkBox.checked) {
    if (foundOneChecked) {
    multipleCheckboxesSelected = true;
    break;
    else {
    enableMultiButtons = true;
    foundOneChecked = true;
    // Enable/disable each of the multi buttons
    var j;
    for (j = 0; j < multiButtonList.length; j++) {
    var button = document.getElementById(multiButtonList[j]);
    if (button.allowMultiSelect)
    button.disabled = !enableMultiButtons;
    else
    button.disabled = !enableMultiButtons || multipleCheckboxesSelected;
    //function ShadowCopyPassword(suffix)
    function MarkPasswordFieldChanged(suffix) {
    if (event.propertyName == "value") {
    var pwdField = document.getElementById("ui_txtStoredPwd" + suffix);
    //var shadowField = document.getElementById("ui_shadowPassword" + suffix);
    var shadowChanged = document.getElementById("ui_shadowPasswordChanged" + suffix);
    // Don't shadow copy during initialization
    if (pwdField.IsInit) {
    //shadowField.value = pwdField.value;
    //pwdField.UserEnteredPassword = "true";
    shadowChanged.value = "true";
    // Update validator state (there is no validator on the data driven subscription page)
    var validator = document.getElementById("ui_validatorPassword" + suffix)
    if (validator != null)
    ValidatorValidate(validator);
    function InitDataSourcePassword(suffix) {
    var pwdField = document.getElementById("ui_txtStoredPwd" + suffix);
    var shadowChanged = document.getElementById("ui_shadowPasswordChanged" + suffix);
    // var shadowField = document.getElementById("ui_shadowPassword" + suffix);
    var storedRadioButton = document.getElementById("ui_rdoStored" + suffix);
    var pwdValidator = document.getElementById("ui_validatorPassword" + suffix);
    pwdField.IsInit = false;
    // Initialize the field to the shadow value (for when the user clicks back/forward)
    // Or to a junk initial value.
    if (pwdValidator != null && storedRadioButton.checked) {
    /* if (shadowField.value.length > 0)
    pwdField.value = shadowField.value;
    else*/
    pwdField.value = "********";
    else
    shadowChanged.value = "true"; // shadowChanged will be ignored if the page is submitted without storedRadioButton.checked
    // Now that the initial value is set, track changes to the password field
    pwdField.IsInit = true;
    // There is no validator on the data driven subscription page (no stored radio button either)
    if (pwdValidator != null)
    ValidatorValidate(pwdValidator);
    function SetNeedPassword(suffix) {
    // Set a flag indicating that we need the password
    var pwdField = document.getElementById("ui_txtStoredPwd" + suffix);
    pwdField.NeedPassword = "true";
    // Make the validator visible
    ValidatorValidate(document.getElementById("ui_validatorPassword" + suffix));
    function UpdateValidator(src, validatorID) {
    if (src.checked) {
    var validator = document.getElementById(validatorID);
    ValidatorValidate(validator);
    function ReEnterPasswordValidation(source, arguments) // source = validator
    var validatorIdPrefix = "ui_validatorPassword"
    var suffix = source.id.substr(validatorIdPrefix.length, source.id.length - validatorIdPrefix.length);
    var storedRadioButton = document.getElementById("ui_rdoStored" + suffix);
    var pwdField = document.getElementById("ui_txtStoredPwd" + suffix);
    var shadowChanged = document.getElementById("ui_shadowPasswordChanged" + suffix);
    var customDataSourceRadioButton = document.getElementById("ui_rdoCustomDataSource" + suffix);
    var isCustomSelected = true;
    if (customDataSourceRadioButton != null)
    isCustomSelected = customDataSourceRadioButton.checked;
    if (!isCustomSelected || // If the custom (vs shared) data source radio button exists and is not selected, we don't need the pwd.
    storedRadioButton.checked == false || // If the data source is not using stored credentials, we don't need the password
    pwdField.UserEnteredPassword == "true" || // If the password has changed, we don't need to get it from the user
    pwdField.NeedPassword != "true" || // If no credentials have changed, we don't need the password
    shadowChanged.value == "true") // If the user has typed a password
    arguments.IsValid = true;
    else
    arguments.IsValid = false;
    function ValidateDataSourceSelected(source, arguments) {
    var validatorIdPrefix = "ui_sharedDSSelectedValidator"
    var suffix = source.id.substr(validatorIdPrefix.length, source.id.length - validatorIdPrefix.length);
    var sharedRadioButton = document.getElementById("ui_rdoSharedDataSource" + suffix);
    var hiddenField = document.getElementById("ui_hiddenSharedDS" + suffix);
    arguments.IsValid = (sharedRadioButton != null && !sharedRadioButton.checked) || hiddenField.value != "NotSelected";
    // MultiValueParamClass
    function MultiValueParamClass(thisID, visibleTextBoxID, floatingEditorID, floatingIFrameID, paramObject,
    hasValidValues, allowBlank, doPostbackOnHide, postbackScript) {
    this.m_thisID = thisID;
    this.m_visibleTextBoxID = visibleTextBoxID;
    this.m_floatingEditorID = floatingEditorID;
    this.m_floatingIFrameID = floatingIFrameID;
    this.m_paramObject = paramObject;
    this.m_hasValidValues = hasValidValues;
    this.m_allowBlank = allowBlank;
    this.m_doPostbackOnHide = doPostbackOnHide;
    this.m_postbackScript = postbackScript;
    this.UpdateSummaryString();
    function ToggleVisibility() {
    var floatingEditor = GetControl(this.m_floatingEditorID);
    if (floatingEditor.style.display != "inline")
    this.Show();
    else
    this.Hide();
    MultiValueParamClass.prototype.ToggleVisibility = ToggleVisibility;
    function Show() {
    var floatingEditor = GetControl(this.m_floatingEditorID);
    if (floatingEditor.style.display == "inline")
    return;
    // Set the correct size of the floating editor - no more than
    // 150 pixels high and no less than the width of the text box
    var visibleTextBox = GetControl(this.m_visibleTextBoxID);
    if (this.m_hasValidValues) {
    if (floatingEditor.offsetHeight > 150)
    floatingEditor.style.height = 150;
    floatingEditor.style.width = visibleTextBox.offsetWidth;
    var newEditorPosition = this.GetNewFloatingEditorPosition();
    floatingEditor.style.left = newEditorPosition.Left;
    floatingEditor.style.top = newEditorPosition.Top;
    floatingEditor.style.display = "inline";
    var floatingIFrame = GetControl(this.m_floatingIFrameID);
    floatingIFrame.style.left = floatingEditor.style.left;
    floatingIFrame.style.top = floatingEditor.style.top;
    floatingIFrame.style.width = floatingEditor.offsetWidth;
    floatingIFrame.style.height = floatingEditor.offsetHeight;
    floatingIFrame.style.display = "inline";
    // If another multi value is open, close it first
    if (this.m_paramObject.ActiveMultValue != this && this.m_paramObject.ActiveMultiValue != null)
    ControlClicked(this.m_paramObject.id);
    this.m_paramObject.ActiveMultiValue = this;
    if (floatingEditor.childNodes[0].focus) floatingEditor.childNodes[0].focus();
    this.StartPolling();
    MultiValueParamClass.prototype.Show = Show;
    function Hide() {
    var floatingEditor = GetControl(this.m_floatingEditorID);
    var floatingIFrame = GetControl(this.m_floatingIFrameID);
    // Hide the editor
    floatingEditor.style.display = "none";
    floatingIFrame.style.display = "none";
    this.UpdateSummaryString();
    if (this.m_doPostbackOnHide)
    eval(this.m_postbackScript);
    // Check that the reference is still us in case event ordering
    // caused another multivalue to click open
    if (this.m_paramObject.ActiveMultiValue == this)
    this.m_paramObject.ActiveMultiValue = null;
    MultiValueParamClass.prototype.Hide = Hide;
    function GetNewFloatingEditorPosition() {
    // Make the editor visible
    var visibleTextBox = GetControl(this.m_visibleTextBoxID);
    var textBoxPosition = GetObjectPosition(visibleTextBox);
    return { Left: textBoxPosition.Left, Top: textBoxPosition.Top + visibleTextBox.offsetHeight };
    MultiValueParamClass.prototype.GetNewFloatingEditorPosition = GetNewFloatingEditorPosition;
    function UpdateSummaryString() {
    var summaryString;
    if (this.m_hasValidValues)
    summaryString = GetValueStringFromValidValueList(this.m_floatingEditorID);
    else
    summaryString = GetValueStringFromTextEditor(this.m_floatingEditorID, false, this.m_allowBlank);
    var visibleTextBox = GetControl(this.m_visibleTextBoxID);
    visibleTextBox.value = summaryString;
    MultiValueParamClass.prototype.UpdateSummaryString = UpdateSummaryString;
    function StartPolling() {
    setTimeout(this.m_thisID + ".PollingCallback();", 100);
    MultiValueParamClass.prototype.StartPolling = StartPolling;
    function PollingCallback() {
    // If the editor isn't visible, no more events.
    var floatingEditor = GetControl(this.m_floatingEditorID);
    if (floatingEditor.style.display != "inline")
    return;
    // If the text box moved, something on the page resized, so close the editor
    var expectedEditorPos = this.GetNewFloatingEditorPosition();
    if (floatingEditor.style.left != expectedEditorPos.Left + "px" ||
    floatingEditor.style.top != expectedEditorPos.Top + "px") {
    this.Hide();
    else {
    this.StartPolling();
    MultiValueParamClass.prototype.PollingCallback = PollingCallback;
    function GetObjectPosition(obj) {
    var totalTop = 0;
    var totalLeft = 0;
    while (obj != document.body) {
    // Add up the position
    totalTop += obj.offsetTop;
    totalLeft += obj.offsetLeft;
    // Prepare for next iteration
    obj = obj.offsetParent;
    totalTop += obj.offsetTop;
    totalLeft += obj.offsetLeft;
    return { Left: totalLeft, Top: totalTop };
    function GetValueStringFromTextEditor(floatingEditorID, asRaw, allowBlank) {
    var span = GetControl(floatingEditorID);
    var editor = span.childNodes[0];
    var valueString = editor.value;
    // Remove the blanks
    if (!allowBlank) {
    // Break down the text box string to the individual lines
    var valueArray = valueString.split("\r\n");
    var delimiter;
    if (asRaw)
    delimiter = "\r\n";
    else
    delimiter = ", ";
    var finalValue = "";
    for (var i = 0; i < valueArray.length; i++) {
    // If the string is non-blank, add it
    if (valueArray[i].length > 0) {
    if (finalValue.length > 0)
    finalValue += delimiter;
    finalValue += valueArray[i];
    return finalValue;
    else {
    if (asRaw)
    return valueString;
    else
    return valueString.replace(/\r\n/g, ", ");
    function GetValueStringFromValidValueList(editorID) {
    var valueString = "";
    // Get the table
    var div = GetControl(editorID);
    var table = div.childNodes[0];
    if (table.nodeName != "TABLE") // Skip whitespace if needed
    table = div.childNodes[1];
    // If there is only one element, it is a real value, not the select all option
    var startIndex = 0;
    if (table.rows.length > 1)
    startIndex = 1;
    for (var i = startIndex; i < table.rows.length; i++)
    // Get the first cell of the row
    var firstCell = table.rows[i].cells[0];
    var span = firstCell.childNodes[0];
    var checkBox = span.childNodes[0];
    var label = span.childNodes[1];
    if (checkBox.checked) {
    if (valueString.length > 0)
    valueString += ", ";
    // chris edit - valueString += label.firstChild.nodeValue;
    valueString += firstChildNoWS(label).nodeValue;
    return valueString;
    function MultiValidValuesSelectAll(src, editorID)
    // Get the table
    var div = GetControl(editorID);
    var table = div.childNodes[0];
    if (table.nodeName != "TABLE")
    table = div.childNodes[1];
    for (var i = 1; i < table.rows.length; i++)
    // Get the first cell of the row
    var firstCell = table.rows[i].cells[0];
    var span = firstCell.childNodes[0];
    var checkBox = span.childNodes[0];
    checkBox.checked = src.checked;
    function ValidateMultiValidValue(editorID, errMsg)
    var summaryString = GetValueStringFromValidValueList(editorID);
    var isValid = summaryString.length > 0;
    if (!isValid)
    alert(errMsg)
    return isValid;
    function ValidateMultiEditValue(editorID, errMsg) {
    // Need to check for a value specified. This code only runs if not allow blank.
    // GetValueStringFromTextEditor filters out blank strings. So if it was all blank,
    // the final string will be length 0
    var summaryString = GetValueStringFromTextEditor(editorID, true, false)
    var isValid = false;
    if (summaryString.length > 0)
    isValid = true;
    if (!isValid)
    alert(errMsg);
    return isValid;
    function GetControl(controlID) {
    var control = document.getElementById(controlID);
    if (control == null)
    alert("Unable to locate control: " + controlID);
    return control;
    function ControlClicked(formID) {
    var form = GetControl(formID);
    if (form.ActiveMultiValue != null)
    form.ActiveMultiValue.Hide();
    // --- Context Menu ---
    // This function is called in the onload event of the body.
    // It hooks the context menus up to the Javascript code.
    // divContextMenuId, is the id of the div that contains the context menus
    // selectedIdHiddenFieldId, is the id of the field used to post back the name of the item clicked
    // contextMenusIds, is an array of the ids of the context menus
    // searchTextBox ID, is the id of the search box
    // defaultSearchValue. the value the search box has by default
    function InitContextMenu(divContextMenuId, selectedIdHiddenFieldId, contextMenusIds, searchTextBoxID, defaultSearchValue ) {
    ResetSearchBar( searchTextBoxID, defaultSearchValue );
    _divContextMenu = document.getElementById(divContextMenuId);
    _selectedIdHiddenField = document.getElementById(selectedIdHiddenFieldId);
    _contextMenusIds = contextMenusIds;
    _divContextMenu.onmouseover = function() { _mouseOverContext = true; };
    _divContextMenu.onmouseout = function() {
    if (_mouseOverContext == true) {
    _mouseOverContext = false;
    if (_timeOutTimer == null) {
    _timeOutTimer = setTimeout(TimeOutAction, _timeOutLimit);
    document.body.onmousedown = ContextMouseDown;
    AddKeyDownListener();
    // This handler stops bubling when arrow keys Up or Down pressed to prevent scrolling window
    function KeyDownHandler(e)
    // Cancel window scrolling only when menu is opened
    if(_currentContextMenuId == null)
    return true;
    if(!e)
    e = window.event;
    var key = e.keyCode;
    if(key == 38 || key == 40)
    return false;
    else
    return true;
    function AddKeyDownListener()
    if(document.addEventListener)
    document.addEventListener('keydown', KeyDownHandler, false);
    else
    document.onkeydown = KeyDownHandler;
    // This function starts the context menu timeout process
    function TimeOutAction() {
    if (_mouseOverContext == false) {
    UnSelectedMenuItem()
    _timeOutTimer = null;
    // This function is called when a name tag is clicked, it displays the contextmenu for a given item.
    function Clicked(event, contextMenuId) {
    if (!_onLink) {
    ClearTimeouts();
    SelectContextMenuFromColletion(contextMenuId);
    _itemSelected = true;
    // **Cross browser compatibility code**
    // Some browsers will not pass the event so we need to get it from the window instead.
    if (event == null)
    event = window.event;
    var selectedElement = event.target != null ? event.target : event.srcElement;
    var outerTableElement = GetOuterElementOfType(selectedElement, 'table');
    var elementPosition = GetElementPosition(outerTableElement);
    _selectedItemId = outerTableElement.id;
    // chris edit - _selectedIdHiddenField.value = outerTableElement.value;
    _selectedIdHiddenField.value = outerTableElement.attributes["value"].value;
    outerTableElement.className = "msrs-SelectedItem";
    ResetContextMenu();
    var contextMenuHeight = _divContextMenu.offsetHeight;
    var contextMenuWidth = _divContextMenu.offsetWidth;
    var boxHeight = outerTableElement.offsetHeight;
    var boxWidth = outerTableElement.offsetWidth;
    var boxXcoordinate = elementPosition.left;
    var boxYcooridnate = elementPosition.top;
    var pageWidth = 0, pageHeight = 0;
    // **Cross browser compatibility code**
    if (typeof (window.innerWidth) == 'number') {
    //Non-IE
    pageWidth = window.innerWidth;
    pageHeight = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
    //IE 6+ in 'standards compliant mode'
    pageWidth = document.documentElement.clientWidth;
    pageHeight = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
    //IE 4 compatible
    pageWidth = document.body.clientWidth;
    pageHeight = document.body.clientHeight;
    // **Cross browser compatibility code**
    var iebody = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body
    var pageXOffSet = document.all ? iebody.scrollLeft : pageXOffset
    var pageYOffSet = document.all ? iebody.scrollTop : pageYOffset
    _divContextMenu.style.left = SetContextMenuHorizonatalPosition(pageWidth, pageXOffSet, boxXcoordinate, contextMenuWidth, boxWidth) + 'px';
    _divContextMenu.style.top = SetContextMenuVerticalPosition(pageHeight, pageYOffSet, boxYcooridnate, contextMenuHeight, boxHeight) + 'px';
    ChangeOpacityForElement(100, _divContextMenu.id);
    // chris edit - document.getElementById(_currentContextMenuId).firstChild.focus();
    firstChildNoWS(document.getElementById(_currentContextMenuId)).focus();
    // Context menu keyboard navigation
    // Opens context menu via keyboard. Context menu
    // is opened by selecting an item and pressing
    // Alt + Down.
    function OpenMenuKeyPress(e, contextMenuId)
    // Alt key was pressed
    if (e.altKey)
    var keyCode;
    if (window.event)
    keyCode = e.keyCode;
    else
    keyCode = e.which;
    // Down key was pressed
    if (keyCode == 40)
    // Open context menu.
    Clicked(event, contextMenuId);
    // Highlight the first selectable item
    // in the context menu.
    HighlightContextMenuItem(true);
    // Performs keyboard navigation within
    // opened context menu.
    function NavigateMenuKeyPress(e)
    var keyCode;
    if (window.event)
    keyCode = e.keyCode;
    else
    keyCode = e.which;
    // Down key moves down to the next context menu item
    if (keyCode == 40)
    HighlightContextMenuItem(true);
    // Up key moves up to the previous context menu item
    else if (keyCode == 38)
    HighlightContextMenuItem(false);
    // Escape key closes context menu
    else if (keyCode == 27)
    // Close context menu
    UnSelectedMenuItem();
    // Make sure focus is given to the catalog item
    // in the folder view.
    document.getElementById(_selectedItemId).focus();
    // Highlights context menu item.
    // Parameter: highlightNext
    // - If true, highlights menu item below current menu item.
    // If current menu item is the last item, wraps around and
    // highlights first menu item.
    // - If false, highlights menu item above current menu item.
    // If current menu item is the first item, wraps around and
    // highlights last menu item.
    function HighlightContextMenuItem(highlightNext)
    var contextMenu = document.getElementById(_currentContextMenuId);
    // chris edit - var table = contextMenu.lastChild;
    var table = lastChildNoWS(contextMenu);
    var currentMenuItemIndex = -1;
    if (_currentMenuItemId != null)
    currentMenuItemIndex = document.getElementById(_currentMenuItemId).parentNode.rowIndex;
    var index = currentMenuItemIndex;
    while (true)
    if (highlightNext)
    index++;
    // If the index is out of range,
    // reset it to the beginning
    if (index < 0 || index >= table.cells.length)
    index = 0;
    else
    index--;
    // If the index is out of range,
    // reset it to the end
    if (index < 0 || index >= table.cells.length)
    index = table.cells.length - 1;
    // Each context menu item has an associated
    // group ID. Make sure the table cell has a valid
    // group ID, otherwise it is not a menu item (e.g.
    // an underline separator).
    if (table.cells[index].group >= 0)
    FocusContextMenuItem(table.cells[index].id, 'msrs-MenuUIItemTableHover', 'msrs-MenuUIItemTableCell');
    break;
    // If we reach the orignal index, that means we looped
    // through all table cells and did not find a valid context
    // menu item. In that case, stop searching.
    if (index == currentMenuItemIndex)
    break;
    // *** End keyboard navigation ***
    // This function resets the context menus shape and size.
    function ResetContextMenu() {
    _divContextMenu.style.height = 'auto';
    _divContextMenu.style.width = 'auto';
    _divContextMenu.style.overflowY = 'visible';
    _divContextMenu.style.overflowX = 'visible';
    _divContextMenu.style.overflow = 'visible';
    _divContextMenu.style.display = 'block';
    // This function sets the horizontal position of the context menu.
    // It also sets is the context menu has vertical scroll bars.
    function SetContextMenuHorizonatalPosition(pageWidth, pageXOffSet, boxXcoordinate, contextMenuWidth, boxWidth) {
    var menuXCoordinate = boxXcoordinate + boxWidth - contextMenuWidth;
    var spaceRightBox = (pageWidth + pageXOffSet) - menuXCoordinate;
    var spaceLeftBox = menuXCoordinate - pageXOffSet;
    var returnValue;
    if ((contextMenuWidth < spaceRightBox) && (pageXOffSet < menuXCoordinate)) {
    returnValue = menuXCoordinate;
    else if ((contextMenuWidth < spaceRightBox)) {
    returnValue = pageXOffSet;
    else if (contextMenuWidth < spaceLeftBox) {
    returnValue = menuXCoordinate - (contextMenuWidth - (pageWidth + pageXOffSet - menuXCoordinate));
    else {
    _divContextMenu.style.overflowX = "scroll";
    if (spaceLeftBox < spaceRightBox) {
    _divContextMenu.style.width = spaceRightBox;
    returnValue = pageXOffSet;
    else {
    _divContextMenu.style.width = spaceLeftBox;
    returnValue = menuXCoordinate - (spaceLeftBox - (pageWidth + pageXOffSet - menuXCoordinate));
    return returnValue;
    // This function sets the vertical position of the context menu.
    // It also sets is the context menu has horizontal scroll bars.
    function SetContextMenuVerticalPosition(pageHeight, pageYOffSet, boxYcooridnate, contextMenuHeight, boxHeight) {
    var spaceBelowBox = (pageHeight + pageYOffSet) - (boxYcooridnate + boxHeight);
    var spaceAboveBox = boxYcooridnate - pageYOffSet;
    var returnValue;
    if (contextMenuHeight < spaceBelowBox) {
    returnValue = (boxYcooridnate + boxHeight);
    else if (contextMenuHeight < spaceAboveBox) {
    returnValue = (boxYcooridnate - contextMenuHeight);
    else if (spaceBelowBox > spaceAboveBox) {
    _divContextMenu.style.height = spaceBelowBox;
    _divContextMenu.style.overflowY = "scroll";
    returnValue = (boxYcooridnate + boxHeight);
    else {
    _divContextMenu.style.height = spaceAboveBox;
    _divContextMenu.style.overflowY = "scroll";
    returnValue = (boxYcooridnate - spaceAboveBox);
    return returnValue;
    // This function displays a context menu given its id and then hides the others
    function SelectContextMenuFromColletion(contextMenuConfigString) {
    var contextMenuId = SplitContextMenuConfigString(contextMenuConfigString);
    for (i = 0; i < _contextMenusIds.length; i++) {
    var cm = document.getElementById(_contextMenusIds[i]);
    if (cm.id == contextMenuId) {
    cm.style.visibility = 'visible';
    cm.style.display = 'block';
    _currentContextMenuId = contextMenuId;
    else {
    cm.style.visibility = 'hidden';
    cm.style.display = 'none';
    function SplitContextMenuConfigString(contextMenuConfigString) {
    var contextMenuEnd = contextMenuConfigString.indexOf(":");
    var contextMenuId = contextMenuConfigString;
    var contextMenuHiddenItems;
    if (contextMenuEnd != -1)
    contextMenuId = contextMenuConfigString.substr(0, contextMenuEnd);
    var cm = document.getElementById(contextMenuId);
    // chris edit - var table = cm.firstChild;
    var table = firstChildNoWS(cm);
    var groupItemCount = []; // The items in each group
    var groupUnderlineId = []; // The Id's of the underlines.
    // Enable all menu items counting the number of groups,
    // number of items in the groups and underlines for the groups as we go.
    // start chris edit
    /* for (i = 0; i < table.cells.length; i++)
    table.cells[i].style.visibility = 'visible';
    table.cells[i].style.display = 'block'
    if ((groupItemCount.length - 1) < table.cells[i].group) {
    groupItemCount.push(1);
    groupUnderlineId.push(table.cells[i].underline);
    else {
    groupItemCount[table.cells[i].group]++;
    AlterVisibilityOfAssociatedUnderline(table.cells[i], true)
    if (table != null && table.rows != null)
    for (r = 0; r < table.rows.length; r++) {
    for (i = 0; i < table.rows[r].cells.length; i++)
    table.rows[r].cells[i].style.visibility = 'visible';
    table.rows[r].cells[i].style.display = 'block'
    if ((groupItemCount.length - 1) < table.rows[r].cells[i].group) {
    groupItemCount.push(1);
    groupUnderlineId.push(table.rows[r].cells[i].underline);
    else {
    groupItemCount[table.rows[r].cells[i].group]++;
    AlterVisibilityOfAssociatedUnderline(table.rows[r].cells[i], true)
    // end chris edit
    // If hidden items are listed, remove them from the context menu
    if (contextMenuEnd != -1)
    contextMenuHiddenItems = contextMenuConfigString.substr((contextMenuEnd + 1), (contextMenuConfigString.length - 1)).split("-");
    var groupsToHide = groupItemCount;
    // Hide the hidden items
    for (i = 0; i < contextMenuHiddenItems.length; i++)
    var item = document.getElementById(contextMenuHiddenItems[i]);
    item.style.visibility = 'hidden';
    item.style.display = 'none'
    groupsToHide[item.group]--;
    var allHidden = true;
    // Work back through the groups hiding the underlines as required.
    for (i = (groupsToHide.length - 1); i > -1; i--) {
    if (groupsToHide[i] == 0) {
    AlterVisibilityOfAssociatedUnderline(groupUnderlineId[i], false);
    else if (allHidden && i == (groupsToHide.length - 1)) {
    allHidden = false;
    // If all the items have been hidden so far hide the last underline too.
    else if (allHidden) {
    allHidden = false;
    AlterVisibilityOfAssociatedUnderline(groupUnderlineId[i], false);
    return contextMenuId;
    function AlterVisibilityOfAssociatedUnderline(underLineId, visibility) {
    if (underLineId != null && underLineId != "") {
    var underlineElement = document.getElementById(underLineId);
    if (underlineElement != null) {
    if (visibility) {
    underlineElement.style.visibility = 'visible';
    underlineElement.style.display = 'block'
    else {
    underlineElement.style.visibility = 'hidden';
    underlineElement.style.display = 'none'
    function ClearTimeouts() {
    if (_fadeTimeouts != null) {
    for (i = 0; i < _fadeTimeouts.length; i++) {
    clearTimeout(_fadeTimeouts[i]);
    _fadeTimeouts = [];
    // This function chnages an elements opacity given its id.
    function FadeOutElement(id, opacStart, opacEnd, millisec) {
    ClearTimeouts();
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;
    for (i = opacStart; i >= opacEnd; i--) {
    _fadeTimeouts.push(setTimeout("ChangeOpacityForElement(" + i + ",'" + id + "')", (timer * speed)));
    timer++;
    // This function changes the opacity of an elemnent given it's id.
    // Works across browsers for different browsers
    function ChangeOpacityForElement(opacity, id) {
    var object = document.getElementById(id).style;
    if (opacity != 0) {
    // **Cross browser compatibility code**
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
    else {
    object.display = 'none';
    // This function is the click for the body of the document
    function ContextMouseDown() {
    if (_mouseOverContext) {
    return;
    else {
    HideMenu()
    // This function fades out the context menu and then unselects the associated name control
    function UnSelectedMenuItem() {
    if (_itemSelected) {
    FadeOutElement(_divContextMenu.id, 100, 0, 300);
    UnselectCurrentMenuItem();
    // Hides context menu without fading effect
    function HideMenu()
    if (_itemSelected)
    ChangeOpacityForElement(0, _divContextMenu.id);
    UnselectCurrentMenuItem();
    function UnselectCurrentMenuItem()
    _itemSelected = false;
    _currentContextMenuId = null;
    SwapStyle(_currentMenuItemId, 'msrs-MenuUIItemTableCell');
    _currentMenuItemId = null;
    ChangeReportItemStyle(_selectedItemId, "msrs-UnSelectedItem");
    // This function walks back up the DOM tree until it finds the first occurrence
    // of a given element. It then returns this element
    function GetOuterElementOfType(element, type) {
    while (element.tagName.toLowerCase() != type) {
    element = element.parentNode;
    return element;
    // This function gets the corrdinates of the top left corner of a given element
    function GetElementPosition(element) {
    element = GetOuterElementOfType(element, 'table');
    var left, top;
    left = top = 0;
    if (element.offsetParent) {
    do {
    left += element.offsetLeft;
    top += element.offsetTop;
    } while (element = element.offsetParent);
    return { left: left, top: top };
    function FocusContextMenuItem(menuItemId, focusStyle, blurStyle)
    SwapStyle(_currentMenuItemId, blurStyle);
    SwapStyle(menuItemId, focusStyle);
    // chrid edit - document.getElementById(menuItemId).firstChild.focus();
    firstChildNoWS(document.getElementById(menuItemId)).focus();
    _currentMenuItemId = menuItemId;
    // This function swaps the style using the id of a given element
    function SwapStyle(id, style) {
    if (document.getElementById) {
    var selectedElement = document.getElementById(id);
    if (selectedElement != null)
    selectedElement.className = style;
    // This function changes the style using the id of a given element
    // and should only be called for catalog items in the tile or details view
    function ChangeReportItemStyle(id, style)
    if (!_itemSelected)
    if (document.getElementById)
    var selectedElement = document.getElementById(id);
    selectedElement.className = style;
    // Change the style on the end cell by drilling into the table.
    if (selectedElement.tagName.toLowerCase() == "table")
    // chris edit - var tbody = selectedElement.lastChild;
    var tbody = lastChildNoWS(selectedElement);
    if (tbody != null)
    // chris edit - var tr = tbody.lastChild;
    var tr = lastChildNoWS(tbody);
    if (tr != null)
    // chris edit - tr.lastChild.className = style + 'End';
    trLastChild = lastChildNoWS(tr);
    if (trLastChild != null)
    trLastChild.className = style + 'End';
    function ChangeReportItemStyleOnFocus(id, currentStyle, unselectedStyle)
    _unselectedItemStyle = unselectedStyle;
    _tabFocusedItem = id;
    // We should unselect selected by mouse over item if there is one
    if(_mouseOverItem != '')
    ChangeReportItemStyle(_mouseOverItem, _unselectedItemStyle);
    _mouseOverItem = '';
    ChangeReportItemStyle(id, currentStyle);
    function ChangeReportItemStyleOnBlur(id, style)
    ChangeReportItemStyle(id, style);
    _tabFocusedItem = '';
    function ChangeReportItemStyleOnMouseOver(id, currentStyle, unselectedStyle)
    _unselectedItemStyle = unselectedStyle;
    _mouseOverItem = id;
    // We should unselect tabbed item if there is one
    if(_tabFocusedItem != '')
    ChangeReportItemStyle(_tabFocusedItem, _unselectedItemStyle);
    _tabFocusedItem = '';
    ChangeReportItemStyle(id, currentStyle);
    function ChangeReportItemStyleOnMouseOut(id, style)
    ChangeReportItemStyle(id, style);
    _mouseOverItem = '';
    // This function is used to set the style of the search bar on the onclick event.
    function SearchBarClicked(id, defaultText, style) {
    var selectedElement = document.getElementById(id);
    if (selectedElement.value == defaultText) {
    selectedElement.value = "";
    selectedElement.className = style;
    // This function is used to set the style of the search bar on the onblur event.
    function SearchBarBlured(id, defaultText, style) {
    var selectedElement = document.getElementById(id);
    if (selectedElement.value == "") {
    selectedElement.value = defaultText;
    selectedElement.className = style;
    function ResetSearchBar(searchTextBoxID,defaultSearchValue) {
    var selectedElement = document.getElementById(searchTextBoxID);
    if (selectedElement != null) {
    if (selectedElement.value == defaultSearchValue) {
    selectedElement.className = 'msrs-searchDefaultFont';
    else {
    selectedElement.className = 'msrs-searchBarNoBorder';
    function OnLink()
    _onLink = true;
    function OffLink()
    _onLink = false;
    function ShouldDelete(confirmMessage) {
    if (_selectedIdHiddenField.value != null || _selectedIdHiddenField.value != "") {
    var message = confirmMessage.replace("{0}", _selectedIdHiddenField.value);
    var result = confirm(message);
    if (result == true) {
    return true;
    else {
    return false;
    else {
    return false;
    function UpdateValidationButtonState(promptCredsRdoBtnId, typesDropDownId, forbiddenTypesConfigString, validateButtonId)
    var dropdown = document.getElementById(typesDropDownId);
    if(dropdown == null)
    return;
    var selectedValue = dropdown.options[dropdown.selectedIndex].value;
    var forbiddenTypes = forbiddenTypesConfigString.split(":");
    var chosenForbiddenType = false;
    for (i = 0; i < forbiddenTypes.length; i++)
    if(forbiddenTypes[i] == selectedValue)
    chosenForbiddenType = true;
    var isDisabled = chosenForbiddenType || IsRadioButtonChecked(promptCredsRdoBtnId);
    ChangeDisabledButtonState(validateButtonId, isDisabled);
    function ChangeDisabledButtonState(buttonId, isDisabled)
    var button = document.getElementById(buttonId);
    if(button != null)
    button.disabled = isDisabled;
    function IsRadioButtonChecked(radioButtonId)
    var rbtn = document.getElementById(radioButtonId);
    if(rbtn != null && rbtn.checked)
    return true;
    return false;
    For More info refer this
    http://stackoverflow.com/questions/7837259/ssrs-report-manager-javascript-fails-in-non-ie-browsers-for-drop-down-menus

  • Firefox often slow, not responding and showing unresponsive script errors.

    In the last few weeks, firefox has often gone unresponsive, usually shown as 'not responding.' This lasts anywhere from a few seconds to several minutes (possibly longer, but by that amount of time I loose patience and 'end task' in task manager.) This is usually followed by an 'unresponsive script' error. Which script it is varies. I've been responding by clicking 'stop script,' which usually fixes the problem temporarily.
    The problem seems to occur mostly randomly, but will predictably always occur on site with videos like youtube. Here it is also worse, taking much longer to resolve if it does at all. I've got flashblock active, and sometimes the error will occur before I get a chance to activate the video and sometimes after, but will always occur. Also, on this sort of site, the 'unresponsive script' error will also go unresponsive most of the time, which I've not seen anywhere else, meaning that the only solution, after a while is to end the process in task manager. I've at times attempted to play the same video for half an hour with no success.
    As I've therefore spent a fair bit of time in task manager, I've noticed that I end up with many processes running for FlashPlayerPlugin_15_0_0_152.exe*32 (Description: Adobe Flash Player 15.0 r0.) They build up the more I use firefox, but go away when I restart my computer. I've gotten up to at least 50 at one point. Most use 128 or 124 K of memory, but about 1 in 7 uses between 1-5000 K. I don't know if this is linked to the above issues, but I've only noticed it since it started.
    I've tried resetting firefox and it changed none of the above.
    If it helps, I used Windows 7. Feel free to ask for any more details about my system and I will do my best to answer, though I'm not an expert in computers. Thank you very much in advance for your help.

    Thanks for the advice. What solved it was disabling all addons and then restarting the computer. I've since reenabled Adblock (2.6.4) and Flashblock (1.5.17) without causing the problem to reemerge, leaving Troubleshooter (1.1a) as my only previously enabled addon I've not reenabled. I am no longer experiencing the issue.
    Regarding updating to version 32, I tried this, but the official site told me I already had the most up to date version of firefox for some reason. Normally, it updates automatically. However, as my issue has been solved I don't consider this a problem.
    Thank you very much for your advice.

  • Need more info on solving script errors -- don't have Webroot on my computer, but it gets tied up for hours at a time with Mozilla script blockages !!!!

    Whenever I am logged into FF, my computer will eventually grind to a halt -- sometimes after a few minutes, and sometimes after a few hours. I then get the script error message shown below.
    "A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete."
    <nowiki>**************************************************************************</nowiki>
    Below that generic message is one of these specific messages:
    Script: resource://gre/modules/XPCOMUtils.jsm:320
    https://secure.wlxrs.com/w!xbEiA1hkt!tswyuOeDSQ/litedepex.js:1
    resource://gre/modules/XPCOMUtils.jsm:323
    resource://gre/modules/XPCOMUtils.jsm:325
    resource:///components/nsPrompter.js:434
    https://gfx7.hotmail.com/mail/16.2.7137.1204/c2a.js:1
    resource://gre/modules/XPCOMUtils.jsm:325
    https://secure.wlxrs.com/w!xbEiA1hkt!tswyuOeDSQ/wlive.js:1
    https://secure.wlxrs.com/_D/w!xbEiA1hkt!tswyuOeDSQ/jquery-min.js:47
    chrome://global/content/bindings/textbox.xml:98
    chrome://mozapps/content/downloads/download.xml:71
    Script: https://mail.google.com/_/mail-static/_/js/main/m_i,t/rt=h/ver=am293eyFlXI.en./sv=1/am=!v8Czf-oeNMn0BO3a1PgLcnZDWwl3f6w7siCzO0WZ4q30IbVM6NJqQEKHLeJhMzB_YcWyBQ/d=1:2729
    http://pagead2.googlesyndication.com/pagead/osd.js:12
    https://gfx7.hotmail.com/mail/16.2.7137.1204/cmpt0.js:1
    http://mail.yimg.com/zz/combo?nq/launch/common-neo-base_6549.js&nq/launch/common-neo-om_6549.js&nq/launch/search-neo_6549.js&nq/launch/inbox-om_6549.js&nq/launch/inbox-listview-new_6549.js&nq/launch/inbox-message-new_6549.js&nq/launch/inbox-minty-fresh_6549.js&nq/launch/inbox-base_6549.js&nq/intl/js/launch/lang_en-US_6549.js&nq/intl/js/launch/conf_us_6549.js:194
    <nowiki>************************************************************************************</nowiki>
    I have no such problem with Internet Explorer or when the computer is not connected to the Internet; it is specific to FF. I do not have Webroot Spysweeper on my computer.
    Strangely enough, we do not have this problem with two other PCs that use FF, nor did I have it on these two computers during the first few years that I used them with FF. I bought a new PC, moved my files onto it, then suddenly it had the same problem, which is what made me think it was a malware issue.
    I checked Windows Defender and found that was not switched on and could not be switched on. So I bought three different anti-malware programs beginning with Malwarebytes and then SpyBlaster and SpyBot S&D. But they did no good.
    Just pressing the "continue" button in response to the script error message does not good, since it allows the computer to continue grinding to a halt. Worse, if those scripts are malware, I don't want them sending private info to internet sites, which is apparently their function.
    Please help me root out the problem. It has made my computer inoperative for several hours a day for the past few months.

    '''Try the Firefox Safe Mode''' to see how it works there. The Safe Mode is a troubleshooting mode, which disables most add-ons.''
    ''(If you're not using it, switch to the Default theme.)''
    * You can open the Firefox 4.0+ Safe Mode by holding the '''Shift''' key when you use the Firefox desktop or Start menu shortcut.
    * Or use the Help menu item and click on the '''Restart with Add-ons Disabled...''' menu item while Firefox is running.
    ''Don't select anything right now, just use "'Start in Safe Mode"''
    ''To exit the Firefox Safe Mode, just close Firefox and wait a few seconds before using the Firefox shortcut (without the Shift key) to open it again.''
    '''''If it is good in the Firefox Safe Mode''''', your problem is probably caused by an extension, and you need to figure out which one.
    Please follow the [[Troubleshooting extensions and themes]] article for that.
    ''When you figure out what's causing your issues, please let us know. It might help other users who have the same problem.''

  • Internet Explorer Script Errors in HTML Help

    I am using Robohelp 8 HTML. I create both WebHelp and Microsoft HTML Help. My operating system is Vista.
    The WebHelp file will be directly called from the application software to allow users to access topic specific help.
    The Microsoft HTML help is to be attached to my company's website to allow remote users to access our online help.
    I have created a project and generated WebHelp. Everything works as designed.
    However, when I change the output to Microsoft HTML Help, I get Internet Explorer Script Errors when I try to review the output.
    The compiler seems to find exception with two specific lines, specifically, AddMasterBreadcrumbs and again, highlightSearch.
    When I attempt to review the output, I can simply click No when queried if I want to continue running scripts on this page and display the HTML help. It works as it is designed. Naturally I would prefer my users won't have to click through a few error messages to get to the help.
    If I comment these two lines out in the topics, I don't receive these errors.
    Although my work-around will allow a user to open the project without seeing those Script Errors, I am concerned that it might be introducing errors that I haven't found yet.
    Does anyone else experienced this type of error in producing HTML Help?
    Does anyone know the reason this is happening and can they offer an actual solution (and not a workaround?)
    Thanks so much!
    10570Fan

    I've attached one of the screen shots and I took the liberty of posting the htm file (so you can track the specific line numbers to which the error messages refer). The second error message is the same, except it refers to line 117.
    I checked with the developers and they will use the WebHelp version. However, they are curious (as am I) why we get these error messages. Any suggestions you can provide will be appreciated.
    Thanks again.
    10570Fan

  • Java Script Error while deploying a Model with Value Help

    Hi,
    I am using EP 7.0 SP 10.
    I am trying to deploy a model which includes the Value Help for an Input field, and i am trying to deploy this model.
    The model compiles successfully, but gives a Java Script Error while deploying the model,
    ! Error on Page
    When Click on this java script error, it shows that ,
    Line:14985
    Char 1: Error
    object does n't support this property or method.
    code
    URL: <serverhost>/VCRes/WebContent/VisualComposer6.0/bin/223334.htm?24102006.1712.
    The Same model works in dev server, and it fails in the production server.
    Thanks and Regards,
    Sekar

    Hi jakob,
    Thankyou for your quick response.
    I did a basic model with the help of a documentation which i got from this forums.I created a iView and from there i used Bapi "BAPI_SALESORDER ".
    I created a Input Form and a outpot form (table view).I tested model and am able to get the output.but when i try to deploy it is giving me the error.
    And i think am not paring any formulas here.
    Please guide me.
    thanks and regrads
    Pradeep.B

  • Windows vista installer script errors

    I have been unable to install certain pgms or windows vista updates because the installer gets a "script error". This occurred after IE v9 was automatically installed a year ago.  I am looking for advice on how to repair the Vista OS because all repair efforts listed on Microsoft troubleshooting steps on the error code have failed. Can anyone tell me how to repair corrupt jscript files or re-load the OS without use of a VISTA install CD. This is a THinkpad R61i and the OS was pre-installed by Lenovo.

    if you have the recovery partition you can use the thinkvantage button or F11 at startup to excess the recovery environment from there you can restore to factory or recover to a saved backup
    Thinkpad R61 7733-1GU
    Thinkpad X61T 7762-54U
    Thinkpad X60T 6363-4GU
    Did a member help you today? Thank them with a Kudo!
    If a post answers your question, please mark it as an "Accepted Solution"!
    Regards,
    GMAC

  • Tons of Script Errors and Slow Redraw

    I recently setup CS 5.5 with Bridge 4.1.0.54 on a new MacBook Pro.
    When I launch Bridge I get the following messages:
    I'm confident of a few things. First, it's obviously somewhat related to this issue:
    http://forums.adobe.com/message/3083307
    Second, it has nothing to do with CFS or Samba shares.
    Lastly, the error has something to do with the output module script- if I startup without it on, no errors.
    Currently I have my MBP setup with two drives. A SSD for the system software and a second SATA drive for content. All my system software is on the SSD boot drive, however, my users folder is split between the two. Everything but ~/users/xxx/library is symbolicly linked on the second drive.
    If you look closely at the thread referenced above, all the errors are the same except for the "could not create" error. In the thread, it lists a specific user, my error lists Volumes/Null/...
    Here is what I've tried so far:
    Reset the app
    Trashed the prefs
    Started up w/o scripts
    reinstalled the entire CS 5.5 Suite after Uninstalling and using the cleaner tool
    To add insult to injury, When the output script is off and bridge does load, it does it painfully slow to the point where it is not usalbe. It is also having a ton of redraw issues.
    Any advice?

    I think I may have found a workaround.
    I've been racking my brain over the past few days to figure this one out. I've tried at least a dozen permsissions fixes, both through the apple utility and manually. I've reinstalled both bridge and CS 5.5 three times using the cleaner script and a fresh install. NOTHING.
    So I went back to the original error message:
    One thing I noticed was that everytime Bridge was starting, it created a folder in /volumes called "null". I checked three other macs setup the same was as mine and NONE of them created this folder during bridge startup.
    I still have not figured out why my laptop is doing this.
    However, I looked at the error and it seemed that bridge was looking for a path that didn't exists, which was /volumes/null/Adobe/Adobe Bridge CS5.1/Adobe Output Module/Mediagallery
    the path Adobe/Adobe Bridge CS5.1/... is the same path as my ~/library/application support/... folder for adobe.
    First I created a regular alias to that folder to create the fake path. No dice. Then I tried a symlink to creat the fake path /volumes/null/Adobe/Adobe Bridge CS5.1/Adobe Output Module/Mediagallery
    Voila. Worked like a charm. I can now start up Bridge without any errors, script errors, etc. I also have all the functionality of my Output panel back and I'm able to use it without getting the insufficiant disk space error.
    Now to figure out why Bridge is creating a "Null" folder.

  • Wda_ls_main.js - Script Error IE

    Hello,
    i am experiencing problems with the wda_ls_main.js using Internet Explorer 7and CRM 7.0. The Internet Explorer constantly reports an Script error, while the same WDA-Application is running without problems in Firefox 3.5. I've done some research regarding the cause, the lines 356-358 seem to be the problem.
    var instance = this.getComponentInstance(id);
    instance.attachEvent("onactivate", this.focusForwarder);
    instance.attachEvent("ondeactivate", this.blurForwarder);
    instance is null so every call of a method results in an error.
    I set an breakpoint in Firefox Javascript Debugger on these lines which is never hit.
    Any help to get rid of this error is very appreciated.
    Regards,
    Arne

    Note 1454373 worked.
    However, deleting the Browser files needs to be done manually. In some cases the Delete button doesn´t work properly.
    Internet options --> In section ´browsing history´ --> settings --> view files.
    Then delete the files manually.
    Thanks!

  • Habitual Script Errors with Verson 29.0.1

    While pop-up script errors have bedeviled Firefox since nearly forever, I've found after upgrading to version 29.0.1 to have even more of a problem with this. In particular, on the website http://www.wonkette.com/ I've had a terrible time just in the last week without their having been any change to that website or more browser. It seems to have happened out of nowhere. It's too the point of where I can not navigate the site without being on it for hours. I can get half-a-dozen script error pop-ups within an hour, and this is without even going between pages. The site absolutely crawls (scrolling becomes near-impossible) and hangs for minutes on end.
    Can anyone replicate this experience, there? Has anyone found any ways around these errors? I can tell you right up front that it's not the result of a corrupted profile. It's not the the plug-ins; I've experimented with turning them all off, turning them off one by one and then turning them back on to see which gives me problems...and it's not that. As you can tell by the troubleshooting information, I'm running a rather old operating system, but that's only been of minimal issue across the internet for me. This seems to be something with the browser, and I'm wondering if there are any settings on about:config that may help me with this issue?

    Hi FireFoxFan1,
    Thank you for your question. We had some really excited visitors to the support forum on Monday and we could use some more help. If you would like to help out this is how to become a contributor: [https://support.mozilla.org/en-US/get-involved Get Involved]
    In regards to your issue, I opened up the Networker for that website and saw a ton of scripts running. If you want to block them to prevent the message you can use the Ad Block Plus add on to scan what is running on the page too.
    I hope this helps. And thank you for being a Firefox Fan, I am too ;-)

Maybe you are looking for