Not sure what you mean by "it won't kick in till about 2-5 minutes later". Later than what? And what won't kick in? You're starting this onload, which means it won't start until all DOM elements have loaded, including all images, scripts, etc. So if you have advertising code that is taking a long time to load, that could affect this script.
Another approach might be to create a Date object to act as a timestamp, and then periodically sync with that. For example, over time your script will probably take longer than 60 minutes, simply because of the overhead with the script. However, you could keep some separate counter that on every 60th iteration re-synchronizes with the timestamp (creates a new Date object, calculates the difference from your original timestamp, and adjusts the numbers on your countdown appropriately).