Quick Mail Sender '98 — File Browser

QuickMailSender98v0.98 / QuickMailSender98v0.98 / QMS98.mrc

QMS98.mrc — 23.99 KB — Download this file

;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;Quick Mail Sender© '98 by Cromlech (c) 1998
;File 01 of 02

;~~REQUIREMENTS~~
;*WARNING: This will NOT look properly on a 640x400 display, Only on a 800x640 or higher pixels.
;Font "Courier New", comes with win95, will look VERY sloppy without this--trust me.


;for any questions, comments, etc... please e-mail me kritikal@hotmail.com
;Please read the README file before asking any questions and please refer to it first.

;Quick Mail Sender '98 is a trademark of ill-Soul Inc. 
;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

;~~Remote Events~~ (socks)

on 1:sockopen:qsm: {
  rline @Q.Update 4 Host Contacted Waiting for reply...
  sockwrite -n qsm HELO $ip
  return
}

on 1:sockread:qsm: {
  sockread %var.qsm-3
  
  ;220
  if ($gettok(%var.qsm-3,1,32) == 220) {
    inc %var.qsm-220 1
    rline @Q.update 4 Sending info to server, please hold...
    return
  }
  
  ;250s
  elseif ($gettok(%var.qsm-3,1,32) == 250) {
    inc %var.qsm-4 1
    
    ;Mailee
    if (%var.qsm-4 == 1) {
      sockwrite -n qsm mail from: $gettok(%var.qsm-1,2,32)
      return 
    }
    
    ;Mailer
    elseif (%var.qsm-4 == 2) {
      sockwrite -n qsm rcpt to: $gettok(%var.qsm-1,1,32)
      return
    }
    
    ;Mail Data (@q.write)
    elseif (%var.qsm-4 == 3) {
      sockwrite -n qsm data
      return
    }
    
    ;Mail Quit
    elseif (%var.qsm-4 == 4) {
      sockwrite -n qsm quit
      return
    }
  }
  
  ;354
  elseif ($gettok(%var.qsm-3,1,32) == 354) {
    rline @q.update 4 Writing message to server
    sockwrite -tn qsm SUBJECT: %var.qsm-2
    sockwrite -tn qsm X-SENDER: Quick Mail Sender v0.98  by Cromlech
    sockwrite -tn qsm X-Originating-IP: $chr(91) $+ $ip $+ $chr(93)
    sockwrite -tn qsm DATE: $q.day $+ , $q.month $q.year $time $duration($timezone) 
    %var.qsm-5 = 0
    :start
    inc %var.qsm-5 1
    if (%var.qsm-5 > $line(@q.write,0)) {
      sockwrite -n qsm .
      rline @q.update 4 Message written; closing connection
      return
    }
    else { 
      sockwrite -tn qsm $line(@q.write,%var.qsm-5)
      goto start
    }
  }
  
  ;221
  elseif ($gettok(%var.qsm-3,1,32) == 221) {
    rline @q.update 4 Message Successfully Sent;
    q.end
  }
  
  ;500s
  elseif ($gettok(%var.qsm-3,1,32) >= 500) {
    rline @q.update 4 " $+ $gettok(%var.qsm-3,2-,32) $+ "
    q.end 
  }
  
  ;other
  else {
    return
  }
}

on 1:sockclose:qsm {
  rline @q.update 4 Connection closed by server.
  .timer0 1 4 window -c @q.update
  unset %var.qsm-*    
  unset %var.q-*
}

;~~Remote Events~~ (input)

on 1:input:@Q.WRITE: {
  window -c @Q.s-track
  if (%var.q-indent != $null) {
    if (%var.q-indentii == $null) {
      %var.q-indentii = 1
    }
    q.wrap $str($chr(160),%var.q-indentii) $1-
    unset %var.q-indent*
    halt
  }
  else {
    q.wrap $1-
    halt
  }
}

on 1:input:@MAILTO: {
  window -c @MAILTO
  if (($chr(64) !isin $1) || ($chr(32) isin $1-)) {
    q.error Invalid or Insufficient parameter(s)
  }
  if ($len($1) > 40) {
    q.error Too many characters
  }
  else {
    %var.qsm-1 = $calc(40 - $len($1))
    rline @Q.SEND 3 MAIL TO $+ $chr(160) : $+ $1 $+ $str($chr(160),%var.qsm-1) : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
    halt
  }
  else {
    echo -s %var.qsm-3
    return
  }
}

on 1:input:@MAILFROM: {
  window -c @MAILFROM
  if (($chr(64) !isin $1) || ($chr(32) isin $1-)) {
    q.error Invalid or Insufficient parameter(s)
  }
  if ($len($1) > 40) {
    q.error Too many characters
  }
  else {
    %var.qsm-1 = $calc(40 - $len($1))
    rline @Q.SEND 5 MAIL FROM $+  : $+ $1 $+ $str($chr(160),%var.qsm-1) : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
    halt
  }
}

on 1:input:@SUBJECT: {
  window -c @SUBJECT
  if ($len($1-) > 40) {
    q.error Too many characters
  }
  else {
    %var.qsm-1 = $calc(40 - $len($1-))
    rline @Q.SEND 7 SUBJECT $chr(160) $+ : $+ $1- $+ $str($chr(160),%var.qsm-1) : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
    halt
  }
}

on 1:input:@SERVER: {
  window -c @SERVER
  if ($chr(32) isin $1) {
    q.error Invalid parameter(s) 
  }
  if ($len($1) > 40) {
    q.error Too many characters, Choose another server please.
  }
  else {
    %var.qsm-1 = $calc(40 - $len($1-))
    rline @Q.SEND 9 SERVER $str($chr(160),2) $+ : $+ $1- $+ $str($chr(160),%var.qsm-1) : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR 12LIST
    halt
  }
}

on 1:input:@Q.Eraser: {
  window -c @Q.Eraser
  rline @Q.WRITE %var.qem-2 $1-
  unset %var.qem-*
  halt
}

on 1:input:@q.filename: {
  if ($1 == $null) {
    window -c @q.filecancel
    window -c @q.filename
    window -c @q.filepic
    halt
  }
  %var.qsm-2 = $1
  %var.qsm-3 = $gettok(%var.qsm-2,1,46) $+ $chr(46) $+ qsm
  %var.qsm-4 = %var.qsm-1 $+ %var.qsm-3
  if ($exists(%var.qsm-4) == $true) {
    window -t +f @Question 163 136 338 108 courier new 14
    aline @Question $chr(160)
    aline @Question $chr(160) 
    aline @Question Replace %var.qsm-4 $+ ?
    aline @Question $chr(160)
    aline @Question $str($chr(160),13) 12Okay 12Cancel
    halt
  }
  else {
    q.saveii
  }
}


;~~Remote Events~~ (other)

on 1:load: {
  if ($q.test02 != $true) {
    echo -s Please simultaneously load both "QMS98.MRC" & "QMS9802.MRC" 
    unload -rs $script
  }
  if ($version < 5.31) {
    echo -s You have an outdated mIRC Version for this Script, please go to 12http://www.mirc.com/ and download the latest version.  Otherwise, this may cause problems in future use of this program.
    unload -rs $script 
  }
  else {
    window -t +f @Q.S 163 136 338 108 courier new 14
    aline -p @Q.S $str($chr(160),6) Quick Mail Sender© '98
    aline @Q.S $str($chr(160),10) by Cromlech
    aline @Q.S $chr(160)
    aline @Q.S $chr(160)
    .timer0 1 4 q.startup
  }
}

on 1:start: {
  if ($q.test02 != $true) {
    echo -s ERROR: missing loaded file "QMS9802.MRC" 
    unload -rs $script
  }
  else {
    return
  }
}

;~~Aliases~~

alias q.month {
  return $gettok($fulldate,2,32)
}
alias q.year {
  return $right($fulldate,4)
}
alias q.day {
  return $left($day,3)
}

alias qmail {
  if ($window(@h.main) != $null) {
    q.error please close out Harvester© Mail first.
  }
  window -t +f @Q.SEND 59 1 666 267 courier new 14
  q.setup
}

alias q.setup {
  aline @Q.SEND $str($chr(160),25) (12SEND)(12QUIT)  
  aline @Q.SEND $chr(160)  
  aline @Q.SEND MAIL TO $+ $chr(160) : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
  aline @Q.SEND $str($chr(160),10) $+ $str($chr(175),41)
  aline @Q.SEND MAIL FROM: $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
  aline @Q.SEND $str($chr(160),9) $str($chr(175),41) 
  aline @Q.SEND SUBJECT $chr(160) $+ : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
  aline @Q.SEND $str($chr(160),9) $str($chr(175),41) 
  aline @Q.SEND SERVER $str($chr(160),2) $+ : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR 12LIST
  aline @Q.SEND $str($chr(160),9) $str($chr(175),41) 
  %var.qsm-1 = 0
  :start
  inc %var.qsm-1 1
  if (%var.qsm-1 > 3) { 
    goto finish 
  }
  else {
    aline @Q.SEND $chr(160) 
    goto start
  }
  :finish
  aline @Q.SEND $str($chr(160),12) Write 12 $+ X $+  On Top 12 $+ X $+  Save As 12 $+ X $+  Import 12 $+ X $+ 
  unset %var.qsm-*
  halt
}

alias q.ver {
  return 0.98
}

alias q.send {
  if ($line(@Q.WRITE,0) == 0) {
    q.error No Message has been written.
  }
  
  ;RCPT to - Mail From - Server
  %var.qsm-1 = $remove($gettok($line(@Q.SEND,3),2,58),$chr(160)) $remove($gettok($line(@Q.SEND,5),2,58),$chr(160)) $remove($gettok($line(@Q.SEND,9),2,58),$chr(160))
  
  ;Subject
  %var.qsm-2 = $remove($gettok($line(@Q.SEND,7),2,58),$chr(160))
  if ($gettok(%var.qsm-1,3,32) == $null) {
    unset %var.qsm-*
    q.error Missing address or Server
  }
  window -t +f @Q.Update 163 136 338 108 courier new 14
  aline @q.update $str($chr(160),16) 12Cancel
  aline @q.update $chr(160)
  aline @q.update $chr(160)
  aline @Q.Update Looking up host $gettok(%var.qsm-1,3,32)
  .timerQSM -o 0 30 q.down
  sockopen qsm $gettok(%var.qsm-1,3,32) 25
}

alias q.down {
  if (($calc($sock(qsm).ls - $sock(qsm).lr) <= 10) && ($sock(qsm).ls >= 90)) {
    sockclose qsm
    window -c @Q.Update
    q.error Server must be down, try again later.
    .timerQSM off
  }
  if ($sock(qsm) == $null) {
    .timerQSM off
    halt
  }
  else {
    halt
  }
}

alias q.quit {
  %var.qsm-1 = $findfile($mircdir,*.bmp,0)
  :start
  inc %var.qsm-2 1
  if (%var.qsm-2 > %var.qsm-1) {
    q.quiter -b
  }
  else {
    %var.qsm-3 = $findfile($mircdir,*.bmp,%var.qsm-2)
    %var.qsm-4 = $read -l1 %var.qsm-3
    if (%var.qsm-4 == BMÆc) {
      window -pt +f @Q.SPLASH 236 74 300 300 
      drawpic -c @Q.SPLASH 0 0 %var.qsm-3 
      .timer0 -o 1 3 window -c @Q.SPLASH
      q.quiter
    }
    else {
      goto start
    }
  }
} 

;q.quit continued
alias q.quiter {
  .timerQSM off
  unset %var.qsm-* %var.qem-* %var.q-*
  window -c @Q.SEND
  window -c @Q.WRITE
  window -c @Q.Space
  window -c @Q.w-close
  window -c @Q.Indent
  window -c @Q.s-track
  window -c @q.list
  window -c @mailto
  window -c @Q.Erase
  window -c @Q.Eraser
  window -c @mailfrom
  window -c @Subject
  window -c @Q.w-clear
  window -c @Server
  window -c @Q.lst-add
  window -c @Q.lst-delete
  window -c @Q.lst-close
  window -c @Q.delete
  window -c @Q.filename
  window -c @Q.filepic
  window -c @Q.filecancel
  sockclose qsm
  if ($1 == -b) {
    echo -s Locating Lost Splash File ...
    qsearch
  }
}

alias q.check {
  if ($line(@Q.WRITE,0) == 0) { 
    q.import
  }
  elseif ($line(@Q.WRITE,0) > 0) { 
    window -t +f @Question.ii 163 136 338 108 courier new 14
    aline @Question.ii $chr(160)
    aline @Question.ii $chr(160) 
    aline @Question.ii Save Document First?
    aline @Question.ii $chr(160)
    aline @Question.ii $str($chr(160),11) 12Yes 12No 12Cancel
    halt
  }
}

alias q.end {
  sockclose qsm
  .timer0 -o 1 4 window -c @q.update
  unset %var.qsm-* %var.q-*
  .timerQSM off
  window -c @q.write
  window -c @q.space
  window -c @q.indent
  window -c @q.delete
  window -c @q.erase
  window -c @q.s-track
  window -c @q.w-close
  window -c @q.w-clear
  window -c @Q.Eraser
  return
}

alias q.clear {
  goto $1
  :-u | rline @Q.SEND 7 SUBJECT $chr(160) $+ : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR | halt
  :-e | rline @Q.SEND 9 SERVER $str($chr(160),2) $+ : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR 12LIST | halt 
  :-t | rline @Q.SEND 3 MAIL TO $+ $chr(160) : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR | halt 
  :-f | rline @Q.SEND 5 MAIL FROM: $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR | halt 
  :$1 | halt
}

alias q.fcancel {
  window -c @Q.filecancel
  window -c @Q.filename
  window -c @Q.filepic
  unset %var.qsm-*
  halt
}

alias q.save {
  if (($line(@Q.WRITE,0) == 0) || ($window(@Q.WRITE) == $null)) { 
    q.error Nothing to Save
  }
  
  %var.qsm-1 = $sdir="Choose a Path To Save E-mail" $mircdir
  
  if (%var.qsm-1 == $null) { 
    unset %var.qsm-*
    halt
  }
  
  elseif (%var.qsm-1 != $null) {
    window -pt +b @Q.FilePic 115 211 87 23
    window -pt +b @Q.FileCancel 492 211 87 23
    window -et +b @Q.Filename 205 211 287 23
    drawfill @Q.FilePic 1 1 0 0
    drawfill @Q.Filecancel 10 10 0 0
    drawtext @Q.FilePic 0 courier new 1 0 Filename:
    drawtext -bp @Q.Filecancel 1 10 courier new 1 0 Cancel
    window -a @Q.Filename
  }
}

;second part of Saving method
alias q.saveii {
  write -c %var.qsm-4
  %var.qsm-6 = 0
  :nextstep
  inc %var.qsm-6 1
  %var.qsm-8 = $line(@Q.WRITE,%var.qsm-6)
  if (%var.qsm-8 == $null) {
    goto finish
  }
  else {
    write %var.qsm-4 %var.qsm-8
    goto nextstep
  }
  :finish
  window -t +f @Saved 163 136 338 108 courier new 14
  aline -p @Saved File Saved as %var.qsm-4
  unset %var.qsm-*
  .timer0 -o 1 4 window -c @Saved
  window -c @q.filename
  window -c @q.FilePic
  window -c @q.filecancel
  if ($1 == -i) {
    clear @Q.WRITE
    q.import
  }
  else {
    halt
  }
}

alias sf12 {
  if ($window(@Q.WRITE) == $null) {
    halt
  }
  else {
    aline @Q.WRITE $chr(160)
  }
}

alias q.write {
  if ($window(@Q.WRITE) == $null) {
    window -elt +f @Q.WRITE 59 267 666 162
    window -pt +s @q.space 44 354 15 75
    drawfill @q.space 2 2 0 0
    drawtext -o @q.space 0 Courier new 0 1 S
    drawtext -o @q.space 0 Courier new 0 14 P
    drawtext -o @q.space 0 Courier new 0 26 A
    drawtext -o @q.space 0 Courier new 0 38 C
    drawtext -o @q.space 0 Courier new 0 50 E
    window -pt +s @q.space 44 354 15 75 
    window -pt +s @q.indent 44 267 15 87 
    drawfill @q.indent 10 10 0 0
    drawtext -o @q.indent 1 Courier new 0 1 B
    drawtext -o @q.indent 1 Courier new 0 14 R
    drawtext -o @q.indent 1 Courier new 0 26 E
    drawtext -o @q.indent 1 Courier new 0 38 A
    drawtext -o @q.indent 1 Courier new 0 50 K
    window -pt +s @q.indent 44 267 15 87
    window -pt +s @q.w-close 59 429 87 19
    drawfill @q.w-close 5 5 0 0
    drawtext -o @q.w-close 0 courier new 10 0 C
    drawtext -o @q.w-close 0 courier new 22 0 L
    drawtext -o @q.w-close 0 courier new 34 0 O
    drawtext -o @q.w-close 0 courier new 46 0 S
    drawtext -o @q.w-close 0 courier new 58 0 E
    window -pt +s @q.w-close 59 429 87 19
    window -pt +s @q.erase 146 429 87 19
    drawfill @q.erase 3 3 0 0
    drawtext -o @q.erase 1 courier new 10 0 E
    drawtext -o @q.erase 1 courier new 22 0 D
    drawtext -o @q.erase 1 courier new 34 0 I
    drawtext -o @q.erase 1 courier new 46 0 T
    window -pt +s @q.erase 146 429 87 19
    window -pt +s @q.delete 233 429 87 19
    drawfill @q.delete 14 14 0 0
    drawtext -o @q.delete 1 courier new 1 0 D
    drawtext -o @q.delete 1 courier new 13 0 E
    drawtext -o @q.delete 1 courier new 25 0 L
    drawtext -o @q.delete 1 courier new 37 0 E
    drawtext -o @q.delete 1 courier new 49 0 T
    drawtext -o @q.delete 1 courier new 61 0 E
    window -pt +s @q.delete 233 429 87 19
    window -pt +s @q.w-clear 320 429 87 19
    drawfill @q.w-clear 14 14 0 0
    drawtext -o @q.w-clear 0 courier new 10 0 C
    drawtext -o @q.w-clear 0 courier new 22 0 L
    drawtext -o @q.w-clear 0 courier new 34 0 E
    drawtext -o @q.w-clear 0 courier new 46 0 A
    drawtext -o @q.w-clear 0 courier new 58 0 R
    window -pt +s @q.w-clear 320 429 87 19
    halt
  }
  else {
    if ($window(@Q.WRITE).state == normal) {
      window -n @Q.WRITE
      window -n @Q.Space
      window -n @Q.Indent
      window -n @Q.w-clear
      window -n @Q.w-close
      window -n @Q.delete
      window -n @Q.Erase
      window -c @Q.Eraser
      halt
    }
    else {
      window -r @Q.WRITE
      window -r @Q.Space
      window -r @Q.Indent
      window -r @Q.w-close
      window -r @Q.w-clear
      window -r @Q.delete
      window -r @Q.Erase
      window -c @Q.Eraser
      halt
    }
  }
}

alias q.mailto {
  if ($window(@Mailto) == $null) {
    rline @Q.SEND 3 MAIL TO $+ $chr(160) : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
    window -et +b @Mailto 144 51 328 17 
    halt
  }
  elseif ($window(@Mailto) != $null) {
    window -c @Mailto
    halt
  }
}

alias q.mailfrom {
  if ($window(@MailFrom) == $null) {
    rline @Q.SEND 5 MAIL FROM: $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
    window -et +b @MailFrom 144 87 328 17
    halt
  }
  elseif ($window(@MailFrom) != $null) {
    window -c @MailFrom
    halt
  }
}

alias q.subject {
  if ($window(@Subject) == $null) {
    rline @Q.SEND 7 SUBJECT $chr(160) $+ : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR
    window -et +b @Subject 144 123 328 17
    halt
  }
  elseif ($window(@Subject) != $null) {
    window -c @Subject
    halt
  } 
}

alias q.server {
  if ($window(@Server) == $null) {
    rline @Q.SEND 9 SERVER $str($chr(160),2) $+ : $str($chr(160),40) $+ : $+ 12 $+ X $+  $str($chr(160),3) 12CLEAR 12LIST
    window -et +b @Server 144 159 328 17
    halt
  }
  elseif ($window(@Server) != $null) {
    window -c @Server
    halt
  } 
}

alias q.TOP {
  if ($window(@Mailto) != $null) {
    window -a @Mailto
  } 
  if ($window(@MailFrom) != $null) {
    window -a @MailFrom
  }
  if ($window(@Subject) != $null) {
    window -a @Subject
  }
  if ($window(@Server) != $null) {
    window -a @Server
  }
  if ($window(@Filename) != $null) {
    window -a @q.filecancel
    window -a @q.filename
    window -a @q.filepic
  }
  if ($window(@Q.list) != $null) {
    window -a @q.list
    window -a @q.lst-delete
    window -a @q.lst-add
    window -a @q.lst-close
  }
  if ($window(@Q.WRITE) != $null) {
    window -a @Q.WRITE
    window -a @Q.Space
    window -a @Q.Indent
    window -a @Q.w-close
    window -a @Q.w-clear
    window -a @Q.delete
    window -a @Q.Erase
  }
  if ($1 == -xy) {
    q.XY
  }
  else {
    halt
  }
}

alias q.coor {
  if ($4 == $null) { 
    return
  } 
  else {
    if (($mouse.x >= $1) && ($mouse.x <= $2) && ($mouse.y >= $3) && ($mouse.y <= $4)) {
      return $true
    }
    else {
      return $false
    }
  }
}

alias q.XY {
  ;Write
  if ($q.coor(154,162,247,254) == $true) {
    q.write
  }
  ;On Top
  if ($q.coor(226,234,247,255) == $true) {
    q.top
  }
  ;Save as
  if ($q.coor(306,314,247,254) == $true) {
    q.save 
  }
  ;Import
  if ($q.coor(378,386,247,254) == $true) {
    q.check
  }
  ;Quit
  if ($q.coor(267,273,13,21) == $true) {
    q.quit
  }
  ;Mail To
  if ($q.coor(418,426,48,57) == $true) {
    q.mailto  
  }
  if ($q.coor(466,507,48,57) == $true) {
    q.clear -t
  }
  ;mailfrom
  if ($q.coor(418,426,86,92) == $true) {
    q.mailfrom  
  }
  if ($q.coor(466,507,84,92) == $true) {
    q.clear -f
  }
  ;Subject
  if ($q.coor(418,426,121,128) == $true) {
    q.subject    
  }
  if ($q.coor(466,507,120,130) == $true) {
    q.clear -u 
  }
  ;Server
  if ($q.coor(418,426,157,165) == $true) {
    q.server
  }
  if ($q.coor(466,507,156,166) == $true) {
    q.clear -e
  }
  if ($q.coor(514,545,156,166) == $true) {
    q.lcheck
  }
  ;Send
  if ($q.coor(218,225,13,21) == $true) {
    q.send
  }
  ;Cancel (@Q.Update)
  if ($q.coor(136,146,34,41) == $true) {
    rline @Q.update 4 Connection canceled by user.
    sockclose qsm
    .timer0 -o 1 4 window -c @q.update
    unset %var.qsm-*
    .timerQSM off
    halt
  }
  else {
    halt
  }
}

alias q.error {
  window -t +f @error 163 136 338 108 courier new 14
  aline -p @error $1-
  .timer0 -o 1 4 window -c @error
  halt
}

alias Q.begin-yn {
  ;Yes 
  if ($q.coor(121,129,88,95) == $true) {
    window -c @Q.start
    qmail
  }
  
  ;No
  if ($q.coor(170,177,88,95) == $true) {
    window -c @Q.Start
    echo -s Quick Mail Sender© '98
    echo -s To Start type /qmail
    halt
  }
  else {
    halt
  }
}

alias Q.Startup {
  window -c @Q.S
  if ($1 == -s) {
    window -t +f @Q.Start 163 136 338 108 courier new 14
    aline @Q.Start $chr(160)
    aline -p @Q.Start $str($chr(160),4) Start Quick Mail Sender Now?
    aline @Q.Start $chr(160)
    aline @Q.Start $chr(160)
    aline @Q.Start $chr(160)
    aline @Q.Start $str($chr(160),13) (12Yes) (12No)
    halt
  }
  else {
    window -t +f @Q.Start 163 136 338 108 courier new 14
    aline @Q.Start $chr(160)
    aline -p @Q.Start $str($chr(160),4) Start Quick Mail Sender Now?
    aline @Q.Start $chr(160)
    aline @Q.Start $chr(160)
    aline @Q.Start $chr(160)
    aline @Q.Start $str($chr(160),13) (12Yes) (12No)
    halt
  }
}

alias Q.q {
  if ($q.coor(114,121,88,95) == $true) {
    window -c @Question
    Q.saveii
  }
  elseif ($q.coor(153,161,88,95) == $true) {
    window -c @Question
    Q.save
  } 
  else { 
    halt
  }
}

alias q.click.q {
  if ($q.coor(97,105,88,95) == $true) {
    window -c @question.ii
    q.save
  }
  elseif ($q.coor(130,137,88,95) == $true) { 
    window -c @question.ii
    q.import
  }
  elseif ($q.coor(154,160,88,95) == $true) {
    window -c @question.ii
  }
  else { 
    halt
  }
}

alias q.space {
  if ($window(@Q.WRITE) == $null) { 
    window -c @q.indent
    window -c @q.space
    window -c @q.w-clear
    window -c @q.w-close
    window -c @q.erase
    window -c @q.eraser
    window -c @q.delete
    window -c @q.s-track
    q.error edit window=null
  }
  else {
    window -a @Q.WRITE
    if (%var.q-indent != $null) {
      inc %var.q-indentii 1 
      if (%var.q-indentii > 9) {
        %var.q-indentii = 9
        q.error Too many spaces, max. is 9
      }
      if ($window(@q.s-track) == $null) {
        window -pt +s @q.s-track 44 429 15 19
        window -pt +s @q.s-track 44 429 15 19
      }
      clear @q.s-track     
      drawtext @q.s-track 1 courier new 0 0 %var.q-indentii   
      halt
    }
    else {
      inc %var.q-indentii 1
      %var.q-indent = $line(@Q.WRITE,0)
      window -pt +s @q.s-track 44 429 15 19
      window -pt +s @q.s-track 44 429 15 19
      drawtext @q.s-track 1 courier new 0 0 %var.q-indentii
      halt
    }
  }
}

alias q.indent {
  if ($window(@Q.WRITE) == $null) { 
    q.write       
  }
  else {
    if ($sline(@Q.WRITE,1) == $null) {
      aline @Q.WRITE $chr(160)
      halt
    }
    elseif ($sline(@Q.WRITE,1) != $null) {
      iline @Q.WRITE $sline(@Q.WRITE,1).ln $chr(160)
      halt 
    }
  }
}

alias q.w-close {
  window -c @Q.WRITE 
  window -c @q.indent 
  window -c @q.s-track 
  window -c @q.space
  window -c @q.erase
  window -c @q.delete
  window -c @q.w-close
  window -c @q.w-clear
  unset %var.q-*
  halt
}

alias q.eraser {
  if ($sline(@Q.WRITE,1) == $null) {
    q.error No line selected to re-edit
  }
  else {
    %var.qem-1 = $sline(@Q.WRITE,1)
    %var.qem-2 = $sline(@Q.WRITE,1).ln
    window -et +ft @Q.Eraser 95 245 587 123
    titlebar @Q.Eraser Quick Mail Sender© v0.98 by Cromlech (c) 1998, Please refer to the readme for tricks and tips.
    aline -p @Q.Eraser " $+ %var.qem-1 $+ "
    halt   
  }
}

alias q.s-td {
  if ($window(@Q.WRITE) == $null) {
    q.write
  }
  else {
    dec %var.q-indentii 1
    if (%var.q-indentii < 0) {
      %var.q-indentii = 0
      q.error Cannot backspace
    }
    clear @q.s-track
    %var.q-indent = $line(@Q.WRITE,0)
    window -pt +s @q.s-track 44 429 15 19
    window -pt +s @q.s-track 44 429 15 19
    drawtext @q.s-track 1 courier new 0 0 %var.q-indentii
    halt
  }
}

alias q.delete {
  if ($window(@Q.WRITE) == $null) {
    q.write
  }
  if ($sline(@Q.WRITE,1) == $null) {
    q.error Select a line to delete please.
  }
  else {
    dline @Q.WRITE $sline(@Q.WRITE,1).ln
  }
}

;~~Menu Section~~

menu @Q.Erase {
  sclick:/q.eraser
}

menu @Q.Delete {
  sclick:/window -a @Q.WRITE | /q.delete
}

menu @Q.Start {
  dclick:/q.begin-yn
}

menu @q.s-track {
  sclick:/window -a @Q.WRITE | /q.s-td
}

menu @q.w-close {
  sclick:/q.w-close
}

menu @q.indent {
  sclick:/window -a @Q.WRITE | /q.indent
}

menu @q.space {
  sclick:/q.space
}

menu @Q.update {
  dclick:/q.TOP -xy
}

menu @Question {
  dclick:/Q.q
}

menu @Question.ii {
  dclick:/q.click.q
}

menu @Q.filecancel {
  sclick:/q.fcancel
}

menu @Q.WRITE {
  dclick:/q.edit $1
}

menu @Q.SEND {
  dclick:/q.TOP -xy
}

menu @q.w-clear {
  sclick:/window -a @Q.WRITE | /clear @Q.WRITE
}