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

  1. ////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER UI ELEMENT OR PRODUCT COMPONENT.
  4. // Copyright (c) 2009 Microsoft Corporation. All rights reserved.
  5. //
  6. ////////////////////////////////////////////////////////////////////////////////
  7.  
  8. var L_SELECT_TZ_TEXT = "当前计算机时间";
  9.  
  10. var L_PREVIOUS_TEXT = "上一页";
  11. var L_NEXT_TEXT = "下一页";
  12.  
  13. var imagePath = "images/";
  14. var imageArray = new Array("trad_settings.png", "system_settings.png", "cronometer_settings.png", "diner_settings.png", "flower_settings.png", "modern_settings.png", "square_settings.png", "novelty_settings.png");
  15. var imageIndex = 0;
  16.  
  17. var INF_BIAS = 1000;    // BIAS max-val = 720, min-val = -780
  18. var INF_DSTBIAS = 1000;    // DSTBIAS max = 60, min = -60
  19. var BIAS_ABSENT = 1001;
  20. var DSTBIAS_ABSENT = 1001;
  21. var ZERO_BIAS = 1002;
  22. var ZERO_DSTBIAS = 1002;
  23.  
  24. var mySetting = new clockSettings();
  25.  
  26. ////////////////////////////////////////////////////////////////////////////////
  27. //
  28. // load clock settings
  29. //
  30. ////////////////////////////////////////////////////////////////////////////////
  31. function loadSettings()
  32. {
  33.     var pageDir = document.getElementsByTagName("html")[0].dir;
  34.     
  35.     if (pageDir == "rtl")
  36.     {
  37.         settingsButtonTable.dir = "rtl";
  38.         
  39.         var temp = settingsButtonLeftCell.innerHTML;
  40.         settingsButtonLeftCell.innerHTML = settingsButtonRightCell.innerHTML;
  41.         settingsButtonRightCell.innerHTML = temp;
  42.         
  43.         temp = settingsImageLeft.onmousedown;
  44.         settingsImageLeft.onmousedown = settingsImageRight.onmousedown;
  45.         settingsImageRight.onmousedown = temp;
  46.         
  47.         temp = settingsLeftAnchor.onkeypress;
  48.         settingsLeftAnchor.onkeypress = settingsRightAnchor.onkeypress;
  49.         settingsRightAnchor.onkeypress = temp;
  50.  
  51.         settingsImageLeft.alt = L_NEXT_TEXT;
  52.         settingsImageRight.alt = L_PREVIOUS_TEXT;
  53.         settingsLeftAnchor.title = L_NEXT_TEXT;
  54.         settingsRightAnchor.title = L_PREVIOUS_TEXT;
  55.     }
  56.     else
  57.     {
  58.         settingsImageLeft.alt = L_PREVIOUS_TEXT;
  59.         settingsImageRight.alt = L_NEXT_TEXT;
  60.         settingsLeftAnchor.title = L_PREVIOUS_TEXT;
  61.         settingsRightAnchor.title = L_NEXT_TEXT;
  62.     }
  63.     
  64.     mySetting.load();
  65.     loadTimeZones();
  66.  
  67.     imageIndex = mySetting.themeID;
  68.     
  69.     settingsUpdateIndex();
  70.  
  71.     clockName.value = mySetting.clockName;
  72.     
  73.     with (timeZoneIndex)
  74.     {
  75.         value = getValidTimeZone(mySetting.timeZoneIndex);
  76.         title = options[selectedIndex].text;
  77.     }
  78.     
  79.     secondsEnabled.checked = mySetting.secondsEnabled;
  80.  
  81.     System.Gadget.onSettingsClosing = settingsClosing;
  82. }
  83. ////////////////////////////////////////////////////////////////////////////////
  84. //
  85. //
  86. ////////////////////////////////////////////////////////////////////////////////
  87. function settingsUpdateImage(img, state)
  88. {
  89.     img.src = imagePath + "settings_" + img.src.split("_")[1] + "_" + state + ".png";
  90. }
  91. ////////////////////////////////////////////////////////////////////////////////
  92. //
  93. //
  94. ////////////////////////////////////////////////////////////////////////////////
  95. function settingsButtonBack()
  96. {
  97.     if (event.keyCode == 32 || event.button == 1)
  98.     {
  99.         imageIndex--;
  100.         
  101.         if (imageIndex < 0)
  102.         {
  103.             imageIndex = imageArray.length - 1;
  104.         }
  105.         
  106.         settingsUpdateIndex();
  107.     }
  108. }
  109. ////////////////////////////////////////////////////////////////////////////////
  110. //
  111. //
  112. ////////////////////////////////////////////////////////////////////////////////
  113. function settingsButtonForward()
  114. {
  115.     if (event.keyCode == 32 || event.button == 1)
  116.     {
  117.         imageIndex++;
  118.         
  119.         if (imageIndex == imageArray.length)
  120.         {
  121.             imageIndex = 0;
  122.         }
  123.         
  124.         settingsUpdateIndex();
  125.     }
  126. }
  127. ////////////////////////////////////////////////////////////////////////////////
  128. //
  129. //
  130. ////////////////////////////////////////////////////////////////////////////////
  131. function settingsUpdateIndex()
  132. {
  133.     mySetting.themeID = imageIndex;
  134.     
  135.     settingsImagePreview.src = imagePath + imageArray[imageIndex];
  136.     currentIndex.innerHTML = imageIndex + 1;
  137.     maxIndex.innerHTML = imageArray.length;
  138. }
  139. ////////////////////////////////////////////////////////////////////////////////
  140. //
  141. // settings event closing
  142. //
  143. ////////////////////////////////////////////////////////////////////////////////
  144. function settingsClosing(event)
  145. {
  146.     if (event.closeAction == event.Action.commit)
  147.     {
  148.         saveSettings();
  149.     }
  150. }
  151. ////////////////////////////////////////////////////////////////////////////////
  152. //
  153. // create clock object
  154. //
  155. ////////////////////////////////////////////////////////////////////////////////
  156. function clockSettings()
  157.     this.save = saveSettingToDisk;
  158.     this.load = loadSettingFromDisk;
  159.     
  160.     this.themeID = 0;
  161.     this.clockName = "";
  162.     this.timeZoneIndex = -1;
  163.     this.timeZoneBias = INF_BIAS;
  164.     this.timeZoneDSTBias = INF_DSTBIAS;
  165.     this.timeZoneName = "";
  166.     this.secondsEnabled = false;
  167. }
  168. ////////////////////////////////////////////////////////////////////////////////
  169. //
  170. // load the information from disk
  171. //
  172. ////////////////////////////////////////////////////////////////////////////////
  173. function loadSettingFromDisk()
  174. {
  175.     if (System.Gadget.Settings.read("SettingsExist"))
  176.     {
  177.         this.clockName = unescape(System.Gadget.Settings.readString("clockName"));
  178.         this.themeID = getValidThemeID(System.Gadget.Settings.read("themeID"));
  179.         this.secondsEnabled = System.Gadget.Settings.read("secondsEnabled");
  180.  
  181.         this.timeZoneIndex = parseInt(System.Gadget.Settings.read("timeZoneIndex"));
  182.  
  183.         this.timeZoneBias = parseInt(System.Gadget.Settings.read("timeZoneBias") || BIAS_ABSENT);
  184.         this.timeZoneDSTBias = parseInt(System.Gadget.Settings.read("timeZoneDSTBias") || DSTBIAS_ABSENT);
  185.         this.timeZoneName = unescape(System.Gadget.Settings.readString("timeZoneName") || "");
  186.  
  187.         if( this.timeZoneBias == ZERO_BIAS )
  188.         {
  189.             this.timeZoneBias = 0;
  190.         }
  191.  
  192.         if( this.timeZoneDSTBias == ZERO_DSTBIAS )
  193.         {
  194.             this.timeZoneDSTBias = 0;
  195.         }
  196.  
  197.         if ( this.timeZoneBias == INF_BIAS || this.timeZoneDSTBias == INF_DSTBIAS || this.timeZoneBias == BIAS_ABSENT || this.timeZoneDSTBias == DSTBIAS_ABSENT ) // Either setting not present (var_ABSENT) OR set to current timezone (INF_var)
  198.         {
  199.             if ( ( this.timeZoneBias == BIAS_ABSENT || this.timeZoneDSTBias == DSTBIAS_ABSENT ) &&  this.timeZoneIndex != -1 ) // setting not present (var_ABSENT), clear clockName
  200.             {
  201.                 this.clockName = "";
  202.             }
  203.             this.timeZoneIndex = -1;
  204.             this.timeZoneBias = INF_BIAS;
  205.             this.timeZoneDSTBias = INF_DSTBIAS;
  206.         }
  207.         else    //both BIAS and DSTBIAS have a valid value
  208.         {
  209.             AdjustTimeZoneIndex( this );
  210.         }
  211.  
  212.     }
  213. }
  214.  
  215.  
  216. ////////////////////////////////////////////////////////////////////////////////
  217. //
  218. // Adjust timezone index based on values of Bias, DSTBias and Zonename
  219. //
  220. ////////////////////////////////////////////////////////////////////////////////
  221. function AdjustTimeZoneIndex( settingsObject )
  222. {
  223.     var indexL1Match, indexL2Match, currentTimeZone;
  224.     var storedTimeZoneName, OMTimezoneName;
  225.  
  226.     indexL1Match = indexL2Match = -1;
  227.     zones = System.Time.timeZones;
  228.     zonesCount = zones.count;
  229.  
  230.     for (var i = 0; i < zonesCount; i++)
  231.     {
  232.         currentTimeZone = zones.item(i);
  233.         if ( currentTimeZone.bias == settingsObject.timeZoneBias && currentTimeZone.DSTBias == settingsObject.timeZoneDSTBias )
  234.         {
  235.             indexL1Match = i;
  236.  
  237.             storedTimeZoneName = settingsObject.timeZoneName.replace( "GMT", "UTC" );
  238.             OMTimezoneName = currentTimeZone.displayName.replace( "GMT", "UTC" );
  239.  
  240.             if ( storedTimeZoneName == OMTimezoneName )
  241.             {
  242.                 indexL2Match = i;
  243.                 break;
  244.             }
  245.         }
  246.     }
  247.  
  248.     if ( indexL2Match !== -1 )    // All values match
  249.     {
  250.         settingsObject.timeZoneIndex = indexL2Match;
  251.     }
  252.     else if ( indexL1Match !== -1 )    // BIAS and DSTBIAS match, no match for name; use last pair from the list
  253.     {
  254.         settingsObject.timeZoneIndex = indexL1Match;
  255.     }
  256.     else // Clear settings, since saved (Bias,DSTbias) pair doesnt exist in timezones collection
  257.     {
  258.         if ( settingsObject.timeZoneIndex !== -1 )
  259.         {
  260.             settingsObject.clockName = "";
  261.         }
  262.         settingsObject.timeZoneIndex = -1;
  263.         settingsObject.timeZoneBias = INF_BIAS;
  264.         settingsObject.timeZoneDSTBias = INF_DSTBIAS;
  265.         settingsObject.timeZoneName = "";
  266.     }
  267.  
  268.     if ( settingsObject.timeZoneIndex !== -1 )    // update timezone name
  269.     {
  270.         settingsObject.timeZoneName = zones.item(settingsObject.timeZoneIndex).displayName;
  271.     }
  272. }
  273.  
  274.  
  275. ////////////////////////////////////////////////////////////////////////////////
  276. //
  277. // save information to disk
  278. //
  279. ////////////////////////////////////////////////////////////////////////////////
  280. function saveSettingToDisk()
  281. {
  282.     System.Gadget.Settings.write("SettingsExist", true);
  283.     System.Gadget.Settings.writeString("clockName", escape(this.clockName));
  284.     System.Gadget.Settings.write("themeID", this.themeID);
  285.     System.Gadget.Settings.write("timeZoneIndex", this.timeZoneIndex);
  286.  
  287.     if( this.timeZoneBias == 0 )
  288.     {
  289.         System.Gadget.Settings.write("timeZoneBias", ZERO_BIAS);
  290.     }
  291.     else
  292.     {
  293.         System.Gadget.Settings.write("timeZoneBias", this.timeZoneBias);
  294.     }
  295.  
  296.     if( this.timeZoneDSTBias == 0 )
  297.     {
  298.         System.Gadget.Settings.write("timeZoneDSTBias", ZERO_DSTBIAS);
  299.     }
  300.     else
  301.     {
  302.         System.Gadget.Settings.write("timeZoneDSTBias", this.timeZoneDSTBias);
  303.     }
  304.  
  305.     System.Gadget.Settings.writeString("timeZoneName", escape(this.timeZoneName));
  306.     System.Gadget.Settings.write("secondsEnabled", this.secondsEnabled);
  307. }
  308. ////////////////////////////////////////////////////////////////////////////////
  309. //
  310. // save clock settings
  311. //
  312. ////////////////////////////////////////////////////////////////////////////////
  313. function saveSettings()
  314. {
  315.     mySetting.clockName = trim(clockName.value, "both");
  316.     mySetting.timeZoneIndex = getValidTimeZone(timeZoneIndex.value);
  317.  
  318.     if( mySetting.timeZoneIndex !== -1 )
  319.     {
  320.         zones = System.Time.timeZones;
  321.         mySetting.timeZoneBias = zones.item(mySetting.timeZoneIndex).bias;
  322.         mySetting.timeZoneDSTBias = zones.item(mySetting.timeZoneIndex).DSTBias;
  323.         mySetting.timeZoneName = zones.item(mySetting.timeZoneIndex).displayName;
  324.     }
  325.     else
  326.     {
  327.         mySetting.timeZoneBias = INF_BIAS;
  328.         mySetting.timeZoneDSTBias = INF_DSTBIAS;
  329.         mySetting.timeZoneName = "";
  330.     }
  331.  
  332.     mySetting.secondsEnabled = secondsEnabled.checked;
  333.  
  334.     mySetting.save();
  335. }
  336. ///////////////////////////////////////////////////////////////////////////////
  337. //
  338. // load time zones
  339. //
  340. ////////////////////////////////////////////////////////////////////////////////
  341. function loadTimeZones()
  342. {
  343.     updateTimeZones(true); 
  344.  
  345.     timeZoneIndex.options[0] = new Option(L_SELECT_TZ_TEXT, "-1");
  346.  
  347.     for (var i = 0; i < e.length; i++)
  348.     {
  349.         timeZoneIndex.options[i + 1] = new Option(e[i][eZone], e[i][eItem], null, (e[i][eItem] == mySetting.timeZoneIndex));
  350.         timeZoneIndex.options[i + 1].title = e[i][eZone];
  351.     }
  352. }
  353. ////////////////////////////////////////////////////////////////////////////////
  354. //
  355. // trim white space
  356. //
  357. ////////////////////////////////////////////////////////////////////////////////
  358. function trim(stringIn, removeFrom) 
  359.     var stringOut = "";
  360.     stringIn = stringIn.toString();
  361.     
  362.     if (stringIn.length > 0)
  363.     {
  364.         switch (removeFrom) 
  365.         { 
  366.             case "left": 
  367.                 stringOut = stringIn.replace(/^\s+/g, ""); 
  368.                 break; 
  369.             case "right": 
  370.                 stringOut = stringIn.replace(/\s+$/g, ""); 
  371.                 break; 
  372.             case "both":
  373.  
  374.             default:
  375.                 stringOut = stringIn.replace(/^\s+|\s+$/g, ""); 
  376.         }
  377.     }
  378.  
  379.     return stringOut;
  380. }
  381. ////////////////////////////////////////////////////////////////////////////////
  382. //
  383. // check to see if theme index within array
  384. //
  385. ////////////////////////////////////////////////////////////////////////////////
  386. function getValidThemeID(index)
  387. {
  388.     if (parseInt(index) > -1 && parseInt(index) < clockThemes.length)
  389.     {
  390.         return parseInt(index);
  391.     }
  392.     else
  393.     {
  394.         return 0;
  395.     }
  396. }
  397.