//*********************************************
//*********************************************
// SBD's JBMM Browser
//*********************************************
//*********************************************

//"name", "date", "size"
function AutoScroll(NumOnScreenCursorSlots)
    {
    //make sure Offset and CursorPos are valid
    if (CurrentJBMMUI.CurrentMenu.Items.length<=GetNumLines())
        CurrentJBMMUI.CurrentMenu.Offset=0;
    else
    if (CurrentJBMMUI.CurrentMenu.Offset+GetNumLines()>CurrentJBMMUI.CurrentMenu.Items.length)
        CurrentJBMMUI.CurrentMenu.Offset=CurrentJBMMUI.CurrentMenu.Items.length-GetNumLines();

    if (CurrentJBMMUI.CurrentMenu.CursorPos<0)
        CurrentJBMMUI.CurrentMenu.CursorPos=CurrentJBMMUI.CurrentMenu.Items.length-1;

    if (CurrentJBMMUI.CurrentMenu.CursorPos>CurrentJBMMUI.CurrentMenu.Items.length-1)
        CurrentJBMMUI.CurrentMenu.CursorPos=0;

    //scroll up or down if needed
    if (CurrentJBMMUI.CurrentMenu.CursorPos>=CurrentJBMMUI.CurrentMenu.Offset+NumOnScreenCursorSlots)
        {
        var A=CurrentJBMMUI.CurrentMenu.CursorPos-(NumOnScreenCursorSlots-1);
        if (A%ScrollGranularity!=0)
            A+=ScrollGranularity-(A%ScrollGranularity);  //round up to next scroll granularity
        CurrentJBMMUI.CurrentMenu.Offset=A;
        }
    else
    if (CurrentJBMMUI.CurrentMenu.CursorPos<CurrentJBMMUI.CurrentMenu.Offset)
        {
        CurrentJBMMUI.CurrentMenu.Offset=CurrentJBMMUI.CurrentMenu.CursorPos;
        }
    var A=CurrentJBMMUI.CurrentMenu.Offset;
    if (A%ScrollGranularity!=0)
        {
        if (CurrentJBMMUI.CurrentMenu.CursorPos-A<ScrollGranularity)
            A-=A%ScrollGranularity;
        else
            A+=ScrollGranularity-(A%ScrollGranularity);  //round up to next scroll granularity
        }
    CurrentJBMMUI.CurrentMenu.Offset=A;
    }

function GetDisplayText(Item)
    {
    var DisplayText=Item.Name;
    if (Item.File)
        {
        var Val=CurrentFileDisplayMode.CurrentIndex;
        if (CurrentJBMMUI.Mode=="playlist") Val=CurrentPlaylistDisplayMode.CurrentIndex;
        switch(Val)
            {
            case 1: DisplayText=Item.File.DateStr + " " + Item.File.TimeStr;break;
            case 2: DisplayText=GetFileSizeString(Item.File.Size);break;
            case 3: DisplayText=Item.File.Artist;break;
            case 4: DisplayText=Item.File.Album+" ("+Item.File.TrackNumber*1+")";break;
            case 5: DisplayText=Item.File.FileInfo1;break;
            case 6: DisplayText=Item.File.FileInfo2;break;
            case 7: DisplayText=Item.File.Path;break;
            case 8: DisplayText=Item.File.FileName;break;
            case 9: DisplayText=Item.File.LastPlayedDateStr + " " + Item.File.LastPlayedTimeStr;break;
            case 10: DisplayText=Item.File.NumTimesPlayed;break;
            }
        }
    return DisplayText;
    }

function ResetCurrentFileDisplayMode()
    {
    if (CurrentJBMMUI.Mode=="playlist")
        CurrentPlaylistDisplayMode.SetIndex(0);
    else
        CurrentFileDisplayMode.SetIndex(0);
    Thumbs4Up=false;
    Thumbs9Up=false;
    }

function RefreshDisplayMode()
    {
    var Value;
    if (CurrentJBMMUI.Mode=="playlist")
        {
        if (CurrentFolderHasImages())
            {
            CurrentPlaylistDisplayMode.Values[3]="4-up";
            CurrentPlaylistDisplayMode.Values[4]="9-up";
            }
        else
            {
            CurrentPlaylistDisplayMode.Values[3]="Artist";
            CurrentPlaylistDisplayMode.Values[4]="Album";
            }
        Value=CurrentPlaylistDisplayMode;
        }
    else
        Value=CurrentFileDisplayMode;

    Thumbs4Up=false;
    Thumbs9Up=false;
    ScrollGranularity=1;
    OverrideTitle="";
    if (CurrentJBMMUI.Mode=="setup") return;
    if (Value.CurrentIndex==0)
        OverrideTitle="";
    else
        {
        Value.CurrentValue=Value.Values[Value.CurrentIndex];
        OverrideTitle=Value.CurrentValue;
        }

    if (Value.CurrentIndex==3 && CurrentFolderHasImages())
        {
        OverrideTitle="4-Up Thumbs";
        Thumbs4Up=true;
        ScrollGranularity=2;
        }

    if (Value.CurrentIndex==4 && CurrentFolderHasImages())
        {
        OverrideTitle="9-Up Thumbs";
        Thumbs9Up=true;
        ScrollGranularity=3;
        }
    }

function Generate4UpLines()
    {
    var BaseNum=CurrentJBMMUI.CurrentMenu.Offset;
    return "<tr>"+
        "<td><table cellpadding=0 cellspacing=0 width=220><tr>"+
        Generate4UpTD(BaseNum)+
        Generate4UpTD(BaseNum+1)+
        "</tr></table></td></tr>"+
        "<td><table cellpadding=0 cellspacing=0 width=220><tr>"+
        Generate4UpTD(BaseNum+2)+
        Generate4UpTD(BaseNum+3)+
        "</tr></table></td></tr>";
    }

function Generate9UpLines()
    {
    var BaseNum=CurrentJBMMUI.CurrentMenu.Offset;
    return "<tr>"+
        "<td><table cellpadding=0 cellspacing=0 width=220><tr>"+
        Generate9UpTD(BaseNum+0)+
        Generate9UpTD(BaseNum+1)+
        Generate9UpTD(BaseNum+2)+
        "</tr></table></td></tr>"+
        "<td><table cellpadding=0 cellspacing=0 width=220><tr>"+
        Generate9UpTD(BaseNum+3)+
        Generate9UpTD(BaseNum+4)+
        Generate9UpTD(BaseNum+5)+
        "</tr></table></td></tr>"+
        "<td><table cellpadding=0 cellspacing=0 width=220><tr>"+
        Generate9UpTD(BaseNum+6)+
        Generate9UpTD(BaseNum+7)+
        Generate9UpTD(BaseNum+8)+
        "</tr></table></td></tr>";
    }

function GenerateBrowsingDisplay()
    {
    RefreshDisplayMode();
//    alert(CurrentTitleTextColor.GetHTMLText());
    var NumOnScreenCursorSlots=GetNumLines();
    if (Thumbs4Up) NumOnScreenCursorSlots=4;
    if (Thumbs9Up) NumOnScreenCursorSlots=9;
    //alert("GenerateDisplay()");
    AutoScroll(NumOnScreenCursorSlots);

    //Notes
    if (CurrentJBMMUI.CurrentMenu.Notes)
        RewriteInnerHTML("CurrentMenuNotes",CurrentJBMMUI.CurrentMenu.Notes);
    else
        RewriteInnerHTML("CurrentMenuNotes","(no notes for: "+CurrentJBMMUI.CurrentMenu.Name+")");

    //Notes
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0)
        RewriteInnerHTML("CurrentItemNotes","(no items)");
    else
    if (CurrentJBMMUI.CurrentMenu.GetCurrentItem().Notes)
        RewriteInnerHTML("CurrentItemNotes",CurrentJBMMUI.CurrentMenu.GetCurrentItem().Notes);
    else
    if (CurrentJBMMUI.CurrentMenu.GetCurrentItem().SubMenu && CurrentJBMMUI.CurrentMenu.GetCurrentItem().SubMenu.Notes)
        RewriteInnerHTML("CurrentItemNotes",CurrentJBMMUI.CurrentMenu.GetCurrentItem().SubMenu.Notes);
    else
        RewriteInnerHTML("CurrentItemNotes","(no notes for: "+CurrentJBMMUI.CurrentMenu.GetCurrentItem().Name+")");

    //Show scroll bar if needed
    var TotalSizeTemp=CurrentJBMMUI.CurrentMenu.GetNumItems();
    if (TotalSizeTemp%ScrollGranularity!=0)
        {
        TotalSizeTemp+=ScrollGranularity-(TotalSizeTemp%ScrollGranularity);
        }
    ShowScrollBar(NumOnScreenCursorSlots,TotalSizeTemp,CurrentJBMMUI.CurrentMenu.Offset);

    //Generate top line
    var Name=CurrentJBMMUI.CurrentMenu.Name;

    var DisplayModeValue;
    if (CurrentJBMMUI.Mode=="playlist")
        DisplayModeValue=CurrentPlaylistDisplayMode;
    else
        DisplayModeValue=CurrentFileDisplayMode;

    if (DisplayModeValue.CurrentIndex!=0)
        Name=OverrideTitle;
    var FirstLineHTML;
    if (CurrentJBMMUI.CurrentMenu.GenerateTopLine)
        FirstLineHTML=CurrentJBMMUI.CurrentMenu.GenerateTopLine();
    else
        FirstLineHTML=GenerateTopLine(CurrentJBMMUI.CurrentMenu.Icon,Name);

    //Generate Middle 6 lines
    var LinesHTML="";
    var I;

    if (Thumbs4Up) LinesHTML=Generate4UpLines();
    else
    if (Thumbs9Up) LinesHTML=Generate9UpLines();
    else
    for(I=0;I<GetNumLines();I++)
        {
        var MenuIndex=I+CurrentJBMMUI.CurrentMenu.Offset;
        var LineHTML;
        var ShowCursor=(MenuIndex==CurrentJBMMUI.CurrentMenu.CursorPos);
        var CursorImageTemp;
        if (ShowCursor) {CursorImageTemp=CursorImage;}
        else
            {
            CursorImageTemp=BlankImage;
            }
        LineHTML=GenHTMLIcon(CursorImageTemp);
        //Generates something like this:
        //<tr><td id="Line1">
        //  <img src="Icons/Cursor.gif" width="23" height="23" align="top">
        //  <img src="Icons/CD.gif" width="23" height="23" align="top">
        //  <font size=4 color="#FFFF00" face="Arial, Helvetica, sans-serif"><b>
        //  Daft
        //  </b></font>
        //</td></tr>
        var Color=CurrentItemColor.GetHTMLText();
        if (MenuIndex<CurrentJBMMUI.CurrentMenu.GetNumItems())
            {
            var Item=CurrentJBMMUI.CurrentMenu.Items[MenuIndex];

            var ItemIcon=Item.Icon;
            if  (
                (CurrentPlayingAudioItem && Item.File==CurrentPlayingAudioItem.File) ||
                (CurrentPlayingVideoItem && Item.File==CurrentPlayingVideoItem.File)
                )
                {
                if (IsPlaying=="playing") ItemIcon="play.gif";
                if (IsPlaying=="paused")  ItemIcon="pause.gif";
//                else if (IsPlaying=="stopped") LineHTML=GenHTMLIcon("stop.gif");
                }

            if (Item.Selected) Color=CurrentSelectedItemColor.GetHTMLText();
            if (Item.IsScrollBar)
                {
                LineHTML=GenSliderLine(CursorImageTemp,ItemIcon,Item.Name,Color,Item.Value.CurrentValue,.6,220);  //sliderval is 0-1
                }
            else
                {
                var CurText=Item.Name;
                var DisplayText=GetDisplayText(Item);
                if (Item.GenerateText)
                    DisplayText=Item.GenerateText(Item);

                LineHTML=GenHTMLText(LineHTML+GenHTMLIcon(ItemIcon)+DisplayText,Color,220);
                }
            }
        else
        if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0 && I==0)
            {
            LineHTML=GenHTMLText(LineHTML+"(empty)",Color,220);
            }
        LinesHTML+=GenerateTableLineHTML(LineHTML);
        }

    //Generate the LastLine
    var LastLineHTML="<tr><td>"+GenTabHTMLText(CurrentJBMMUI.Tab1Text,CurrentJBMMUI.Tab2Text,CurrentJBMMUI.Tab3Text)+"</td></tr>";
/*"\t<tr>\n"+
"\t    <td>\n"+
"\t        <table width=100% border=0 cellspacing=0 cellpadding=0>\n"+
"\t            <tr>\n"+
"\t                <td width=33% background=\""+GetIconsPath()+"tab.gif\" valign=middle align=center height=23><font size=2><b>MENU</b></font></td>\n"+
"\t                <td width=33% background=\""+GetIconsPath()+"tab.gif\" align=center valign=middle height=23><b><font size=2>SELECT</font></b></td>\n"+
"\t                <td width=33% background=\""+GetIconsPath()+"tab.gif\" align=center valign=middle height=23><font size=2><b>&gt;PlayLIST</b></font></td>\n"+
"\t            </tr>\n"+
"\t        </table>\n"+
"\t    </td>\n"+
"\t</tr>\n";*/

    var FinalHTML=GenerateDisplayTable(FirstLineHTML+LinesHTML+LastLineHTML);

//    alert("FirstLine:\n\n"+FirstLineHTML);
//    alert("MiddleLines:\n\n"+LinesHTML);
//    alert("LastLine:\n\n"+LastLineHTML);
//    alert(FinalHTML);
    RewriteInnerHTML("JBMMDisplay",FinalHTML);
    }


function CurrentFolderHasImages()
    {
    var CurrentMenu=CurrentJBMMUI.CurrentMenu;
    var I;
    for (I=0;I<CurrentMenu.Items.length;I++)
        if (CurrentMenu.Items[I].File && CurrentMenu.Items[I].File.Extension=="jpg") return true;
    return false;
    }

function CycleFileDisplayMode() {CurrentFileDisplayMode.SetNextValue();}


function MoveCursorPageDown()
    {
    if (CurrentJBMMUI.CurrentMenu.CursorPos==CurrentJBMMUI.CurrentMenu.GetNumItems()-1)
        {
        CurrentJBMMUI.CurrentMenu.CursorPos=0;
        }
    else
        CurrentJBMMUI.CurrentMenu.CursorPos=Math.min(CurrentJBMMUI.CurrentMenu.GetNumItems()-1,CurrentJBMMUI.CurrentMenu.CursorPos+GetNumLines()-1);
    RefreshDisplay();
    }

function MoveCursorPageUp()
    {
    if (CurrentJBMMUI.CurrentMenu.CursorPos==0)
        {
        if (CurrentJBMMUI.CurrentMenu.GetNumItems()>0)
            CurrentJBMMUI.CurrentMenu.CursorPos=CurrentJBMMUI.CurrentMenu.GetNumItems()-1;
        }
    else
        CurrentJBMMUI.CurrentMenu.CursorPos=Math.max(0,CurrentJBMMUI.CurrentMenu.CursorPos-GetNumLines()+1);
    RefreshDisplay();
    }

function MoveCursorUp()
    {
    ResetVolumeExitCount();
    if (CurrentJBMMUI.CurrentMenu.Items.length>0 && CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos].UpAction)
        {
        CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos].UpAction();
        return;
        }
    if (CurrentJBMMUI.CurrentMenu.CursorPos>0)
        {
        CurrentJBMMUI.CurrentMenu.CursorPos--;
        }
    else
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()>0)
        CurrentJBMMUI.CurrentMenu.CursorPos=CurrentJBMMUI.CurrentMenu.GetNumItems()-1;
    RefreshDisplay();
    }

function MoveCursorDown()
    {
    ResetVolumeExitCount();
    if (CurrentJBMMUI.CurrentMenu.Items.length>0 && CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos].DownAction)
        {
        CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos].DownAction();
        return;
        }
    if (CurrentJBMMUI.CurrentMenu.CursorPos<CurrentJBMMUI.CurrentMenu.GetNumItems()-1)
        {
        CurrentJBMMUI.CurrentMenu.CursorPos++;
        }
    else
        CurrentJBMMUI.CurrentMenu.CursorPos=0;

    RefreshDisplay();
    }

function SelectCurrent()
    {
    if (CurrentJBMMUI.Mode=="setup") return;
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0) return;
    var Item=CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos];
    //alert("SelectCurrent "+Item.Selected);
    Item.Selected=!Item.Selected;
    MoveCursorDown();
    }

function UnSelectAll()      {CurrentJBMMUI.CurrentMenu.SelectNone();RefreshDisplay();}
function SelectAll()        {CurrentJBMMUI.CurrentMenu.SelectAll();RefreshDisplay();}
function InvertSelection()  {CurrentJBMMUI.CurrentMenu.InvertSelection();RefreshDisplay();}

function GoUpOneDir()
    {
    ResetCurrentFileDisplayMode();
    CurrentJBMMUI.CurrentMenu.SelectNone();
    if (CurrentJBMMUI.CurrentMenu.Parent)
        {
        CurrentJBMMUI.CurrentMenu=CurrentJBMMUI.CurrentMenu.Parent;
        RefreshDisplay();
        }
    }

function EnterDir()
    {
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0) return;
    CurrentJBMMUI.CurrentMenu.SelectNone();
    var Item=CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos];
    if (Item.SubMenu)
        {
        ResetCurrentFileDisplayMode();
        OverrideTitle="";
        Item.SubMenu.Parent=CurrentJBMMUI.CurrentMenu;
        CurrentJBMMUI.CurrentMenu=Item.SubMenu;
        RefreshDisplay();
        }
    else
        {
//        alert("Item's submenu isn't set");
        CycleFileDisplayMode();
        RefreshDisplay();
        }
    }

function AddItemsToPlayingListRecursively(StartItem,CursorPos)
    {
    if (StartItem.File)
        {
        AddItemToPlayingList(StartItem,CursorPos);
        }
    else
    if (StartItem.SubMenu)
        {
        var I;
        var Menu=StartItem.SubMenu;
        for (I=0;I<Menu.GetNumItems();I++)
            {
            var LocalItem=Menu.Items[I];
            AddItemsToPlayingListRecursively(LocalItem,CursorPos);
            }
        }
    }

function AddItemsToPlayingList()
    {
    if (CurrentJBMMUI==PlaylistUI)
        {
//        alert("PlayingPlaylist=true");
        PlayingPlaylist=true;
        }
    else
        {
//        alert("PlayingPlaylist=false");
        PlayingPlaylist=false;
        }
    if (CurrentJBMMUI.Mode=="setup") return;
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0) return;

    ResetPlayingList();
    var Item=CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos];
    var I;
    var NumSelected=0;
    for (I=0;I<CurrentJBMMUI.CurrentMenu.GetNumItems();I++)
        {
        var LocalItem=CurrentJBMMUI.CurrentMenu.Items[I];
        if (LocalItem.Selected) NumSelected++;
        }

    if (NumSelected==0 && !(Item.File || Item.SubMenu)) return;
    if (NumSelected==0 && PlayingPlaylist && CurrentShuffleMode.CurrentIndex==0)
        {
        SetPlayingFromPlayList();
        PlayingListPosition=PlaylistMenu.CursorPos;
        }
    else
    if (Item.SubMenu && NumSelected==0)
        {
        AddItemsToPlayingListRecursively(Item,CurrentJBMMUI.CurrentMenu.CursorPos);
        }
    else
    if (Item.File && Item.File.Extension=="jpg" && NumSelected==0 && CurrentJBMMUI.Mode!="playlist")
        {
        AddItemToPlayingList(Item,CurrentJBMMUI.CurrentMenu.CursorPos);
        }
    else
        {
        for (I=0;I<CurrentJBMMUI.CurrentMenu.GetNumItems();I++)
            {
            var LocalItem=CurrentJBMMUI.CurrentMenu.Items[I];
            if (I==CurrentJBMMUI.CurrentMenu.CursorPos) PlayingListPosition=PlayingList.length;
            if (LocalItem.Selected || NumSelected==0)
                AddItemsToPlayingListRecursively(LocalItem,I);
            }
        }
    if  (
        CurrentShuffleMode.CurrentIndex==1 ||
        PlayingListPosition>=PlayingList.length
        ) PlayingListPosition=0;
    Play();
    if (!PlayingListIsAllMP3s)
        PlayingScreen=3;
    else
        PlayingScreen=0;
    PlayingListCursorPosesValid=true;
//    alert(PlayingList==PlaylistMenu.Items);
    GotoPlaying();
    }

function PlayAction()
    {
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0) return;
    var Item=CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos];
    if (Item.PlayAction)
        {
        Item.PlayAction();
        }
    else
    if (Item.RightAction)
        {
        Item.RightAction();
        }
    else
    if (CurrentJBMMUI.Mode=="setup")
        {
        EnterDir();
        }
    else
        {
        AddItemsToPlayingList();
        }
    }


function BrowseLeftAction()
    {
    if (CurrentJBMMUI.LeftAction)
        {
        CurrentJBMMUI.LeftAction()
        return;
        }
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()>0)
        {
        var Item=CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos];
        if (Item.LeftAction)
            {Item.LeftAction();return;}
        }
    GoUpOneDir();
    }

function BrowseRightAction()
    {
    if (CurrentJBMMUI.RightAction)
        {
        CurrentJBMMUI.RightAction()
        return;
        }

//    alert("BrowseRightAction()");
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0) return;
    var Item=CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos];
    if (Item.RightAction)
        Item.RightAction();
    else
        {
//        if (CurrentJBMMUI.Mode=="setup") return;
        EnterDir()
        }
    }

function AddItemsToPlaylistRecursively(StartItem)
    {
    if (StartItem.File)
        {
        NumAdded++;
        TimeAdded+=StartItem.File.TimeLength;
        AddItemToPlaylist(StartItem);
        }
    else
    if (StartItem.SubMenu)
        {
        var I;
        var Menu=StartItem.SubMenu;
        for (I=0;I<Menu.GetNumItems();I++)
            {
            var LocalItem=Menu.Items[I];
            AddItemsToPlaylistRecursively(LocalItem);
            }
        }
    }

function AddItemsToPlaylist()
    {
    NumAdded=0;
    TimeAdded=0;
    if (CurrentJBMMUI.Mode=="setup") return;
    if (CurrentJBMMUI.CurrentMenu.GetNumItems()==0) return;
    var Item=CurrentJBMMUI.CurrentMenu.Items[CurrentJBMMUI.CurrentMenu.CursorPos];
    var I;
    var NumSelected=0;
    for (I=0;I<CurrentJBMMUI.CurrentMenu.GetNumItems();I++)
        {
        var LocalItem=CurrentJBMMUI.CurrentMenu.Items[I];
        if (LocalItem.Selected)
            {
            NumSelected++;
            AddItemsToPlaylistRecursively(LocalItem);
            }
        }
    if (NumSelected==0)
        AddItemsToPlaylistRecursively(Item);
    GotoAddedJBMMUI();
    //RefreshDisplay();
    }

function PlayMenuPlay()
    {
    Play();
    RefreshDisplay();
    }

//************************************
// Browser UI Obj
//************************************

function BrowseOff()
    {
    if (CurrentJBMMUI.Mode=="setup")
        {
        if (CurrentJBMMUI.CurrentMenu.Parent)
            GoUpOneDir();
        else
            GotoTopMenu();
        }
    else GotoTopMenu();
    }

function GetBrowserUIObject(StartMenu,Mode)
    {
    //alert("GetBrowserUIObject()");
    var MenuUI=new jbmm_ui();
    MenuUI.Mode=Mode;
    if (Mode=="setup")
        {
        MenuUI.JBMMF1       =ButtonNotImplemented;
        }
    else
    if (Mode=="playlist")
        {
        MenuUI.JBMMF1       =GotoPLMenu;
        }
    else
        MenuUI.JBMMF1       =GotoBrowserMenu;
    MenuUI.JBMMF1Hold   =LockHold;
    MenuUI.JBMMF2       =SelectCurrent;
    MenuUI.JBMMF2Hold   =InvertSelection;
    MenuUI.JBMMF3       =GotoF3Next;
    MenuUI.JBMMF3Hold   =ImmediatlyRecord;
    MenuUI.JBMMOff      =BrowseOff;
    MenuUI.JBMMLeft     =BrowseLeftAction;
    MenuUI.JBMMRight    =BrowseRightAction;
    MenuUI.JBMMUp       =MoveCursorUp;
    MenuUI.JBMMUpHold   =MoveCursorPageUp;
    MenuUI.JBMMDown     =MoveCursorDown;
    MenuUI.JBMMDownHold =MoveCursorPageDown;
    MenuUI.JBMMPlay     =PlayAction;
    MenuUI.JBMMPlayHold =AddItemsToPlaylist;
    MenuUI.JBMMOn       =GotoSetupMenu;
    MenuUI.RefreshDisplay=GenerateBrowsingDisplay;
    MenuUI.CurrentMenu=StartMenu;
    MenuUI.Tab1Text="MENU";
    MenuUI.Tab2Text="SELECT";
    MenuUI.Tab3Text=">PLAYLIST";
    MenuUI.Notes=JBMMBrowseUINotes;
    return MenuUI;
    }

MediaLibUI=GetBrowserUIObject(MediaLibMenu);
FilesUI=GetBrowserUIObject(FilesTopMenu);

