jQuery, nothin’ but love for ya
For the longest time, I was anti-javascript in just about every sense. Once I figured out how to do rollovers with CSS instead of JS, I pretty much abandoned all JS on my work. This was before Ajax was known for more than its grease fighting abilities on pans and other dirty dishes. Needless to say, it was only a matter of time before I had to use Javascript - and it was an absolute disaster. Of course, now I know it was simply my inexperience with Javascript (and more importantly, cross-browser Javascript) that made it such a disaster. Now I know there are great tools already made to do most of this stuff for you.
Enter Prototype & Scriptaculous - A truly awesome set of JS libs. This is one of the older libs around, so there is a great deal of documentation and help available. I played around with it for a few months and made a few things I thought were pretty cool (you probably wouldn’t - I’m easily impressed by myself). Unfortunately, the scripts are fairly large and the effects seem to render somewhat slowly on FF in Linux. Could be me - could be prototype/scriptaculous, but I’m not really interested in finding out. There are other JS libs out there that so the same thing and are lighter weight.
Mootools.js - Another great set of JS libs. With mootools, you can actually choose the components you need and download a custom made JS file that has everything you’ll need. It seems rather young, so there aren’t as many options as with prototype/scriptaculous (one I needed, containment within multiple sortables), but it has a pretty large fanbase and will probably suit most people’s needs. I didn’t get much time to play with mootools before I fell in love with jQuery…
jQuery - My personal favorite thus far. Configuration is a snap, and there are dozens (if not hundreds) of great plugins (table sorter, modal boxes, sortables, etc) available. The plugins themselves are also beyond easy to setup - which wasn’t always the case with prototype. My favorite part - is the speed at which everything loads. I tried a modal box on scriptaculous that took literally 2 seconds to open and render properly. That might seem low, but the same thing happens almost instantly with jQuery. That’s enough to seal the deal for me.
I might also be just a little biased. CodeIgniter is going to have native libraries for jQuery, so you’ll be able to interact with the JS layer from your PHP layer. That’ll be nice. You Rails kids can keep your prototype.