Keychain Scripting: error fetching Appleshare passwords

The following seems to be a commonly recommended way of mounting an AFP volume via AS (e.g. http://www.google.com/search?q=keychainscripting+mountvolume):
tell application "Keychain Scripting"
set theKey to first key of current keychain whose name is "servername"
set acct to account of theKey
set pswd to password of theKey
end tell
However this raises an error at the 'password of theKey':
Event log:
get password of AppleShare key 1 of keychain "login.keychain"
"Keychain Scripting got an error: An error of type -25316 has occurred."
Evidently this has worked for other people, so is it just me?
Rgds,
Ben
various   Mac OS X (10.4.7)  

I've been racking my brain over this one for hours. I found prior posts that suggests Keychain Scripting is unable to pull passwords from Appleshare entries in keychains. Seems to work on PPC but not Intel.
So... I cheated. I used the Keychain Access GUI to add an additional application (not Internet, not Appleshare) entry. I named it "servername.appleshare" and Keychain Scripting has no issues with pulling the password.
My automator workflow has an AppleScript much like af3556's at the top that pulls the password and assembles the afp:// URL. The URL is fed to a Connect to Servers action. I dropped this little automator app into my Login Items and now I have automounting of my afp share that's a bit more secure than guest access.
I still have the Appleshare entry in case I use the Finder to attach to the share. But for my simple setup the extra applicaton entry kludge is manageable.
24" iMac   Mac OS X (10.4.7)  

Similar Messages

  • I get a java script error saying my password is incorrect?

    when I start Firefox 5 a pop says" java script error password my be invalid try typing in your email address" no idea what it is talking about

    Start Firefox in <u>[[Safe Mode]]</u> to check if one of the extensions is causing the problem (switch to the DEFAULT theme: Firefox (Tools) > Add-ons > Appearance/Themes).
    * Don't make any changes on the Safe mode start window.
    * https://support.mozilla.com/kb/Safe+Mode
    * https://support.mozilla.com/kb/Troubleshooting+extensions+and+themes

  • Skydrive Pro doesn't remember saved credentials (FBA) and gives "script error" on login

    I'm having some trouble with authentication with Skydrive Pro and an on-premises Sharepoint Foundation 2013 deployment.
    Sharepoint is configured with forms-based authentication to an AD LDS instance using a 3rd party LDAP provider.
    There are two issues:
    1) Skydrive Pro doesn't appear to save credentials - After a while (or frequently after a reboot), Skydrive Pro will re-prompt the user for credentials. Checking the "Remember me" box appears to have no effect. The site is in IE's trusted site list
    with the "Logon with current user/password" option checked. Are there any other steps I should be taking to make Skydrive Pro permanently save credentials?
    I have seen a few pages about changing the "timeout" setting in a web.config file, but I'm not sure which of the many web.config files I would use. The <authentication mode="Forms"> blocks that I found while looking through didn't
    have a timeout attribute set at all. I've also read something about setting the SlidingExpiration attribute, but am also unclear whether that's related or where I would go about putting it.
    2) Skydrive Pro presents the normal Forms-based log-in page in a new window to the user to enter their credentials. After entering them, the window doesn't close - instead, the window tries to render the home page of the sharepoint site. It only shows the
    colored top bar and a button that says "Skip Ribbon Commands." It then presents a pop-up titled "Script Error" from the browser that says:
    An error has occurred in the script on this page.
    Line: 150
    Char: 1
    Error: 'document.getElementById(...)' is null or not an object
    Code: 0
    URL: http://domain.com/_layouts/15/start.aspx
    It asks whether to continue running scripts on the page. If the user closes the popup and the browser window, Skydrive Pro appears to work and sync as normal - but the error messages are annoying and scary to the end user.
    Line 150 from the referenced start.aspx:
    <a href="javascript:;" onclick="document.getElementById(&#39;startNavigation&#39;).focus();" class="ms-accessible ms-acc-button" accesskey="Y">Skip Ribbon
    Commands</a>
    Any way to remedy this?
    Any help is appreciated.
    aaron

    Hi Aaron,
    I'm having this exact same issue and was wondering if you were able to figure this out?
    Thanks!

  • Bootstrap.js script error during eval() "Error initializing JDF library"

    bootstrap.js script error during eval(). Everytime I open Adobe Acrobat 6.0 I recieve this error message once it loads up. I also recieve another error messeage while it is in the process of loading "There was an error while loading the plug-in "SaveAsXML.api.' This file was not found. I am wondering if this is why I cannot convert a file to PDF from word when I go to convert from file from adobe acrobat 6.0. It is vital to my business that I convert these files from Word. Even when I try to go to Adobe Distiller the error message "Error initializing JDF library"  pops up and will not allow me to convert my file to PDF  
    Thank you       

    Hello,
    I solved the problem (even if I really don't know how) :-/
    What I did :
    1. remove all the environnement variables for ORACLE : ORASID, ORACLE_SID, ORAHOME, ORACLE_HOME, ORACLE_BASE...
    (I don't know why I have so many variables...)
    2. I remove any varible of LANG (NLS_LANG, ORA_LANG...)
    3. I checked the rpm (it seems that some of the library where missing, for example libXtst.so.6)
    By the way, I installed the patch 6078836. Unzip the patch, it will create the library libdb.so.2. Move this file to /usr/lib
    4. I uninstall first the agent and the oms, then the database.
    5. I reinstalled everything and run the ConfigureGC.pl script. I had to go through the bug 7483221 (the script failed twice because of invalid login/password, ORA-01017). The procedure is described on several sites, I used this one :
    [http://www.idevelopment.info/data/Oracle/DBA_tips/Enterprise_Manager/OEM_10.shtml]
    I hope it will help you to complete the installation.
    Regards

  • Script Error on web pages and email

    I have looked at your solutions and they don't seem to work for me so I will tell my story. I have a HP Photosmart Premium Model 309A print-scan-copy-fax working with Windows 7 and IE9. My Hp black cartridges stopped working and I replaced all of them with new HP. Still couldn't get the black to print anything but gray so i used the Hp doctor uninstalled and downloaded the  recommended driver and software. When I finished I printed a fax test and all seemed to be well until I tried to print a picture from an email. Got the script error:
    Line 2072, Char: 1, Error: unspecified, code: 0, URL: res://ieframe.dll/preview.js
    Then I tried to print something from the web and got these two:
    URI: http://h30434.www3.hp.com/jspellEvolution/jspellEvolution.js
    URI: http://mail.yimg.com/zz/combo?/kx/ucs/common/js/131/jsonp-super-cached-min.js&kx/ucs/avatar/js/21/av... 
    I have worked all day trying to figure out what to do to make this thing print right but no luck. The printer is not quite 2 years old but if you can't help it will go on the junk heap.....so hope there is a solution out there!
    This is a 32 bit so I can't use that fix and it is debugged so that isn't the fix. What else?
    thanks for your input.
    This question was solved.
    View Solution.

    I'm betting that there is an error caught in the browser's cache that's causing it to fail for scripting errors. Click on the image of the gear under the red X in the upper right-hand corner of the window. Select Internet options from the list. On the General tab, under the Browsing History section, click on delete. Make sure that every check box is checked (you can leave passwords unchecked if you use IE to remember your passwords). Click Delete. Click OK to close the Internet Options window. Close the browser. Wait about 15 seconds. Open the browser and it should work better.
    -------------How do I give Kudos? | How do I mark a post as Solved? --------------------------------------------------------

  • Scripting error and no portal content display

    hi all,
            I am stuck up with this major prob. god bless all who wud try to help me. I downloaded the Netweaver sneak preview 04 from https://www.sdn.sap.com/sdn/downloaditem.sdn?res=/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/uuid/cfc19866-0401-0010-35b2-dc8158247fb6.
    Everythin is installed and workin fine execpt wen i login d EP usin superadmin(username:admin password:admin) i am not able to view any Portal content. the portal catalog is empty. i am recievin d scripting error:
    Line:90
    code:0
    ERROR: 'undefined' is null or not an object
    i tried everythin poss like loggin through d emergency user SAP* and also set the security settings to low safety.
    but nothin workin.
    PLZ PLZ PLZ require urgent help...
    how do i manipulate d scripting and change d error

    I have the same issue, very bizarre indeed. Did you find out in the end what caused it ?
    thanks,
    Geert
    Message was edited by: Geert Steyaert
    Forget about it, this thing has bitten me before ... grrrr . use the FQDN (or at least the hostname) instead of the IP address. Everything works fine now.

  • Portal import scripts return invalid username/password

    When we use the import scripts without modification and pass in the password as a parameter it errors out with invalid username/password. Is it because the script picks default password of portal30 instead of the one specified on command line? This is a major issue for us during migration as passwords may be different on each environment. However the scripts work when the password is hardcoded in the script. Anybody encountered the same problem. Any workarounds/fixes?

    Could you please let us know what version of portal you are using. Also, let us know whether you used a UNIX script or a NT script.
    Thanks.

  • Portal import scripts give invalid username/password

    When we use the import scripts without modification and pass in the password as a parameter it errors out with invalid username/password. Is it because the script picks default password of portal30 instead of the one specified on command line? This is a major issue for us during migration as passwords may be different on each environment. However the scripts work when the password is hardcoded in the script. Anybody encountered the same problem. Any workarounds/fixes?

    Could you please let us know what version of portal you are using. Also, let us know whether you used a UNIX script or a NT script.
    Thanks.

  • Some browser script errors ?

    Hi,
    I have some questions ......
    I just install j2ee locally.
    1. I can able to open portal but brower throughs some scripting errors. But when i refresh it it works fine. While i click on user administration it also gives some screepting errors.(Internet Explorer 7)
    2. Is there any sld configuration need for running webdynpro java.
    3. I am not able to open visual administration with same password. It gives error like " Error in connection",.
    Regards,
    Gurprit Bhatia
    Edited by: GURPRIT BHATIA on Sep 17, 2008 6:55 AM

    Hi Gurprit,
    Please refer to the PAM(Product Availability Matrix) in here.
    https://websmp206.sap-ag.de/~form/handler?_APP=00200682500000001303&_EVENT=DISP_NEW&00200682500000002804=01200615320900001250
    Also, refer to these threads.
    portal not working properly on IE 7.0
    Internet Exporer 7.0 Settings for EP 6.0 SP19
    Hope this helps.
    Cheers,
    Sandeep Tudumu

  • I keep getting script errors when accessing Amazon Seller merchant pages. I get the following 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. Script

    I keep getting script errors when accessing Amazon Seller merchant pages. I get the following 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. Script: chrome://spautofill/content/spOverlay.js:150, I also get js210 as well. I have cleared all cookies and history and unistalled Firefaox and reinstalled. Been thru my AVS and set the site as trusted in every possible place. Still get the problem. Do not get it with IE on same PC.
    == URL of affected sites ==
    https://sellercentral.amazon.co.uk

    Same problem but with a different vendor site:
    https://www.webvitamins.com/myfavorites.aspx
    Not only does the page hang, but the other tabs also hang.
    I contacted the vendor and their reply was "we were told that this looks like a script that is used by "Sticky Password", third-party software that must have been installed on your browser. However, our website did not install it and does not have anything to do with it." As far as I can tell, "Sticky Password" is not installed on my Firefox.
    Same problem as above occurs, but with IE 8.0.6001.18702. Therefore, it is not unique to Firefox.
    CAUSE DETERMINED: Have determined that this problem only occurs when Kaspersky Password Manager is installed. In Firefox, if the "Password Manager Autofill Engine" add-on is disabled, the problem goes away.

  • Wi-Fi script errors line 183

    I posted this thread in other spot, but it was apparently the wrong area.  Here's the issue:
    I try to use the Verizon Wi-Fi Activation program, and cannot get it to work.  All the symptoms are below.
    First, it pops up a box titled Internet Explorer Script Error.  Details are:
    An error has occurred in the script on this page.
    Line: 183
    Char: 3
    Error: Automation server can't create object
    Code: 0
    URL: file://C:/Progra,%20Files/Verizon/WIFI/smartaccess/common/snapins/installer/inc/vz_overload.js
    Do you want to continue running scripts on this page?
    Whether I select YES or NO, here's where it goes next: 
    Title bar: ss_shell_Title
       Verizon Wi-Fi Installation
    header
                                                      O
                                             subheader
    and the O is the circle that just keeps rotating and rotating and rotating and rotating and rotating....
    Why can't it be a simple sign-in like we do with email addresses instead of some crazy program that doesn't work?
    I tried this while using Google Chrome, Mozilla Firefox, and Internet Explorer (just to make sure it wasn't a browser conflict of some sort), with it always doing the same thing...
    Oh, and the follow-up message:
    errorheader1 <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errorheader2")); // </script> errorheader2
    <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext1")); // </script> errortext1
    <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext2a")); // </script> errortext2a <script type="text/javascript">// if (isDSL) document.write(sma_loc_GlobalXLate("errortext2b")); // </script> <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext2c")); // </script> errortext2c <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext3")); // </script> errortext3 <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext4")); // </script> errortext4
    <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext5")); // </script> errortext5
    <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext6")); // </script> errortext6
    <script type="text/javascript">// document.write(sma_loc_GlobalXLate("errortext7") + (isDSL ? ' <B>800-567-6789</B> ' : ' <B>888-553-1555</B> ') + sma_loc_GlobalXLate("errortext8")); // </script> errortext7 888-553-1555 errortext8

    A lot of people wish that these hotspots for Verizon were nothing more than an HTTP page walled garden setup until you punched in a Verizon Username and Password into the web page. Walled Gardens aren't too hard to set up but they are also easy to get around (but if someone gets around, you can set them on a shoddy QoS profile anyhow). Not doing that results in issues with platform dependencies (excluding really anything other than Windows on a laptop to be used). Around my area, every Wi-Fi Hotspot I find broadcasts in the clear and is basically connect and go. Some of them require accepting an agreement, but that's no problem.
    ========
    The first to bring me 1Gbps Fiber for $30/m wins!

  • Javadoc: Error fetching URL

    one of our project is accessing the following site and getting error message:
    [javadoc] javadoc: Error fetching URL: http://java.sun.com/products/jdk/1.3/dos/api/package-list
    NOTE: I am perhaps compiling my Java code behind a firewall, which is protected by user-id and password. How do I pass on the user-id and password for authentication.
    Is there any remedy for this?.

    don't know if this was cut and pasted or it a typo but the url: http://java.sun.com/products/jdk/1.3/dos/api/package-list is invalid it should be:
    http://java.sun.com/products/jdk/1.3/docs/api/package-list.
    You shouldn't need to have any access at all the the internet when running the javadoc tool. so not sure what your trying to do.

  • Keychain Issue with Entourage SMTP password or port attribute

    I am posting this under Using OS X rather than Mail since I do not
    use Apple's Mail. The problem is the Microsoft Entourage or something
    may be sending bad information to the OS X keychain and this prevents me
    from sending mail to my ATT/Yahoo account. The workaround I have
    been using to send mail is use the OS X Keychain First Aid repair.
    After the repair Entourage will send the message one or two times then
    I get the following Keychain verification error note:
    Item “pop.att.yahoo.com” has unspecified value for port attribute
    Item “smtp.att.yahoo.com” has unspecified value for port attribute
    Problems were found; you should choose the Repair option to fix them
    Verification failed.
    The Repair option corrects the problem until the next message is
    sent. I have done everything I can think of to the Entourage v12.1.7
    settings and something is still not right.
    I am beginning to suspect a Keychain bug or error but have no idea
    how to get the correct attribute written to the keychain.
    Maybe someone could provide some terminal commands to the will
    help me write the correct password and port attribute to the keychain.
    I am open to any suggestions to clear being nagged every time I
    need to send a message to enter my password. The POP mail works
    fine. This seems to be an issue with the password that is required
    by the ATT/Yahoo smtp server.

    If you are sure your primary account is setup correct (per the above URLs), open
    the Applications/Utilities/Keychain Access.app and go to Keychain Access/Keychain
    First Aid and click on the Verify and Repair if necessary.
    FYI, Entourage will write errors to the keychain if you have the account setup wrong.
    My error (that cause the keychain errors) was I typed in the my ID and password in
    the smtp option. Check the box to use the received and do NOT type in the address.
    When you save the settings with nothing in the boxes, Entourage will do it for you
    and it will work.
    I don't know why but it will not work if you type in the info. Just follow the rules
    and it will work
    Try It!!
    Message was edited by: aRKay

  • 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

  • IE Script error when double clicking on a view in Abap Webdynpro component

    Hello experts,
    I am running mini SAP trial version 2004 with Internet explorer 7.0 and also installed gui patch 23.
    I am making a sample application in SE80 and when double clicking on a view in Abap Webdynpro component I get following error:
    <b>Internet Explorer Script Error</b>
    An error has occured in the script on this page.
    Line: 1
    Char: 1
    Error: 'wdp_show_menu' is undefined
    Code: 0
    URL: http://satellite5200:8000/sap/bc/wdvd/painting.html?_vdrespkey=EOJ6V1JQMX0VLTQ7AP6DQM64Y&_vdframe=painting&sap-client=000
    Do you want to continue running scripts on this page?
    Thanks in advance.
    Bhupendra

    Hi Bhupendra,
       If you are seeing this error in the Se 80 editor , i guess you can ignoire that ...While running the application it will not show any error.
    Thanks
    Anzy

Maybe you are looking for

  • Urgent !!Report Fiscal year for each Month i.e.12mnths

    Hi All,   I have a cube with following details. 1.Revenue Value ==1200 2.Fiscal year==2007 3.Product type==A But If i need to create a Dashboard Report with this Cube, But it has display tht Fiscal Year Value 2000 for each month Like ..KF=1200/12(mon

  • Starting a JAR File in Linux

    Hi, , to start a jar file in Linux from a file.. how can i do that?... like a .*bat file in windows, or a script file in unix... Thanks verry much, and sorry my english, (i'm form .UY :) )

  • How to set datapackage and  Idoc

    Hi could any body  tell me , How to set datapackage and Idoc in sap bw

  • Trackpad non responding for wake up on macbook pro late 2008

    i mentioned a problem with my macbook pro late 2008 since upgrading to 10.8. while clicking the trackpad to wake up my macbook air 2011 everything works fine, but on my macbook pro late 2008 it wouldn't. i have to click either the spacebar or any oth

  • Olympus Digital Voice Recorder (VN960PC)

    I have an Olympus Digital Voice Recorder (VN960PC). On the Olympus site they have no Mac OSX software [though they do have it for the Dark Side] that will allow me to download the audio files onto my mac mini [PPC]. Does anyone have any suggestions?