home *** CD-ROM | disk | FTP | other *** search
/ Minami 55 / MINAMI55.ISO / Extra / MPSetup.exe / 1033 / RCDATA / CABINET / wmploc.DLL / 256 / NOWPLAYING.JS < prev    next >
Text File  |  2002-12-14  |  19KB  |  859 lines

  1. // Windows Media Player - Copyright 2000 Microsoft Corporation.
  2. //<script>
  3.  
  4. // Dimensions must match wmpnowplayinghelper.cpp
  5.  
  6. var g_BannerHeight        = 36;
  7. var g_SepWidth            = 2;
  8. var g_SepHeight         = 2;
  9. var g_ControlbarHeight    = 20;
  10.  
  11. var g_SettingsMinHeight = 21;
  12. var g_SettingsMaxHeight = 500;
  13. var g_SidebarMinWidth    = 100;
  14. var g_SidebarMaxWidth    = 500;
  15. var g_PlaylistMinHeight = 35;
  16. var g_MetadataMinHeight = 26;
  17.  
  18. var g_DisplayMinWidth    = 200;
  19. var g_DisplayMinHeight    = 19;
  20. var g_MediaMinHeight    = 20;
  21.  
  22. var PLUGIN_TYPE_BACKGROUND                =        1;
  23. var PLUGIN_TYPE_SEPARATEWINDOW            =        2;
  24. var PLUGIN_TYPE_DISPLAYAREA             =        3;
  25. var PLUGIN_TYPE_SETTINGSAREA            =        4;
  26. var PLUGIN_TYPE_METADATAAREA            =        5;
  27. var PLUGIN_TYPE_BANNERAREA                =        240;
  28.  
  29. var PLUGIN_PROP_CURRENTPRESET            = "CurrentPreset"
  30. var PLUGIN_PROP_SKINFILE                = "SkinFile"
  31.  
  32. var VIEW_FLAGSEX_ATTEMPTEDAUTORUN        =        0x0001;
  33.  
  34. var g_VResize = false;
  35. var g_HResize = false;
  36. var g_SResize = false;
  37.  
  38. var g_fCaptionsDetected = false;
  39. var g_fShowCaptions = false;
  40. var g_fShowBanner    = false;
  41. var g_fClosing = false;
  42.  
  43. var g_rgSettings = new Array(
  44.     "AppColorView",
  45.     "CrossFadeView",
  46.     "EQView",
  47.     "MediaLinkView",
  48.     "AdvancedVideoSettingsView",
  49.     "AdvancedAudioView",
  50.     "SRSView",
  51.     "VideoSettingsView"
  52.     );
  53.  
  54. var g_nSettingsTitleLeft = 0;
  55.  
  56. function OnLoad()
  57. {
  58.     g_nSettingsTitleLeft = txtSettingsTitle.left;
  59.     g_fCaptionsDetected = helper.captionsAvailable;
  60.  
  61.     plMedia.setColumnResizeMode( 0, "Stretches" );
  62.     plMedia.setColumnResizeMode( 1, "AutosizeData" );
  63.  
  64.     ResetDisplayPlugin();
  65.     UpdateCaptions();
  66.     UpdateBannerPlugin();
  67.     UpdateSettingsPlugin();
  68.     UpdateMetadataPlugin();
  69.     UpdateVizControls();
  70.     UpdatePanels();
  71.     UpdateFullScreenButton();
  72.     UpdateSettingsTitle();
  73.     UpdateCustomize();
  74. }
  75.  
  76. function OnOpenStateChange()
  77. {
  78.     if( osMediaOpen == player.OpenState )
  79.     {
  80.         g_fCaptionsDetected = helper.captionsAvailable;
  81.         ResetDisplayPlugin();
  82.         UpdateCaptions();
  83.         UpdateBannerPlugin();
  84.         UpdatePanels();
  85.         UpdateVizControls();
  86.     }
  87.  
  88.     UpdateFullScreenButton();
  89. }
  90.  
  91. function OnPlayStateChange()
  92. {
  93.     if( psPlaying == player.playState )
  94.     {
  95.         ResetDisplayPlugin();
  96.         UpdateCaptions();
  97.         UpdatePanels();
  98.         UpdateVizControls();
  99.     }
  100.  
  101.     UpdateFullScreenButton();
  102. }
  103.  
  104. function OnScriptCommand(scType, Param)
  105. {
  106.     scType = scType.toUpperCase();
  107.     
  108.     if(scType == "TEXT" ||    scType == "<SYNC" || scType == "CAPTION" || scType == "SYNCHRONIZEDLYRICLYRIC")
  109.     {
  110.         g_fCaptionsDetected = true;
  111.         UpdateCaptions();
  112.         UpdatePanels();
  113.     }
  114. }
  115.  
  116. function UpdatePanels()
  117. {
  118.    if( !g_fClosing )
  119.    {
  120.     var lSettings = 0;
  121.     var lSidebar = 0;
  122.     var lMetadata = 0;
  123.     var lPlaylist = 0;
  124.     var lDisplay = 0;
  125.     var lCaptions = 0;
  126.     var lBanner = 0;
  127.  
  128.     helper.calcLayout( vMain.width, vMain.height, g_fShowCaptions, g_fShowBanner );
  129.  
  130.     lSettings = helper.getLayoutSize( 1 );
  131.     lSidebar = helper.getLayoutSize( 2 );
  132.     lMetadata = helper.getLayoutSize( 3 );
  133.     lPlaylist = helper.getLayoutSize( 4 );
  134.     lDisplay = helper.getLayoutSize( 5 );
  135.     lCaptions = helper.getLayoutSize( 6 );
  136.     lBanner = helper.getLayoutSize( 7 );
  137.  
  138.     if( 0 != lSettings )
  139.     {
  140.         svSettings.verticalAlignment="top";
  141.         svSettings.top=svMain.height-g_ControlbarHeight-lSettings;
  142.         svSettings.height=lSettings;
  143.         svSettings.verticalAlignment="bottom";
  144.         svSettings.visible = true;
  145.         svMedia.height = svSettings.top-g_SepHeight ;
  146.     }
  147.     else
  148.     {
  149.         svSettings.visible = false;
  150.         svMedia.height = svMain.height-g_ControlbarHeight;
  151.     }
  152.  
  153.     if( 0 != lSidebar )
  154.     {
  155.         svSidebar.width = lSidebar;
  156.         svMain.width = vMain.width - lSidebar - g_SepWidth;
  157.         svSidebar.visible = true;
  158.     }
  159.     else
  160.     {
  161.         svSidebar.visible = false;
  162.         svSidebar.width = lSidebar;
  163.         svMain.width = vMain.width;
  164.     }
  165.  
  166.     if( 0 != lMetadata )
  167.     {
  168.         piMetadata.height = lMetadata;
  169.         piMetadata.visible = true;
  170.     }
  171.     else
  172.     {
  173.         piMetadata.visible = false;
  174.     }
  175.  
  176.     if( 0 != lPlaylist )
  177.     {
  178.         if( 0 != lMetadata )
  179.         {
  180.             plMedia.top = lMetadata + g_SepHeight;
  181.         }
  182.         else
  183.         {
  184.             plMedia.top = 0;
  185.         }
  186.  
  187.         plMedia.height = lPlaylist;
  188.         plMedia.visible = true;
  189.     }
  190.     else
  191.     {
  192.         plMedia.visible = false;
  193.     }
  194.  
  195.     UpdateResizeBars();
  196.  
  197.     if( 0 != lDisplay )
  198.     {
  199.         piDisplay.height = lDisplay;
  200.         piDisplay.visible = true;
  201.     }
  202.     else
  203.     {
  204.         piDisplay.visible = false;
  205.     }
  206.  
  207.     piBanner.visible = ( 0 != lBanner );
  208.  
  209.     if( 0 != lCaptions )
  210.     {
  211.         piCaptions.verticalAlignment = "top";
  212.         piCaptions.top = lDisplay;
  213.         piCaptions.height = lCaptions;
  214.         piCaptions.verticalAlignment = "bottom";
  215.         piCaptions.visible = true;
  216.     }
  217.     else
  218.     {
  219.         piCaptions.visible = false;
  220.     }
  221.    }
  222. }
  223.  
  224. function ResetDisplayPlugin()
  225. {
  226.         mediacenter.displayView = helper.resolveDisplayView(false);
  227.         UpdateDisplayPlugin();
  228.         UpdateDisplayPreset();
  229. }
  230.  
  231. var g_fSetQuickHideForBorder=false;
  232.  
  233. function OnClose()
  234. {
  235.    g_fClosing = true;
  236.    if( g_fSetQuickHideForBorder )
  237.    {
  238.       QuickHideForBorder( false );
  239.    }
  240. }
  241.  
  242. function QuickHideForBorder(fHide)
  243. {
  244.     if (fHide && (!mediacenter.quickHide) && (!g_fSetQuickHideForBorder))
  245.     {
  246.         g_fSetQuickHideForBorder = true;
  247.         mediacenter.quickHide=true;
  248.     }
  249.     else if ( (!fHide) && g_fSetQuickHideForBorder)
  250.     {
  251.         mediacenter.quickHide=false;
  252.         g_fSetQuickHideForBorder=false;
  253.     }
  254. }
  255.  
  256. function UpdateDisplayPlugin()
  257. {
  258.     piDisplay.objectID = mediacenter.displayView;
  259.  
  260.     // handle skin
  261.  
  262.     if( piDisplay.objectID == "BorderView" )
  263.     {
  264.         QuickHideForBorder(true);        
  265.         var skinfile = helper.getSkinFile();
  266.         piDisplay.setProperty( PLUGIN_PROP_SKINFILE, skinfile );
  267.  
  268.         // Reset if error
  269.  
  270.         if( ( piDisplay.getProperty( PLUGIN_PROP_SKINFILE ) != skinfile ) || ( "" == skinfile ) )
  271.         {
  272.             mediacenter.displayView = helper.resolveDisplayView(true);
  273.             UpdateDisplayPreset();
  274.             QuickHideForBorder(false);
  275.         }
  276.     }
  277.     else
  278.     {
  279.         QuickHideForBorder(false);        
  280.     }
  281.  
  282.     // Reset if error
  283.  
  284.     if( "" == piDisplay.objectID )
  285.     {
  286.             mediacenter.displayView = helper.resolveDisplayView(true);
  287.             UpdateDisplayPreset();
  288.     }
  289.  
  290.     // Reset full screen
  291.  
  292.     if( piDisplay.objectID != "VideoView" && piDisplay.objectID != "VizView" )
  293.     {
  294.             mediacenter.fullScreenAvailable = false;
  295.     }
  296.  
  297.     // Sync back
  298.  
  299.     mediacenter.displayView = piDisplay.objectID;
  300.  
  301.     // Update filler
  302.  
  303.     UpdateFillLink();
  304. }
  305.  
  306. function UpdateDisplayPreset()
  307. {
  308.     var displayPreset = 0;
  309.  
  310.     if( piDisplay.objectID != "VideoView" && piDisplay.objectID != "VizView" && piDisplay.objectID != "BorderView" && piDisplay.objectID != "MetadataView" )
  311.     {
  312.         piDisplay.setProperty( PLUGIN_PROP_CURRENTPRESET, mediacenter.displayPreset );
  313.  
  314.         // Sync back
  315.  
  316.         displayPreset = piDisplay.getProperty( PLUGIN_PROP_CURRENTPRESET );
  317.         mediacenter.displayPreset = displayPreset;
  318.     }
  319. }
  320.  
  321. function UpdateCaptions()
  322. {
  323.     var fShowCaptions = false;
  324.     
  325.     if ( mediacenter.showCaptions && !PlayingDVD() )
  326.     {
  327.         if( piDisplay.objectID == "VideoView" || piDisplay.objectID == "VizView" || piDisplay.objectID == "AlbumArtView" )
  328.         {        
  329.             fShowCaptions = g_fCaptionsDetected;
  330.         }
  331.     }
  332.     
  333.     g_fShowCaptions = fShowCaptions;
  334. }
  335.  
  336. function UpdateBannerPlugin()
  337. {
  338.     if(player.currentMedia && (player.currentmedia.getItemInfo("BannerURL") != ""))
  339.     {
  340.         g_fShowBanner = true;
  341.     }
  342.     else
  343.     {
  344.         g_fShowBanner = false;
  345.     }
  346. }
  347.  
  348. function UpdateSettingsPlugin()
  349. {
  350.     var settingsPreset = 0;
  351.  
  352.     piSettings.objectID = mediacenter.settingsView;
  353.     piSettings.setProperty( PLUGIN_PROP_CURRENTPRESET, mediacenter.settingsPreset );
  354.  
  355.     // Reset if error
  356.  
  357.     if( "" == piSettings.objectID )
  358.     {
  359.             piSettings.objectID = "EQView";
  360.     }
  361.  
  362.     // Sync back
  363.  
  364.     settingsPreset = piSettings.getProperty( PLUGIN_PROP_CURRENTPRESET );
  365.     mediacenter.settingsView = piSettings.objectID;
  366.     mediacenter.settingsPreset = settingsPreset;
  367.  
  368.     // Update spinners and text
  369.  
  370.     if( 0 <= MapSettingsToIndex( mediacenter.settingsView ) )
  371.     {
  372.         btnSettingsPrev.visible = true;
  373.         txtSettingsTitle.horizontalAlignment="left";
  374.         txtSettingsTitle.left = g_nSettingsTitleLeft;
  375.         txtSettingsTitle.width = btnSettingsClose.left-txtSettingsTitle.left;
  376.         txtSettingsTitle.horizontalAlignment="stretch";
  377.     }
  378.     else
  379.     {
  380.         btnSettingsPrev.visible = false;
  381.         txtSettingsTitle.horizontalAlignment="left";
  382.         txtSettingsTitle.left = btnSettingsPrev.left;
  383.         txtSettingsTitle.width = btnSettingsClose.left-txtSettingsTitle.left;
  384.         txtSettingsTitle.horizontalAlignment="stretch";
  385.     }
  386. }
  387.  
  388. function UpdateMetadataPlugin()
  389. {
  390.     var metadataPreset = 0;
  391.  
  392.     piMetadata.objectID = mediacenter.metadataView;
  393.     piMetadata.setProperty( PLUGIN_PROP_CURRENTPRESET, mediacenter.metadataPreset );
  394.  
  395.     // Reset if error
  396.  
  397.     if( "" == piMetadata.objectID )
  398.     {
  399.             piMetadata.objectID = "MediaInfoView";
  400.             mediacenter.showMetadata = false;
  401.     }
  402.  
  403.     // Sync back
  404.  
  405.     metadataPreset = piMetadata.getProperty( PLUGIN_PROP_CURRENTPRESET );
  406.     mediacenter.metadataView = piMetadata.objectID;
  407.     mediacenter.metadataPreset = metadataPreset;
  408.  
  409.     // Update filler
  410.  
  411.     UpdateFillLink();
  412. }
  413.  
  414. function UpdateFillLink()
  415. {
  416.     svFillLink.visible = ( ( piMetadata.objectID == "MediaInfoView" ) && ( piDisplay.objectID == "MetadataView" ) && mediacenter.showMetadata );
  417. }
  418.  
  419. function UpdateVizControls()
  420. {
  421.     // DVD?
  422.  
  423.     if( ( "VideoView" == piDisplay.objectID ) && PlayingDVD() )
  424.     {
  425.             txtVizTitle.visible = false;
  426.             txtVizTitle2.visible = false;
  427.             btnDVDMenu.visible =  ( ("videoManagerMenu" != player.dvd.domain) && ("videoTitleSetMenu" != player.dvd.domain) ); 
  428.             btnDVDResume.visible = !btnDVDMenu.visible;
  429.  
  430.             return;
  431.     }
  432.  
  433.     // No Viz or Border or Video?
  434.  
  435.     if( ( ( mediacenter.showEffects == false ) && ( "VizView" == piDisplay.objectID ) ) || 
  436.             ( "BorderView" == piDisplay.objectID ) || ( "VideoView" == piDisplay.objectID ) )
  437.     {
  438.             txtVizTitle.visible = false;
  439.             txtVizTitle2.visible = false;
  440.             btnDVDMenu.visible = false;
  441.             btnDVDResume.visible = false;
  442.  
  443.             return;
  444.     }
  445.  
  446.     // Viz or Plugin
  447.  
  448.     UpdateVizTitle();
  449.  
  450.     if( ( "VizView" == piDisplay.objectID ) || ( 1 < helper.viewPresetCount( piDisplay.objectID ) ) )
  451.     {
  452.             txtVizTitle2.visible = false; 
  453.             btnDVDMenu.visible = false;
  454.             btnDVDResume.visible = false;
  455.             txtVizTitle.visible = true;
  456.  
  457.             if( "VizView" == piDisplay.objectID )
  458.             {
  459.                 btnVizPrev.upTooltip="res://wmploc/RT_STRING/#1842";
  460.                 btnVizNext.upTooltip="res://wmploc/RT_STRING/#1843";
  461.             }
  462.             else
  463.             {
  464.                 btnVizPrev.upTooltip="res://wmploc/RT_STRING/#1422";
  465.                 btnVizNext.upTooltip="res://wmploc/RT_STRING/#1423";
  466.             }
  467.  
  468.             btnVizPrev.accName = btnVizPrev.upTooltip;
  469.             btnVizNext.accName = btnVizNext.upTooltip;
  470.     }
  471.     else
  472.     {
  473.             txtVizTitle.visible = false; 
  474.             btnDVDMenu.visible = false;
  475.             btnDVDResume.visible = false;
  476.             txtVizTitle2.visible = true; 
  477.     }
  478. }
  479.  
  480. function UpdateVizTitle()
  481. {
  482.     var viewName;
  483.     var presetName;
  484.  
  485.     if( "VizView" == piDisplay.objectID )
  486.     {
  487.             viewName = helper.effectFriendlyName( mediacenter.effectType );
  488.             presetName = helper.effectPresetName( mediacenter.effectType, mediacenter.effectPreset );
  489.     }
  490.     else
  491.     {
  492.             viewName = helper.viewFriendlyName( piDisplay.objectID );
  493.             presetName = helper.viewPresetName( piDisplay.objectID, mediacenter.displayPreset );
  494.     }
  495.  
  496.     if (""!=presetName)
  497.     {
  498.             txtVizTitle.value = viewName + " : " + presetName;
  499.     }
  500.     else
  501.     {
  502.             txtVizTitle.value = viewName;
  503.     }
  504.  
  505.     txtVizTitle2.value = txtVizTitle.value;
  506. }
  507.  
  508. function PreviousDisplay()
  509. {
  510.     if( "VizView" == piDisplay.objectID )
  511.     {
  512.         if (event.shiftKey)
  513.         {
  514.             mediacenter.vizRequest = VR_VIZ_PREV;
  515.         }
  516.         else
  517.         {
  518.             mediacenter.vizRequest = VR_PRESET_PREV;
  519.         }
  520.     }
  521.     else
  522.     {
  523.         var presetCount = helper.viewPresetCount( piDisplay.objectID );
  524.         var preset = mediacenter.displayPreset;
  525.  
  526.         preset = preset - 1;
  527.  
  528.         if( preset < 0 )
  529.         {
  530.             preset = presetCount - 1;
  531.         }
  532.  
  533.         mediacenter.displayPreset = preset;
  534.     }
  535. }
  536.  
  537. function NextDisplay()
  538. {
  539.     if( "VizView" == piDisplay.objectID )
  540.     {
  541.         if (event.shiftKey)
  542.         {
  543.             mediacenter.vizRequest = VR_VIZ_NEXT;
  544.         }
  545.         else
  546.         {
  547.             mediacenter.vizRequest = VR_PRESET_NEXT;
  548.         }
  549.     }
  550.     else
  551.     {
  552.         var presetCount = helper.viewPresetCount( piDisplay.objectID );
  553.         var preset = mediacenter.displayPreset;
  554.  
  555.         preset = preset + 1;
  556.  
  557.         if( preset >= presetCount )
  558.         {
  559.             preset = 0;
  560.         }
  561.  
  562.         mediacenter.displayPreset = preset;
  563.     }
  564. }
  565.  
  566. function PreviousSettings()
  567. {
  568.     var nIndex = MapSettingsToIndex( mediacenter.settingsView );
  569.     var nCurrentIndex = nIndex;
  570.     
  571.     do
  572.     {
  573.         nIndex = nIndex - 1;
  574.  
  575.         if( 0 > nIndex )
  576.         {
  577.             nIndex = g_rgSettings.length - 1;
  578.         }
  579.  
  580.         mediacenter.settingsView = g_rgSettings[ nIndex ];
  581.  
  582.     } while( ( MapSettingsToIndex( mediacenter.settingsView ) == nCurrentIndex ) && ( nCurrentIndex != nIndex ) );
  583. }
  584.  
  585. function NextSettings()
  586. {
  587.     var nIndex = MapSettingsToIndex( mediacenter.settingsView );
  588.     var nCurrentIndex = nIndex;
  589.     
  590.     do
  591.     {
  592.         nIndex = nIndex + 1;
  593.  
  594.         if( g_rgSettings.length <= nIndex )
  595.         {
  596.             nIndex = 0;
  597.         }
  598.  
  599.         mediacenter.settingsView = g_rgSettings[ nIndex ];
  600.  
  601.     } while( ( MapSettingsToIndex( mediacenter.settingsView ) == nCurrentIndex ) && ( nCurrentIndex != nIndex ) );
  602. }
  603.  
  604. function UpdateResizeBars()
  605. {
  606.         if( plMedia.visible && piMetadata.visible )
  607.         {
  608.                 btnSResize.top = piMetadata.height;
  609.                 btnSResize.height = g_SepWidth;
  610.                 if( mediacenter.showResizeBars )
  611.                 {
  612.                         btnSResize.image = "res://wmploc/#1708";
  613.                 }
  614.                 else
  615.                 {
  616.                         btnSResize.image = "res://wmploc/#1709";
  617.                 }
  618.                 btnSResize.visible = true;
  619.         }
  620.         else
  621.         {
  622.                 btnSResize.visible = false;
  623.         }
  624.  
  625.         if( plMedia.visible || piMetadata.visible )
  626.         {
  627.                 btnVResize.horizontalAlignment='left';
  628.                 btnVResize.left = vMain.width - plMedia.width - g_SepWidth;
  629.                 btnVResize.width = g_SepWidth;
  630.                 btnVResize.horizontalAlignment='right';
  631.                 if( mediacenter.showResizeBars )
  632.                 {
  633.                         btnVResize.image = "res://wmploc/#1706";
  634.                 }
  635.                 else
  636.                 {
  637.                         btnVResize.image = "res://wmploc/#1707";
  638.                 }
  639.                 btnVResize.visible = true;
  640.         }
  641.         else
  642.         {
  643.                 btnVResize.visible = false;
  644.         }
  645.  
  646.         if( svSettings.visible )
  647.         {
  648.                 btnHResize.verticalAlignment='top';
  649.                 btnHResize.top = svMain.height - g_ControlbarHeight - svSettings.height - g_SepHeight;
  650.                 btnHResize.height = g_SepHeight;
  651.                 btnHResize.verticalAlignment='bottom';
  652.                 if( mediacenter.showResizeBars )
  653.                 {
  654.                         btnHResize.image = "res://wmploc/#1708";
  655.                 }
  656.                 else
  657.                 {
  658.                         btnHResize.image = "res://wmploc/#1709";
  659.                 }
  660.                 btnHResize.visible = true;
  661.         }
  662.         else
  663.         {
  664.                 btnHResize.visible = false;
  665.         }
  666. }
  667.  
  668. function UpdateFullScreenButton()
  669. {
  670.     if( mediacenter.fullScreenAvailable && ( osMediaOpen == player.openState ) &&
  671.             ( ( player.playState >= psPaused ) && ( player.playState <= psScanReverse ) ) )
  672.     {
  673.             btnFullScreen.enabled=true;
  674.     }
  675.     else
  676.     {
  677.             btnFullScreen.enabled=false;
  678.     }
  679. }
  680.  
  681. function UpdateSettingsTitle()
  682. {
  683.         var viewName = helper.viewFriendlyName( piSettings.objectID );
  684.  
  685.         txtSettingsTitle.value = viewName;
  686. }
  687.  
  688. function OnVResizeStart()
  689. {
  690.         btnVResize.horizontalAlignment='left';
  691.         svSidebar.horizontalAlignment='left';
  692.         g_VResize=true;
  693. }
  694.  
  695. function OnVResize(xPos)
  696. {
  697.         var plLeft=xPos+g_SepWidth;
  698.  
  699.         if(xPos<g_DisplayMinWidth)
  700.         {
  701.                 xPos=g_DisplayMinWidth;
  702.                 plLeft=xPos+g_SepWidth;
  703.         }
  704.         else if(vMain.width-plLeft<g_SidebarMinWidth)
  705.         {
  706.                 plLeft=vMain.width-g_SidebarMinWidth;
  707.                 xPos=plLeft-g_SepWidth;
  708.         }
  709.         else if(vMain.width-plLeft>g_SidebarMaxWidth)
  710.         {
  711.                 plLeft=vMain.width-g_SidebarMaxWidth;
  712.                 xPos=plLeft-g_SepWidth;
  713.         }
  714.  
  715.         btnVResize.left = xPos;
  716.         btnVResize.width = g_SepWidth;
  717.         svMain.width = xPos;
  718.         svSidebar.left = plLeft;
  719.         svSidebar.width = vMain.width-plLeft;
  720.         vMain.updateWindow();
  721. }
  722.  
  723. function OnVResizeEnd()
  724. {
  725.         g_VResize=false;
  726.         btnVResize.horizontalAlignment='right';
  727.         svSidebar.horizontalAlignment='right';
  728.         mediacenter.playlistWidth=svSidebar.width;
  729.         mediacenter.metadataWidth=svSidebar.width;
  730. }
  731.  
  732. function OnHResizeStart()
  733. {
  734.         btnHResize.verticalAlignment='top';
  735.         svSettings.verticalAlignment='top';
  736.         g_HResize=true;
  737. }
  738.  
  739. function OnHResize(yPos)
  740. {
  741.         var plTop=yPos+g_SepHeight;
  742.  
  743.         if(yPos<g_DisplayMinHeight)
  744.         {
  745.                 yPos=g_DisplayMinHeight;
  746.                 plTop=yPos+g_SepHeight;
  747.         }
  748.         else if(svMain.height-g_ControlbarHeight-plTop<g_SettingsMinHeight)
  749.         {
  750.                 plTop=svMain.height-g_ControlbarHeight-g_SettingsMinHeight;
  751.                 yPos=plTop-g_SepHeight;
  752.         }
  753.         else if(svMain.height-g_ControlbarHeight-plTop>g_SettingsMaxHeight)
  754.         {
  755.                 plTop=svMain.height-g_ControlbarHeight-g_SettingsMaxHeight;
  756.                 yPos=plTop-g_SepHeight;
  757.         }
  758.  
  759.         btnHResize.top = yPos;
  760.         btnHResize.height = g_SepHeight;
  761.         svMedia.height=yPos;
  762.         svSettings.top=plTop;
  763.         svSettings.height=svMain.height-g_ControlbarHeight-plTop;
  764.         vMain.updateWindow();
  765. }
  766.  
  767. function OnHResizeEnd()
  768. {
  769.         g_HResize=false;
  770.         btnHResize.verticalAlignment='bottom';
  771.         svSettings.verticalAlignment='bottom';
  772.         mediacenter.settingsHeight=svSettings.height;
  773. }
  774.  
  775. function OnSResizeStart()
  776. {
  777.         g_SResize=true;
  778. }
  779.  
  780. function OnSResize(yPos)
  781. {
  782.         var plTop=yPos+g_SepHeight;
  783.  
  784.         if(svSidebar.height-plTop<g_PlaylistMinHeight)
  785.         {
  786.                 plTop=svSidebar.height-g_PlaylistMinHeight;
  787.                 yPos=plTop-g_SepHeight;
  788.         }
  789.  
  790.         if(yPos<g_MetadataMinHeight)
  791.         {
  792.                 yPos=g_MetadataMinHeight;
  793.                 plTop=yPos+g_SepHeight;
  794.         }
  795.  
  796.         btnSResize.top = yPos;
  797.         btnSResize.height = g_SepHeight;
  798.         piMetadata.height=yPos;
  799.         plMedia.top=plTop;
  800.         plMedia.height=svSidebar.height-plTop;
  801.         vMain.updateWindow();
  802. }
  803.  
  804. function OnSResizeEnd()
  805. {
  806.         g_SResize=false;
  807.         mediacenter.metadataHeight=piMetadata.height;
  808. }
  809.  
  810. function UpdateCustomize()
  811. {
  812.         btnCustomize.enabled = mediacenter.showTitles || mediacenter.showPlaylist || mediacenter.showMetadata || mediacenter.showSettings || mediacenter.quickHide;
  813.         btnCustomize.downimage = btnCustomize.down ? "res://wmploc/#1730" : "res://wmploc/#1734";
  814.         btnCustomize.accName = btnCustomize.down ? btnCustomize.downTooltip : btnCustomize.upTooltip;
  815. }
  816.  
  817. function CustomizeMenu()
  818. {
  819.         mnuCustomize.top = btnCustomizeMenu.top+btnCustomizeMenu.height;
  820.         mnuCustomize.left = btnCustomizeMenu.left;
  821.  
  822.         mnuCustomize.showEx( 3 );
  823. }
  824.  
  825. function OnLinkRequest()
  826. {
  827.     theme.CurrentViewID="vBrowser";
  828. }
  829.  
  830. function OnBrowserLoad()
  831. {
  832.     Browser1.SetProperty( "linkRequestParams", helper.linkRequestParams );
  833.     Browser1.SetProperty( "linkRequest", helper.linkRequest );
  834. }
  835.  
  836. function OnBrowserBack()
  837. {
  838.     Browser1.visible=false;
  839.     vBrowser.updateWindow();
  840.     theme.CurrentViewID="vMain";
  841. }
  842.  
  843. function PlayingDVD()
  844. {
  845.     return ( (player.currentPlaylist.count>0) && (player.currentPlaylist.item(0).sourceURL.indexOf("wmpdvd:")==0));
  846. }
  847.  
  848. function MapSettingsToIndex( View )
  849. {
  850.     for (var i = 0; i < g_rgSettings.length; i++)
  851.     {
  852.         if (View == g_rgSettings[i])
  853.         {
  854.             return( i );
  855.         }
  856.     }
  857.  
  858.     return( -1 );
  859. }