Najpierw doprowadź swój kod do porządku i zlikwiduj SYF. Nie dało się użyć obiektów prototypowych i trzymać w jednej tablicy referencje do nich, zamiast 6 dużych tablic symulujących kontener?
czlowiek = { rozmiarInteresu: 5, wzrost: 140, imie: "Jan Kowalski" }
Pod `czlowiek` tworzy się obiekt zawierający trzy właściwości.
czlowiek.rozmiarInteresu // 5
czlowiek.wzrost // 140
czlowiek.imie // "Jan Kowalski"
Referencje do obiektów można wrzucać w tablicę, wtedy używasz jednej tablicy zamiast 6 i piszesz znacznie czytelniej.
SNOW_dx = new Array();
SNOW_xp = new Array();
SNOW_yp = new Array();
SNOW_am = new Array();
SNOW_stx = new Array();
SNOW_sty = new Array();
Tak to można najwyżej wzorki na papierze toaletowym nazywać, a jak już się tak nazywa to się pisze najnormalniej w świecie komentarze.
Do rzeczy: Nie używaj do takich spraw `document.write`, tylko wstawiaj elementy bezpośrednio do DOM lub w ostateczności przez .innerHTML do jakiegoś kontenera. Druga sprawa, że masz błąd logiczny. Jeśli dwa płatki w tym samym czasie dojdą do krawędzi to stworzy się tylko jeden.
if (SNOW_NEW > 0){
//...
SNOW_no=SNOW_no+SNOW_NEW;
SNOW_NEW=0;
Zmienna SNOW_NEW jest inkrementowana w pętli. Kiedy dwa (lub więcej) płatków śniegu jednocześnie dojdą do krawędzi spłodzisz sobie jedno (lub więcej) puste miejsce w tablicy, które może oznaczać wyłożenie się skryptu przy próbie odczytu czegokolwiek stamtąd.
Problem pozostawiania płatków śniegu na tej samej wysokości jest związany z właściwością pozycjonowania absolutnego:
An absolute position element is positioned relative to the first parent element that has a position other than static. If no such element is found, the containing block is <html>
Użyj `position: fixed`:
http://www.w3schools.com/css/tryit.asp?filename=trycss_position_fixedAn element with fixed position is positioned relative to the browser window.
Czyli dokładnie to, o co Ci chodzi. Osobiście jednak nie polecałbym wykorzystywania jakiegokolwiek skryptu na płatki śniegu lub wrzucenie razem ze skryptem przycisku umożliwiającego wyłączenie tego nie zawsze przyjemnego podczas czytania efektu.