Darren, I found the actual problem. It wasn't the lack of {} in the grep method - that was a red herring. (There's nothing wrong with the grep method that {} would fix.)
Your page is loading script.aculo.us effects.js v1.7.1_beta3. This file defines Array.prototype.call as a function. That causes massive confusion inside jQuery 1.2.6, but not in 1.2.3. The reason is the change that was made to jQuery's makeArray() function in 1.2.6 - if the code is passed an array that has a call method, it mistakenly thinks it is not an array and does the wrong thing - line 1135 of jquery-1.2.6.js is the pertinent code here. (The correct fix isn't immediately obvious, but I'll file a ticket on this.) As it happens, the current version of script.aculo.us effects.js, v1.8.1, no longer defines Array.prototype.call. Can you upgrade to the latest version of prototype.js and the various script.aculo.us files you're including? That would fix the problem. But are you actually using script.aculo.us and prototype.js in your code at all? I noticed that there is no jQuery.noConflict() call in your code, which means that including jQuery would break any prototype/script.aculo.us code because of the conflict over the $() function. I tried removing all the script.aculo.us and prototype script tags and didn't see any errors on the page. So if you're not using them, you could just remove these files. -Mike