I will assume you are looking for general assistance and "point me in the general direction" rather than "send me the codes", and respond accordingly.
First, the thing you are asking for is going to require something more than javascript, and will, in fact, be a lot more complicated than you might think. Consider:
Having the timer not refresh when you refresh the page means that you either need to tie it to date/time or you need some form of permanence. The two kinds of permanence you have to work with are cookies and server-side. Cookies are the user-specific version, and would have a large overhead. They're not designed to update as frequently as they'd have to update to achieve reasonable consistency between refreshes. Server-side (where everyone who visits the page at the same time gets the same counter) is potentially doable, but that would mean that you'd have to make the page dynamic on the server side, you'd have to have an independent thread to update the counter, and you'd need to be running near-constant asynch calls in order to keep the page and the server synched. Again, not somethign that's meant to be run on the order of msecs. Tying it to Date/Time (again, everyone gets the same) is cool, and is what most such counters would use, but it runs into another problem.
You've said that you want the timer to go up by a random number. This, unfortunately, shoots tying it to date/time right out of the water, since the date/time method won't record what you've done. You can call rand functions and update appropriately, but there's no way to persist the information between refreshes.
Basically, then, you can give up on the persistence, in which case you can use a rand function for your 1-4, and run it all on the client side, and everything will work fine, or you can give up on the counting randomness, in which case you can tie it to date/time, and everything will work fine, or you can try to handle persistence with cookies or server-side shenanigans, in which case this gets ugly.
the commas are a matter of formatting, and not terribly difficult. I believe there are easy out-of-the-box solutions for that one, and even if not, everything in javascript is handled as a string, and you can insert the commas manually after you have your number.
counting up rather than down is also pretty trivial.