home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Theme / 8GadgetPack / 8GadgetPackSetup.msi / slideShow.js_2 < prev    next >
Text (UTF-16)  |  2012-05-19  |  55KB  |  999 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. var L_NONE_TEXT    = "なし";
  8. var L_BARN_TEXT    = "バーン";
  9. var L_BLINDS_TEXT    = "ブラインド";
  10. var L_CHECKERBOARD_TEXT = "チェッカー";
  11. var L_DISSOLVE_TEXT    = "砂絵";
  12. var L_FADE_TEXT    = "フェード";
  13. var L_INSET_TEXT    = "挿入";
  14. var L_PLUS_TEXT    = "十字";
  15. var L_PIXELATE_TEXT    = "モザイク";
  16. var L_RADIALWIPE_TEXT = "回転消去";
  17. var L_SLIDE_TEXT    = "スライド";
  18. var L_SPIRAL_TEXT    = "渦巻き";
  19. var L_STRETCH_TEXT    = "引き伸ばし";
  20. var L_WIPE_TEXT    = "消去";
  21. var L_WHEEL_TEXT    = "ホイール";
  22. var L_PREVIOUS_TEXT    = "前へ";
  23. var L_PLAY_TEXT    = "再生";
  24. var L_PAUSE_TEXT    = "一時停止";
  25. var L_NEXT_TEXT    = "次へ";
  26. var L_VIEW_TEXT    = "表示";
  27. var L_SECONDS_TEXT    = "秒";
  28. var L_MINUTES_TEXT    = "分";
  29. var L_MINUTE_TEXT    = "分";
  30. var L_PICTURESLIBNAME_TEXT = "画像ライブラリ";
  31. var L_PICTURESNAME_TEXT = "サンプル ピクチャ";
  32. var L_CHOOSEFOLDER_TEXT    = "次のフォルダーの項目をスライド ショーで表示する:";
  33.  
  34. // LOCCOMMENT:: DO NOT LOCALIZE THIS STRING... THIS IS A GUID CORRESPONDING TO PICTURES LIBRARY
  35. var FOLDERID_PICTURELIBRARY = "{A990AE9F-A03B-4e80-94BC-9912D7504104}";
  36.  
  37. var pictureArray    = new Array();
  38. var selectArray    = new Array();
  39. var slideTimeArray    = new Array(
  40.     ["5 " + L_SECONDS_TEXT, 5],
  41.     ["10 " + L_SECONDS_TEXT, 10],
  42.     ["15 " + L_SECONDS_TEXT, 15],
  43.     ["30 " + L_SECONDS_TEXT, 30],
  44.     ["1 " + L_MINUTE_TEXT, 60],
  45.     ["2 " + L_MINUTES_TEXT, 120],
  46.     ["5 " + L_MINUTES_TEXT, 300]);
  47.  
  48. var fadeEffectName    = new Array(
  49.     L_BARN_TEXT,
  50.     L_BLINDS_TEXT,
  51.     L_CHECKERBOARD_TEXT,
  52.     L_DISSOLVE_TEXT,
  53.     L_FADE_TEXT,
  54.     L_INSET_TEXT,
  55.     L_PLUS_TEXT,
  56.     L_PIXELATE_TEXT,
  57.     L_RADIALWIPE_TEXT,
  58.     L_SLIDE_TEXT,
  59.     L_SPIRAL_TEXT,
  60.     L_STRETCH_TEXT,
  61.     L_WIPE_TEXT,
  62.     L_WHEEL_TEXT);
  63.  
  64. var maxDockedWidth    = 120;
  65. var maxDockedHeight    = 90;
  66. var maxUndockedWidth    = 320;
  67. var maxUndockedHeight = 240;
  68. var gMaxSecondsToShow = 300;
  69. var gSecondsToShow    = 15;
  70. var gSlideFadeEffect    = "";
  71. var counter    = 0;
  72. var increment    = 0;
  73. var gFolderCount    = 0;
  74. var gFolderCountMax    = 500;
  75. var gImageCountMax    = 2000;
  76. var gBarShowing    = false;
  77. var timer;
  78. var slideSettings;
  79. var imagePathAndName;
  80. var pictureDetails;
  81. var heightWidthLoad;
  82. var gPlayingFlag;
  83. var gDropDownPos;
  84. var gPageDir; 
  85. var gUndockFlag;
  86. ////////////////////////////////////////////////////////////////////////////////
  87. //
  88. // SETTINGS
  89. // load settings - populate form 
  90. //
  91. ////////////////////////////////////////////////////////////////////////////////
  92. function BrowseFolder(textBox)
  93. {
  94.     var shellFolder = System.Shell.chooseFolder(L_CHOOSEFOLDER_TEXT, 512);
  95.     if(shellFolder) 
  96.     { 
  97.         selectArray[gDropDownPos] = shellFolder.path
  98.         imagePathSel.value = shellFolder.path;
  99.         dropDownFromBrowse();
  100.         
  101.     }
  102. }
  103. ////////////////////////////////////////////////////////////////////////////////
  104. //
  105. //
  106. ////////////////////////////////////////////////////////////////////////////////
  107. function loadSettings()
  108.     counter = 0;
  109.     slideSettings = new GetSlideshowSettings();    
  110.     dropDownFromBrowse();
  111.     dropDownForFade();
  112.     gDropDownPos = selectArray.length;
  113.     System.Gadget.onSettingsClosing = SettingsClosing;
  114.     slideShowSpeed.value = slideSettings.secondsToShow;
  115.     fadeEffectNameField.value = slideSettings.slideFadeEffect;
  116.     imagePathSel.value = slideSettings.slideFolder;
  117.  
  118.  
  119.     if(slideSettings.includeSubDirectories == "checked")
  120.     {
  121.         includeSubDirectories.checked = true;
  122.     }
  123.     if(slideSettings.shuffleImages == "checked")
  124.     {
  125.         shuffleImages.checked = true;
  126.     }
  127. }
  128. ////////////////////////////////////////////////////////////////////////////////
  129. //
  130. // Gadget specific settings
  131. // determine if gadget is in sidebar - docked or on the desktop - undocked
  132. //
  133. ////////////////////////////////////////////////////////////////////////////////
  134. function dropDownForFade()
  135. {
  136.     fadeEffectNameField.options[0]=new Option(L_NONE_TEXT, "");
  137.     fadeEffectNameField.options[0].title=L_NONE_TEXT;
  138.  
  139.     for(var i=0;i<fadeEffectName.length;i++)
  140.     {
  141.         fadeEffectNameField.options[i+1]=new Option(fadeEffectName[i], i);
  142.         fadeEffectNameField.options[i+1].title=fadeEffectName[i];
  143.     }
  144.     
  145.     for(var i=0;i<slideTimeArray.length;i++)
  146.     {
  147.         slideShowSpeed.options[i]=new Option(slideTimeArray[i][0], slideTimeArray[i][1]);
  148.         slideShowSpeed.options[i].title=slideTimeArray[i][0];
  149.     }
  150. }
  151. ////////////////////////////////////////////////////////////////////////////////
  152. //
  153. // create dynamic drop downlist from pictures directory
  154. //
  155. ////////////////////////////////////////////////////////////////////////////////
  156. function dropDownFromBrowse()
  157. {
  158.     var j=0;
  159.     var startPoint = selectArray.length - 1;
  160.     for(var i = startPoint; i >= 0; i--)
  161.     {
  162.         imagePathSel.options[j] = new Option(selectArray[i], selectArray[i]);
  163.         imagePathSel.options[j].title = selectArray[i];
  164.         j++;
  165.     }
  166.     
  167.     var myPicturesObj = System.Shell.knownFolder("pictures").Self;
  168.     var myPicturesPath = myPicturesObj.path;
  169.     var myPicturesName = myPicturesObj.name;
  170.     imagePathSel.options[selectArray.length] = new Option(myPicturesName, myPicturesPath);
  171.     imagePathSel.options[selectArray.length].title = myPicturesName;
  172.  
  173.     var permanentPath = slideSettings.myPicturesFolder;
  174.     var permanentName = slideSettings.myPicturesName;
  175.     imagePathSel.options[selectArray.length+1] = new Option(permanentName, permanentPath);
  176.     imagePathSel.options[selectArray.length+1].title = permanentName;
  177.  
  178.     var picturesLibraryPath = slideSettings.picturesLibraryFolder;
  179.     var picturesLibraryName = slideSettings.picturesLibraryName;
  180.     imagePathSel.options[selectArray.length+2] = new Option(picturesLibraryName , picturesLibraryPath );
  181.     imagePathSel.options[selectArray.length+2].title = picturesLibraryName;
  182. }
  183. ////////////////////////////////////////////////////////////////////////////////
  184. //
  185. // determine if gadget is visible
  186. //
  187. ////////////////////////////////////////////////////////////////////////////////
  188. function checkVisibility()
  189. {
  190.     isVisible = System.Gadget.visible;
  191.     if(gPlayingFlag)
  192.     {
  193.         if (!isVisible)
  194.         {
  195.             clearInterval(timer);
  196.         }
  197.         if(isVisible)
  198.         {
  199.             startTimer(slideSettings.secondsToShow, "playSlides()");
  200.         }
  201.     }
  202. }
  203. ////////////////////////////////////////////////////////////////////////////////
  204. //
  205. // Gadget specific settings
  206. // determine if gadget is in sidebar - docked or on the desktop - undocked
  207. //
  208. ////////////////////////////////////////////////////////////////////////////////
  209. function checkState()
  210. {
  211.     if(!System.Gadget.docked) 
  212.     {
  213.         undockedState();
  214.     } 
  215.     else if (System.Gadget.docked)
  216.     {
  217.         dockedState(); 
  218.     }
  219. }
  220. ////////////////////////////////////////////////////////////////////////////////
  221. //
  222. //
  223. ////////////////////////////////////////////////////////////////////////////////
  224. function checkHeightWidth()
  225. {
  226.     if(!System.Gadget.docked) 
  227.     {
  228.         var sHeight = maxUndockedHeight;
  229.         var sWidth = maxUndockedWidth;
  230.         heightWidthLoad = "?width="+maxUndockedWidth+"&height="+maxUndockedHeight;
  231.         var temp = document.createElement("img");
  232.         temp.src = "gimage:///" + encodeURIComponent(imagePathAndName) + heightWidthLoad;
  233.         document.body.appendChild(temp);
  234.         if (temp.width > maxUndockedWidth) 
  235.         {    
  236.             sHeight = temp.height * maxUndockedWidth/temp.width;    
  237.         }
  238.         else if (temp.height > maxUndockedHeight) 
  239.         {
  240.             sWidth = temp.width * maxUndockedHeight/temp.height;
  241.         }
  242.         if(temp.width > 0 && temp.height > 0 && temp.width < maxUndockedWidth && temp.height < maxUndockedHeight)
  243.         {
  244.             if (temp.width >= temp.height) //portrait or square
  245.             {
  246.                 sHeight = "";
  247.             }
  248.             if(temp.width <= temp.height) //landscape or square
  249.             {
  250.                 sWidth = temp.width * maxUndockedHeight/temp.height;
  251.             }
  252.         }
  253.         heightWidthLoad = "?width="+sWidth+"&height="+sHeight; 
  254.         document.body.removeChild(document.body.lastChild);    
  255.     } 
  256.     else if (System.Gadget.docked)
  257.     {
  258.         heightWidthLoad = "?width="+maxDockedWidth+"&height="+maxDockedHeight;
  259.     }
  260. }
  261. ////////////////////////////////////////////////////////////////////////////////
  262. //
  263. // styles for gadget when UNDOCKED
  264. //
  265. ////////////////////////////////////////////////////////////////////////////////
  266. function undockedState()
  267. {
  268.     gUndockFlag = true;
  269.     with(document.body.style)
  270.         width=360, 
  271.         height=280;
  272.  
  273.     with(slideshowBg.style)
  274.         width=360, 
  275.         height=280;
  276.     slideshowBg.src="url(images/on_desktop/slideshow_glass_frame.png)";
  277.  
  278.     with(bar.style)
  279.         width=112,
  280.         height=23,
  281.         top=220,
  282.         left=119;
  283.  
  284.     with(pictureFrame.style)
  285.         top=16,left=17,width=320, height=240;
  286.         
  287.     if(imagePathAndName != undefined)
  288.     { 
  289.         scaleImageForDisplay();
  290.     }
  291. }
  292. ////////////////////////////////////////////////////////////////////////////////
  293. //
  294. // styles for gadget when DOCKED
  295. // 
  296. ////////////////////////////////////////////////////////////////////////////////
  297. function dockedState()
  298.     with(document.body.style)
  299.         width=130,
  300.         height=100;
  301.  
  302.     with(slideshowBg.style)
  303.         width=130,
  304.         height=100;
  305.     slideshowBg.src="url(Images/in_sidebar/slideshow_glass_frame.png)";
  306.  
  307.     with(bar.style)
  308.         width=112,
  309.         height=23,
  310.         top=68,
  311.         left=7;
  312.  
  313.     with(pictureFrame.style)
  314.         top=5,left=4,width=120, height=90;
  315.         
  316.     if(imagePathAndName != undefined)
  317.     { 
  318.         scaleImageForDisplay();
  319.     }        
  320. }
  321. ////////////////////////////////////////////////////////////////////////////////
  322. //
  323. // functions/events to do when settings page is about to close
  324. //
  325. ////////////////////////////////////////////////////////////////////////////////
  326. function SettingsClosing(event)
  327. {
  328.     if (event.closeAction == event.Action.commit)
  329.     {
  330.         System.Gadget.Settings.write("GadgetViewed","yes");
  331.         SaveSettings();
  332.     }
  333.     else if(event.closeAction == event.Action.cancel)
  334.     {
  335.     }
  336.     event.cancel = false;
  337. }
  338. ////////////////////////////////////////////////////////////////////////////////
  339. //
  340. // save the new settings
  341. //
  342. ////////////////////////////////////////////////////////////////////////////////
  343. function SaveSettings()
  344.     if(includeSubDirectories.checked)
  345.     {
  346.         slideSettings.includeSubDirectories = "checked";
  347.     }
  348.     else
  349.     {
  350.         slideSettings.includeSubDirectories = "unchecked";
  351.     }
  352.     if(shuffleImages.checked)
  353.     {
  354.         slideSettings.shuffleImages = "checked";
  355.     }
  356.     else
  357.     {
  358.         slideSettings.shuffleImages = "unchecked";
  359.     }
  360.     slideSettings.slideFolder = imagePathSel.value;
  361.     slideSettings.slideFadeEffect = fadeEffectNameField.value;
  362.     slideSettings.secondsToShow = slideShowSpeed.value; 
  363.     SetSlideshowSettings(slideSettings);
  364. }
  365. ////////////////////////////////////////////////////////////////////////////////
  366. //
  367. // settings getter
  368. //
  369. ////////////////////////////////////////////////////////////////////////////////
  370. function GetSlideshowSettings()
  371. {
  372.     var samplePictPath    = System.Environment.getEnvironmentVariable("Public");
  373.     this.picturesLibraryFolder    = System.Shell.knownFolderPath(FOLDERID_PICTURELIBRARY);
  374.     this.picturesLibraryName    = L_PICTURESLIBNAME_TEXT ;
  375.     this.myPicturesFolder    = samplePictPath + "\\Pictures\\Sample Pictures";
  376.     this.myPicturesName    = L_PICTURESNAME_TEXT;
  377.     this.slideFolder    = System.Gadget.Settings.read("Folder");
  378.     this.includeSampleFolder    = System.Gadget.Settings.read("SampleFolder");
  379.     this.includeSubDirectories = System.Gadget.Settings.read("SubDirectories");
  380.     this.shuffleImages    = System.Gadget.Settings.read("shuffleImages");
  381.     this.slideFadeEffect    = gSlideFadeEffect;
  382.     this.secondsToShow    = gSecondsToShow;
  383.     this.savedPathCount    = System.Gadget.Settings.read("savedPathCount");
  384.     this.gadgetViewed    = System.Gadget.Settings.read("GadgetViewed");
  385.     
  386.     if(this.savedPathCount > 0)
  387.     {
  388.         for(var i = 0; i < this.savedPathCount; i++)
  389.         {
  390.             var pathName = "savedPath"+i;
  391.             selectArray.push(System.Gadget.Settings.read(pathName));
  392.         }
  393.     }
  394.     var fadeEffectNumCheck    = parseInt(System.Gadget.Settings.read("FadeEffect"));
  395.     if(!isNaN(fadeEffectNumCheck))
  396.     {
  397.         if(fadeEffectNumCheck >= 0 && fadeEffectNumCheck < fadeEffectName.length)
  398.         {
  399.             this.slideFadeEffect = fadeEffectNumCheck;
  400.         }
  401.     }
  402.     var secondsNumCheck    = parseInt(System.Gadget.Settings.read("HowOften"));
  403.     if(!isNaN(secondsNumCheck))
  404.     {        
  405.         if(secondsNumCheck >= 0 && secondsNumCheck <= gMaxSecondsToShow)
  406.         {
  407.             this.secondsToShow = secondsNumCheck;
  408.         }
  409.     }
  410.     if (this.slideFolder == "")
  411.     {
  412.         this.slideFolder = this.picturesLibraryFolder;
  413.     }
  414.     if(this.includeSubDirectories == "")
  415.     {
  416.         this.includeSubDirectories="checked";
  417.     }
  418.     if(this.includeSampleFolder == "")
  419.     {
  420.         this.includeSampleFolder="checked";
  421.     }
  422. }
  423. ////////////////////////////////////////////////////////////////////////////////
  424. //
  425. // settings setter
  426. //
  427. ////////////////////////////////////////////////////////////////////////////////
  428. function SetSlideshowSettings(settings)
  429. {
  430.     System.Gadget.Settings.write("SampleFolder", settings.includeSampleFolder);
  431.     System.Gadget.Settings.write("SubDirectories", settings.includeSubDirectories);
  432.     System.Gadget.Settings.write("shuffleImages", settings.shuffleImages);
  433.     System.Gadget.Settings.write("Folder", settings.slideFolder);
  434.     System.Gadget.Settings.write("HowOften", settings.secondsToShow);
  435.     System.Gadget.Settings.write("FadeEffect", settings.slideFadeEffect);
  436.     var lastIndex = 0;
  437.     for(var i = 0; i<selectArray.length; i++)
  438.     {
  439.         var pathName = "savedPath" + i;
  440.         System.Gadget.Settings.write(pathName, selectArray[i]);
  441.         lastIndex++;
  442.     }
  443.     System.Gadget.Settings.write("savedPathCount", lastIndex);
  444. }
  445. ////////////////////////////////////////////////////////////////////////////////
  446. //
  447. // GADGET FUNCTIONS
  448. //
  449. ////////////////////////////////////////////////////////////////////////////////
  450. function loadMain()
  451. {
  452.     checkState();
  453.     System.Gadget.settingsUI = "settings.html";
  454.     System.Gadget.onSettingsClosed = SettingsClosed;
  455.     System.Gadget.onUndock = checkState;
  456.     System.Gadget.onDock = checkState;
  457.     
  458.     // make the navigation bar
  459.     gPageDir = document.getElementsByTagName("html")[0].dir; 
  460.     if (gPageDir == "rtl")
  461.     {
  462.         bar.innerHTML = "next play pause prev - reveal";
  463.     }
  464.     else
  465.     {
  466.         bar.innerHTML = "prev play pause next - reveal";
  467.     }
  468.     makeBar(bar);
  469.     setAltLabels(); 
  470.     bar_play.style.display="none";
  471.     bar_pause.style.display="";
  472.  
  473.     // clear picture array populate with selected folder and it's sub-directories
  474.     slideSettings = new GetSlideshowSettings();
  475.     imagePathAndName=slideSettings.slideFolder;    
  476.     if(slideSettings.gadgetViewed == "")
  477.     { 
  478.         imagePathAndName = System.Gadget.path + "\\images\\Tulip.jpg";
  479.         checkState(); 
  480.         checkHeightWidth();
  481.         picture.src = "gimage:///" + encodeURIComponent(imagePathAndName) + heightWidthLoad; 
  482.         link_reveal.href = "file:///" + imagePathAndName;
  483.         startTimer(15, "loadData()");
  484.     }
  485.     else
  486.     {
  487.         startTimer(.25, "loadData()");
  488.     }
  489. }
  490. ////////////////////////////////////////////////////////////////////////////////
  491. //
  492. // GADGET FUNCTIONS
  493. //
  494. ////////////////////////////////////////////////////////////////////////////////
  495. function loadData()
  496. {        
  497.  
  498.     // clear picture array populate with selected folder and it's sub-directories
  499.     makePicList(slideSettings.slideFolder);
  500.     
  501.     // start the slide show
  502.     increment = 0; 
  503.     playSlides();
  504.     gPlayingFlag = true;
  505.     startTimer(slideSettings.secondsToShow, "playSlides()");
  506.     System.Gadget.visibilityChanged = checkVisibility;
  507. }
  508. ////////////////////////////////////////////////////////////////////////////////
  509. //
  510. // slideshow's main timer for displaying pictures
  511. //
  512. ////////////////////////////////////////////////////////////////////////////////
  513. function startTimer(slideTime, timeFunction) 
  514. {
  515.     clearInterval(timer);
  516.     if(slideTime >= 0)
  517.     {
  518.         if(!isNaN(parseInt(slideSettings.slideFadeEffect)))
  519.         {
  520.             var slideTime = parseInt(slideTime + 1);
  521.         }
  522.         timer = setInterval(timeFunction, slideTime * 1000);
  523.     }
  524. }
  525. ////////////////////////////////////////////////////////////////////////////////
  526. //
  527. // creates navigation bar
  528. //
  529. ////////////////////////////////////////////////////////////////////////////////
  530. function makeBar(controlsString)
  531. {
  532.     var controlsArray=controlsString.innerText.split(" ");
  533.     var controlName;
  534.     var newImageToAdd;
  535.     var newLabelToAdd;
  536.     var labelsForRollovers = "";
  537.     var imageRollovers = "<div id='backBar'></div><div id='topBar'>";
  538.     var i=0;
  539.     while(controlName=controlsArray[i++])
  540.     {
  541.         var controlNameAction = controlName;
  542.         if(gPageDir == "rtl")
  543.         {
  544.             if (controlName == "next")
  545.             {
  546.                 controlNameAction = "prev";
  547.             }
  548.             if(controlName == "prev")
  549.             {
  550.                 controlNameAction = "next";
  551.             }
  552.         }
  553.         if (controlName=="-")
  554.         {
  555.             newImageToAdd = "";
  556.         }
  557.         else if (controlName=="reveal")
  558.         {
  559.             newImageToAdd = "<a id='link_" + controlNameAction + "' href='javascript:void(0);' onClick='this.blur();'>"
  560.                 + "<img border=0 id='bar_" + controlNameAction + "' hspace='3' src='images/"+controlName+"_rest.png' "
  561.                 + "onMouseOver='src=\"images/" + controlName + "_hov.png\"' onMouseOut='src=\"images/" + controlName + "_rest.png\"' "
  562.                 + "onMouseDown='src=\"images/" + controlName + "_down.png\"' onMouseUp='src=\"images/" + controlName + "_hov.png\"'"
  563.                 + " \>"
  564.                 + "</a>";
  565.             newLabelToAdd = "<label for='link_"+controlName+"'>"+controlName+"</label>";
  566.         }
  567.         else
  568.         {
  569.             newImageToAdd = "<a id='link_" + controlNameAction + "' href='javascript:void(0);' onClick='this.blur();'>"
  570.                 + "<img border=0 id='bar_" + controlNameAction + "' hspace='3' src='images/"+controlName+"_rest.png' "
  571.                 + "onMouseOver='src=\"images/" + controlName + "_hov.png\"' onMouseOut='src=\"images/" + controlName + "_rest.png\"' "
  572.                 + "onMouseDown='src=\"images/" + controlName + "_down.png\"' onMouseUp='src=\"images/" + controlName + "_hov.png\";"
  573.                 + "onAction(\"" + controlNameAction + "\");' \>"
  574.                 + "</a>";
  575.             newLabelToAdd = "<label for='link_"+controlName+"'>"+controlName+"</label>";
  576.         }
  577.         imageRollovers += newImageToAdd;
  578.         labelsForRollovers += newLabelToAdd;
  579.     }
  580.     imageRollovers += "</div>";
  581.     controlsString.innerHTML=imageRollovers;
  582.     labelHolder.innerHTML=labelsForRollovers;    
  583.     if (gPageDir == "rtl")
  584.     {
  585.         backBar.style.filter="flipH()";
  586.         bar_reveal.style.marginRight = "5px";
  587.         topBar.style.left = "-5px";
  588.     }
  589. }
  590. ////////////////////////////////////////////////////////////////////////////////
  591. //
  592. // set's alt tabs for navigation;
  593. //
  594. ////////////////////////////////////////////////////////////////////////////////
  595. function setAltLabels()
  596. {
  597.     bar_prev.setAttribute("alt",L_PREVIOUS_TEXT);
  598.     bar_play.setAttribute("alt",L_PLAY_TEXT);
  599.     bar_pause.setAttribute("alt",L_PAUSE_TEXT);
  600.     bar_next.setAttribute("alt",L_NEXT_TEXT);
  601.     bar_reveal.setAttribute("alt",L_VIEW_TEXT);
  602. }
  603. ////////////////////////////////////////////////////////////////////////////////
  604. //
  605. // navigation controls
  606. //
  607. ////////////////////////////////////////////////////////////////////////////////
  608. function onAction(action)
  609. {
  610.     if (event.button == 2 || event.button == 3)
  611.     {
  612.         return false
  613.     }
  614.     else
  615.     {
  616.         var flagPlay = false;
  617.         switch(action)
  618.         {
  619.             case "prev":
  620.                 if (bar_play.style.display == "")
  621.                 {
  622.                     bar_play.style.display="none";
  623.                     bar_pause.style.display="";
  624.                 }
  625.                 increment = increment - 2;
  626.                 startTimer(slideSettings.secondsToShow, "playSlides()")
  627.                 flagPlay = true;
  628.                 gPlayingFlag = true;
  629.                 break;
  630.             case "play":
  631.                 bar_play.style.display="none";
  632.                 bar_pause.style.display="";
  633.                 startTimer(slideSettings.secondsToShow, "playSlides()")
  634.                 flagPlay = true;
  635.                 gPlayingFlag = true;
  636.                 break;
  637.             case "pause":
  638.                 clearInterval(timer);
  639.                 bar_play.style.display="";
  640.                 bar_pause.style.display="none";
  641.                 gPlayingFlag = false ;
  642.                 break; 
  643.             case "next":
  644.                 if (bar_play.style.display == "")
  645.                 {
  646.                     bar_play.style.display="none";
  647.                     bar_pause.style.display="";
  648.                 }
  649.                 startTimer(slideSettings.secondsToShow, "playSlides()")
  650.                 flagPlay = true;
  651.                 gPlayingFlag = true;
  652.                 break;
  653.     }
  654.     }
  655.     if(flagPlay)
  656.     {
  657.         playSlides();
  658.         startTimer(slideSettings.secondsToShow, "playSlides()");
  659.     }
  660. }
  661. ////////////////////////////////////////////////////////////////////////////////
  662. //
  663. // picture list creator controller
  664. //
  665. ////////////////////////////////////////////////////////////////////////////////
  666. function makePicList(curFolderPath)
  667.     pictureArray.splice(0,pictureArray.length);
  668.     gFolderCount = 0;
  669.     addToPicList(curFolderPath);
  670.     if(slideSettings.shuffleImages == "checked")
  671.     {
  672.         pictureArray.sort(randomSort);
  673.     }
  674. }
  675. ////////////////////////////////////////////////////////////////////////////////
  676. //
  677. // Sort Function
  678. //
  679. ////////////////////////////////////////////////////////////////////////////////
  680. function randomSort()
  681. {
  682.     return Math.random() - 0.5;
  683. }
  684. ////////////////////////////////////////////////////////////////////////////////
  685. //
  686. // picture list creator
  687. //
  688. ////////////////////////////////////////////////////////////////////////////////
  689. function addToPicList(curFolderPath)
  690.     try
  691.     {
  692.         var curFolderObject = System.Shell.itemFromPath(curFolderPath); 
  693.     }
  694.     catch(e)
  695.     {
  696.         return null;
  697.     }
  698.     var curImageItemsFromPath = curFolderObject.SHFolder.Items;
  699.     if(curFolderObject.type != "Compressed (zipped) Folder")
  700.     {
  701.         var pictureLimit = curImageItemsFromPath.count;
  702.         if(pictureLimit > gImageCountMax)
  703.         {
  704.             pictureLimit = gImageCountMax;
  705.         }
  706.         for(var i=0;i<pictureLimit;i++)
  707.         {
  708.             var curImagePath    = curImageItemsFromPath.item(i).path;
  709.             var curImageIsLink    = curImageItemsFromPath.item(i).isLink;
  710.             var curImageIsFolder    = curImageItemsFromPath.item(i).isFolder;
  711.             var imageNameArray    = new Array(".jpg", ".jpeg", ".jpe", ".gif", ".png", ".bmp"); 
  712.             if(!curImageIsFolder)
  713.             {
  714.                 var flagFoundImageType = false;                
  715.                 var curImageExtension = curImagePath.substr(curImagePath.lastIndexOf("."));
  716.                 if(curImageExtension)
  717.                 {
  718.                     curImageExtension = curImageExtension.toLowerCase();
  719.                 }
  720.                 for(var j=0;j<imageNameArray.length;j++)
  721.                 {
  722.                     var tempNameFromArray = imageNameArray[j];
  723.                     if (curImageExtension == tempNameFromArray)
  724.                     { 
  725.                         flagFoundImageType = true;
  726.                         break;
  727.                     }
  728.                 }
  729.                 if(flagFoundImageType)
  730.                 {
  731.                     pictureArray.push(curImagePath);
  732.                 }
  733.             }
  734.         }
  735.         if(slideSettings.includeSubDirectories == "checked" && gFolderCount <= gFolderCountMax)
  736.         {
  737.             for(var i=0;i<curImageItemsFromPath.count;i++)
  738.             {
  739.                 var curImagePath    = curImageItemsFromPath.item(i).path;
  740.                 var curImageIsFolder    = curImageItemsFromPath.item(i).isFolder;
  741.                 if(curImageIsFolder)
  742.                 { 
  743.                     gFolderCount++
  744.                     addToPicList(curImagePath);
  745.                 }
  746.             }
  747.         }
  748.         
  749.     }
  750.     curFolderObject = null;
  751.     return null;
  752. }
  753. ////////////////////////////////////////////////////////////////////////////////
  754. //
  755. // picture display
  756. //
  757. ////////////////////////////////////////////////////////////////////////////////
  758. function playSlides()
  759. {
  760.     var retry = true;
  761.     var remadeList = false;
  762.     
  763.     while(retry)
  764.     {
  765.         if (increment >= pictureArray.length)
  766.         {
  767.             if (!remadeList)
  768.             {
  769.                 makePicList(slideSettings.slideFolder);
  770.                 increment = 0;
  771.                 remadeList = true;
  772.             }
  773.             else
  774.             {
  775.                 pictureArray.splice(0, pictureArray.length);
  776.             }
  777.         }
  778.         else if(increment < 0)
  779.         {
  780.             if (!remadeList)
  781.             {
  782.                 makePicList(slideSettings.slideFolder);
  783.                 increment = pictureArray.length - 1;
  784.                 remadeList = true;
  785.             }
  786.             else
  787.             {
  788.                 pictureArray.splice(0, pictureArray.length);
  789.             }
  790.         }
  791.  
  792.         if(pictureArray.length > 0)
  793.         {
  794.             imagePathAndName = pictureArray[increment];
  795.             try
  796.             {
  797.                 System.Shell.itemFromPath(imagePathAndName);
  798.                 increment++;
  799.                 retry = false;
  800.             }
  801.             catch(e)
  802.             {
  803.                 pictureArray.splice(increment, 1);
  804.                 retry = true;
  805.                 continue;
  806.             }
  807.         }
  808.         else
  809.         {
  810.             imagePathAndName = System.Gadget.path+"\\images\\Tulip.jpg";
  811.             loadSlide(false);
  812.             retry = false;
  813.             break;
  814.         }
  815.  
  816.         try
  817.         {
  818.             loadSlide(true);
  819.             retry = false;
  820.             break;
  821.         }
  822.         catch(e)
  823.         {
  824.             increment--;    // undo ++ from above
  825.             pictureArray.splice(increment, 1);
  826.             retry = true;
  827.             continue;
  828.         }
  829.     }
  830. }
  831. ////////////////////////////////////////////////////////////////////////////////
  832. //
  833. // load picture
  834. //
  835. ////////////////////////////////////////////////////////////////////////////////
  836. function loadSlide(transFlag)
  837. {
  838.     var picToGet = imagePathAndName;
  839.     if(transFlag)
  840.     {
  841.         scaleImageForDisplay()
  842.     }
  843.     else
  844.     {
  845.         checkState(); 
  846.         checkHeightWidth();
  847.         picture.src = "gimage:///" + encodeURIComponent(picToGet)+heightWidthLoad;
  848.         link_reveal.href = "file:///" + picToGet;
  849.     }
  850. }
  851. ////////////////////////////////////////////////////////////////////////////////
  852. //
  853. // scale picture
  854. //
  855. ////////////////////////////////////////////////////////////////////////////////
  856. function scaleImageForDisplay()
  857. {        
  858.         if(isNaN(parseInt(slideSettings.slideFadeEffect)) || gUndockFlag)
  859.         { 
  860.             checkHeightWidth();
  861.             picture.src = "gimage:///" + encodeURIComponent(imagePathAndName) + heightWidthLoad; 
  862.             link_reveal.href = "file:///" + imagePathAndName;
  863.             gUndockFlag = false;
  864.         }
  865.         else
  866.         {
  867.             pictureFrame.filters(slideSettings.slideFadeEffect).Apply(); 
  868.             checkHeightWidth(); 
  869.             picture.src = "gimage:///" + encodeURIComponent(imagePathAndName) + heightWidthLoad;    
  870.             link_reveal.href = "file:///" + imagePathAndName; 
  871.             pictureFrame.filters(slideSettings.slideFadeEffect).Play();        
  872.     }
  873.     
  874. }
  875.  
  876. ////////////////////////////////////////////////////////////////////////////////
  877. //
  878. // show navigation bar with fade-in
  879. //
  880. ////////////////////////////////////////////////////////////////////////////////
  881. function showBar()
  882. {
  883.     if(event.fromElement)
  884.     {
  885.         return;
  886.     }
  887.     clearTimeout(bar.timer);
  888.     up();
  889. }
  890. ////////////////////////////////////////////////////////////////////////////////
  891. //
  892. // hide navigation bar with fade-out
  893. //
  894. ////////////////////////////////////////////////////////////////////////////////
  895. function hideBar()
  896. {
  897.     if(event.toElement)
  898.     {
  899.         return;
  900.     }
  901.     clearTimeout(bar.timer);
  902.     down();
  903.     bar.blur();
  904. ////////////////////////////////////////////////////////////////////////////////
  905. //
  906. //
  907. ////////////////////////////////////////////////////////////////////////////////    
  908. function up()
  909. {
  910.     with(bar.filters("alpha"))
  911.     {
  912.         if((opacity+=15)<75)
  913.         {
  914.             bar.timer=setTimeout(up,25);
  915.         }
  916.         else
  917.         {
  918.             opacity=75;
  919.         }
  920.     }
  921. }
  922. ////////////////////////////////////////////////////////////////////////////////
  923. //
  924. //
  925. ////////////////////////////////////////////////////////////////////////////////    
  926. function down()
  927. {
  928.     with(bar.filters("alpha"))
  929.     {
  930.         if((opacity-=15)>0)
  931.         {
  932.             bar.timer=setTimeout(down,25);
  933.         }
  934.         else
  935.         {
  936.             opacity=0;
  937.         }
  938.     }
  939. }
  940. ////////////////////////////////////////////////////////////////////////////////
  941. //
  942. //
  943. ////////////////////////////////////////////////////////////////////////////////
  944. function keyNavigate()
  945. {    
  946.     switch(event.keyCode)
  947.     {
  948.         case 37:
  949.         case 100:
  950.             onAction("prev");
  951.             break;
  952.         case 39:
  953.         case 102:
  954.             onAction("next");
  955.             break;
  956.         case 32: 
  957.         case 13:
  958.             if(event.srcElement.id == "link_next")
  959.             {
  960.                 onAction("next");
  961.             }
  962.             else if(event.srcElement.id == "link_prev")
  963.             {
  964.                 onAction("prev");
  965.             }
  966.             else
  967.             {
  968.                 checkPlayingState();
  969.             }
  970.             break;
  971.         case 9:
  972.             showBar();
  973.             break;
  974.     }
  975. }
  976. ////////////////////////////////////////////////////////////////////////////////
  977. //
  978. //
  979. ////////////////////////////////////////////////////////////////////////////////
  980. function checkPlayingState()
  981.     if(gPlayingFlag)
  982.     {
  983.         onAction("pause");
  984.         gPlayingFlag = false;
  985.     }
  986.     else
  987.     {
  988.         onAction("play");
  989.         gPlayingFlag = true;
  990.     }
  991. }
  992.