A language is not evil because it isn't strongly typed. Just because a language offers that option doesn't mean that you have to use it though. There are a lot of things that languages offer that aren't the best tool in all cases. This is where coding standards come in really helpful
That being said, I think that these could help you out:
- JSLint - this is a linter that has some IDE support to help ensure that your code will adhere to some good standards
- jQuery - this will help to abstract browser differences away so that you don't have to worry about that to cause your site to not work
- QUnit - this is a test suite to aid in development
- JSCoverage - helps to measure code coverage of unit tests.