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

  1.  
  2. // Various IDL interfaces 
  3. var CachedAimServiceClass = null;
  4. var CachedAimManager = null;
  5. var CachedAimSession = null;
  6. var CachedAimLocateManager = null;
  7. var CachedAimBuddyManager = null;
  8. var CachedAimOdirManager = null;
  9. var CachedAimUserLookupManager = null;
  10. var CachedAimChatManager = null;
  11. var CachedAimTalkAgent = null;
  12. var CachedAimInviteManager = null;
  13. var CachedAimPrivacy = null;
  14. var CachedAimIM = null;
  15. var CachedAimPIM = null;
  16. var CachedAimAdminManager = null;
  17. var CachedAimABInfo = null;
  18. var CachedAimFeedbagManager = null;
  19. var CachedAimWarnings = null;
  20. var CachedAimPrefsManager = null;
  21. var CachedAimStringBundle = null;
  22. var CachedAimSoundManager = null;
  23. var CachedAimDataSource = null;
  24.  
  25. // Various IDL that represent enumerated types
  26. var CachedAimAuthorizerState = null;
  27. var CachedAimInsertionStyles = null;
  28. var CachedAimPrivacyModes = null;
  29. var CachedAimTalkAudioMode = null;
  30.  
  31. function aimGetIMManager()
  32. {
  33.     var IMServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
  34.     var pIIMManager  = IMServiceClass.getService(Components.interfaces.nsIIMManager);
  35.     return pIIMManager;
  36. }
  37.  
  38. function aimDataSource()
  39. {
  40.     try {
  41.         if (CachedAimDataSource == null) {
  42.             var RDFClass = Components.classes["@mozilla.org/rdf/rdf-service;1"];
  43.             var RDF = RDFClass.getService(Components.interfaces.nsIRDFService);
  44.             CachedAimDataSource = RDF.GetDataSource("rdf:AIM");
  45.         }
  46.     } catch (e) {};
  47.  
  48.     return CachedAimDataSource;
  49. }
  50.  
  51. function aimServiceClass() 
  52. {
  53.     try {
  54.     if (CachedAimServiceClass == null)
  55.         CachedAimServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
  56.     } catch (e) {};
  57.  
  58.     return CachedAimServiceClass;
  59. }
  60.  
  61. function aimManager()
  62. {
  63.     try {
  64.     if (CachedAimManager == null)
  65.         CachedAimManager = aimServiceClass().getService(Components.interfaces.nsIIMManager);
  66.     } catch (e) {};
  67.  
  68.     return CachedAimManager;
  69. }
  70.  
  71.  
  72. function aimSession()
  73. {
  74.     try {
  75.     if(CachedAimSession == null)
  76.         CachedAimSession = aimManager().QueryInterface(Components.interfaces.nsIAimSession);
  77.     } catch (e) {}; 
  78.  
  79.     return CachedAimSession;
  80. }
  81.  
  82. function getsidebarframe()
  83. {
  84.         var frame_list=window.frames;
  85.      if (frame_list.length==0)
  86.           return window;
  87.       
  88.      for (var i=0; i<frame_list.length; i++) {
  89.          if (frame_list[i].location =="chrome://aim/content/Sidebarpanel.xul");
  90.              return frame_list[i];
  91.      }
  92.     return window;    
  93. }
  94.  
  95. function aimPrivacy()
  96. {
  97.     try {
  98.     if(CachedAimPrivacy == null)
  99.         CachedAimPrivacy = aimManager().QueryInterface(Components.interfaces.nsIAimPrivacy);
  100.     } catch (e) {}; 
  101.  
  102.     return CachedAimPrivacy;
  103. }
  104.  
  105.  
  106. function aimBuddyManager()
  107. {
  108.     try {
  109.     if(CachedAimBuddyManager == null)
  110.         CachedAimBuddyManager = aimManager().QueryInterface(Components.interfaces.nsIAimBuddy);
  111.     } catch (e) {}; 
  112.  
  113.     return CachedAimBuddyManager;
  114. }
  115.  
  116.  
  117. function aimLocateManager()
  118. {
  119.     try {
  120.     if(CachedAimLocateManager == null)
  121.         CachedAimLocateManager = aimManager().QueryInterface(Components.interfaces.nsIAimLocateManager);
  122.     } catch (e) {}; 
  123.  
  124.     return CachedAimLocateManager;
  125. }
  126.  
  127.  
  128. function aimOdirManager()
  129. {
  130.     try {
  131.     if(CachedAimOdirManager == null)
  132.         CachedAimOdirManager = aimManager().QueryInterface(Components.interfaces.nsIAimOdirManager);
  133.     } catch (e) {}; 
  134.  
  135.     return CachedAimOdirManager;
  136. }
  137.  
  138. function aimUserLookupManager()
  139. {
  140.     try {
  141.     if(CachedAimUserLookupManager == null)
  142.         CachedAimUserLookupManager = aimManager().QueryInterface(Components.interfaces.nsIAimUserLookupManager);
  143.     } catch (e) {}; 
  144.  
  145.     return CachedAimUserLookupManager;
  146. }
  147.  
  148.  
  149. function aimChatManager()
  150. {
  151.     try {
  152.     if(CachedAimChatManager == null)
  153.         CachedAimChatManager = aimManager().QueryInterface(Components.interfaces.nsIAimChatManager);
  154.     } catch (e) {}; 
  155.  
  156.     return CachedAimChatManager;
  157. }
  158.  
  159.  
  160. function aimTalkAgent()
  161. {
  162.     try {
  163.     if(CachedAimTalkAgent == null)
  164.         CachedAimTalkAgent = aimManager().QueryInterface(Components.interfaces.nsIAimTalkAgent);
  165.     } catch (e) {}; 
  166.  
  167.     return CachedAimTalkAgent;
  168. }
  169.  
  170.  
  171. function aimInviteManager()
  172. {
  173.     try {
  174.     if(CachedAimInviteManager == null)
  175.         CachedAimInviteManager = aimManager().QueryInterface(Components.interfaces.nsIAimInviteManager);
  176.     } catch (e) {}; 
  177.  
  178.     return CachedAimInviteManager;
  179. }
  180.  
  181. function aimSoundManager()
  182. {
  183.     try {
  184.     if(CachedAimSoundManager == null)
  185.         CachedAimSoundManager = aimManager().QueryInterface(Components.interfaces.nsIAimSoundManager);
  186.     } catch (e) {}; 
  187.  
  188.     return CachedAimSoundManager;
  189. }
  190.  
  191. function aimIM()
  192. {
  193.     try {
  194.     if(CachedAimIM == null)
  195.         CachedAimIM = aimManager().QueryInterface(Components.interfaces.nsIAimIM);
  196.     } catch (e) {}; 
  197.  
  198.     return CachedAimIM;
  199. }
  200.  
  201.  
  202. function aimAdminManager()
  203. {
  204.     try {
  205.     if(CachedAimAdminManager == null)
  206.         CachedAimAdminManager = aimManager().QueryInterface(Components.interfaces.nsIAimAdminManager);
  207.     } catch (e) {}; 
  208.  
  209.     return CachedAimAdminManager;
  210. }
  211.  
  212.  
  213. function aimABInfo()
  214. {
  215.     try {
  216.     if(CachedAimABInfo == null)
  217.         CachedAimABInfo = aimManager().QueryInterface(Components.interfaces.nsIAimABInfo);
  218.     } catch (e) {}; 
  219.  
  220.     return CachedAimABInfo;
  221. }
  222.  
  223.  
  224. function aimFeedbagManager()
  225. {
  226.     try {
  227.     if(CachedAimFeedbagManager == null)
  228.         CachedAimFeedbagManager = aimManager().QueryInterface(Components.interfaces.nsIAimFeedbagManager);
  229.     } catch (e) {}; 
  230.  
  231.     return CachedAimFeedbagManager;
  232. }
  233.  
  234. function aimWarnings()
  235. {
  236.     try {
  237.     if(CachedAimWarnings == null)
  238.         CachedAimWarnings = aimManager().QueryInterface(Components.interfaces.nsIAimWarnings);
  239.     } catch (e) {}; 
  240.  
  241.     return CachedAimWarnings;
  242. }
  243.  
  244. function aimPrefsManager()
  245. {
  246.     try {
  247.     if(CachedAimPrefsManager == null)
  248.         CachedAimPrefsManager = aimManager().QueryInterface(Components.interfaces.nsIPrefsManager);
  249.     } catch (e) {}; 
  250.  
  251.     return CachedAimPrefsManager;
  252. }
  253.  
  254.  
  255. function aimStringBundle()
  256. {
  257.     try {
  258.     if(CachedAimStringBundle == null)
  259.         CachedAimStringBundle = aimManager().QueryInterface(Components.interfaces.nsIStringBundle);
  260.     } catch (e) {}; 
  261.  
  262.     return CachedAimStringBundle;
  263. }
  264.  
  265. // The various enumerated types/interfaces
  266.  
  267.  
  268. function aimInsertionStyles()
  269. {
  270.     try {
  271.     if(CachedAimInsertionStyles == null)
  272.         CachedAimInsertionStyles = Components.interfaces.nsAimInsertionStyles;
  273.     } catch (e) {}; 
  274.  
  275.     return CachedAimInsertionStyles;
  276. }
  277.  
  278.  
  279. function aimPrivacyModes()
  280. {
  281.     try {
  282.     if(CachedAimPrivacyModes == null)
  283.         CachedAimPrivacyModes = Components.interfaces.nsAimPrivacyModes;
  284.     } catch (e) {}; 
  285.  
  286.     return CachedAimPrivacyModes;
  287. }
  288.  
  289. /********* Use this to know if two formatted screen names are the same *******/
  290.  
  291. function aimNormalizeScreenName(oldSN)
  292. {
  293.     return (oldSN.replace(/\s/gi,"")).toLowerCase();
  294.  
  295. /*
  296.     // remove spaces
  297.     var newSN="";
  298.     newSN = oldSN.replace(/\s/gi,"");
  299.  
  300.     // lower the case
  301.     newSN = newSN.toLowerCase();
  302.     
  303.     return newSN;
  304. */
  305. }
  306.  
  307.  
  308.  
  309. function aimIsShrimp()
  310. {
  311. /** 
  312.  * aimIsShrimp -- Determine if we are running shrimp or not. 
  313.  * Reads aim.app.smallbusiness pref from all-nsnim.j1
  314.  * 
  315.  * @author syd 8/8/2000
  316.  * @return <code>true</code> is shrimp is installed, <code>false</code> otherwise.
  317.  */ 
  318.     var isShrimp = aimPrefsManager().GetBoolPref("aim.app.smallbusiness",null, true);
  319.  
  320.     return isShrimp;
  321.  }
  322.  
  323. function aimIsSameScreenName(sN1, sN2)
  324. {
  325.     return (aimNormalizeScreenName(sN1) == aimNormalizeScreenName(sN2))
  326. }
  327.  
  328. function aimMigrateBuddyList( who )
  329. {
  330.     var whoMigrate = aimPrefsManager().GetCharPref("aim.session.migrateBuddyList",null, true);
  331.     if ( !whoMigrate || whoMigrate == null || whoMigrate == undefined || whoMigrate != who ) {
  332.         return;
  333.     }
  334.     dump( "***************MigrateBuddyList who " + who + " whoMigrate " + whoMigrate + "\n" );
  335.     var IMServiceClass;
  336.     var pAimMigrator;
  337.     try { 
  338.         IMServiceClass = Components.classes['@netscape.com/aim/AimMigrator;1'];
  339.         if ( IMServiceClass != null ) {
  340.             try {
  341.                 pAimMigrator = IMServiceClass.getService(Components.interfaces.nsIAimMigrator);
  342.                 if ( pAimMigrator != null ) {
  343.                     dump( "****************Got us a migrator, doit!\n" );
  344.                     pAimMigrator.AimMigratorMigrateBuddyList( who );
  345.                     aimPrefsManager().SetCharPref("aim.session.migrateBuddyList", "nobody", null, true);
  346.                 }
  347.             }
  348.             catch ( exception ) {
  349.                 // nothing
  350.             }
  351.         }
  352.     }
  353.     catch ( exception ) {
  354.         // nothing
  355.     }
  356. }
  357.  
  358. function html(node)
  359. {
  360.     var answer = "";
  361.     var type = node.nodeType;
  362.     if (type == Node.ELEMENT_NODE) {
  363.  
  364.         // open tag
  365.         //dump("<" + node.tagName)
  366.  
  367.         answer += "<" + node.tagName;
  368.  
  369.         // dump the attributes if any
  370.         attributes = node.attributes;
  371.         if (null != attributes) {
  372.             var countAttrs = attributes.length;
  373.             var index = 0;
  374.             while(index < countAttrs) {
  375.                 att = attributes[index];
  376.                 if (null != att) {
  377.                     answer += " " + att.name + "=\"" + att.value + "\"";
  378.                 }
  379.                 index++
  380.             }
  381.         }
  382.  
  383.         // close tag
  384.         answer += ">";
  385.  
  386.         // recursively dump the children
  387.         if (node.hasChildNodes()) {
  388.             // get the children
  389.             var children = node.childNodes;
  390.             var length = children.length;
  391.             var count = 0;
  392.             while(count < length) {
  393.                 child = children[count]
  394.                 answer += html(child)
  395.                 count++
  396.             }
  397.             answer += "</" + node.tagName + ">";
  398.         }
  399.  
  400.  
  401.     }
  402.     // if it's a piece of text just dump the text
  403.     else if (type == Node.TEXT_NODE) {
  404.         answer += node.data;
  405.     }
  406.     return answer;
  407. }
  408.  
  409. function createInstance( contractid, iidName ) {
  410.         var iid = eval( "Components.interfaces." + iidName );
  411.         return Components.classes[ contractid ].createInstance( iid );
  412. }
  413.  
  414. function cmdFileSave()
  415. {
  416.         var answer;
  417.         var wind = top.frames["LogWnd"];
  418.         if ( wind ) {
  419.         myhead = wind.document.getElementsByTagName("HEAD").item(0);
  420.         if (myhead == null) {
  421.             myhead = wind.document.createElement("HEAD");
  422.             myhtml = wind.document.getElementsByTagName("HTML").item(0);
  423.             myhtml.appendChild(myhead);
  424.         }
  425.         mymeta = wind.document.createElement("META");
  426.         mymeta.setAttribute("HTTP-EQUIV", "Content-Type");
  427.         mymeta.setAttribute("CONTENT", "text/html; charset=UTF-8");
  428.         myhead.appendChild(mymeta);
  429.  
  430.                 answer = html(wind.document.documentElement);
  431.                 answer += "\n";
  432.         }
  433.         else {
  434.                 return;
  435.         }
  436.         try {
  437.                 var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  438.                 // XXX i18n
  439.                 fp.init(window, aimString( "title.saveconversation" ),
  440.                         nsIFilePicker.modeSave);
  441.                 fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterAll );
  442.         var returnCode = fp.show();
  443.                 if (returnCode == nsIFilePicker.returnOK || returnCode == nsIFilePicker.returnReplace) {
  444.             dump ("Going to Save: " + fp.file.path  + "\n");
  445.             var pPAimIM = aimPIMObject();
  446.             if (pPAimIM) {
  447.                             pPAimIM.SaveConversation(fp.file.path, answer);
  448.             }
  449.                 }
  450.         } catch (ex) {
  451.         dump("it didnt work for some reason \n");
  452.         }
  453. }
  454.  
  455. function aimCmdClose()
  456. {
  457.    dump("cmdClose\n");
  458.    top.close();
  459.  
  460. }
  461.  
  462. function cmdFileClose()
  463. {
  464.     aimCmdClose();
  465. }
  466.  
  467. function cmdFilePrint()
  468. {
  469.         dump("Implement Menu Command cmdFilePrint()\n");
  470.         top.frames["LogWnd"].print();
  471. }
  472.  
  473. function getEnums( myInterface )
  474. {
  475.         var enums = {};
  476.         for ( var i in myInterface ) {
  477.                 if ( typeof myInterface[i] == "number" ) {
  478.                         enums[i] = myInterface[i];
  479.                 }
  480.         }
  481.         return enums;
  482. }
  483.  
  484.  
  485. function
  486. MigrateDiscover()
  487. {
  488.     var IMServiceClass;
  489.     var pAimMigrator;
  490.     try { 
  491.         IMServiceClass = Components.classes['@netscape.com/aim/AimMigrator;1'];
  492.         if ( IMServiceClass != null ) {
  493.             try {
  494.                 pAimMigrator = IMServiceClass.getService(Components.interfaces.nsIAimMigrator);
  495.                 if ( pAimMigrator != null ) {
  496.                     version = pAimMigrator.AimMigratorDiscover();
  497.                     parent.migrationSource = version;
  498.                     if ( version == null || version == "" ) {
  499.                         return false;
  500.                     }
  501.  
  502.                     var stringPref = {};
  503.                     var stringPref2 = {};
  504.                     var enums = getEnums( Components.interfaces.nsIAimMigrator );
  505.                     // get the default screen name
  506.  
  507.                     var ret = pAimMigrator.AimMigratorGetStringPref2( enums.DefaultScreenName, stringPref, stringPref2 );
  508.  
  509.                     if ( ret == true ) {
  510.                         parent.migrationScreenName = stringPref.value;
  511.                         parent.migrationPassword = stringPref2.value;
  512.                     }
  513.                     else {
  514.                         parent.migrationScreenName = "";
  515.                         parent.migrationPassword = "";
  516.                     }
  517.  
  518.                     // get the remaining screen names, if any
  519.                     var stringPrefVec = {}; 
  520.                     var vecSize = {};
  521.                     stringPrefVec = pAimMigrator.AimMigratorGetStringVectorPref( enums.ScreenName, vecSize );
  522.  
  523.                     var i;
  524.                     parent.migrationScreenNameVecSize = vecSize;
  525.                     parent.migrationScreenNameVec = stringPrefVec;
  526.  
  527.                     return ret;        // all we care about is did we get a default screenname
  528.                 }
  529.             }
  530.             catch(exception) {
  531.                 return false;
  532.             }
  533.         }    
  534.     }
  535.     catch(exception) {
  536.         return false;
  537.     }
  538. }
  539.  
  540. function AimOnlineAway()
  541. {
  542.     var RDFClass = Components.classes["@mozilla.org/rdf/rdf-service;1"];
  543.     var RDF = RDFClass.getService(Components.interfaces.nsIRDFService);
  544.     var SessionState = RDF.GetResource("http://home.netscape.com/NC-rdf#OnlineState");
  545.     var dataSource = aimDataSource();
  546.     var AimSession = RDF.GetResource("NC:AIM/Session");
  547.     var session = aimSession();
  548.  
  549.     var target = dataSource.GetTarget(AimSession, SessionState, true);
  550.     var state = target.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
  551.     if ("OnlineAway" == state)
  552.         return true;
  553.     return false;
  554. }
  555.  
  556. function ComeBack()
  557. {
  558.     locateManager = aimLocateManager();
  559.  
  560.     if ( locateManager ) {
  561.         locateManager.SetUserInfoAwayMessage(null);
  562.     }
  563. }
  564.  
  565. function AimtoOpenWindowByType( inType, uri )
  566. {
  567.          dump ("AimtoOpenWindowByType " + uri + " \n");
  568.           
  569.          var windowManager = Components.classes['@mozilla.org/rdf/datasource;1?name=window-mediator'].getService();
  570.  
  571.          var     windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
  572.  
  573.          var topWindow = windowManagerInterface.getMostRecentWindow( inType );
  574.          
  575.          if ( topWindow ) {
  576.                  topWindow.focus();
  577.          }
  578.          else
  579.                  window.openDialog(uri, "_blank", "chrome,all,dialog=no", "Setup");
  580.  }                     
  581.  
  582. function aimGlobalCmdHelp()
  583. {
  584.     if (aimIsShrimp())
  585.     {
  586.         AimtoOpenWindowByType("help:nim","chrome://communicator/content/help/help_nim.xul"); 
  587.     }
  588.     else
  589.     {
  590.         AimtoOpenWindowByType("help:im","chrome://help/content/help.xul?im"); 
  591.     }
  592. }
  593.  
  594.  
  595.  function AimgoClickThrobber(urlPref)
  596.  {
  597.     if (aimIsShrimp())
  598.     {
  599.         var url;
  600.         try {
  601.                 var pref = Components.classes["@mozilla.org/preferences;1"].getService();
  602.                 if( pref )
  603.                 pref = pref.QueryInterface( Components.interfaces.nsIPref );
  604.                 url = pref.getLocalizedUnicharPref(urlPref);
  605.                 aimCmdNewBrowser(url);
  606.          }
  607.         catch(e) {
  608.                 url = null;
  609.         }
  610.     }
  611.     else
  612.     {
  613.         goClickThrobber( urlPref );
  614.     }
  615.  }
  616.  
  617. function GetRdfFileUrl(def_name, chg_name)
  618. {                                                                               
  619.     var directoryService  =  Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties);
  620.     var userProfile = directoryService.get("ProfD", Components.interfaces.nsIFile);
  621.     var defaultProfile = directoryService.get("profDef", Components.interfaces.nsIFile); // profile defaults
  622.     if (!defaultProfile.exists())                                   
  623.         defaultProfile = directoryService.get("ProfDefNoLoc", Components.interfaces.nsIFile); // profile defaults
  624.     var defaultInviteFile = defaultProfile.clone();                         
  625.     defaultInviteFile.append(def_name);                                     
  626.     var screenName = "";                                                
  627.     myPref = aimPrefsManager();                                         
  628.     if ( myPref ) {                                                         
  629.         try {                                                           
  630.             screenName = myPref.GetCharPref( "aim.session.screenname" , null, false);
  631.         }
  632.         catch(e) {                                                      
  633.             screenName = "";                                        
  634.         }
  635.     }   
  636.     if ( screenName != "" ) {                                               
  637.         screenName = screenName + ".";                                  
  638.         }
  639.     else                                                            
  640.     {
  641.      return;                                         
  642.     }
  643.     var InviteListFile = userProfile.clone();
  644.     InviteListFile.append(screenName+chg_name);                             
  645.     if (!InviteListFile.exists()) {                                         
  646.         try {
  647.             defaultInviteFile.copyTo(userProfile,screenName+chg_name);     
  648.             }
  649.             catch (e) {
  650.             dump("error coping" + e + "\n");                                        
  651.             }
  652.             InviteListFile = userProfile.clone();                           
  653.             InviteListFile.append(screenName+chg_name);                     
  654.             if (!InviteListFile.exists())                                   
  655.             dump("something is very wrong \n");                           
  656.     }                                                                       
  657.     var InviteFileURL = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIFileURL);
  658.     InviteFileURL.file = InviteListFile;
  659.     return( InviteFileURL.spec );                                           
  660. }                                                                               
  661.  
  662.  
  663.