I was going to clean this up before I showed it to anyone but I am in a time crunch and my wife is bickering at me to go somewhere with her so I wanted to post so hopefully will have a response when I get home. Be gentle. >.<

Code:
; UK Tool

alias ukt {
  if (!$dialog(uk.tool)) dialog -md uk.tool uk.tool
  else dialog -v uk.tool uk.tool
}

dialog uk.tool {
  title "UK Tool v1.01"
  size -1 -1 153 84
  option dbu

  tab "Format", 5, -2 -15 193 128
  edit "", 29, 1 12 151 72, tab 5 multi return autohs autovs vsbar
  combo 32, 2 0 149 50, tab 5 sort size drop

  tab "Progress", 15
  list 1, 1 1 75 50, tab 15 size
  list 2, 77 1 75 50, tab 15 size
  button "Compare", 3, 114 53 37 12, tab 15 flat

  menu "File", 17
  menu "Tools", 33, 17
  item "Formatter", 34, 33
  item "Comparator", 35, 33
  item break, 90, 17
  item "Format and Save", 36, 17
  item "Load Selected", 37, 17
  item break, 91, 17
  item "Paste Data", 38, 17
  item "Clear Data", 39, 17
  item break, 92, 17
  item "Exit", 40, 17, cancel

  menu "Help", 18
  item "View Help", 25, 18
  item "About..", 26, 18
}

on 1:dialog:uk.tool:init:0:{
  did -ra $dname 29 Paste data here!
  uk.filecombo
}

on 1:dialog:uk.tool:menu:*:{
  echo -a MENU ID: $did
  if ($did == 34) {
    did -f $dname 5
    did -e $dname 36,37,38,39
  }
  elseif ($did == 35) { 
    did -f $dname 15
    did -b $dname 36,37,38,39
  }
  elseif ($did == 36) uk.format
  elseif ($did == 37) {
    if ($did(32).seltext != New File..) {
      var %f $+($scriptdir,$did(32).seltext)
      did -r $dname 29
      loadbuf $calc($lines(%f) -1) -o uk.tool 29 $shortfn(%f)
    }
  }
  elseif ($did == 38) {
    did -r $dname 29
    uk.paste
  }
  elseif ($did == 39) did -r $dname 29

  elseif ($did == 18) {
    ;help file
  }
  elseif ($did == 26) {
    echo 4 -ta UK Tool v1.01 by napalm [17/MAY/2009]
  }
}

on *:dialog:uk.tool:sclick:*:{
  echo -a CLICK: $did
  if ($did == 32) {
    if ($did(32).seltext == New File..) did -n $dname 29
    else did -m $dname 29
  }
  elseif ($did == 3) { if ($window(@UK_Tool)) clear @UK_Tool | uk.compare }
}

on 1:close:@UK_Tool:{ 
  close -@ @UK*
  unset %UK_win_*
}

;======== aliases =========

alias uk.paste {
  var %x 1
  while ($cb(%x)) {
    did -a uk.tool 29 $ifmatch $+ $crlf
    inc %x
  }
}

alias ukf return $+(",$scriptdir,UKT_,$$1,GMT.txt")

alias -l uk.format {
  var %time $gmt , %f $ukf($asctime(%time,ddmmmyy_HH-nn-ss_))
  window -h @uk.temp
  filter -ik uk.tool 29 uk.fmt2
  did -r uk.tool 29
  filter -wo @uk.temp uk.tool 29
  write %f %time
  filter -if uk.tool 29 %f
  close -@ @uk.temp
  uk.filecombo
}
alias -l uk.fmt2 {
  tokenize 9 $1
  echo @uk.temp $1 $+ $chr(9) $+ $remove($deltok($2,2,32),$chr(44))
}

alias uk.filecombo {
  did -r uk.tool 1,2,32
  var %x 1
  did -a uk.tool 32 New File..
  while ($findfile($scriptdir,UKT_*.txt,%x)) {
    did -a uk.tool 1,2,32 $nopath($ifmatch)
    inc %x
  }
}

alias ukc.buffer {
  clear @UK_Tool
  aline $color(background) @UK_Tool $1 $2

  aline @UK_Tool From: $asctime($1,dd mmm yy - HH:nn:ss) $chr(9) $chr(9) $chr(9) 4RED = No Change
  aline @UK_Tool To: $asctime($2,dd mmm yy - HH:nn:ss) $chr(9) $chr(9) $chr(9) 2BLUE = New User
  aline @UK_Tool Span: $duration($calc($2 - $1))

  aline @UK_Tool $chr(160)
  aline @UK_Tool Rank $chr(9) User $chr(9) Old Exp $chr(9) New Exp $chr(9) Exp Gained $chr(9)  $+ $chr(37) $+ Change
  aline @UK_Tool $chr(160)
}

alias ukc.hilight {
  if (!$1) return 02
  elseif (!$2) return 04
}  

alias uk.compare {
  var %f1 $shortfn($+($scriptdir,$did(1).seltext)) , %f2 $shortfn($+($scriptdir,$did(2).seltext)) 
  var %fnew , %fold , %x 1 , %nexp 0 , %oexp 0 , %dexp 0 , %prexp 0 , %n , %r , %h

  if (!$window(@UK_Tool)) { 
    window -lk0 -t12,42,52,62,77 @UK_Tool "Courier New" 14
    titlebar @UK_Tool - Data Comparison
  }
  if (!$window(@UK_values)) window -lh @UK_values
  else clear @UK_values

  if ($read(%f1,1) > $read(%f2,1)) { %fnew = %f2 | %fold = %f1 }
  else { %fnew = %f2 | %fold = %f1 }

  echo -s $asctime(%f1,yymmdd) $asctime(%f1,yymmdd)

  ukc.buffer $read(%fold,0) $read(%fnew,0)

  while ($read(%fnew,%x)) {
    tokenize 9 $ifmatch
    %n = $gettok($gettok($1,1,40),-1,32)
    %r = $iif($numtok($1,32) >= 3,$gettok($1,-3-1,32))
    %nexp = $2
    %oexp = $gettok($read(%fold,r,$+(\s,%n,\s)),2,9)
    %dexp = $calc(%nexp - %oexp)
    %prexp = $calc((%dexp / %oexp) * 100)
    %h = $ukc.hilight(%oexp,%prexp)
    aline %h @UK_Tool %r $chr(9) $gettok($1,-2--1,32) $chr(9) %oexp $chr(9) %nexp $chr(9) $iif(%oexp,%dexp,0) $chr(9) $iif($len($int(%prexp)) == 1,0) $+ %prexp
    aline %h @UK_values %r $chr(9) $gettok($1,-2--1,32) $chr(9) %oexp $chr(9) %nexp $chr(9) $iif(%oexp,%dexp,0) $chr(9) $iif($len($int(%prexp)) == 1,0) $+ %prexp
    inc %x
  }
  set %UK_win_sort -ne
  set %UK_win_sort_t 0
}

alias uk.sort {
  var %m 0 , %i , %t %UK_win_sort

  if ($findtok(-ra -us -oe -ne -ge -pr,%t,1,32)) { 
    %i = $v1 | %m = -tz $+ $iif(%i > 2,ue) %i 9
  }
  else return

  ukc.buffer $line(@UK_Tool,1)

  filter %m @UK_values @UK_Tool
}

;====== Popups ======

menu @UK_Tool {
  Sort by..
  .$iif(%UK_win_sort == -pr,$style(1)) $+($chr(37),Change):set %UK_win_sort -pr | uk.sort
  .-
  .$iif(%UK_win_sort == -oe,$style(1)) Old Exp:set %UK_win_sort -oe | uk.sort
  .$iif(%UK_win_sort == -ne,$style(1)) New Exp:set %UK_win_sort -ne | uk.sort
  .$iif(%UK_win_sort == -ge,$style(1)) Gained Exp:set %UK_win_sort -ge | uk.sort
  .-
  .$iif(%UK_win_sort == -ra,$style(1)) Rank:set %UK_win_sort -ra | uk.sort
  .$iif(%UK_win_sort == -us,$style(1)) User:set %UK_win_sort -us | uk.sort
}


menu channel,status,menubar {
  -
  UK Tool:ukt
}