#by wiebe @ QuakeNet
#script is made to work from timezone CET/CEST



#help clock pub
bind pubm fvlomn|fvlomn "% ${botnet-nick} help clock" c_clock:help:pub

proc c_clock:help:pub { nick uhost handle chan text } {
  lappend output "Shows the time for various timezones and cities."
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  putloglev c $chan "[lindex [split $text] 1]: $nick $uhost $handle $chan [join [lrange [split $text] 2 end]]"
}



#help clock msg
bind msgm fvlomn|fvlomn "help clock" c_clock:help:msg

proc c_clock:help:msg { nick uhost handle text } {
  lappend output "Shows the time for various timezones and cities."
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  putcmdlog "($nick!$uhost) !$handle! $text"
}



#clock pub
bind pubm fvlomn|fvlomn "% ${botnet-nick} clock" c_clock:pub

proc c_clock:pub { nick uhost handle chan text } {
  set output [c_clock:time]
  puthelp "PRIVMSG $chan :$output"
  putloglev c $chan "[lindex [split $text] 1]: $nick $uhost $handle $chan [join [lrange [split $text] 2 end]]"
}



#clock msg
bind msg fvlomn|fvlomn clock c_clock:msg

proc c_clock:msg { nick uhost handle text } {
  lappend output [c_clock:time]
  if { [catch {set x [cnotice $nick $output]} error] || !$x } {
    foreach t $output { puthelp "NOTICE $nick :$t" }
  }
  return 1
}



#clock dcc
bind dcc - clock c_clock:dcc

proc c_clock:dcc { handle idx text } {
  set output [c_clock:time]
  putidx $idx "$output"
  return 1
}



#get the times
proc c_clock:time { } {

  set tz [clock format [unixtime] -format %Z]

  if { [string equal $tz CEST] } {
#daylight saving
    set utc "[clock format [clock seconds] -gmt 1 -format %H:%M] GMT/UTC"
    set bst "[clock format [expr [clock seconds] + 1*3600] -gmt 1 -format %H:%M] BST +1 (London)"
    set cest "[clock format [expr [clock seconds] + 2*3600] -gmt 1 -format %H:%M] CEST +2 (Amsterdam)"
    set eest "[clock format [expr [clock seconds] + 3*3600] -gmt 1 -format %H:%M] EEST +3 (Helsinki)"
    set edt "[clock format [expr [clock seconds] - 4*3600] -gmt 1 -format %H:%M] EDT -4 (New york)"
    set pdt "[clock format [expr [clock seconds] - 7*3600] -gmt 1 -format %H:%M] PDT -7 (Los Angeles)"
    set jst "[clock format [expr [clock seconds] + 9*3600] -gmt 1 -format %H:%M] JST +9 (Tokyo)"
    return "$utc        $bst        $cest        $eest        $edt        $pdt        $jst"
  } else {

#normal
    set utc "[clock format [clock seconds] -gmt 1 -format %H:%M] GMT/UTC (London)"
    set cet "[clock format [expr [clock seconds] + 1*3600] -gmt 1 -format %H:%M] CET +1 (Amsterdam)"
    set eet "[clock format [expr [clock seconds] + 2*3600] -gmt 1 -format %H:%M] EET +2 (Helsinki)"
    set est "[clock format [expr [clock seconds] - 5*3600] -gmt 1 -format %H:%M] EST -5 (New York)"
    set pst "[clock format [expr [clock seconds] - 8*3600] -gmt 1 -format %H:%M] PST -8 (Los Angeles)"
    set jst "[clock format [expr [clock seconds] + 9*3600] -gmt 1 -format %H:%M] JST +9 (Tokyo)"
    return "$utc        $cet        $eet        $est        $pst        $jst"
  }
}

