home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Theme / 8GadgetPack / 8GadgetPackSetup.msi / service.js_2 < prev    next >
Text (UTF-16)  |  2012-05-19  |  8KB  |  163 lines

  1. //----------------------------------------------
  2. // THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER UI ELEMENT OR PRODUCT COMPONENT. 
  3. // Copyright (c) 2009 Microsoft Corporation. All rights reserved.
  4. //----------------------------------------------
  5.  
  6. var gTimeStampLastRefreshAvailable = false;
  7. var gTimeToNextRefresh = 1; // default to 1 minute
  8. var gTimeStampLastRefresh = null;
  9.  
  10. ////////////////////////////////////////////////////////////////////////////////
  11. //
  12. // IsCurrencyDataFresh ( )
  13. //
  14. // return true if currency data last pulled is still fresh
  15. // Also, if the data is still fresh, update global gTimeToNextRefresh to indicate time in minutes when refresh must be triggered to get fresh data
  16. ////////////////////////////////////////////////////////////////////////////////
  17. function IsCurrencyDataFresh( )
  18. {
  19.  if ( gTimeStampLastRefreshAvailable && gTimeStampLastRefresh !== undefined && gTimeStampLastRefresh !== null )
  20.  {
  21.     var ageLastRefresh = calculateAge( gTimeStampLastRefresh );
  22.     var serviceRefreshInterval = g_oService.RefreshInterval();
  23.     var ageLastRefreshInterval = ageLastRefresh.minutesAge + ( ageLastRefresh.hoursAge * 60 );
  24.  
  25.     if ( ageLastRefresh.daysAge !== 0 || ageLastRefreshInterval > serviceRefreshInterval )
  26.     {
  27.     return false;
  28.     }
  29.     else
  30.     {
  31.     gTimeToNextRefresh = serviceRefreshInterval - ageLastRefreshInterval;
  32.     if ( gTimeToNextRefresh < 1 )
  33.     {
  34.         gTimeToNextRefresh = 1;
  35.     }
  36.     return true;
  37.     }
  38.  }
  39.  else
  40.  {
  41.     return false;
  42.  }
  43. }
  44.  
  45.  
  46.  
  47. function CurrencyService() {
  48.     var me = this;
  49.     
  50.     // Private members
  51.     var m_oService;
  52.     var m_oCurrencyData;
  53.     
  54.     this.hsCurrencies;
  55.     this.OnDataReady = null;
  56.     
  57.     function FireOnDataReady(oData) 
  58.     {
  59.         me.OnDataReady(oData);
  60.     }
  61.     
  62.     function OnDataReady(data) {
  63.         // Reset the state of the service
  64.         me.IsAvailable = false;
  65.         me.hsCurrencies = new Array();
  66.         
  67.         if(data === undefined) {
  68.             data = null;
  69.         }
  70.         
  71.         if((data !== null) && ((data.RetCode == 200) || (data.RetCode == 1507))) {
  72.             m_oCurrencyData = data;
  73.             
  74.             // Massage the currency data to make it
  75.             // more readable to work with for a 
  76.             // currency converter.
  77.             for(var i=0; i < data.Count; i++) {
  78.                 var currency = new Object();
  79.                 
  80.                 currency.Symbol = data.Item(i).Symbol;
  81.                 currency.Name = getLocalizedString(data.Item(i).Symbol);
  82.                 currency.PerDollar = data.Item(i).Last;
  83.                 currency.NameForSorting = data.Item(i).LCMapName(currency.Name);
  84.                 
  85.                 me.hsCurrencies[data.Item(i).Symbol] = currency;
  86.             }
  87.             
  88.             me.IsAvailable = true;
  89.         }
  90.         
  91.         FireOnDataReady(data);
  92.     }
  93.     
  94.     this.IsAvailable = false;
  95.     
  96.     this.Convert = function(fFromAmount, sFromSymbol, sToSymbol) {
  97.         if(fFromAmount == '')
  98.             fFromAmount = 0;
  99.         var decimals = 0;
  100.         if (System.Gadget.docked)
  101.         {
  102.             decimals = 3;
  103.         }
  104.         else
  105.         {
  106.             decimals = 5;
  107.         }
  108.         if(m_oService != null) {
  109.             return '' + m_oCurrencyData.Convert(fFromAmount, sFromSymbol, sToSymbol, decimals).replace(/^\s+/g, '').replace(/\s+$/g, '');
  110.         } else { 
  111.         FireOnDataReady(null);
  112.         return 0;
  113.         }
  114.     }
  115.     
  116.     this.GetCurrencies = function() {
  117.  
  118.         if ( g_oService.IsAvailable )
  119.         {
  120.         loadSettings();
  121.         }
  122.  
  123.         if ( IsCurrencyDataFresh ( ) )
  124.         {
  125.         g_oTimer = setTimeout( "g_oService.GetCurrencies()" , gTimeToNextRefresh * 60 * 1000 );
  126.         return;
  127.         }
  128.  
  129.         
  130.         if (m_oService != null) 
  131.             m_oService.GetCurrencies();
  132.         else
  133.             FireOnDataReady(null);
  134.     }
  135.     
  136.     this.RefreshInterval = function()
  137.     {
  138.         if (m_oService != null)
  139.         {
  140.             return m_oService.RefreshInterval;
  141.         }
  142.         else
  143.         {
  144.             return -1;
  145.         }
  146.     }    
  147.     
  148.     // Constructor
  149.     function Initialize() {
  150.         
  151.         try {
  152.             var oMSN = new ActiveXObject("wlsrvc.WLServices");
  153.             m_oService = oMSN.GetService("Currency");
  154.             m_oService.OnDataReady = OnDataReady;
  155.         } catch (objException) {
  156.             m_oService = null;
  157.         }
  158.     }
  159.     
  160.     Initialize();
  161. }
  162.  
  163.