alias topazmp3 if (!$dialog(tmp3)) dialog $iif($1 = desktop,-md,-m) tmp3 tmp3 | else dialog -v tmp3 
dialog tmp3 {
  title "TopaZ mp3player"
  size -1 -1 281 151
  option pixels
  list 2, 3 6 228 113, hsbar vsbar size 
  edit "", 11, 2 122 273 20, read autohs
  button "<<", 5, 231 6 45 25, flat
  button "|>", 6, 231 30 45 25, flat
  button "", 7, 231 54 45 25, flat
  button ">>", 8, 231 78 45 25, flat
  menu "File/Other options", 1
  item "Add file to playlist", 3, 1
  item "Remove selected from playlist", 4, 1
  item "Add directory...",13, 1
  item "Clear...",14,1
  item "Exit mp3", 12, 1
  menu "End options",15
  item "Repeat",16,15
  item "Shuffle",17,15
  menu "Extras", 18 
  item "Locate an mp3...",19, 18
  item "Volume...",20,18
  item "Play a random mp3...",21,18
}

on *:dialog:tmp3:init:0:{ 
  var %x = 1
  while (%x <= $lines($+(",$scriptdirplaylist.txt,"))) { 
    did -az $dname 2 $remove($nopath($read($+(",$scriptdirplaylist.txt,"),%x)),.mp3)
    inc %x
  }
}
on *:dialog:tmp3:close:0:if (%tmp3.temp.pause) unset %tmp3.temp.pause
on *:dialog:tmp3:menu:*:{ 
  if ($did = 3) { 
    var %selfile = $sfile($mircdirsounds,Select file to add) 
    write $+(",$scriptdirplaylist.txt,") %selfile
    did -az $dname 2  $remove($nopath($v1),.mp3)
  }
  if ($did = 4) { 
    if ($read($+(",$scriptdirplaylist.txt,"),w,$+(*,$did($dname,2).seltext,*))) write $($+(-,dl,$readn),2) $+(",$scriptdirplaylist.txt,") 
    did -d $dname 2 $did($dname,2).sel
  }
  if ($did = 3) { dialog -x $dname $dname } 
  if ($did = 13) { 
    var %x = 1, %seldir = $sdir($mircdir,Choose directory to add to playlist)
    while ($findfile(%seldir,*.mp3,%x)) { 
      write $+(",$scriptdirplaylist.txt,") $v1
      did -az $dname 2 $remove($nopath($v1),.mp3)
      inc %x
    }
  }
  if ($did = 14) { 
    write -c $+(",$scriptdirplaylist.txt,") 
    did -r $dname 2,11
    did -ra $dname 6 |>
  }
  if ($did = 16) { set %tmp3.status.end repeat } 
  if ($did = 17) { set %tmp3.status.end shuffle }
  if ($did = 19) { 
    var %sellocate = $input(Enter mp3 name...,qe,Find mp3...)
    set %tmp3.temp.selplay $did($dname,2).sel
    if ($read($+(",$scriptdirplaylist.txt,"),w,$+(*,%sellocate,*))) did -c $dname 2 $readn
  }
  if ($did = 21) { 
    splay $read($+(",$scriptdirplaylist.txt,")) 
    did -c $dname 2 $readn 
    set %tmp3.temp.selplay $did($dname,2).sel
    did -ra $dname 11 $iif($sound($insong.fname).title,$v1 - $sound($insong.fname).artist - $gmt($calc($insong.length / 1000),$iif($calc($insong.length /1000) > 3600,hh:nn:ss,nn:ss)),$did(tmp3,2).seltext - Unknown artist)
    did -ra $dname 6 ||
  }    
  if ($did = 20) { dialog -m tmp3vol tmp3vol }
}

on *:dialog:tmp3:sclick:*:{ 
  if ($did = 6) { 
    if ($did($dname,2).sel != %tmp3.temp.selplay) { 
      set %tmp3.temp.selplay $did($dname,2).sel
      splay -p $read($+(",$scriptdirplaylist.txt,"),$did($dname,2).sel)
      did -ra tmp3 11 $iif($sound($insong.fname).title,$v1 - $sound($insong.fname).artist - $gmt($calc($insong.length / 1000),$iif($calc($insong.length /1000) > 3600,hh:nn:ss,nn:ss)),$did(tmp3,2).seltext - Unknown artist)
      did -ra tmp3 6 ||
    }
    else {
      if (!$insong) { 
        set %tmp3.temp.selplay $did($dname,2).sel
        splay -p $read($+(",$scriptdirplaylist.txt,"),$did($dname,2).sel)
        did -ra tmp3 11 $iif($sound($insong.fname).title,$v1 - $sound($insong.fname).artist - $gmt($calc($insong.length / 1000),$iif($calc($insong.length /1000) > 3600,hh:nn:ss,nn:ss)),$did(tmp3,2).seltext - Unknown artist)
        did -ra tmp3 6 ||
      }
      else {
        if (!%tmp3.temp.pause) { 
          splay pause
          set %tmp3.temp.pause true
          did -ra tmp3 6 |>
          halt 
        }
        if (%tmp3.temp.selplay) { 
          splay resume
          unset %tmp3.temp.pause
          did -ra  tmp3 6 ||
          halt
        }
      }
    }
  }
  if ($did = 7) { tmp3stop }
  if ($did = 5) {
    did -c $dname 2 $calc($did($dname,2).sel - 1)
    set %tmp3.temp.selplay $did($dname,2).sel
    splay -p $read($+(",$scriptdirplaylist.txt,"),$did($dname,2).sel)
    did -ra tmp3 11 $iif($sound($insong.fname).title,$v1 - $sound($insong.fname).artist - $gmt($calc($insong.length / 1000),$iif($calc($insong.length /1000) > 3600,hh:nn:ss,nn:ss)),$did(tmp3,2).seltext - Unknown artist)
    did -ra tmp3 6 ||
  }
  if ($did = 8) {
    did -c $dname 2 $calc($did($dname,2).sel + 1)
    set %tmp3.temp.selplay $did($dname,2).sel
    splay -p $read($+(",$scriptdirplaylist.txt,"),$did($dname,2).sel)
    did -ra tmp3 11 $iif($sound($insong.fname).title,$v1 - $sound($insong.fname).artist - $gmt($calc($insong.length / 1000),$iif($calc($insong.length /1000) > 3600,hh:nn:ss,nn:ss)),$did(tmp3,2).seltext - Unknown artist)
    did -ra tmp3 6 ||
  }
}

alias -l tmp3stop { 
  splay stop
  did -ra tmp3 6 |>
  did -ra tmp3 11 No song currently playing...
}

on *:MP3END:{ 
  if (%tmp3.status.end = repeat) { splay -p $read($+(",$scriptdirplaylist.txt,"),%tmp3.temp.selplay) } 
  if (%tmp3.status.end = shuffle) { 
    splay $read($+(",$scriptdirplaylist.txt,")) 
    if ($dialog(tmp3)) { 
      did -c tmp3 2 $readn 
      set %tmp3.temp.selplay $did($dname,2).sel
      did -ra tmp3 11 $iif($sound($insong.fname).title,$v1 - $sound($insong.fname).artist - $gmt($calc($insong.length / 1000),$iif($calc($insong.length /1000) > 3600,hh:nn:ss,nn:ss)),$did(tmp3,2).seltext - Unknown artist)
      did -ra tmp3 6 ||
    }
  }
}

dialog tmp3vol {
  title "Volume.."
  size -1 -1 171 27
  option pixels
  button "<", 1, 4 2 48 21, flat
  button ">", 2, 52 2 48 21, flat
  check "Mute", 3, 104 3 64 17
}

on *:dialog:tmp3vol:*:*:{ 
  if ($devent = sclick || $devent = uclick) { 
    if ($did = 1) { if ($vol(master) > 655.35) { var %vol = $calc($vol(master) - 655.35) | vol -v %vol } }
    if ($did = 2) { if ($vol(master) < 65535) { var %vol = $calc($vol(master) + 655.35) | vol -v %vol } } 
    if ($did = 3) { 
      if ($did($dname,3).state = 1) { 
        set -e %vol.temp.current $vol(master) 
        vol -v 0 
      }
      if ($did($dname,3).state = 0) { 
        vol -v %vol.temp.current
        unset %vol.temp.current
      }   
    }
  }
}
