pro do_demo, demofile, pause=pause, wait=wait
if keyword_set(wait) then iwait=wait else iwait=0.
pause=keyword_set(pause)

if n_elements(demofile) eq 0 then begin
   demofiles=file_list('$DIR_GEN_DOC','*demo.pro')
   case 1 of 
      demofiles(0) eq '': begin
         tbeep
         message,/info,"Can't find any demo files and none supplied, returning..."
         return
      endcase
      n_elements(demofiles) gt 1: begin
         tbeep
         message,/info,"Select a demo file..."
         ss=wmenu_sel(demofiles,/one)
         if ss(0) eq -1 then message,"Nothing selected, Aborting..."
         demofile=demofiles(ss)
      endcase
      else: demofile=demofiles(0)
   endcase
endif

if not file_exist(demofile) then begin
   tbeep
   message,/info,"Demo file: " + demofile + " not found, returning..."
   return
endif

input=rd_tfile(demofile(0),/compress)

line="--------------------------------------------------------"
prstr,["","Executing Demo File: " + demofile,line,""]
qtemp=!quiet
!quiet=1        ; shut off compilation messages
resp=''
for i=0,n_elements(input) -1 do begin
   case 1 of 
      input(i) eq 'end':
      strlen(input(i)) le 1: print
      strmid(input(i),0,1) eq ';': prstr,[strmid(input(i),1,1000)]
      else: begin
         prstr,strjustify(["","IDL> " + input(i),""],/box)
         exestat=execute(input(i))      
         lastcom=0
         if pause then begin
            print
            read,"Enter <CR> to continue, anything else to quit: ",resp
            if resp ne "" then message,"Aborting on request..."
         endif    
      endcase
   endcase
   wait,iwait
endfor

!quiet=qtemp
tbeep
prstr,["","End of Demo..."]
return 
end