#!/mod/bin/jimsh

package require cgi
source /mod/webif/lib/setup
require ts.class pretty_size

jqplugin progressbar iphone-style-checkboxes
jscss crop.js style.css
header

set rfile [cgi_get file]
set invert [cgi_get invert 0]
set ts [ts fetch $rfile]
set dir [file dirname $rfile]

set len [$ts duration 1]
set planwidth 500

puts "
<fieldset>
<legend>Crop recording</legend>

<table class=keyval cellpadding=5>
<tr><th>File:</th><td>$rfile</td></tr>
<tr><th>Length:</th><td>[clock format $len -format \"%T\"]</td></tr>
<tr><th>Size:</th><td>[pretty_size [$ts size]] ([$ts get definition])</td></tr>
<tr><th>Bookmarks:</th><td id=originalbookmarks>[$ts get bookmarks] @ "

puts [join [lmap i [$ts bookmarks 1] {
	clock format $i -format "%T"
}] ", "]

# set minimum width as positioned contents doesn't resize its cell
puts "</td></tr><tr><th>&nbsp;</th><td id=cutplan style=\"min-width: ${planwidth}px\">"

puts "<div style=\"position: relative; top: -10px\">"

proc div {type left right} {
	set width $($right - $left)
	if {$width < 0} {
		# negative values are invalid for CSS width
		set width 0
	}
	puts "<div class=$type style=\"left: ${left}px; width: ${width}px\">
	    $type</div>"
}

set bookmarks {}
if {$invert} {
	append bookmarks "0 "
}
append bookmarks [$ts bookmarks]

set keeping 0
set last 0
set start -1
set newbookmarks "0 "
set cur 0
foreach b $bookmarks {
	if {$start < 0} {
		# Start of a section to keep
		set start $b
		continue
	}
	# End of a section to keep
	set end $b

	set l $($end - $start)
	incr keeping $l
	incr cur $l
	append newbookmarks "[expr $cur + 3] "

	set left $($start * $planwidth / $len)
	set right $($end * $planwidth / $len)

	div cut $last $($left - 1)
	div keep $left $($right - 1)

	set last $right

	set start -1
}

if {$start > 0} {
	# Still in a keep section...
	incr keeping $($len - $start)
	set left $($start * $planwidth / $len)
	div cut $last $($left - 1)
	div keep $left $planwidth
} else {
	div cut $last $planwidth
}

if {$cur > $keeping - 8 && $keeping - 8 > 0} {
	set newbookmarks [lreplace $newbookmarks end end $($keeping - 8)]
}

set keepperc $($keeping * 100.0 / $len)
set esttime $(int($keeping * 0.025))
if {[$ts get definition] eq "HD"} { set esttime $($esttime * 4) }

puts "
</div>
</td></tr>
<tr><th>Keeping:</th><td>
[clock format $keeping -format "%T"] ([format "%.2f" $keepperc]%)
</td></tr>"

puts "
<tr>
<th title=\"Calculated bookmarks for edit points following crop.\">
New Bookmarks:
</th><td id=newbookmarks>
<span id=bookmarks val=\"$newbookmarks\">
$newbookmarks</span>&nbsp;&nbsp;&nbsp;&nbsp;(
"
puts [join [lmap i $newbookmarks {
    clock format $i -format "%T"
}] ", "]

puts " )</td></tr>"

puts "
<tr id=esttime><th>Time:</th>
<td>Cropping will take around [clock format $esttime -format "%T"]</td></tr>
</table>

<span class=hidden id=params
    file=\"$rfile\"
    perc=\"$keepperc\"
    dir=\"[cgi_quote_url $dir]\"
></span>

<div id=cropdiv style=\"padding: 1em\">
<table><tr>
<td><button id=invert invert=$invert>Invert selection</button></td>
<td><button id=cropit>Perform crop operation</button></td>
<td>
<label id=saveitlabel for=saveit>Save new bookmarks?</label>
<input id=saveit type=checkbox name=saveit checked>
&nbsp;
</td>
</tr></table>
</div>
<button id=back>Back to media list</button>
<button id=save class=\"hidden\">Save New Bookmarks</button>
<div id=results class=\"hidden blood\"></div>

<div id=progressdiv class=hidden>
Cropping: <div id=progressbar></div>
</div>

<div id=output class=\"hidden pre\" style=\"margin-top: 10px\"></div>
</fieldset>
"

