Some suggestions:


 1. Use more whitespaces and semicolons
 2. Initialise Arrays with `[]`

        var snowcolor = ["#aaaacc", "#ddddFF", "#ccccDD"];

 3. Use naming conventions for variables and method names to make them more readable

        initSnow() or init_snow()
        browserInfos or browser_infos

 4. In JavaScript it is recommended to combine several variable declerations. So instead of

        var marginbottom
        var marginright
        var timer

    you can write
 
        var marginbottom,
            marginright,
            timer;

 5. Instead of passing a string to `setTimeout`, you can pass a reference to the function directly

        var timer = setTimeout(movesnow, 50);
        

 6. There are some magic numbers in your code, that you might want to extract into variables.

 7. Since JavaScript doesn't have `final static` variables (afaik), consider marking them via naming conventions. For example:

        var SNOW_MAX_SIZE = 22;

 8. The four if statements inside `initsnow` and `movesnow` seem to be the same, so you could move them to a seperate function. However, you currently have `snowingzone` set to a fixed value and you don't change it. So as it is, the if statements are unnecessary.

 9. Some variable names are rather cryptic: `x_mv`, `lftrght`, etc.

 10. There are unused variables: e.g. `i_snow`

 11. The browser identification and the "calculation" of `browserok` seem to be good candidates for a seperate function.

---

**Update** Added 8. - 11.

If you are feeling confident or want to try static code analysis, you might want to look into something like http://www.jslint.com/ or http://www.jshint.com/ . They can warn you about global variables, unused variables and more.

ad 4) As Schism mentioned, this advices may lead to unwanted global variables if you mix up `,` and `;`. So for example:

    function foo() {
        var a,
            b; // Oops! ; should be ,
            c; // c is now a global variable
    }