'===========================================================================
' Subject: Multi-Media Player                 Date: 06-16-02 (  :  )       
'  Author: Achilles B. Mina                   Code: rapidq                 
'  Origin: wasaywasay@edsamail.com.ph       Packet: RAPIDQ.ABC
'===========================================================================
'VidAudio JoJo 1.00
'Uploaded: May 8, 2002
'By Achilles B. Mina

'VidAudio JoJo is a simple but fairly complete multimedia player
'You can do as you please with this code, but please acknowledge the author.


DECLARE SUB SetWindowPos Lib "User32" ALIAS "SetWindowPos"(hWnd As Long, hWndInsertAfter As Long, X As Long, Y As Long, cx As Long, cy As Long, wFlags As Long)
DECLARE FUNCTION GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As long, ByVal lBuffer As Long) As Long
DECLARE Function PlayMedia Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, lpstrReturnString As Long, uReturnLength As _
Long, hwndCallback As Long) As Long

DECLARE SUB AlwaysTop
DECLARE SUB TopMost
DECLARE SUB CloseAudioForm
DECLARE SUB Listening(Sender AS QCOOLBTN)
DECLARE SUB aTextAgain
DECLARE SUB InitAudio
DECLARE SUB Check(hand AS LONG, message AS LONG, one AS LONG, two as LONG) 
DECLARE SUB ChangeDirectories
DECLARE SUB ResizeForm
DECLARE SUB PlayList(Sender AS QCOOLBTN)
DECLARE SUB CloseFForm
DECLARE SUB ChangeDrive(Sender AS QRADIOBUTTON)
DECLARE SUB Delete(key AS BYTE)
DECLARE SUB Scroll
DECLARE SUB Change
DECLARE SUB Fancy

DIM OpenDialog AS QOPENDIALOG
DIM OpenListDlg AS QOPENDIALOG
DIM SaveListDlg AS QSAVEDIALOG

DIM aFileName(100) AS STRING  
DIM mAudio AS STRING*256

DEFBYTE loops, bigloops, audx, stopandgo, escape, always, scrolled, videoison
DEFSTR audio$, audiotype$

CREATE Time AS QTIMER
  Interval = 1 '1000
  OnTimer = TopMost
END CREATE

CREATE Arial9G AS QFONT
    Name = "Arial"
    Color = &H00FF00   'clGreen
    AddStyles(0) 'fsBold
    Size = 9
END CREATE

CREATE Arial9Tae AS QFONT
    Name = "Arial"
    Color = &HAAEEEE   '&HDEFFED
    AddStyles(0)
    Size = 9
END CREATE

CREATE Arial AS QFONT
    Name = "Arial"
    Color = &H0000FF  'clRed
    AddStyles(0)
    Size = 10
END CREATE

CREATE Arial9R AS QFONT
    Name = "Arial"
    Color = &HEEFE
    AddStyles(0)
    Size = 9
END CREATE

CREATE Audio AS QFORM
  Width = 340
  Height = 205
  Center
  Color = 0
  AutoScroll = 0
  Caption = "VidAudio JoJo"
  Hint = "Click to turn on/off Always On Top."
  ShowHint = 1
  OnClick = AlwaysTop 
  OnPaint = aTextAgain
  WndProc = Check
  CREATE FancyBox AS QCANVAS
    Top = 60
    Left = 10
    Height = 70
    Width = 275
    Color = 0
  END CREATE  
  CREATE AudSlide AS QSCROLLBAR
    Top = 10
    Left = 10
    Height = 20
    Width = 275
    SmallChange = 10
    OnScroll = Scroll
  END CREATE
  CREATE AudS AS QCOOLBTN
    Flat = 1
    Font = Arial9G   
    Caption = "Skip"
    Top = 32
    Left = 50
    Width = 45
    Hint = "Skip current file"
    ShowHint = 1
    OnClick = Listening
  END CREATE
  CREATE AudAgain AS QCOOLBTN
    Flat = 1
    Font = Arial9R    
    Caption = "Again"
    Top = 32
    Left = 100
    Width = 45
    Hint = "Play current file continuously"
    ShowHint = 1
    OnClick = Listening
  END CREATE  
  CREATE AudSnd AS QCOOLBTN
    Flat = 1
    Font = Arial9R    
    Caption = "Mute"
    Top = 32
    Left = 150
    Width = 45
    Hint = "Turn audio on or off"
    ShowHint = 1
    OnClick = Listening
  END CREATE      
  CREATE AudH AS QCOOLBTN
    Flat = 1
    Font = Arial9G    
    Caption = "Stop"
    Top = 32
    Left = 200
    Width = 45
    Hint = "Stop play and rewind"
    ShowHint = 1
    OnClick = Listening
  END CREATE
  CREATE AudList AS QCOOLBTN
    Flat = 1
    Font = Arial9R   
    Caption = "List"
    Top = 2
    Left = 285
    Width = 45
    Hint = "Playlist"
    ShowHint = 1
    OnClick = Listening
  END CREATE                        
  CREATE AudO AS QCOOLBTN
    Flat = 1
    Font = Arial9Tae    
    Caption = "Open"
    Top = 32
    Left = 285
    Width = 45
    Hint = "Select audio or video file"
    ShowHint = 1
    OnClick = Listening
  END CREATE    
  CREATE AudA AS QCOOLBTN
    Flat = 1
    Font = Arial9Tae
    Caption = "Play"
    Top = 62
    Left = 285
    Width = 45
    Hint = "Play selected file"
    ShowHint = 1
    OnClick = Listening
  END CREATE
  CREATE AudB AS QCOOLBTN
    Flat = 1
    Font = Arial9Tae
    Caption = "Pause"
    Top = 92
    Left = 285
    Width = 45
    Hint = "Pause or resume current file"
    ShowHint = 1
    OnClick = Listening
  END CREATE
  CREATE AudL AS QCOOLBTN
    Flat = 1
    Font = Arial9Tae
    Caption = "Loop"
    Top = 122
    Left = 285
    Width = 45
    Hint = "Play entire list continuously"
    ShowHint = 1
    OnClick = Listening
  END CREATE
  CREATE AudC AS QCOOLBTN
    Flat = 1
    Font = Arial9R
    Caption = "Close"
    Top = 152
    Left = 285
    Width = 45
    Hint = "Close current file or playlist"
    ShowHint = 1
    OnClick = Listening
  END CREATE
  CREATE FForm AS QFORM
    Height = 310
    Width = 410
    Color = 0
    Center
    FormStyle = 3
    KeyPreview = 1
    OnKeyDown = Delete
    OnResize = ResizeForm
    OnClose = CloseFForm
    CREATE DirList AS QFILELISTBOX
     ShowIcons = True
     AddFileTypes(4)   
     DelFileTypes(6)
     OnDblClick = ChangeDirectories  
     Top = 1
     Height = 75
     Width = 185
     Color = &HDEFFED
    END CREATE
    CREATE FileListA AS QFILELISTBOX
     MultiSelect = 1
     Mask = "*.rmi;*.midi;*.mid;*.wav;*.au;*.snd;*.mpa;*.wma;*.mp2;*.mp3;_
      *.aif;*.asf;*.asx;*.iff;*.mpm;*.m1v;*.mpeg;*.mpg;*.mpe;*.avi;*.mov;_
      *.wmv;*.mpv;*.qt;*.dat"
     Height = 150
     Width = 185
     Top = 100
     Color = &HDEFFED
    END CREATE  
    CREATE FileListB AS QLISTBOX
      Height = 250
      Width = 185
      Left = 215
      MultiSelect = 1
      Color = &HDEFFED
    END CREATE
    CREATE BLoadList AS QCOOLBTN
      Flat = 1
      Caption = "LL"
      Font = Arial9Tae
      Left = 55
      Top = 255
      Hint = "Load list"
      ShowHint = 1
      OnClick = PlayList
    END CREATE    
    CREATE BSelect AS QCOOLBTN
      Flat = 1
      Caption = ">>"
      Font = Arial9Tae
      Left = 85
      Top = 255
      Hint = "Select file"
      ShowHint = 1
      OnClick = PlayList
    END CREATE
    CREATE BIns AS QCOOLBTN
      Flat = 1
      Caption = "INS"
      Font = Arial9Tae
      Left = 150
      Top = 255
      Hint = "Insert selected file"
      ShowHint = 1
      OnClick = PlayList
    END CREATE 
    CREATE BSub AS QCOOLBTN
      Flat = 1
      Caption = "SUB"
      Font = Arial9Tae
      Left = 225
      Top = 255
      Hint = "Substitute selected file"
      ShowHint = 1
      OnClick = PlayList
    END CREATE
    CREATE BOk AS QCOOLBTN      
      Flat = 1
      Caption = "CLR"
      Font = Arial9G
      Left = 188
      Top = 255
      Hint = "Clear playlist"
      ShowHint = 1
      OnClick = PlayList
    END CREATE    
    CREATE BMedia AS QCOOLBTN
      Flat = 1
      Caption = "ALL"
      Font = Arial9Tae
      Left = 83
      Top = 76
      Hint = "Cycle through: All Multimedia->Sound Only->Video Only"
      ShowHint = 1
      OnClick = PlayList
    END CREATE
    CREATE BDelete AS QCOOLBTN
      Flat = 1
      Caption = "<<"
      Font = Arial9Tae
      Left = 290
      Top = 255
      Hint = "Delete selected file"
      ShowHint = 1
      OnClick = PlayList
    END CREATE
    CREATE BSaveList AS QCOOLBTN
      Flat = 1
      Caption = "SL"
      Font = Arial9Tae
      Left = 320
      Top = 255
      Hint = "Save list"
      ShowHint = 1
      OnClick = PlayList
    END CREATE    
    CREATE A AS QRADIOBUTTON
      Caption = "A"
      Font = Arial9R
      Top = 5
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE B AS QRADIOBUTTON
      Caption = "B"
      Font = Arial9R
      Top = 30
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE C AS QRADIOBUTTON
      Caption = "C"
      Font = Arial9R
      Top = 55
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE D AS QRADIOBUTTON
      Caption = "D"
      Font = Arial9R
      Top = 80
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE E AS QRADIOBUTTON
      Caption = "E"
      Font = Arial9R
      Top = 105
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE F AS QRADIOBUTTON
      Caption = "F"
      Font = Arial9R
      Top = 130
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE G AS QRADIOBUTTON
      Caption = "G"
      Font = Arial9R
      Top = 155
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE H AS QRADIOBUTTON
      Caption = "H"
      Font = Arial9R
      Top = 180
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE I AS QRADIOBUTTON
      Caption = "I"
      Font = Arial9R
      Top = 205
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE
    CREATE J AS QRADIOBUTTON
      Caption = "J"
      Font = Arial9R
      Top = 230
      Left = 187
      Width = 25
      OnClick = ChangeDrive
    END CREATE  
    Caption = DirList.Directory
    Visible = 0
  END CREATE            
END CREATE

SUB Listening
  DIM mLength AS STRING*256
  DIM mValue As String*256
  DIM mSlide AS STRING*256
  SELECT CASE Sender.Caption
    CASE "Mute"
      IF audio$ = "off" THEN
        audio$ = "on"
        AudSnd.Font = Arial9R
      ELSEIF audio$ = "on" OR audio$ = "" THEN
        audio$ = "off"
        AudSnd.Font = Arial
      END IF
    CASE "Open"  
      OpenDialog.Filter = "Multimedia files|*.rmi;*.midi;*.mid;*.wav;*.au;*.snd;*.mpa;*.wma;_
      *.mp2;*.mp3;*.asx;*.asf;*.aif;*.iff;*.mpm;*.m1v;*.mpeg;*.mpg;*.mpe;*.avi;*.mov;*.wmv;*.mpv;*.qt;*.dat|_
      Audio files|*.rmi;*.midi;*.mid;*.wav;*.au;*.snd;*.wma;_
      *.mp2;*.mp3;*.aif;*.iff|MP3|*.mp2;*.mp3|MIDI|*.midi;*.mid|WAV|*.wav|_
      Video files|*.mpm;*.mpa;*.m1v;*.mpeg;*.mpg;*.mpe;*.asx;*.asf;*.avi;*.mov;*.wmv;*.mpv;*.qt;*.dat|_
      MPEG video|*.mpeg;*.mpe;*.mpg|AVI video|*.avi|QuickTime|*.mov;*.qt|_
      All files|*.*"
      IF OpenDialog.Execute = 1 THEN
        DIM lenFilename AS LONG
        filePath$ = STRING$(165,0)
        FileListB.AddItems OpenDialog.FileName
        lenFilename = GetShortPathName(OpenDialog.FileName,VARPTR(filePath$),164)
        aFileName(audx) = LEFT$(filePath$,lenFilename)
        Audio.Repaint
        aTextAgain
        Audio.Repaint
        Audio.TextOut(65,130,"CLICK PLAY or LOAD ANOTHER...",&HFFFFFF,0)
        INC audx
      END IF      
    CASE "Play"
      IF FileListB.ItemCount = 0 THEN
        ShowMessage "No items to play."
        EXIT SUB
      END IF
      filePath$ = STRING$(165, 0)    
      audx = 0 
      DO
        lenFilename = GetShortPathName(FileListB.Item(audx),VARPTR(filePath$),164)
        aFileName(audx) = LEFT$(filePath$,lenFilename)      
        INC audx
      LOOP UNTIL audx = FileListB.ItemCount
      FileListB.Color = &HAAEEEE
      audx = 0
      stopandgo = 0
      escape = 0
      IF AudB.Caption = "Resume" OR aFileName(audx) = "" THEN EXIT SUB 
      DO
        Audio.Repaint
        aTextAgain
        Audio.Repaint
        Audio.TextOut(105,130,"  LOADING FILE... ",&HFFFFFF,0)
        end$ = RIGHT$(LCASE$(aFileName(audx)),3)
        FileListB.Selected(audx-1) = 0
        FileListB.Selected(audx) = 1
        DO 
          DOEVENTS
          SELECT CASE end$
            CASE "mpm","mpa","m1v",".qt","mpg","mpe","peg","avi","asx","asf","mov","wmv","mpv","dat"
              videoison = 1
              PlayMedia("open " + aFileName(audx) + " type MpegVideo" + " parent " + STR$(Audio.Handle) + " style child",0,0,0)
              PlayMedia("Where " + aFileName(audx) + " destination", VARPTR(mValue), LEN(mValue) - 1, 0) 
              mStart = INSTR(1, mValue, " ")
              mPosition = INSTR(mStart + 1, mValue, " ")
              mStart = INSTR(mPosition + 1, mValue, " ")
              Width$ = MID$(mValue, mPosition, mStart - mPosition) 
              Height$ = MID$(mValue, mStart + 1)
              IF Audio.Height < (VAL(Height$) + 100) THEN  
                Audio.Height = VAL(Height$) + 110
              END IF
              IF Audio.Width < (VAL(Width$) + 80) THEN  
                Audio.Width = VAL(Width$) + 80
                AudList.Left = Audio.Width - 60
                AudO.Left = Audio.Width - 60
                AudA.Left = Audio.Width - 60
                AudB.Left = Audio.Width - 60
                AudL.Left = Audio.Width - 60              
                AudC.Left = Audio.Width - 60
              END IF
              Audio.Repaint
              aTextAgain 
              PlayMedia("put " + aFileName(audx) + " window at 14 60 " + Width$ + " " + Height$, 0, 0, 0)                      
          CASE ELSE
            videoison =0           
            PlayMedia("open " + aFileName(audx) + " type MpegVideo",0,0,0)
          END SELECT
          IF FForm.Visible = 0 THEN
            Audio.Top = (Screen.Height - Audio.Height)*.5
          END IF
          Audio.Left = (Screen.Width - Audio.Width)*.5
          PlayMedia("status " + aFileName(audx) + " length",VARPTR(mLength),256,0)
          AudSlide.Max = VAL(LEFT$(mLength,7))
          escape = 0
          Audio.Repaint
          aTextAgain
          IF scrolled = 1 THEN
            PlayMedia("play " + aFileName(audx) + " seek to " + STR$(INT(.01*AudSlide.Position*AudSlide.Max)),0,0,0)          
            PlayMedia("play " + aFileName(audx) + " from " + STR$(INT(.01*AudSlide.Position*AudSlide.Max)),0,0,0)
            scrolled = 0
          ELSE
            PlayMedia("play " + aFileName(audx) + " from " + STR$(AudSlide.Position),0,0,0)          
          END IF  
          FileListB.Selected(audx) = 1
          DO
            DOEVENTS            
            PlayMedia("set " + aFileName(audx) + " audio all " + audio$, 0, 0, 0)
            PlayMedia("status " + aFileName(audx) + " mode",VARPTR(mAudio),256,0)
            PlayMedia("status " + aFileName(audx) + " position",VARPTR(mSlide),256,0) 
            AudSlide.Position = VAL(LEFT$(mSlide,7))
            Audio.Caption = "VidAudio JoJo " + LEFT$(mAudio,7)
            IF LEFT$(mAudio,6) = "paused" THEN
              DO
                DOEVENTS
                PlayMedia("status " + aFileName(audx) + " mode",VARPTR(mAudio),256,0)
              LOOP UNTIL LEFT$(mAudio,7) = "playing"
            END IF
          LOOP UNTIL LEFT$(mAudio,7) = "stopped" OR escape = 1      
          PlayMedia("close " + aFileName(audx),0,0,0)
          AudSlide.Position = 0
          Audio.Height = 205
          Audio.Width = 340  
          AudS.Left = 50
          AudList.Left = 285
          AudO.Left = 285
          AudA.Left = 285
          AudB.Left = 285
          AudL.Left = 285
          AudC.Left = 285
        LOOP UNTIL loops = 0
        INC audx
        IF aFileName(audx) = "" AND bigloops = 1 THEN audx = 0
      LOOP UNTIL (aFileName(audx) = "" AND bigloops = 0) OR stopandgo = 1 
      InitAudio
    CASE "Pause","Resume"
      IF AudB.Caption = "Resume" THEN
        AudB.Caption = "Pause"
        PlayMedia("resume "+ aFileName(audx),0,0,0)
      ELSEIF AudB.Caption = "Pause" THEN
        AudB.Caption = "Resume"
        PlayMedia("pause "+ aFileName(audx),0,0,0)
      END IF
    CASE "Loop"      
      IF bigloops = 0 THEN
        bigloops = 1
        AudL.Font = Arial9G
      ELSE
        bigloops = 0
        AudL.Font = Arial9Tae
      END IF
    CASE "Close"
      escape = 1
      audx = 0
      DO
        aFileName(audx) = ""
        INC audx
      LOOP UNTIL aFileName(audx) = ""
      PlayMedia("close all",0,0,0) 
      InitAudio
      IF FForm.Visible = 0 THEN Audio.Center
      FileListB.Clear            
    CASE "Skip"
      PlayMedia("close "+ aFileName(audx),0,0,0)
      escape = 1
    CASE "Again"
      IF loops = 0 THEN
        loops = 1
        AudAgain.Font = Arial
      ELSE
        loops = 0
        AudAgain.Font = Arial9R
      END IF      
    CASE "List"
      FForm.Visible = 1
      FForm.Top = 40 
      Audio.Top = 350
      Audio.Left = (Screen.Width - Audio.Width)*.5
      DirList.Color = &HDEFFED
      FileListA.Color = &HDEFFED
      FileListB.Color = &HDEFFED
    CASE "Stop"
      PlayMedia("stop "+ aFileName(audx),0,0,0)
      escape = 1
      stopandgo = 1        
  END SELECT
END SUB

SUB InitAudio
  audx = 0
  loops = 0
  bigloops = 0
  AudL.Font = Arial9Tae
  AudSlide.Position = 0
  Audio.Repaint
  Audio.TextOut(65,130,"CLICK PLAY or LOAD ANOTHER...",&HFFFFFF,0)    
  Audio.Height = 205
  Audio.Width = 340
  AudS.Left = 50
  AudList.Left = 285  
  AudO.Left = 285
  AudA.Left = 285
  AudB.Left = 285
  AudL.Left = 285
  AudC.Left = 285
  FileListB.Color = &HDEFFED   
END SUB
  
SUB CloseAudioForm
  escape = 1
  PlayMedia("close all",0,0,0) 
  Application.Terminate
END SUB

SUB aTextAgain
  title$ = RIGHT$(FileListB.Item(audx),LEN(FileListB.Item(audx))-RINSTR(FileListB.Item(audx),"\"))
  title$ = LEFT$(title$,RINSTR(title$,".")-1)
  Audio.TextOut(10,Audio.Height - 50,"  " + title$ + "  ",&HFFFFFF,0)
END SUB

SUB Check
  IF message = &H10 THEN CloseAudioForm
END SUB

SUB ChangeDirectories
  CHDIR(DirList.Item(DirList.ItemIndex) - "[" - "]")
  DirList.Directory = CurDir$
  FileListA.Directory = CurDir$  
  FForm.Caption = CurDir$
END SUB

SUB ResizeForm
  IF FForm.Height > 310 THEN FForm.Height = 310
  IF FForm.Width > 410 THEN FileListB.Width = 185 + (FForm.Width - 410) 
END SUB

SUB PlayList
  SELECT CASE Sender.Caption
    CASE "LL"
      OpenListDlg.Filter = "Playlist files|*.lst|All files|*.*"
      IF OpenListDlg.Execute THEN
        FileListB.LoadFromFile(OpenListDlg.Filename)
      END IF
    CASE ">>"
      IF FileListA.SelCount > 1 THEN
        FOR x = 0 TO (FileListA.ItemCount - 1)
          IF FileListA.Selected(x) = 1 THEN
            FileListB.AddItems CurDir$ + "\" + FileListA.Item(x)
          END IF
        NEXT
      ELSEIF FileListA.SelCount = 1 THEN
        FileListB.AddItems FileListA.Filename
      END IF
    CASE "INS"
      IF FileListA.SelCount > 1 THEN
        FOR x = 0 TO (FileListA.ItemCount - 1)
          IF FileListA.Selected(x) = 1 THEN
            FileListB.InsertItem(FileListB.ItemIndex+1,CurDir$ + "\" + FileListA.Item(x))
            FileListB.Selected(FileListB.ItemIndex+1) = 1
          END IF
        NEXT
      ELSEIF FileListA.SelCount = 1 THEN
        FileListB.InsertItem(FileListB.ItemIndex+1,FileListA.Filename)
      END IF    
    CASE "SUB"
      FileListB.InsertItem(FileListB.ItemIndex,FileListA.Filename)    
      FileListB.DelItems(FileListB.ItemIndex + 1)    
    CASE "<<"
      Delete(46)
    CASE "SL"
      SaveListDlg.Filter = "Playlist format|Other formats"
      IF SaveListDlg.Execute THEN 
        FileListB.SavetoFile(SaveListDlg.Filename + ".lst")
      END IF      
    CASE "CLR"
      FileListB.Clear
      FileListB.Color = &HDEFFED
      audx = 0        
    CASE "VID"
      FileListA.Mask = "*.rmi;*.midi;*.mid;*.wav;*.au;*.snd;*.mpa;*.wma;_
      *.mp2;*.mp3;*.aif;*.asx;*.asf;*.iff;*.mpm;*.m1v;*.mpeg;*.mpe;*.mpg;_
      *.avi;*.mov;*.wmv;*.mpv;*.qt;*.dat"
      BMedia.Caption = "ALL"
    CASE "ALL"
      FileListA.Mask = "*.rmi;*.midi;*.mid;*.wav;*.au;*.snd;*.wma;_
      *.mp2;*.mp3;*.aif;*.iff"
      BMedia.Caption = "SND"          
    CASE "SND"
      FileListA.Mask = "*.mpm;*.m1v;*.qt;*.mpg;*.mpe;*.mpeg;*.avi;*.mov;*.wmv;_
      *.mpv;*.mpa;*.asx;*.asf;*.dat"    
      BMedia.Caption = "VID"   
  END SELECT
END SUB

SUB Delete
  IF key = 46 THEN
    IF FileListB.SelCount > 1 THEN
      FOR x = 0 TO (FileListB.ItemCount - 1)
        IF FileListB.Selected(x) = 1 THEN
          FileListB.DelItems x
          DEC x
        END IF
      NEXT
    ELSE
      FileListB.DelItems FileListB.ItemIndex
    END IF
  END IF
END SUB

SUB CloseFForm
  Audio.Top = (Screen.Height - Audio.Height)*.5
  Audio.Left = (Screen.Width - Audio.Width)*.5
  FForm.Visible = 0  
END SUB

SUB ChangeDrive
  DirList.Drive = Sender.Caption + ":\"
  DirList.Directory = CurDir$
  FileListA.Directory = CurDir$  
  FForm.Caption = CurDir$
END SUB

SUB Scroll
  IF LEFT$(mAudio,7) = "playing" THEN 
    PlayMedia("play " + aFileName(audx) + " from " + STR$(AudSlide.Position),0,0,0)
    PlayMedia("pause "+ aFileName(audx),0,0,0)
    AudB.Caption = "Resume"
  ELSEIF LEFT$(mAudio,7) = "       " THEN
    scrolled = 1
  END IF  
END SUB

SUB AlwaysTop
  IF always = 0 THEN 
    always = 1
  ELSE
    always = 0
  END IF    
END SUB

SUB TopMost
  IF videoison = 0 THEN Fancy
  IF always = 1 THEN SetWindowPos(Audio.Handle, -1, 0, 0, 0, 0,&H2 OR &H1)
END SUB

SUB Fancy
  FancyBox.FillRect(0,0,275,70,0) 
  INC y  
  IF y > 150 THEN 
    y = 1
    turn = INT(RND(10))
    IF turn MOD 2 = 0 THEN
      aa$ = "Achilles"
      bb$ = "Butuyan"
      cc$ = "Mina"
    ELSE
      aa$ = "wasaywasay"
      bb$ = "@edsamail"
      cc$ = ".com.ph"
    END IF
  ELSEIF y = 1 THEN
    aa$ = "wasaywasay"
    bb$ = "@edsamail"
    cc$ = ".com.ph"      
  END IF  
  IF y < 11 THEN    
    b$ = RIGHT$(aa$,y)
    a$ = RIGHT$(bb$,y)
    FancyBox.TextOut(y,y,aa$,&HDDCE,0)
  ELSE      
    IF y < 80 THEN 
      FancyBox.TextOut(y,80-y,cc$,&H0000FF,0)
    ELSE
      FancyBox.TextOut(y,y-80,cc$,&H0000FF,0)
    END IF
    IF y < 60 THEN    
      FancyBox.TextOut(y,y,a$,&HDDCE,0)
    ELSE  
      FancyBox.TextOut(y,60-(y-60),a$,&HDDCE,0)  
    END IF
  END IF  
  FancyBox.TextOut(y*2,5,b$,&H00FF00,0)    
END SUB  

  
Application.HintHidePause = 5000
Application.HintPause = 300
Randomize Timer
Audio.ShowModal
