I actually use the id of the div that wraps the content for better performance; using visible is a good idea.
I'm not making the ad calls until the document is ready
I think the Google Publisher Tag also waits for document.ready to be able to make a single-request. By the way, you can load 'http://www.googletagservices.com/tag/js/gpt.js' asynchronously in the header, before any other code. But, for the rest of it, yes you have to wait for document.ready.