file stat [info script] statinfo

if { ! [info exists ::mtime] || $::mtime < $statinfo(mtime) } {
    proc ::getorder { } {
	set fl [open order.txt]
	set data [split [read $fl] \n]
	close $fl
	foreach ln $data {
	    lappend ret [string trim $ln]
	}

	return $ret
    }

    proc ::makeindex {} {
	puts "<ul>"
	set i 0
	foreach fl [getorder] {
	    set flttml "$fl.rvt?index=$i"
	    puts [subst {
		<li style="font-size:small ; list-style-type:square ; list-style-image: none"><a href="$flttml">$fl</a></li>
	    }]
	    incr i
	}
	puts "</ul>"
    }

    proc ::nexturl { } {
	return "[lindex $::urls $::next].rvt?index=$::next"
    }

    proc ::prevurl { } {
	return "[lindex $::urls $::prev].rvt?index=$::prev"
    }

    proc ::prevnext { title } {
	set ::urls [getorder]
	if { [var exists index] } {
	    set ::index [var get index]
	    if { ! [string is integer $::index] } {
		error "Index must be a number!"
	    }
	} else {
	    set ::index 0
	}

	set ::next [expr $::index + 1]
	set ::prev [expr $::index - 1]
	if { $::next >= [llength $::urls] } {
	    incr ::next -1
	}
	if { $::prev < 0 } {
	    incr ::prev
	}

	set str {
	    <table align="center" width="90%">
	    <tr>
	    <td align="left">
	    <a href="[prevurl]"><img src="left.gif" alt="previous"></a>
	    </td>
	    <td align="center">
	    $title
	    </td>
	    <td align="right">
	    <a href="[nexturl]"><img src="right.gif" alt="next"></a>
	    </td>
	    </tr>
	    </table>
	}
	puts [subst $str]
    }

    proc ::footer {} {
	puts {
	    <p align="center" style="font-size:small">
	    <a href="list.rvt">INDEX</a>
	    </p>
	}
    }

    set ::mtime $statinfo(mtime)
}