home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 December / PCWorld_2006-12_cd.bin / komunikace / netscape / nsb-install-8-1-2.exe / chrome / aim.jar / content / aim / icqcontextMenu.js < prev    next >
Text File  |  2006-01-06  |  6KB  |  193 lines

  1. /*------------------------------ IcqContextMenu ---------------------------------
  2. |   This JavaScript "class" is used to implement the IM standalon's            |
  3. |   content-area context menu.                                                 |
  4. |                                                                              |
  5. |   For usage, see references to this class in IcqcontextMenu.xul.                |
  6. |                                                                              |
  7. ------------------------------------------------------------------------------*/
  8.  
  9. function nsIcqContextMenu( xulMenu ) {
  10.   this.menu                  = null;
  11.   this.sidebar          = false;
  12.   this.screenName       = "";
  13.   this.onlineTab        = false;
  14.   this.listSetupTab     = false;
  15.   this.target           = null;
  16.   this.initMenu( xulMenu );
  17. }
  18.  
  19. nsIcqContextMenu.prototype = {
  20.  
  21.     onDestroy : function () {
  22.     },
  23.     initMenu : function ( popup, event ) {
  24.       this.menu = popup;
  25.       this.setTarget( document.popupNode );
  26.       this.initItems();
  27.     },
  28.  
  29.   
  30.     initItems : function () {
  31.         this.showItem("context-sendICQ");
  32.         this.showItem("onlineseparatoricq");
  33.         this.showItem("context-rerequest");
  34.         this.showItem("rerequestseperatoricq");
  35.         this.showItem("context-editdisplay");
  36.         this.showItem("editseperatoricq");
  37.         this.showItem("context-ignore");
  38.         this.showItem("ignoreseperatoricq");
  39.         if (this.screenName != "" && this.screenName != null) {
  40.           this.showItem("context-sendICQ", this.onlineTab);
  41.           this.showItem("onlineseparatoricq", this.onlineTab);
  42.           this.showItem("context-editdisplay", this.menu);
  43.           this.showItem("editseperatoricq", this.menu);
  44.           this.showItem("context-ignore", this.onlineTab);
  45.           this.showItem("ignoreseperatoricq", this.onlineTab);
  46.           var isInAuthList = new Object();
  47.           aimFeedbagManager().IsInAuthList(this.screenName, isInAuthList);
  48.           if ( isInAuthList.value == true )  {
  49.             this.showItem("context-rerequest", this.menu);
  50.             this.showItem("rerequestseperatoricq", this.menu);
  51.           }
  52.         }
  53.         
  54.     },
  55.  
  56.     setTarget : function ( node ) {
  57.       this.target = node;
  58.           var sidebarframe=window; 
  59.           var parentState = top.document.getElementById("AimSidebarState");
  60.           if(!parentState)
  61.           {
  62.               var tab = sidebarframe.document.getElementById("OnlineOrgTabPanel");
  63.               if (tab.selectedIndex == 0 )  
  64.                 {
  65.                   this.sidebar = true;   
  66.                   this.onlineTab = true;
  67.                   this.listSetupTab = false;
  68.                 }        
  69.         else
  70.                 {
  71.                   this.sidebar = true;   
  72.           this.onlineTab = false;
  73.           this.listSetupTab = true;  
  74.                 }
  75.       }
  76.       else
  77.       {
  78.         var curTab;
  79.         curTab = parentState.getAttribute("AimSidebarTab");
  80.           // Determine if we're in the Online tab or List Setup tab
  81.             if(curTab == "Online")
  82.               {
  83.                   this.onlineTab = true;
  84.                   this.listSetupTab  = false;
  85.           this.sidebar = false;
  86.               }
  87.             else
  88.               {
  89.                   this.listSetupTab = true;
  90.                   this.onlineTab = false;
  91.           this.sidebar = false;
  92.               }
  93.       }
  94.       this.screenName = getSelectedScreenName();
  95.     },
  96.  
  97.     
  98.     cmdContextSendIM : function () {
  99.       cmdNewIM();
  100.     },
  101.  
  102.     cmdContextAddContact : function () {
  103.       cmdAddBuddy();
  104.     },
  105.  
  106.     cmdContextAddGroup : function () {
  107.       cmdAddGroup();
  108.     },
  109.  
  110.     cmdContextDelete : function () {
  111.       cmdDelete();
  112.     },
  113.     
  114.     cmdContextReRequest : function () {
  115.       cmdRequestAuth();
  116.     },
  117.  
  118.     cmdContextEditDisplay : function () {
  119.       cmdRename();
  120.     },
  121.  
  122.     cmdContextFindUser : function () {
  123.       cmdIcqSearch();
  124.     },
  125.     
  126.     cmdContextIgnore : function () {
  127.       var pIAimPrivacy = aimPrivacy();
  128.       if ( !pIAimPrivacy )
  129.         return false;
  130.       pIAimPrivacy.DenyListAdd(this.screenName);
  131.     },
  132.     
  133.     // Utilities
  134.  
  135.     // Show/hide one item (specified via name or the item element itself).
  136.     showItem : function ( itemOrId, show ) {
  137.         var item = null;
  138.         if ( itemOrId.constructor == String ) {
  139.             // Argument specifies item id.
  140.             item = document.getElementById( itemOrId );
  141.         } else {
  142.             // Argument is the item itself.
  143.             item = itemOrId;
  144.         }
  145.         if ( item ) {
  146.           var styleIn = item.getAttribute( "style" );
  147.           var styleOut = styleIn;
  148.           if ( show ) {
  149.             // Remove style="display:none;".
  150.             styleOut = styleOut.replace( "display:none;", "" );
  151.  
  152.            } else {
  153.                 // Set style="display:none;".
  154.                 if ( styleOut.indexOf( "display:none;" ) == -1 ) {
  155.                     // Add style the first time we need to.
  156.                     styleOut += "display:none;";
  157.                 }
  158.             }
  159.             // Only set style if it's different.
  160.             if ( styleIn != styleOut ) {
  161.                 item.setAttribute( "style", styleOut );
  162.             }
  163.         }
  164.     },
  165.  
  166.     // Set given attribute of specified context-menu item.  If the
  167.     // value is null, then it removes the attribute (which works
  168.     // nicely for the disabled attribute).
  169.     setItemAttr : function ( id, attr, val ) {
  170.         var elem = document.getElementById( id );
  171.         if ( elem ) {
  172.             if ( val == null ) {
  173.                 // null indicates attr should be removed.
  174.                 elem.removeAttribute( attr );
  175.             } else {
  176.                 // Set attr=val.
  177.                 elem.setAttribute( attr, val );
  178.             }
  179.         }
  180.     },
  181.  
  182.     // Set context menu attribute according to like attribute of another node
  183.     // (such as a broadcaster).
  184.     setItemAttrFromNode : function ( item_id, attr, other_id ) {
  185.         var elem = document.getElementById( other_id );
  186.         if ( elem && elem.getAttribute( attr ) == "true" ) {
  187.             this.setItemAttr( item_id, attr, "true" );
  188.         } else {
  189.             this.setItemAttr( item_id, attr, null );
  190.         }
  191.     }
  192. };
  193.