It looks like what you need is some AJAX to help your page work with server scripts dynamically so that there is no additional page loading required. There will likely need to be a few modifications to your server scripts but it shouldn't be too difficult.
Firstly you do need the client-side AJAX scripting to make this work on that end. I assume these list of filenames is submitted to your cgi script via a form, if not please fill me in on how you are sending this list. Assuming it is a form, what you basically do from here is, rather than submitting the form (via your submit button), replace this with a standard input button that calls upon my [FONT=Courier New]_SubmitForm()[/FONT] function to send the data via AJAX and then receive a response to dynamically update your page.
<script type="text/javascript">
function setReqObj() {
var nAjax;
if(window.XMLHttpRequest) {
nAjax = new XMLHttpRequest();
} else {
nAjax = new ActiveXObject("Microsoft.XMLHTTP");
}
return nAjax;
}
function _SubmitForm() {
var xmlhttp = setReqObj();
if(xmlhttp) {
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState == 4) {
_UpdatePlayTime(xmlhttp.responseText); // This would be a function that edits your page with the time
}
}
var $filenames = document.forms["your_form_name"]["form_field"].value;
var $ajData = "filenames=" + $filenames;
xmlhttp.open("POST", "some/cgi/script.cgi", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send($ajData);
} else {
document.forms["your_form_name"].submit();
}
}
</script>
You would need to edit some of the values to fit your forms name and whatever fields are being read and sent. In the event multiple fields are being used the [FONT=Courier New]$ajData[/FONT] string needs to follow a format like: [FONT=Courier New]"filenames=" + $filenames + "&otherData=" $otherData + "&moreStuff=" + $moreStuff;[/FONT]
Next there would need to be some [FONT=Courier New]_UpdatePlayTime()[/FONT] function that actually changes the proper text on your page. The [FONT=Courier New]xmlhttp.responseText[/FONT] value that is being passed in to this function is what your cgi script would be sending back. Which brings me to the last point which is that your cgi script must be changed so that the return value/output is your 'TOTAL PLAY TIME'. Basically whatever that script outputs will be sent back and stored in the [FONT=Courier New]xmlhttp.responseText[/FONT] value. If it is absolutely necessary that other information is still returned/output then you can always create a format and use the javascript [FONT=Courier New].split()[/FONT] method to break it in to an array so you can properly use the parts you need.
Hopefully this helps, but if you have any other questions feel free to ask.