home *** CD-ROM | disk | FTP | other *** search
/ Minami 79 / MINAMI79.iso / Extra / MPSetup.exe / 1033 / RCDATA / CABINET / wmploc.DLL / 256 / 142 < prev    next >
Text File  |  2002-12-14  |  23KB  |  888 lines

  1. // Windows Media Player  - Copyright 2001 Microsoft Corporation.
  2.  
  3. var g_psPlayState=0;
  4. var g_osOpenState=0;
  5. var g_fIsLiveBroadcast=false;
  6. var g_StatusTextColor="#89A4FF";
  7.  
  8. var g_bufferingProgress=100;
  9. var g_bufferingToolTipFormatString = theme.loadString("res://wmploc/RT_STRING/#2099");
  10. var g_strPlayTooltip = "";
  11.  
  12. var g_SetPlayPauseFocus=false;
  13.  
  14. var g_kSeekTooltip = theme.loadString("res://wmploc/RT_STRING/#1809");
  15. var g_fSeekDragging=false;
  16.  
  17. var g_strPlayIcon="res://wmploc/RT_IMAGE/#1784";
  18. function ResetPlayIcon()
  19. {
  20.     g_strPlayIcon="res://wmploc/RT_IMAGE/#1784";
  21.  
  22. function InitMiniControls()
  23. {
  24.     g_bufferingProgress = player.network.bufferingProgress;
  25.     OnOpenStateChangeTransport(player.openState);
  26.     OnPlayStateChangeTransport(player.playState);
  27.     OnStatusChangeTransport(player.status);
  28. }
  29.  
  30. /*
  31. var g_fShowingBuyMe=false;
  32.  
  33. function LaunchBuy()
  34. {
  35.     var BuyURL = 'http://go.microsoft.com/fwlink?prd=766&pver=9.0&plcid=0x' + mediacenter.getNamedString("PLCID") + '&ar=BuyNow&sar=' + mediacenter.getNamedString("BuyMusicURL");
  36.  
  37.     player.launchURL( BuyURL );
  38. }
  39. */
  40.  
  41. function MetaDataObject( formatStringID, dataCode, fEvalEveryTime, urlCode, tooltipCode )
  42. {
  43.     this.formatString = getFormatString(formatStringID);
  44.     this.dataCode = dataCode;
  45.     this.fEvalEveryTime = (fEvalEveryTime==true);
  46.     this.urlCode = urlCode ? urlCode : '""';
  47.     this.tooltipCode= tooltipCode ? tooltipCode : '""';
  48.     this.str = "";
  49.     this.url = "";
  50.     this.toolTip = "";
  51.  
  52.     this.getDataString = getDataString;
  53.     this.init = initMetaDataObject;
  54. }
  55.  
  56. function getDataString()
  57. {
  58.     if (false==this.fEvalEveryTime)
  59.     {
  60.         return this.str;
  61.     }
  62.     else
  63.     {
  64.         return getFormattedDataString(this.formatString, this.dataCode);
  65.     }
  66. }
  67. function initMetaDataObject()
  68. {
  69.     this.str = getFormattedDataString(this.formatString,this.dataCode);
  70.     this.url = eval(this.urlCode);
  71.     this.toolTip = eval(this.tooltipCode);
  72. }
  73.  
  74. function MetaDataDefinitionSet ( arrayOfMetaDataObjects, testCode)
  75. {
  76.     this.arrayOfMetaDataObjects = arrayOfMetaDataObjects;
  77.     this.testCode = testCode;
  78. }
  79.  
  80. function getMInfo(itemName)
  81. {
  82.     if (player.openState==osMediaOpen)
  83.     {
  84.         return player.currentMedia.getItemInfo(itemName);
  85.     }
  86.     return "";
  87. }
  88.  
  89. function getPInfo(itemName)
  90. {
  91.     return player.currentPlaylist.getItemInfo(itemName);
  92. }
  93.  
  94. var g_sAudioMetaData = new Array
  95. (              //formatStringID,  script to get data 
  96.     new MetaDataObject ( "",     "player.status", true ),
  97.     new MetaDataObject ( "",     "GetServerString()", true, "theme.loadString('res://wmploc/RT_STRING/#2068');"),
  98.     new MetaDataObject ( "2070", "getMInfo('album')", true, "getMInfo('moreinforef')", "getMInfo('abstract')" ),
  99.     new MetaDataObject ( "2071", "if(player.openState==osMediaOpen)player.currentMedia.name; else '';", true, "getPInfo('moreinforef')", "getPInfo('abstract')" ),
  100.     new MetaDataObject ( "2072", "getMInfo('author')",true ),
  101.     new MetaDataObject ( "2076", "getMInfo('copyright')",true ),
  102.     new MetaDataObject ( "",     "GetDRMString(player.currentMedia)" )
  103. );
  104.  
  105. var g_sVideoMetaData = new Array
  106. (              //formatStringID,  script to get data 
  107.     new MetaDataObject ( "",      "player.status", true),
  108.     new MetaDataObject ( "",     "GetServerString()", true, "theme.loadString('res://wmploc/RT_STRING/#2068');"),
  109.     new MetaDataObject ( "2073",  "getPInfo('title')", true, "getPInfo('moreinforef')", "getPInfo('abstract')" ),
  110.     new MetaDataObject ( "2074",  "if(player.openState==osMediaOpen)player.currentMedia.name; else '';", true, "getMInfo('moreinforef')", "getMInfo('abstract')" ),
  111.     new MetaDataObject ( "2075",  "getMInfo('author')", true ),
  112.     new MetaDataObject ( "2076",  "getMInfo('copyright')", true ),
  113.     new MetaDataObject ( "",      "GetDRMString(player.currentMedia)")
  114. );
  115.  
  116.  
  117. var g_sDVDMetaData = new Array
  118. (           //formatStringID,     script to get data 
  119.     new MetaDataObject ( "",      "player.status", true),
  120.     new MetaDataObject ( "2082",  "getMInfo('Author')", true),
  121.     new MetaDataObject ( "2083",  "getMInfo('Studio')", true ),
  122.     new MetaDataObject ( "",      "GetChapterTitleString()", true)
  123. );
  124.  
  125.  
  126. var g_sMetaDataDefinitionSets = new Array 
  127. (
  128.     new MetaDataDefinitionSet ( g_sAudioMetaData, "(player.dvd.isAvailable('dvd')==false) && (player.currentMedia.imageSourceHeight==0)"),
  129.     new MetaDataDefinitionSet ( g_sVideoMetaData, "(player.dvd.isAvailable('dvd')==false) && (player.currentMedia.imageSourceHeight>0)" ),
  130.     new MetaDataDefinitionSet ( g_sDVDMetaData,   "player.dvd.isAvailable('dvd')==true" )
  131. );
  132.  
  133. function getNextMetaDataObject()
  134. {
  135.     this.currentIndex = (this.currentIndex + 1) % this.metaDataCollection.length;
  136.     return this.metaDataCollection[this.currentIndex];
  137. }
  138.  
  139. function clear()
  140. {
  141.     this.metaDataCollection.length=0;
  142.     this.currentIndex = 0;    
  143. }
  144.  
  145. function append(mdObject)
  146. {
  147.     this.metaDataCollection[this.metaDataCollection.length] = mdObject;
  148. }
  149.  
  150. function getItem(index)
  151. {
  152.     this.currentIndex = index-1;
  153.     return this.getNextMetaDataObject();
  154. }
  155.  
  156. function MetaDataCollectionManager()
  157. {
  158.     this.metaDataCollection = new Array();
  159.     this.currentIndex = 0;
  160.     this.getNextMetaDataObject = getNextMetaDataObject;
  161.     this.clear = clear;
  162.     this.append = append;
  163.     this.getItem = getItem;
  164. }
  165.  
  166. var g_MetaDataCollectionManager = new MetaDataCollectionManager();
  167.  
  168. function InitMetaDataCollection()
  169. {
  170.     g_MetaDataCollectionManager.clear();
  171.     var CurrentSet;
  172.     for (var mdList in g_sMetaDataDefinitionSets)
  173.     {
  174.         CurrentSet = g_sMetaDataDefinitionSets[mdList];
  175.         if ( eval(CurrentSet.testCode) )
  176.         {
  177.             break;
  178.         }
  179.     }
  180.     var allTypes = CurrentSet.arrayOfMetaDataObjects;
  181.     for (var index in allTypes)
  182.     {
  183.         var mdObject = allTypes[index];
  184.         mdObject.init();
  185.         if ( (mdObject.str!="") || mdObject.fEvalEveryTime )
  186.         {
  187.             g_MetaDataCollectionManager.append(mdObject);
  188.         }
  189.     }
  190.     ShowStatus(player.status);
  191. }
  192.  
  193. function getFormatString(formatStringID)
  194. {
  195.     if (""==formatStringID)
  196.     {
  197.         return "";
  198.     }
  199.     
  200.     return theme.loadString("res://wmploc/RT_STRING/#" + formatStringID);
  201. }
  202.  
  203. function getFormattedDataString(formatString, dataCode)
  204. {
  205.     var data = eval(dataCode);
  206.     if (data=="")
  207.     {
  208.         return "";
  209.     }
  210.     if (""!=formatString)
  211.     {
  212.         data=data.sprintf(formatString,data);
  213.     }
  214.     return data;
  215. }
  216.  
  217. function GetChapterTitleString()
  218. {
  219.     if (player.openState!=osMediaOpen)
  220.     {
  221.         return "";
  222.     }
  223.     var DVDChapterANDTitleFormatString = theme.loadString("res://wmploc/RT_STRING/#2086");
  224.  
  225.     var title = player.currentPlaylist.name;
  226.     var chapter = player.currentMedia.name;
  227.     
  228.     //jcain - DON'T CHANGE THE ORDER OF THESE ARGUMENTS!!! (title, chapter)
  229.     //their order is vital to sprintf formattting them properly for localization
  230.     var arguments = new Array (title,chapter);
  231.     var TitleAndChapter = "";
  232.     TitleAndChapter = TitleAndChapter.sprintf(DVDChapterANDTitleFormatString, arguments);
  233.     return TitleAndChapter;    
  234. }
  235.  
  236. function GetServerString()
  237. {
  238.     var ServerVersionString = getMInfo("WMServerVersion");
  239.     if (ServerVersionString != "" && (parseInt(ServerVersionString)>=9))
  240.     {
  241.         return theme.loadString("res://wmploc/RT_STRING/#2069");
  242.     }
  243.     return "";
  244. }
  245.  
  246. function GetDRMString(obj)
  247. {
  248.     var str = "";
  249.     if ("True" == obj.getItemInfo("Is_Protected"))
  250.     {
  251.         if ("True" == obj.getItemInfo("Is_Trusted"))
  252.         {
  253.             str = theme.loadString("res://wmploc/RT_STRING/#2078");
  254.             var signame = obj.getItemInfo("Signature_Name");
  255.             str = str.sprintf(str,signame);
  256.         }
  257.         else
  258.         {
  259.             str = theme.loadString("res://wmploc/RT_STRING/#2077");
  260.         }
  261.     }
  262.     return str;
  263. }
  264.  
  265. var g_metaDataInfo;
  266. function ShowMetaData(mdObject)
  267. {
  268.     if (mdObject)
  269.     {
  270.         g_metaDataInfo = mdObject;
  271.         var str = mdObject.getDataString();
  272.         if ("" != str)
  273.         {
  274.             metadata.value = str;
  275.             metadata.tooltip = mdObject.tooltip;
  276.  
  277.             if ("" != mdObject.url)
  278.             {
  279.                 metadata.enabled = true;
  280.                 if (metadata.hoverFontStyle=="normal")
  281.                 {
  282.                     metadata.hoverFontStyle = "underline";
  283.                 }
  284.                 else
  285.                 {
  286.                     metadata.hoverFontStyle = metadata.fontStyle + " underline";
  287.                 }
  288.                 metadata.cursor="hand";
  289.             }
  290.             else
  291.             {
  292.                 metadata.hoverFontStyle = metadata.fontStyle;
  293.                 metadata.cursor="system";
  294.                 metadata.enabled = false;
  295.             }
  296.             
  297.             metadata.toolTip = mdObject.toolTip;
  298.         }
  299.     }
  300.     else
  301.     {
  302.         ShowStatus(player.status);
  303.     }
  304. }
  305.  
  306. function ShowStatus(sStr)
  307. {
  308.     metadata.value = sStr;
  309.     metadata.hoverFontStyle = "normal";
  310.     metadata.cursor="system";
  311.     metadata.tooltip = "";
  312.     metadata.enabled = false;
  313. }
  314.  
  315. function RotateMetaData()
  316. {
  317.     var currentMetaDataObject = g_MetaDataCollectionManager.getNextMetaDataObject();
  318.     ShowMetaData(currentMetaDataObject);
  319. }
  320.  
  321. function ForceMetaData(itemIndex)
  322. {
  323.     var meta = g_MetaDataCollectionManager.getItem(itemIndex);
  324.     ShowMetaData(meta);
  325. }
  326.  
  327. function OnClickMetaData()
  328. {
  329.     if ("" != g_metaDataInfo.url)
  330.         player.launchURL(g_metaDataInfo.url);
  331. }
  332.  
  333. function UpdateReceptionQuality(nReceptionQuality)
  334. {
  335.     if ( player.network.bufferingProgress < 100 )
  336.     {
  337.         return;
  338.     }
  339.     
  340.     var protocol = player.network.sourceProtocol;
  341.     if ( (protocol=="file") || (protocol=="") )
  342.     {
  343.         return;
  344.     }   
  345.  
  346.     if ( (g_strPlayIcon == "WMPImage_PlaybackIcon")&&
  347.          (player.network.maxBitrate==player.network.bitRate)&&
  348.          (nReceptionQuality == 100) )
  349.     {
  350.         return;
  351.     }
  352.     
  353.     var IDIM_OLDSTRIMG_T1_14_NORMAL=1776;
  354.     var IDIM_OLDSTRIMG_T1_14_PACKETLOSS=1777;
  355.     var IDIM_OLDSTRIMG_T1_56_NORMAL=1778;
  356.     var IDIM_OLDSTRIMG_T1_56_PACKETLOSS=1779;
  357.     var IDIM_OLDSTRIMG_T1_T1_NORMAL=1780;
  358.     var IDIM_OLDSTRIMG_T1_T1_PACKETLOSS=1781;
  359.     var IDIM_OLDSTRIMG_PACKETLOSS10=1772;
  360.     
  361.     
  362.     
  363.     var imagename = "res://wmploc/RT_IMAGE/#";
  364.     
  365.     var maxBitrate = player.network.maxBitrate;
  366.     var currentBitrate = player.network.bitRate;    
  367.     var imageId=0;
  368.     if (currentBitrate==maxBitrate) 
  369.     {
  370.         imageId=IDIM_OLDSTRIMG_T1_T1_NORMAL;
  371.     }
  372.     else
  373.     {
  374.         if (currentBitrate >= (maxBitrate/2))
  375.         {
  376.             imageId=IDIM_OLDSTRIMG_T1_56_NORMAL;
  377.         }
  378.         else
  379.         {
  380.             imageId=IDIM_OLDSTRIMG_T1_14_NORMAL;
  381.         }   
  382.     }
  383.     if (nReceptionQuality > 0)
  384.     {
  385.         if(nReceptionQuality == 100)
  386.         {            
  387.             if (currentBitrate==maxBitrate)
  388.             {
  389.                 QualityIcon.upToolTip="res://wmploc/RT_STRING/#2079";
  390.             }
  391.             else
  392.             {
  393.                 QualityIcon.upToolTip="res://wmploc/RT_STRING/#2092";
  394.             }                  
  395.         }
  396.         else if( nReceptionQuality >= 95 )
  397.         {            
  398.             imageId +=1; //packet loss is one more the normal
  399.             QualityIcon.upToolTip="res://wmploc/RT_STRING/#2080";
  400.         }
  401.         else if(nReceptionQuality < 95)
  402.         {
  403.             imageId = IDIM_OLDSTRIMG_PACKETLOSS10;            
  404.             QualityIcon.upToolTip="res://wmploc/RT_STRING/#2081";
  405.         }
  406.         imagename += imageId;
  407.         QualityIcon.image = imagename;
  408.         QualityIcon.visible=true;
  409.     }
  410. }
  411.  
  412. function OnTimerTransport()
  413. {
  414.     if (osMediaOpen != g_osOpenState)
  415.         return;
  416.     
  417.     switch(g_psPlayState)
  418.     {
  419.         case psPlaying:
  420.             RotateMetaData();        
  421.             break;
  422.     }
  423. }
  424.  
  425. function OnStatusChangeTransport()
  426. {
  427.     view.timerInterval=0;
  428.     view.timerInterval=4000;
  429.     ShowStatus(player.status);
  430. }
  431.  
  432.  
  433. function OnBufferingChangeTransport(nProgress)
  434. {
  435.     if ( nProgress!=g_bufferingProgress)
  436.     {
  437.         g_bufferingProgress=nProgress;
  438.     }
  439.     else
  440.     {
  441.         return;
  442.     }
  443.     
  444.     if (nProgress == 100)
  445.     {
  446.         QualityIcon.image = "res://wmploc/RT_IMAGE/#1776";
  447.         QualityIcon.upToolTip="";
  448.         return;
  449.     }
  450.     if (nProgress > 50)
  451.     {
  452.         if (nProgress > 75)
  453.         {
  454.             QualityIcon.image = "res://wmploc/RT_IMAGE/#1774";
  455.         }
  456.         else
  457.         {
  458.             QualityIcon.image = "res://wmploc/RT_IMAGE/#1773";
  459.         }
  460.     }
  461.     else
  462.     {
  463.         if (nProgress>25)
  464.         {
  465.             QualityIcon.image = "res://wmploc/RT_IMAGE/#1771";
  466.         }
  467.         else
  468.         {
  469.             QualityIcon.image = "res://wmploc/RT_IMAGE/#1770";
  470.         }    
  471.     }    
  472.     var toolTip = "";
  473.     toolTip = toolTip.sprintf(g_bufferingToolTipFormatString, nProgress.toString());
  474.     QualityIcon.upToolTip=toolTip;
  475.     ShowStatus(player.status);
  476. }
  477.  
  478. function OnDisconnectTransport()
  479. {
  480.     ShowStatus(theme.loadString("res://wmploc/RT_STRING/#2063"));
  481. }
  482.  
  483. function PlayButtonClick(event)
  484. {
  485.     if( (player.playState==psPaused) && (event.ctrlKey) && player.controls.isAvailable('step') )
  486.     {
  487.         if (event.shiftKey)
  488.         {
  489.             player.controls.step(-1);
  490.         }
  491.         else
  492.         {
  493.             player.controls.step(1);
  494.         }
  495.     }
  496.     else
  497.     {
  498.         g_SetPlayPauseFocus=true;
  499.         player.controls.play();
  500.     }
  501. }
  502.  
  503. function OnFFWD()
  504. {
  505.     if (player.PlayState == psScanForward)
  506.     {
  507.         player.controls.play();
  508.     }
  509.     else
  510.     {
  511.         player.controls.FastForward();
  512.     }
  513. }
  514.         
  515. function OnREW()
  516. {
  517.     if (player.PlayState == psScanReverse)
  518.     {
  519.         player.controls.play();
  520.     }
  521.     else
  522.     {
  523.         player.controls.FastReverse();
  524.     }
  525. }
  526.  
  527. function volumeOnChange()
  528. {
  529.     player.settings.mute=false;
  530. }
  531.  
  532. function muteOnClick()
  533. {
  534.     player.settings.mute = (player.settings.mute == true) ? false : true;
  535. }
  536.  
  537.  
  538. function ShowPlaybackIcon()
  539. {
  540.     g_strPlayIcon   = "WMPImage_PlaybackIcon";
  541.     g_strPlayTooltip="";
  542.     if (player.playState==psPlaying)
  543.     {
  544.         QualityIcon.image = g_strPlayIcon;
  545.         QualityIcon.upToolTip = g_strPlayTooltip;
  546.         QualityIcon.visible=true;
  547.     }
  548. }
  549.  
  550. var g_IconURL="";
  551.  
  552. function CheckForDecodingIcons()
  553. {
  554.     var HDCDMode = parseInt(player.currentPlaylist.getItemInfo("HDCDMode"));
  555.     if (HDCDMode==1)
  556.     {
  557.         g_strPlayIcon = "res://wmploc/RT_IMAGE/#1787";
  558.         g_strPlayTooltip = theme.loadString("res://wmploc/RT_STRING/#2098");
  559.         g_IconURL = mediacenter.getNamedString("HDCD_URL");
  560.         return;
  561.     }
  562.     else if (HDCDMode==2)
  563.     {
  564.         g_strPlayIcon = "res://wmploc/RT_IMAGE/#2030";
  565.         g_strPlayTooltip = theme.loadString("res://wmploc/RT_STRING/#2097");
  566.         g_IconURL = mediacenter.getNamedString("HDCD_URL");
  567.         return;
  568.     }
  569.     if (g_strPlayIcon != "WMPImage_PlaybackIcon")
  570.     {
  571.         g_strPlayIcon = "res://wmploc/RT_IMAGE/#1784";
  572.         g_strPlayTooltip = "";
  573.         g_IconURL = "";
  574.     }
  575. }
  576.  
  577.  
  578. function OnPlayStateChangeTransport(NewState)
  579. {
  580.     g_psPlayState=NewState;
  581.     
  582.     switch (NewState)
  583.     {
  584.     case psUndefined:
  585.             seek.foregroundProgress = 0;
  586.             rew.down=false;
  587.             ffwd.down=false;
  588.         break;
  589.  
  590.     case psTransitioning:
  591.             rew.down=false;
  592.             ffwd.down=false;
  593.         break;            
  594.         
  595.     case psReady:
  596.             QualityIcon.visible=false;
  597.             QualityIcon.upToolTip = "";
  598.             seek.foregroundProgress = 0;
  599.             rew.down=false;
  600.             ffwd.down=false;
  601.         break;
  602.  
  603.     case psStopped:
  604.             QualityIcon.visible=true;
  605.             QualityIcon.image = "res://wmploc/RT_IMAGE/#2024";
  606.             QualityIcon.upToolTip = "";
  607.             ffwd.down=false;
  608.             rew.down=false;
  609.         break;
  610.         
  611.     case psPaused:
  612.             QualityIcon.visible=true;
  613.             QualityIcon.image = "res://wmploc/RT_IMAGE/#2023";
  614.             QualityIcon.upToolTip = "";
  615.             ffwd.down=false;
  616.             rew.down=false;
  617.         break;
  618.         
  619.     case psPlaying:
  620.             ShowPlayingIcon();
  621.             ShowStatus(player.status);
  622.             ffwd.down=false;
  623.             rew.down=false;
  624.         break;
  625.         
  626.     case psWaiting:
  627.             rew.down=false;
  628.             ffwd.down=false;
  629.         break;
  630.         
  631.     case psScanForward:
  632.             ShowPlayingIcon();
  633.             rew.down=false;
  634.             ffwd.down=true;
  635.         break;
  636.         
  637.     case psScanReverse:
  638.             ShowPlayingIcon();
  639.             rew.down=true;
  640.             ffwd.down=false;
  641.         break;
  642.         
  643.     case psBuffering:
  644.         break;
  645.  
  646.     case psReconnecting:
  647.         break;
  648.     }
  649. }
  650.  
  651. function ShowPlayingIcon()
  652. {
  653.     var sp = player.network.sourceProtocol;
  654.     if ( (sp=="file") || (sp=="") || (g_strPlayIcon == "WMPImage_PlaybackIcon") )
  655.     {
  656.         CheckForDecodingIcons();
  657.         QualityIcon.image = g_strPlayIcon;
  658.         QualityIcon.upToolTip = g_strPlayTooltip;
  659.         QualityIcon.visible=true;
  660.     }
  661.     else
  662.     {
  663.         UpdateReceptionQuality(player.network.receptionQuality);
  664.     }
  665. }
  666.  
  667. function OnOpenStateChangeTransport(NewState)
  668. {
  669.     g_osOpenState=NewState;
  670.     switch (NewState)
  671.     {
  672.     case osUndefined:
  673.         tracktime.visible=false;
  674.         g_fIsLiveBroadcast=false;
  675.         break;
  676.         
  677.     case osPlaylistChanging:
  678.         break;
  679.  
  680.     case osPlaylistLocating:
  681.         break;
  682.  
  683.     case osPlaylistConnecting:
  684.         break;
  685.  
  686.     case osPlaylistLoading:
  687.         break;
  688.  
  689.     case osPlaylistOpening:
  690.         break;
  691.  
  692.     case osPlaylistOpenNoMedia:
  693.         break;
  694.  
  695.     case osPlaylistChanged:
  696.         break;
  697.  
  698.     case osMediaChanging:
  699.         QualityIcon.visible = false;
  700.         ResetPlayIcon();
  701.         break;
  702.  
  703.     case osMediaLocating:
  704.         QualityIcon.visible=true;
  705.         QualityIcon.image = "res://wmploc/RT_IMAGE/#1783";
  706.         QualityIcon.upToolTip="";
  707.         break;
  708.  
  709.     case osMediaConnecting:
  710.         QualityIcon.visible=true;
  711.         QualityIcon.image = "res://wmploc/RT_IMAGE/#1783"; // uses same image as Locating
  712.         QualityIcon.upToolTip="";
  713.         break;
  714.  
  715.     case osMediaLoading:
  716.         break;
  717.  
  718.     case osMediaWaiting:
  719.         g_fIsLiveBroadcast = (player.currentMedia.getItemInfo("Type") == "broadcast");
  720.         seek.enabled = !g_fIsLiveBroadcast;
  721.         break;
  722.  
  723.     case osMediaOpening:
  724.         QualityIcon.visible=true;
  725.         QualityIcon.image = "res://wmploc/RT_IMAGE/#2020";
  726.         QualityIcon.upToolTip="";
  727.         g_strPlayIcon = "res://wmploc/RT_IMAGE/#1784";
  728.         g_strPlayTooltip = "";        
  729.         break;
  730.  
  731.     case osMediaOpen: 
  732.         tracktime.visible=true;
  733.         g_fIsLiveBroadcast = (player.currentmedia.getiteminfo("Type") == "broadcast");
  734.         seek.enabled = !g_fIsLiveBroadcast;
  735.         InitMetaDataCollection();
  736.         break;
  737.  
  738.     case osBeginLicenseAcquisition:
  739.         break;
  740.  
  741.     case osEndLicenseAcquisition:
  742.         break;
  743.  
  744.     case osBeginIndividualization:
  745.         break;
  746.  
  747.     case osEndIndividualization:
  748.         break;
  749.  
  750.     default:
  751.         break;
  752.     }    
  753. }
  754.  
  755. function getFormattedValue(value)
  756. {
  757.     if (player.openState!=osMediaOpen)
  758.     {
  759.         return "";
  760.     }
  761.  
  762.     if (!g_kPositionFormatString)
  763.     {
  764.         g_kPositionFormatString = theme.loadString("res://wmploc/RT_STRING/#2091");
  765.     }
  766.     var currentValue;
  767.     try
  768.     {
  769.         currentValue = app.getTimeString(value);
  770.     }
  771.     catch(err)
  772.     {
  773.         currentValue = helper.getTimeString(value);
  774.     }
  775.         
  776.     var totalTime = player.currentMedia.durationString; 
  777.     var format = g_kPositionFormatString;
  778.   
  779.     format = format.replace(/%1/i, currentValue);
  780.     format = format.replace(/%2/i, totalTime);
  781.  
  782.     return format;
  783. }
  784.  
  785. function getDarkTextColor()
  786. {
  787.     return mediacenter.appColorDark;
  788. }
  789.  
  790. function getHighlightTextColor()
  791. {
  792.     return mediacenter.itemPlayingColor;
  793. }
  794.  
  795. //----------------------------------------------------------------
  796. // multi-speed fastforward logic
  797.  
  798. var g_kFFWD_Down1 = "res://-/#1897";
  799. var g_kFFWD_Down2 = "res://-/#2082";
  800. var g_kFFWD_Down3 = "res://-/#2083";
  801. var g_kFastForwardRate1 = 1.4;
  802. var g_kFastForwardRate2 = 2.0;
  803. var g_kFastForwardRate3 = 5.0;
  804.  
  805. function SyncFFWDButtonToRate(rate)
  806. {
  807.     var tc = player.controls.isAvailable("timeCompression");
  808.     if ( rate < g_kFastForwardRate1 )
  809.     {
  810.         ffwdGroup.downImage=g_kFFWD_Down1;
  811.         if( !tc )
  812.         {
  813.             ffwd_multi.upToolTip="res://wmploc/RT_STRING/#1804"
  814.         }
  815.         else
  816.         {
  817.             ffwd_multi.upToolTip="res://wmploc/RT_STRING/#2194"
  818.         }
  819.         ffwd_multi.down = false;
  820.     }
  821.     else if (rate < g_kFastForwardRate2)
  822.     {
  823.         ffwdGroup.downImage=g_kFFWD_Down1;
  824.         if( !tc )
  825.         {
  826.             ffwd_multi.downToolTip="res://wmploc/RT_STRING/#1804"
  827.             ffwd_multi.down = false;
  828.         }
  829.         else
  830.         {
  831.             ffwd_multi.downToolTip="res://wmploc/RT_STRING/#2195"
  832.             ffwd_multi.down = true;
  833.         }
  834.     }
  835.     else if (rate < g_kFastForwardRate3)
  836.     {
  837.         if( !tc )
  838.         {
  839.             ffwd_multi.downToolTip="res://wmploc/RT_STRING/#1804"
  840.             ffwdGroup.downImage=g_kFFWD_Down1;
  841.             ffwd_multi.down = false;
  842.         }
  843.         else
  844.         {
  845.             ffwdGroup.downImage=g_kFFWD_Down2;
  846.             ffwd_multi.downToolTip="res://wmploc/RT_STRING/#2196"
  847.             ffwd_multi.down = true;
  848.         }
  849.     }
  850.     else
  851.     {
  852.         if( !tc )
  853.         {
  854.             ffwdGroup.downImage=g_kFFWD_Down1;
  855.         }
  856.         else
  857.         {
  858.             ffwdGroup.downImage=g_kFFWD_Down3;
  859.         }
  860.         ffwd_multi.downToolTip="res://wmploc/RT_STRING/#1818"
  861.         ffwd_multi.down = true;
  862.     }
  863. }
  864.  
  865. function OnFFWDMultiSpeed()
  866. {
  867.     var tc = player.controls.isAvailable("timeCompression");
  868.     var rate = player.settings.rate;
  869.  
  870.     if (rate < g_kFastForwardRate1 && tc)
  871.     {
  872.         player.settings.rate=g_kFastForwardRate1;
  873.     }
  874.     else if (rate<g_kFastForwardRate2 && tc)
  875.     {
  876.         player.settings.rate=g_kFastForwardRate2;
  877.     }
  878.     else if (rate<g_kFastForwardRate3)
  879.     {
  880.         player.settings.rate=g_kFastForwardRate3;
  881.     }
  882.     else
  883.     {
  884.         player.settings.rate=1;
  885.     }
  886. }
  887.