//
// Display a pre-formated table:
//   tbl - array, where tables items exist
//   ipp - numeric, items per page to display
//   nav - true/false, show navigation bar?
//
//  CSS NOTE: class=tblnav
//
function dispTbl(tbl, ipp, nav, flt) {
	var st;	// start of display
	var nd;	// end of display
	var np;	// next page
	var qs = getArgs();
	var ts = 0;

	if (qs['ts'] > 0) { 
		ts = parseInt(qs['ts']);
	}
	
	np = ipp; // temp hack for next page (np)
	
	// Display in reverse order
	// How many items per page?
	if (ipp == -1) { 
		st = ts; 
		nd = tbl.length;
	} else {
		st = ts;
		nd = parseInt(np)+parseInt(st);
		if (nd > tbl.length) { 
			nd = tbl.length; 
		}
	}
	
	// Check to see if there is a filter
	var pt_fo = qs['fo'];
	var pt_fv = qs['fv'];
	var pt_ff = flt;
	if ((flt != '') && pt_fv && pt_fo) {
		
		var ftbl = new Array(tbl.length);
		var ft = 0;
		var fltbeg = '<!--*'+flt+'*';
		var fltend = '*'+flt+'*-->';
		for (var i=0; i<tbl.length; i++) {
			var pos1 = tbl[i].indexOf(fltbeg);	// Look for "name=value"		
			var pos2 = tbl[i].indexOf('*'+flt+'*-->'); 	// Look for "name=value"		
			//if (pos1 == -1) continue; 				// if not found, skip to next
			var av = tbl[i].substring(pos1+fltbeg.length, pos2);
			
			if (av == pt_fv) {
				ftbl[ft++] = tbl[i].substring(0, pos1);	// Extract the value
			}
		}		

		// Display the filtered table items
		for (var i=0; i<ft; i++) { 
			document.write(ftbl[i]); 
		}
		var nav_total = ftbl.length;
	} else {
		// Display the unfiltered table items
		for (var i=st; i<nd; i++) { 
			document.write(tbl[i]); 
		}
		var nav_total = tbl.length;
	}
	
	// Display navigation bar
	if (nav) {
		var nav_ipp   = ipp;
		var nav_start = ts;
		
		if ((nav_start < 0) | (nav_start > nav_total)) {
			nav_start = 0;
		}
		
		while (parseInt(nav_start) % parseInt(nav_ipp)) {
			nav_start--;
		}
		var nav_last_pg = (parseInt(nav_total) / parseInt(nav_ipp))+1;
		var nav_curr_pg = (parseInt(nav_start) / parseInt(nav_ipp))+1;
		if (nav_curr_pg == nav_last_pg) {
			nav_ipp = parseInt(nav_total) % parseInt(nav_ipp);
		}
		var nav_prev = parseInt(nav_start - ipp);
		var nav_next = parseInt(nav_start + ipp);
		
		var prev_pg = '';
		var next_pg = '';
		
		var sortfld = '';
		
		if (nav_curr_pg > 1) { 
			prev_pg = '<a href="'+cinch+'?ts=0">First</a> <a href="'+cinch+'?sf='+sortfld+'&ts='+nav_prev+'&fv='+pt_fv+'&ff='+pt_ff+'&fo='+pt_fo+'"><<</a>';
		}
		if (nav_last_pg > nav_curr_pg) {
			next_pg = '<a href="'+cinch+'?sf='+sortfld+'&ts='+nav_next+'&fv='+pt_fv+'&ff='+pt_ff+'&fo='+pt_fo+'">>></a> <a href="'+cinch+'?sf='+sortfld+'&ts='+nav_total+'&fv='+pt_fv+'&ff='+pt_ff+'&fo='+pt_fo+'">Last</a>';
		}
		document.write('<table width=100%><tr><td align=right class=tblnav>'+prev_pg+' '+nav_curr_pg+' of '+nav_last_pg+' pages / '+nav_ipp+' of '+nav_total+' items '+next_pg+'</td></tr></table>');
	}
}

function getArgs() {
	var args = new Object();
	var query = location.search.substring(1); 
	var pairs = query.split("&"); 
	
	// Begin loop through the querystring
	for(var i = 0; i < pairs.length; i++) {

		var pos = pairs[i].indexOf('='); 			// Look for "name=value"		
		if (pos == -1) continue; 					// if not found, skip to next
		var argname = pairs[i].substring(0,pos);	// Extract the name			
		var value = pairs[i].substring(pos+1); 		// Extract the value		
		args[argname] = unescape(value); 			// Store as a property
	}
	return args;
}
