function GetTimeString(TimeInSecs,TotalTime)
    {
    var Ret="";
    if (TimeInSecs<0) {Ret+="-";TimeInSecs=-TimeInSecs;}

    var PlayPosHour=Math.floor(TimeInSecs/3600);
    var PlayPosMin=Math.floor(TimeInSecs/60)-PlayPosHour*60;
    var PlayPosSec=TimeInSecs-PlayPosMin*60-PlayPosHour*3600;

    if (TotalTime>3600)
        Ret+=PlayPosHour+":";

    Ret+=PrependZeros(PlayPosMin,2)+":"+PrependZeros(PlayPosSec,2);
    return Ret;
    }

function UpdateImageEditImage()
    {
    if (PlayingList.length==1 && PlayingList[0].File.FileName=="FarScape.jpg")
        {
        switch(CurrentImageEditRotate.CurrentIndex)
            {
            case 0: CurrentDisplayingImage="FarScape.jpg";break;
            case 1: CurrentDisplayingImage="FarScape-R.jpg";break;
            case 2: CurrentDisplayingImage="FarScape-U.jpg";break;
            case 3: CurrentDisplayingImage="FarScape-L.jpg";break;
            }
        switch(CurrentImageEditZoom.CurrentIndex)
            {
            case 0: CurrentDisplayingImage="FarScape-Z0025.jpg";break;
            case 1: CurrentDisplayingImage="FarScape-Z0050.jpg";break;
            case 2: break;//CurrentDisplayingImage="FarScape-Z0100.jpg";break;
            case 3: CurrentDisplayingImage="FarScape-Z0200.jpg";break;
            case 4: CurrentDisplayingImage="FarScape-Z0300.jpg";break;
            case 5: CurrentDisplayingImage="FarScape-Z0400.jpg";break;
            case 6: CurrentDisplayingImage="FarScape-Z0600.jpg";break;
            case 7: CurrentDisplayingImage="FarScape-Z0800.jpg";break;
            case 8: CurrentDisplayingImage="FarScape-Z1000.jpg";break;
            case 9: CurrentDisplayingImage="FarScape-Z1600.jpg";break;
            case 10:CurrentDisplayingImage="FarScape-Z3200.jpg";break;
            default: break;
            }
        }
    }

function RefreshPlayUI()
    {
    var FirstLineHTML=GenerateTopLine
        (
        "mp3.gif",
        "Play "+GetPlayingPosStr()
        );

    var Instruction="Bla";

    var SpacerLine="\t<tr><td height=23 align=center></td></tr>\n";

    var FinalHTML;
    var Tab3Text;
    if (CurrentlyBrowsingUI==MediaLibUI)
        Tab3Text=">MEDIALIB";
    else
        Tab3Text=">FILES";
    var LastLineHTML="<tr><td>"+GenTabHTMLText("MENU",">FILE INFO",Tab3Text)+"</td></tr>";

    if (PlayingScreen>3) PlayingScreen=0;
    var PosLine=SpacerLine;
    var Vis=CurrentVis.CurrentIndex;
    var PlayTimePos=0;
    var PlayTimeLength=1;

    var CurrentTimeRemaining;
    var CurrentPlayingItemLength;
    if (CurrentMultimediaShowMode.CurrentIndex==0)
        {
        if (CurrentPlayingVideoItem)
            {
            CurrentPlayingItem=         CurrentPlayingVideoItem;
            CurrentTimeRemaining=       CurrentVideoTimeRemaining;
            CurrentPlayingItemLength=   CurrentVideoPlayingItemLength;
            }
        else
        if (CurrentPlayingAudioItem)
            {
            CurrentPlayingItem=         CurrentPlayingAudioItem;
            CurrentTimeRemaining=       CurrentAudioTimeRemaining;
            CurrentPlayingItemLength=   CurrentAudioPlayingItemLength;
            }
        }
    else
        {
        if (CurrentPlayingAudioItem)
            {
            CurrentPlayingItem=         CurrentPlayingAudioItem;
            CurrentTimeRemaining=       CurrentAudioTimeRemaining;
            CurrentPlayingItemLength=   CurrentAudioPlayingItemLength;
            }
        else
        if (CurrentPlayingVideoItem)
            {
            CurrentPlayingItem=         CurrentPlayingVideoItem;
            CurrentTimeRemaining=       CurrentVideoTimeRemaining;
            CurrentPlayingItemLength=   CurrentVideoPlayingItemLength;
            }
        }

    if (CurrentPlayingItem)
        {
        PlayTimeLength=Math.floor(CurrentPlayingItemLength);
        PlayTimePos=Math.max(0,Math.floor(PlayTimeLength-CurrentTimeRemaining));
        }

    if (IsPlaying=="playing" || IsPlaying=="paused")
        {
        }
    else
        {
        Vis=0;
        PlayTimePos=0;
        }


    var PlayTimeString;
    switch(CurrentPlayMode.CurrentIndex)
        {
        case 0: PlayTimeString=GetTimeString(PlayTimePos,PlayTimeLength);break;
        case 1: PlayTimeString=GetTimeString(PlayTimePos-PlayTimeLength,PlayTimeLength);break;
        case 2:
            PlayTimeLength=PlayingListTimeLength;
            PlayTimePos+=PlayingListTimePos;
            PlayTimeString=GetTimeString(PlayTimePos,PlayTimeLength);
            break;
        case 3:
            PlayTimeLength=PlayingListTimeLength;
            PlayTimePos+=PlayingListTimePos;
            PlayTimeString=GetTimeString(PlayTimePos-PlayTimeLength,PlayTimeLength);
            break;
        }
    var PlayFract=PlayTimePos/PlayTimeLength;
    //alert("PlayTimePos="+PlayTimePos+"\n"+"PlayTimeLength="+PlayTimeLength);
    var PosLine="\t<tr><td height=23>"+GenSliderLine("","",PlayTimeString,CurrentItemColor.GetHTMLText(),PlayFract,.35,235)+"</td></tr>\n";

    var VisSmall;
    var VisLarge;
    switch(Vis)
        {
        case 0: VisSmall="blank.gif";VisLarge="blank.gif";break;
        case 1: VisSmall="viz2sm.gif";VisLarge="viz2lg.gif";break;
        case 2: VisSmall="viz3sm.gif";VisLarge="viz3lg.gif";break;
        case 3: VisSmall="viz1sm.gif";VisLarge="viz1lg.gif";break;
        }

    UpdateImageEditImage();

    switch(PlayingScreen)
        {
        case 0:
            var Line1="\t<tr><td height=23>"+GenHTMLText("(nothing playing)",CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
            var Line2=SpacerLine;
            var Line3=SpacerLine;
            var VizLine4=SpacerLine+SpacerLine;
            if (CurrentPlayingItem && CurrentPlayingItem.File)
                {
                var SecondLine=CurrentPlayingItem.File.Album;
                if (CurrentPlayingItem.File.TrackNumber!="")
                    SecondLine+=" ("+CurrentPlayingItem.File.TrackNumber*1+")";
                Line1="\t<tr><td height=23>"+GenHTMLText(CurrentPlayingItem.File.SongName,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                Line2="\t<tr><td height=23>"+GenHTMLText(SecondLine,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                Line3="\t<tr><td height=23>"+GenHTMLText(CurrentPlayingItem.File.Artist,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                if (CurrentAudioTimeRemaining>0)
                    VizLine4="\t<tr><td height=46><img src=\""+GetIconsPath()+VisSmall+"\"></td></tr>\n";
                else
                    if (PlayingList.length==1) PosLine=SpacerLine;
                }

//    File.Artist  =CurrentPath.substring(ArtistStartPos+1,AlbumStartPos);
//    File.Album   =CurrentPath.substring(AlbumStartPos+1,CurrentPath.length);
//    File.FileName=DirEntry.substring(39,DirEntry.length);
//    File.SongName=File.FileName.substring(File.FileName.lastIndexOf('-')+2,File.FileName.lastIndexOf('.'));
//    File.Path    =CurrentPath;
//    File.DateStr =DirEntry.substring(0,10);
//    File.TimeStr =DirEntry.substring(12,18);
//    File.Size    =DirEntry.substring(19,38);
//    File.TrackNumber=File.FileName.substring(0,2);
//    File.Extension=DirEntry.substring(DirEntry.lastIndexOf('.')+1,DirEntry.length);

            FinalHTML=GenerateDisplayTable
                (
                FirstLineHTML+
                Line1+
                Line2+
                Line3+
                VizLine4+
                PosLine+
                LastLineHTML
                );
            break;
        case 1:
            var Line1="\t<tr><td height=23>"+GenHTMLText("(nothing playing)",CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
            var Line2=SpacerLine;
            var Line3=SpacerLine;
            var Line4=SpacerLine;
            var Line5=SpacerLine;
            var Line6=SpacerLine;
            if (CurrentPlayingItem && CurrentPlayingItem.File)
                {
                var FI1="";
                var FI2="";
                if (CurrentPlayingItem.File.FileInfo1)
                    {
                    FI1=CurrentPlayingItem.File.FileInfo1;
                    FI2=CurrentPlayingItem.File.FileInfo2;
                    }
                Line1="\t<tr><td height=23>"+GenHTMLText(CurrentPlayingItem.File.FileName,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                Line2="\t<tr><td height=23>"+GenHTMLText(CurrentPlayingItem.File.Path,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                Line3="\t<tr><td height=23>"+GenHTMLText("Size: "+GetFileSizeStringWithFormat(CurrentPlayingItem.File.Size,100),CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                Line4="\t<tr><td height=23>"+GenHTMLText("Date: "+CurrentPlayingItem.File.DateStr+" "+CurrentPlayingItem.File.TimeStr,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                Line5="\t<tr><td height=23>"+GenHTMLText(FI1,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                Line6="\t<tr><td height=23>"+GenHTMLText(FI2,CurrentItemColor.GetHTMLText(),237)+"</td></tr>\n";
                }

            FinalHTML=GenerateDisplayTable
                (
                FirstLineHTML+
                Line1+
                Line2+
                Line3+
                Line4+
                Line5+
                Line6+
                LastLineHTML
                );
            break;
        case 2:
            var VizLine=
                SpacerLine+
                SpacerLine+
                SpacerLine+
                SpacerLine+
                SpacerLine+
                SpacerLine;
            if (CurrentPlayingItem && CurrentPlayingItem.File)
                {
                if (CurrentAudioTimeRemaining>0 && CurrentPlayingAudioItem.File.Extension!="avi")
                    VizLine="\t<tr><td height="+(23*6)+"><img src=\""+GetIconsPath()+VisLarge+"\"></td></tr>\n";
                else
                    if (PlayingList.length==1) PosLine=SpacerLine;
                FirstLineHTML=GenerateTopLine(CurrentPlayingItem.Icon,CurrentPlayingItem.File.SongName,true);
                }

            FinalHTML=GenerateDisplayTable
                (
                FirstLineHTML+
                VizLine+
                PosLine
                );
            break;
        case 3:
            var VizLine=
                SpacerLine+
                SpacerLine+
                SpacerLine+
                SpacerLine+
                SpacerLine+
                SpacerLine;
            if (CurrentAudioTimeRemaining>0 && CurrentPlayingAudioItem.File.Extension!="avi")
                VizLine="\t<tr><td height="+(23*6)+"><img src=\""+GetIconsPath()+VisLarge+"\"></td></tr>\n";

            FinalHTML=GenerateDisplayTable
                (
                SpacerLine+
                VizLine+
                SpacerLine
                );
            break;
        }

//    alert("FirstLine:\n\n"+FirstLineHTML);
//    alert("MiddleLines:\n\n"+LinesHTML);
//    alert("LastLine:\n\n"+LastLineHTML);
//    alert(FinalHTML);

    RewriteInnerHTML("JBMMDisplay",FinalHTML);
    ShowScrollBar(6,0,0);
    }

function StopAndExitPlayMenu()
    {
    Stop();
    GotoCurrentBrowsing();
    }

function GotoNextPlayingScreen()
    {
    PlayingScreen++;
    CurrentJBMMUI.RefreshDisplay();
    }

function PlayAndRefresh()   {Play();RefreshDisplay();}
function BackupAndRefresh()     {Backup();RefreshDisplay();}
function AdvanceAndRefresh()   {Advance();RefreshDisplay();}

function PlayUILeftButton()
    {
    if (PlayingList.length==1 && PlayingList[0].File.Extension=="jpg")
        {
        CurrentImageEditRotate.SetPrevValue();
        }
    else
        {
        Backup();
        }
    RefreshDisplay();
    }

function PlayUIRightButton()
    {
    if (PlayingList.length==1 && PlayingList[0].File.Extension=="jpg")
        {
        CurrentImageEditRotate.SetNextValue();
        }
    else
        {
        Advance();
        }
    RefreshDisplay();
    }

function PlayUIOffButton()
    {
    if (PlayingList.length==1 && PlayingList[0].File.Extension=="jpg")
        {
        if (CurrentImageEditZoom.CurrentIndex>2)
            {
            CurrentImageEditZoom.SetPrevValue();
            RefreshDisplay();
            }
        else
            {
            Stop();
            GotoCurrentBrowsing();
            }
        }
    else
        {
        Stop();
        if (PlayReturnJBMMUI)
            {
            CurrentJBMMUI=PlayReturnJBMMUI;
            PlayReturnJBMMUI=null;
            if (PlayingListCursorPosesValid)
                {
                if (PlayingList==PlaylistMenu.Items)
                    {
//                    alert("one");
                    CurrentJBMMUI.CurrentMenu.CursorPos=PlayingListPosition;
                    }
                else
                    {
//                    alert("two");
                    CurrentJBMMUI.CurrentMenu.CursorPos=PlayingListCursorPoses[PlayingListPosition];
                    }
                PlayingListCursorPosesValid=false;
                }
            RefreshDisplay();
            }
        else
            GotoCurrentBrowsing();
        }
    }

function PlayUIPlayButton()
    {
    if (PlayingList.length==1 && PlayingList[0].File.Extension=="jpg")
        {
        if (CurrentImageEditZoom.CurrentIndex<10) CurrentImageEditZoom.SetNextValue();
        }
    else
        Play();
    RefreshDisplay();
    }

function AddCurrentlyPlayingToPlaylist()
    {
    if (CurrentPlayingItem) AddItemToPlaylist(CurrentPlayingItem);
    }

function GotoNextAlbum()
    {
    if (PlayingList.length==0) return;
    var OldIsPlaying=IsPlaying;
    Stop();
    var OldPP=PlayingListPosition;
    var OldArtistAlb=PlayingList[PlayingListPosition].File.Artist+PlayingList[PlayingListPosition].File.Album;
    OldArtistAlb=OldArtistAlb.toUpperCase();

    PlayingListPosition++;
    if (PlayingListPosition>=PlayingList.length) PlayingListPosition=0;

    while( (PlayingList[PlayingListPosition].File.Artist+PlayingList[PlayingListPosition].File.Album).toUpperCase()==OldArtistAlb && PlayingListPosition!=OldPP)
        {
        PlayingListPosition++;
        if (PlayingListPosition>=PlayingList.length) PlayingListPosition=0;
        }

    if (PlayingListPosition==OldPP)
        {
        PlayingListPosition=0;
        }

    if (OldIsPlaying=="playing") Play();
    RefreshDisplay();
    }

function GotoPrevAlbum()
    {
    if (PlayingList.length==0) return;
    var OldIsPlaying=IsPlaying;
    Stop();
    var OldPP=PlayingListPosition;
    var OldArtistAlb=PlayingList[PlayingListPosition].File.Artist+PlayingList[PlayingListPosition].File.Album;
    OldArtistAlb=OldArtistAlb.toUpperCase();

    PlayingListPosition--;
    if (PlayingListPosition<0) PlayingListPosition=PlayingList.length-1;
    if ((PlayingList[PlayingListPosition].File.Artist+PlayingList[PlayingListPosition].File.Album).toUpperCase()!=OldArtistAlb)
        {
        OldArtistAlb=PlayingList[PlayingListPosition].File.Artist+PlayingList[PlayingListPosition].File.Album;
        OldArtistAlb=OldArtistAlb.toUpperCase();
        }
    while((PlayingList[PlayingListPosition].File.Artist+PlayingList[PlayingListPosition].File.Album).toUpperCase()==OldArtistAlb && PlayingListPosition!=OldPP)
        {
        PlayingListPosition--;
        if (PlayingListPosition<0) PlayingListPosition=PlayingList.length-1;
        }

    if (PlayingListPosition==OldPP)
        {
        PlayingListPosition=0;
        }
    else
        {
        PlayingListPosition++;
        if (PlayingListPosition>=PlayingList.length) PlayingListPosition=0;
        }

    if (OldIsPlaying=="playing") Play();
    RefreshDisplay();
    }

function PlayUIF1()
    {
    if (PlayingList.length==1 && PlayingList[0].File.Extension=="jpg")
        GotoImageEditMenu();
    else
        GotoPlayingMenu();
    }

function GetPlayUIObject()
    {
    //alert("GetBrowserUIObject()");
    var MenuUI=new jbmm_ui();
    MenuUI.JBMMF1       =PlayUIF1;
//    MenuUI.JBMMF1Hold   =ButtonNotImplemented;
    MenuUI.JBMMF2       =GotoNextPlayingScreen;
    MenuUI.JBMMF2Hold   =ButtonNotImplemented;
    MenuUI.JBMMF3       =GotoF3Next;
    MenuUI.JBMMF3Hold   =ImmediatlyRecord;
    MenuUI.JBMMOff      =PlayUIOffButton;
    MenuUI.JBMMLeft     =PlayUILeftButton;
    MenuUI.JBMMRight    =PlayUIRightButton;
    MenuUI.JBMMUp       =GotoVolumeMenu;
    MenuUI.JBMMUpHold   =GotoPrevAlbum;
    MenuUI.JBMMDown     =GotoVolumeMenu;
    MenuUI.JBMMDownHold =GotoNextAlbum;
    MenuUI.JBMMPlay     =PlayUIPlayButton;
    MenuUI.JBMMPlayHold =AddCurrentlyPlayingToPlaylist;
//    MenuUI.JBMMOn       =ButtonNotImplemented;
    MenuUI.RefreshDisplay=RefreshPlayUI;
    MenuUI.Notes=JBMMPlayUINotes;
    return MenuUI;
    }
PlayUI=GetPlayUIObject();

PlaylistUI.F3Next=PlayUI;
