#  auction.tcl
#   1. Monitors changes in a specific online auction page
#   2. Alerts you when a new bid has been made
#   3. Offers to launch Web browser so you can act on latest bid

source fileLib.tcl
source getFromWeb.tcl
source parse.tcl

# CREATE WIDGETS FOR USER INTERFACE
font create titleFont -family times -size 18
font create statusFont -family times -size 9
label  .lTitle    -text "Auction Watcher" -font titleFont
label  .lURLlabel -text "Enter URL of specific auction page to monitor" 
entry  .eURL      -width 55
label  .lStatus   -text "Waiting to begin..." -font statusFont
button .bStart    -text "Press to Monitor" -command monitor

# PUT USER INTERFACE INTO "GRIDDED" WINDOW
grid config .lTitle    -column 0 -row 0 -columnspan 2 -sticky w
grid config .lURLlabel -column 0 -row 1 -columnspan 3 -sticky w
grid config .eURL      -column 0 -row 2 -columnspan 3 -padx 5
grid config .bStart    -column 0 -row 3 -pady 3 -sticky w
grid config .lStatus   -column 0 -row 4 -columnspan 3 -sticky w

# MONITOR URL CHANGES
proc monitor { } {
  # GET ORIGINAL COPY OF SITE
  set orgURL [.eURL get]
  .lStatus configure -text "Getting original copy of $orgURL"
  getFromWeb $orgURL html
  parse html "<BODY" 2000 "</BODY>" parsed.file
  set orgFile [ readEntireFile parsed.file]

  # IDLE PERIOD SET TO 120 SECONDS OR TWO MINUTES
  set idlePeriod 120
  set compareLoop 1
  while { $compareLoop } {
    for { set timer $idlePeriod} {$timer > 0} {incr timer -1} {
      .lStatus configure -text "Seconds until next update: $timer"
      update

      # WAIT ONE SECOND     
      after 1000
    }

    # GET NEXT COPY OF WEB PAGE
    .lStatus configure -text "Getting compare copy of $orgURL"
    getFromWeb $orgURL html.temp
    parse html.temp "<BODY" 2000 "</BODY>" parsed.file
    set compFile [ readEntireFile parsed.file]

    # PROMPT USER IF THE WEB PAGE CHANGED
    if { [string compare $orgFile $compFile] != 0 } {
      set response [tk_messageBox \
        -icon question -type okcancel \
        -message "A new bid was detected. \n \
                  Press OK to view bid." \
        -title "New Bid Detected" ]   
      if { $response == "ok" } { eval exec "netscape $orgURL" }
    }
  }
}