#!/usr/bin/wish -f
# das fenster:

set user [string toupper $env(USER)]
set pn <your_phone>
set einheiten 0
set einheit 0
set tag [exec date +%e]
set alttag $tag
set monat [exec date +%b]
set altmonat $monat
set monatnum [exec date +%m]
set altmonatnum $monatnum
set jahr [exec date +%Y]
set altjahr $jahr
set of Monat:
set monate(1) Jan
set monate(2) Feb
set monate(3) Mar
set monate(4) Apr
set monate(5) May
set monate(6) Jun
set monate(7) Jul
set monate(8) Aug
set monate(9) Sep
set monate(10) Oct
set monate(11) Nov
set monate(12) Dec

proc help {} {
    toplevel .help 
    message .help.msg -width 14c -justify left -relief raised -bd 2 \
	    -font  -adobe-helvetica-medium-r-*-*-18-*-*-*-*-*-*-* \
	    -text "Dies ist keine echte Hilfe. Aber trotzdem:                 \
	           <Tag>, <Monat> und <Jahr> schalten die Anzeige           \
                   der Einheiten auf Einheiten/Tag usf.                     \
		   <+/-> incrementieren bzw. decrementieren die Zeit,       \
		   i.e. Tag, Monat oder Jahr.                               \
		   <Heute> schaltet auf das Tagesdatum.                     \
                   <Ende> bendet ISDNBILL (ach).                            \
		   Der BENUTZER kann ganz oben eingetragen werden. Es gibt  \
		   beliebig viele Jahre, 12 Monate, die aus drei Buchstaben \
		   der englischen Monatsbezeichnungen gebildet sind und alle\
                   Monate haben 31 Tage. Wer so dumm ist, die Einheiten des \
		   31 Feb 1950 zu suchen..."
    
    button .help.ende -text "Hilfe beenden" -command {destroy .help} \
	    -font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue
    pack .help.ende .help.msg -side bottom -fill x
}



proc billof {} {
    global of tag monat jahr 
    frame .kastendat
    frame .kasteno
    frame .kastenu
    label .billtxt -text "Einheiten " \
	    -font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* 
    label .billtxt2 -text " - "\
	    -font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* 
    label .billtxt3 -text " DM"\
	    -font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* 
    label .billof -textvariable of -width 5\
	    -font -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-* 
    label .value -textvariable einheiten -width 5 -relief raised \
	    -font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-*
    label .togeth -textvariable einheit -width 8 -relief raised \
	    -font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-*
    label .datum -text "Heute : $tag $monat $jahr, hier:" \
	    -font -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*
    label .day -textvariable tag \
	    -font -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*
    label .month -textvariable monat \
	    -font -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*
    label .year -textvariable jahr \
	    -font -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*
    pack .kastenu -side bottom
    pack .kasteno -side bottom
    pack .kastendat -side bottom
    pack .datum .day .month .year -in .kastendat -side left -fill x
    pack .billtxt .billof -in .kasteno -side left -fill x
    pack .value .billtxt2 .togeth .billtxt3\
	    -in .kastenu -side left -fill x 
}

proc addunit {who when} {
    global of einheiten einheit tag monat jahr pn
    set telekom 0.12
    set einheiten 0
    set einheit 0

    set ein 0
    set Calls [open /var/adm/isdn/calls]
    while {[gets $Calls Zeile] >=0} {
	if { $Zeile == [string tolower $who] } {
	    gets $Calls Zeile
	    if { $of == "Jahr:" } {
	      if { ([string range $Zeile 16 19] == $when) && \
		      ([string range $Zeile 38 47] == $pn) } {
	          set unitadd [string range $Zeile 83 87]
		  if { $unitadd != "-1"} {
		      set ein [expr $unitadd + $ein]
		  }
	      }
	    } elseif { $of == "Monat:" } {
	      if { ([string range $Zeile 0 2] == $when) && \
	      	      ([string range $Zeile 16 19] == $jahr) && \
		      ([string range $Zeile 38 47] == $pn) } {
	          set unitadd [string range $Zeile 83 87]
		  if { $unitadd != "-1"} {
		      set ein [expr $unitadd + $ein]
		  }
	      }
	    } elseif { $of == "Tag:" } {
	      if { ([string range $Zeile 4 5] == $when) && \
	      	      ([string range $Zeile 0 2] == $monat) && \
	      	      ([string range $Zeile 16 19] == $jahr) && \
		      ([string range $Zeile 38 47] == $pn) } {
	          set unitadd [string range $Zeile 83 87]
		  if { $unitadd != "-1"} {
		      set ein [expr $unitadd + $ein]
		  }
	      } 
	    }    
	}
    }
    set einheiten $ein
    set einheit [expr $einheiten*$telekom]
    return
}

addunit $user $monat

button .quit -text ENDE -command exit -bg skyblue \
-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-*

pack .quit -side bottom -fill x

billof

frame .benutz

label .billfor -text "Rechnung von: " \
-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -fg red

entry .eusernew -width 15 -relief sunken -bd 2 -fg red \
	-textvariable user -font \
	-adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-*

bind .eusernew <Return> {
    set user [string toupper $user]
    set of Monat:
    set tag $alttag
    set monat $altmonat
    set jahr $altjahr
    set monatnum [expr $altmonatnum]
    addunit $user $monat
}

button .dayadd -text "Tag" \
	-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue

button .yearadd -text "Jahr" \
	-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue

button .monthadd -text "Monat" \
	-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue

button .plus -text "+" \
	-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue

button .minus -text "-" \
	-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue

button .now -text "Heute" \
	-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue

button .hilfe -text "?" \
	-font -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-*-* -bg skyblue

pack .benutz -fill x
pack .billfor .eusernew -side left -fill x -in .benutz

pack .monthadd .dayadd .yearadd .plus .minus .now .hilfe -side left

bind .monthadd <1> {list [set of Monat:] ; addunit $user $monat}
bind .dayadd <1> {list [set of Tag:] ; addunit $user $tag}
bind .yearadd <1> {list [set of Jahr:] ; addunit $user $jahr}

bind .hilfe <1> {help}

bind .now <1> {
    global of alttag altmonat altjahr altmonatnum
    set tag $alttag
    set monat $altmonat
    set jahr $altjahr
    set monatnum [expr $altmonatnum]
    if { $of == "Tag:"} {
	addunit $user $tag
    }
    if { $of == "Monat:"} {
	addunit $user $monat
    }
     if { $of == "Jahr:"} {
	addunit $user $jahr
    }
}

bind .plus <1> {
    global of tag monat jahr monate monatnum
    if { $of == "Tag:"} {
	set tag [expr $tag+1]
	if { $tag > 31 } {
	    set tag [expr $tag-31]
	    set monatnum [expr $monatnum+1]	    
	    if { $monatnum > 12 } {
		set monatnum [expr $monatnum-12]
		set jahr [expr $jahr+1]
	    }
	    set monat $monate($monatnum)
	}
	addunit $user $tag
    }
    if { $of == "Monat:"} {
	set monatnum [expr $monatnum+1]
	if { $monatnum > 12 } {
	    set monatnum [expr $monatnum-12]
	    set jahr [expr $jahr+1]
	}
	set monat $monate($monatnum)
	addunit $user $monat
    }
    if { $of == "Jahr:"} {
	set jahr [expr $jahr+1]
	addunit $user $jahr
    }
}

bind .minus <1> {
    global of tag monat jahr
    if { $of == "Tag:" } {
	set tag [expr $tag-1]
	set monatnum [expr $monatnum]
	if { $tag < 1 } {
	    set tag 31
	    set monatnum [expr $monatnum-1]
	    if { $monatnum < 1 } {
		set monatnum 12
		set jahr [expr $jahr-1]
	    }
	}
	set monat $monate($monatnum)
	addunit $user $tag
    }
    if { $of == "Monat:" } {
	set monatnum [expr $monatnum-1]
	if { $monatnum < 1 } {
	    set monatnum 12
	    set jahr [expr $jahr-1]
	}
	set monat $monate($monatnum)
	addunit $user $monat
    }
    if { $of == "Jahr:" } {
	set jahr [expr $jahr-1]
	addunit $user $jahr
    }
}






