You should use the standard MySQLi Repeat Region for most applications. The improved one allows more control and allows nesting inside of an existing repeat region, but it won't automatically update the number of rows returned by the recordset. The default is to only return one row.
You can manually update that by changing this line:
$Categories = new WA_MySQLi_RS("Categories",$jay_cms,1);
The 1 at the end is the number of rows in the recordset. You can change that to 0 for all rows, or change it to the number of rows you want returned to be used on the page.