I have a problem with people telling others they should always use a library if possible. I don't have a problem with the implied meaning, I have a problem with the way it's phrased.
This is telling other programmers to be lazy, not just with their amount of work, which is a good thing, but with their skill level, which is usually a bad thing.
There needs to be a new way of phrasing that. Something like: "You should use a library only once you understand the underlying concepts."
The reason I say this is because there isn't a library out there for everything, and you're going to encounter problems on that lower level that you'd normally use a library for; you will need the skills to deal with those problems. Also, most libraries have a few bugs that you won't be able to fix without being able to understand the internal code.
What are you going to do when you've embedded Prototype into every page of your site and suddenly a Prototype bug prevents development? Are you going to recode your entire site?
Use libraries all you want, but don't actually rely on them if at all possible. This doesn't mean you need to take apart the .NET CLR; you have to draw the line somewhere, but there is no reason why you shouldn't know several forms of AJAX if you're into AJAX development.
I mention prototype because I've noticed that nobody cares to learn classic AJAX anymore. They use Prototype, calling classic AJAX obsolete, yet you can't work with the internal code of prototype without knowing classic AJAX.