#!/mod/bin/jimsh

package require cgi
source /mod/webif/lib/setup
require altrow rsv.class progressbar epg.class system.class

puts "Content-Type: text/html"
puts ""

set svcmap {}
lmap i \
    [$::channeldb query {select hSvc, usSvcid from TBL_SVC}] \
    {
	set svcmap([lindex $i 1]) [lindex $i 3]
    }

header

require epg_popup

puts {
<script type=text/javascript src=/js/jquery.tablesorter.js></script>
<link type=text/css href=/css/tsort.css rel=Stylesheet />
<link href=/css/jquery.contextMenu.css rel=stylesheet type=text/css />
<script type=text/javascript src=/js/jquery.contextMenu.js></script>
<script type=text/javascript src=/js/jquery.form.js></script>
<script type=text/javascript src=script.js></script>

<div id=sdialogue></div>
}

proc eventheader {{table TBL_RESERVATION} note} {
	puts {
		<fieldset style="display: inline; padding: 1em">
		<legend>
	}
	puts "<h3>$note</h3>"
	puts {
		</legend>
		<table class="borders tablesorter">
		<thead>
		<tr>
	}

	if {$table eq "pending" } { puts "<th>Action</th>" }

	puts {
			<th></th>
			<th>&nbsp;</th><th>Channel</th>
			<th>Programme</th>
			<th>Start Time</th>
			<th>Duration</th>
			<th>Mode</th>
		</tr>
		</thead>
		<tbody>
	}
}

proc eventrow {event {table TBL_RESERVATION}} {
	global svcmap

	set name [$event name]

	set attrs "table=$table sid=[$event get ulslot] \
	    reckind=[$event get ucRecKind] rsvtype=[$event get ersvtype] \
	    ar=[expr ! [$event padded]]"
	altrow $attrs

	if {$table eq "pending"} {
		puts "<td align=center>[$event pendingicon]</td>"
	}

	puts "<td>[$event get ulslot]</td>"

	if {[$event get usLcn] ne ""} {
		puts "
		<td>
			[epg channelicon [$event channel_name] 50]
		</td>
		<td nowrap>[$event get usLcn]<br>
			[$event channel_name]</td>
		"
	} else {
		puts "<td>&nbsp;<br><br></td><td>&nbsp;</td>"
	}

	puts "<td nowrap>
		<a slot=[$event get ulslot] table=$table
		href=# class=schedule>$name</a>"
	if {
	    ([$event get ucRecKind] == 4 && $name ne [$event folder]) ||
	    ([$event get ucRecKind] == 1 && [$event folder] ne "")
	} {
		puts "<br><span class=also>&nbsp;(Folder: [$event folder])</span>"
	}

	puts "</td>"

	set s [$event get nsttime]
	set d [$event get nduration]
	set e $($s + $d)
	set n [clock seconds]

	if {$n > $e && [$event get ersvtype] <= 3} {
		set ds "[clock format $s -format {%a %d %b %Y %H:%M}]"
		puts "<td nowrap class=va>
			--- -- --- ---- --:--<br>
			<span class=footnote>(Last: $ds)</span>"
		puts "</td><td>--:--:--</td>"
	} else {
		set elist [$event aul]

		set ds "[clock format $s -format {%a %d %b %Y %H:%M}]"
		puts "<td nowrap class=\"va"
		if {$n > $e} { puts " blood" }
		puts "\">"

		if {[llength $elist] > 0} {
			lassign [lindex $elist 0] service_id start end event_id
			if {$start == $s} {
				puts "<a class=event href=#
				    xs=$svcmap($service_id) xe=$event_id>
				    $ds</a>"
			} else {
				puts $ds
			}
		} else {
			puts $ds
		}

		if {$d > 0 && $n > $s && $n < $e} {
			puts "<br>"
			set perc [expr [expr $n - $s] * 100 / $d]
			puts "<img class=va
			    src=/images/745_1_11_Video_1REC.png>"
			puts [progressbar $perc]
		}

		if {[llength $elist] > 1} {
			puts "<div class=also style=\"margin-top: 0.5em\">"
			foreach e $elist {
				lassign $e service_id start end event_id
				if {$start == $s} continue
				puts "<a class=event href=#
				    xs=$svcmap($service_id) xe=$event_id>
				    [clock format $start \
				    -format {%a %d %b %Y %H:%M}]</a><br>"
			}
			puts "</div>";
		}

		puts "</td><td align=center>"
		puts "[clock format [$event get nduration] -format %H:%M]"
		if {[llength $elist] > 1} {
			puts "<div class=also style=\"margin-top: 0.5em\">"
			foreach e $elist {
				lassign $e service_id start end event_id
				if {$start == $s} continue
				puts "[clock format $($end - $start) \
				    -format {%H:%M}]<br>"
			}
			puts "</div>";
		}

		puts "</td>"
	}

	puts "<td nowrap>[join [$event iconset] ""]</td>"

	puts "<td><a href=# class=smenu sid=[$event get ulslot]>
	    <img border=0 src=/img/more_btn.gif></a></td>"
	puts "</tr>"
}

proc eventfooter {} {
	puts "</tbody></table></fieldset>"
}

set events [rsv list pending]
if {[llength $events] > 0} {
	eventheader pending "Pending Scheduled Events"
	foreach event $events {eventrow $event pending}
	eventfooter
	puts {
		<small>
		<button onclick="window.location='/cgi-bin/db.jim?db=rsvp.db&tab=pending';">
		Raw database view
		</button>
		</small>
	}
}

set events [rsv list]
eventheader "live" "Scheduled Events"
foreach event $events {eventrow $event}
eventfooter

puts {
	<br>
	<small>
	<button onclick="window.location='/backup.shtml';">
		Backup/Restore Scheduled Recordings/Events
	</button>
	<button onclick="window.location='/cgi-bin/db.jim?db=rsv.db&tab=TBL_RESERVATION';">
		Raw database view
	</button>
	<script type=text/javascript>
		$('button').button();
	</script>
}

source assets.jim

footer