home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 May / 05_02.iso / software / netscape6 / nim.xpi / bin / chrome / aim.jar / content / aim / AimABTab.js < prev    next >
Encoding:
JavaScript  |  2001-05-22  |  5.8 KB  |  190 lines

  1. //var RDF = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService();
  2. //RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService);
  3. //var aim = RDF.GetDataSource("rdf:AIM");
  4. var container = Components.classes['@mozilla.org/rdf/container;1'].createInstance();
  5. container = container.QueryInterface(Components.interfaces.nsIRDFContainer);
  6. container.Init(aimRDFDataSource(), aimRDF().GetResource("NC:AIM/BuddyList"));
  7. var gScreenName;
  8. var gGroupArray;
  9. var aimABInfo;
  10. var gGroupInitState = new Array();
  11. var pIAimBuddy = aimGetIMManager().QueryInterface(Components.interfaces.nsIAimBuddy);  
  12.  
  13. function OnLoadABTab()
  14. {
  15.   dump("Calling OnLoadABTab\n");
  16.  
  17.   // Initialize online state
  18.   var target = aimRDFDataSource().GetTarget(aimRDFSession(), aimRDFSessionState(), true);
  19.   var state = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
  20.  
  21.   var deck = document.getElementById("AIMDeck");
  22.   if (!(state == "Online" || "OnlineAway" == state))
  23.   {
  24.     deck.setAttribute("index", 1);
  25.   }
  26.   else // we're online
  27.   {
  28.     RegisterSaveListener(OnUnloadABTab);
  29.     deck.setAttribute("index", 0);
  30.     // pIIMManager is in Aim.js
  31.     aimABInfo = aimGetIMManager().QueryInterface(Components.interfaces.nsIAimABInfo);
  32.  
  33.     try
  34.       { gScreenName = aimABInfo.GetScreenNameFromABURI(editCard.abCardURI); }
  35.     catch(ex)
  36.       { gScreenName = ""; }
  37.      setTimeout('BuildGroupFrame()',50);
  38.  
  39.      document.getElementById('ScreenName').setAttribute("value", gScreenName);
  40. //   document.getElementById('ScreenName').setAttribute("disabled", true);
  41. //   document.getElementById('BuddyListCheckbox').checked = true;
  42. //   document.getElementById('BuddyListCheckbox').disabled = true;
  43. //   document.getElementById('profile').disabled = true;
  44.   }
  45. }
  46.  
  47. function OnUnloadABTab()
  48. {
  49.   dump("Calling OnUnloadABTab\n");
  50.   var popup = null;
  51.   var uri = editCard.abCardURI;
  52.   if (!uri) 
  53.   {
  54.     // If this is a New Addressbook card, then we need to grab the URI
  55.     popup = document.getElementById('abPopup');
  56.     if ( popup )
  57.     {
  58.       uri = popup.getAttribute('data');
  59.     }
  60.   }
  61.   var changedScreenName = false;
  62.   if ( gScreenName && (gScreenName != document.getElementById('ScreenName').value))
  63.   {
  64.     changedScreenName = true;
  65.     aimABInfo.RemoveABURIFromScreenName(gScreenName, uri);
  66.   }
  67.   gScreenName = document.getElementById('ScreenName').value;
  68.   aimABInfo.SaveScreenNameAndABURI(gScreenName, uri);
  69.  
  70.   var currentlyChecked;
  71. for ( var i=0; i < gGroupArray.length; i++ ) 
  72. {
  73.     currentlyChecked = GetCheckBoxState( gGroupArray, i );
  74.  
  75.     // if the box is checked AND it was not previously checked (or the user changed the IM screen name, add the buddy to the group
  76.     if (currentlyChecked && (!gGroupInitState[i] || changedScreenName)) 
  77.         {
  78.         try 
  79.                {
  80.               //pIAimBuddy.AddBuddy(gGroupArray[i], gScreenName, null, aimInsertionStyles().InsertEnd);}
  81.         aimBuddyAddBuddyAfter(gGroupArray[i], gScreenName, null);}
  82.         catch (e) 
  83.             { dump("error adding buddy\n");
  84.         }
  85.                 }
  86.         // if it was checked before, but not checked now, remove the buddy unless the user changed im screen names
  87.         else if( !currentlyChecked && gGroupInitState[i] && !changedScreenName)
  88.         {
  89.               try
  90.             { 
  91.         aimBuddyRemoveBuddy(gGroupArray[i], gScreenName);
  92.          }
  93.               catch (e)
  94.             { dump("error removing buddy\n");
  95.         }
  96.         }
  97. }
  98. }
  99.  
  100. function BuildGroupFrame()    
  101. {
  102. //  if(gScreenName == "")
  103. //    return;
  104.         if(document.getElementById("AddBuddyGroupList").childNodes.length > 0)
  105.       return;
  106.  
  107.     var a = new Array();
  108.     var i = 0;
  109.     gGroupArray = a;
  110.  
  111.     var enumerator = container.GetElements();
  112.     while (enumerator.hasMoreElements()) 
  113.         {
  114.         var element = enumerator.getNext();
  115.         var resource = element.QueryInterface(Components.interfaces.nsIRDFResource);
  116.         var attr = aimRDFDataSource().GetTarget(resource, 
  117.             aimRDF().GetResource("http://home.netscape.com/NC-rdf#Name"), true);
  118.         if (attr)
  119.             attr = attr.QueryInterface(Components.interfaces.nsIRDFLiteral);
  120.         if (attr) 
  121.         {
  122.             attr = attr.Value;
  123.             a[ i ] = attr;
  124.             i = i + 1;
  125.         }
  126.     }
  127.     CreateGroupList( a );
  128. }
  129. function CreateGroupList( a )
  130. {
  131.         listDocument = document.getElementById("AddBuddyGroupList")
  132.         dump("listDocument"+listDocument.nodeName+"\n")
  133.         listDocument.appendChild(document.createElement("spring"))
  134.  
  135.         for ( var i=0; i < a.length; i++ ) {
  136.                 chkboxname = "checkBox" + a[i];
  137.                 var inBudGroup = new Object();
  138.         if ("" != gScreenName)
  139.         {
  140.                     pIAimBuddy.BuddyIsInGroup(gScreenName, a[i], inBudGroup);
  141.         }
  142.  
  143.                 outputElement = document.createElement('checkbox')
  144.                 outputElement.setAttribute('id',chkboxname)
  145.                 outputElement.setAttribute('name',a[i])
  146.                 outputElement.setAttribute('label',a[i])
  147.  
  148.                 if (inBudGroup.label == true) {
  149.             outputElement.setAttribute('checked',true)
  150.             gGroupInitState[i] = true;
  151.         }
  152.         else
  153.             gGroupInitState[i]=false;
  154.                         listDocument.appendChild(outputElement)
  155.         }
  156.         listDocument.appendChild(document.createElement("spring"))
  157. }       
  158.  
  159.  
  160. function GetCheckBoxState( a, i )
  161. {
  162.     chkboxname = "checkBox" + a[i];
  163.     chkbox = document.getElementById(chkboxname);
  164.     return( chkbox.checked );
  165. }
  166.  
  167. // for later 
  168.  
  169. function FindSelectedGroup()
  170. {
  171.     // Locate selection in setup list
  172.     // XXX There must be a better way to do this
  173.  
  174.     var selectedGroup = null;
  175.     var selectedBuddy = null;
  176.     var tree = window.tree;
  177.     dump( "Tree is " + tree + "\n" );
  178.     DumpDOM( tree );
  179.     var groups = tree.childNodes[2].childNodes;
  180.  
  181.     for (var i = 0; i != groups.length; i++) {
  182.         if (groups[i].getAttribute("selected") == "true") {
  183.             selectedGroup = groups[i].getAttribute("Name");
  184.             break;
  185.         }
  186.     }
  187.     return( selectedGroup );
  188. }
  189.  
  190.