var no = 25; //Anzahl der schneeflocken 
var tempo=10 //geschwindigkeit mit der die Flocken fallen
var schritt=1 //schrittweite  mit der die Flocken fallen
//hier die Bilder für die unterschiedlichen Flocken
//alle bilder müssen gleich groß sein
bilder=new Array("snow1.gif","snow2.gif","snow3.gif")//kannst du beliebig erweitern
//hoehe und breite der Bilder angeben !!!!!!!!

bildbreite=50
bildhoehe=50 

//Browserabfrage 
var ns4 = (document.layers) ? 1 : 0; 
var ie4 = (document.all) ? 1 : 0; 
var ns6 = (document.getElementById&&!document.all) ? 1 : 0; 
var pos_ko
if (ns4||ns6)
 { 
//hoehe und Breite des Browserfensterns innen
browserbreite = parseInt(self.innerWidth) 
browserhoehe = parseInt(self.innerHeight) 
}
else if (ie4)
 { 
//hoehe und Breite des Browserfensterns innen
browserbreite = parseInt(document.body.clientWidth) 
browserhoehe = parseInt(document.body.clientHeight) 
} 
pos_ko=new Array()

//schleife zum füllen und erstellen der Flockenfelder 
for (i = 0; i < no; ++ i)
{ 
//zufälliges Bild zuweisen
snowsrc=bilder[Math.floor(Math.random()*bilder.length)]
if(ns4)
document.write("<layer name=\"flocke"+ i +"\" TOP=\"15\" LEFT=\"15px\";><img src='"+snowsrc+"' border=\"0\"></layer>"); 

else
document.write("<div id=\"flocke"+ i +"\" style=\"POSITION:absolute;Z-INDEX:"+ i +";VISIBILITY:visible;TOP:15px; LEFT:15px;\"><img src='"+snowsrc+"' border=\"0\"></div>"); 
init()

} 
//initialisieren der positionswerte und schritte
//function wird beim Start der Seite aufgerufen und bei Größenänderungen
function init()
{
pos_ko[i]=new Array()
pos_ko[i][0] = 0; // Anfangsposition innerhalb der amplitude
pos_ko[i][1] = Math.random()*(browserbreite-bildbreite); //horizontale Anfangsposition der Flocke 
pos_ko[i][2] = Math.random()*(browserhoehe-bildhoehe); //Vertikale Anfangsposition der Flocke 
pos_ko[i][3] = Math.random()*20; // bestimmt die breite der Amplitude 
pos_ko[i][4] =0.02+ Math.random()/10; // Bewegung innerhalb der Amplitude 
pos_ko[i][5] = schritt + Math.random(); // bewegung der Flocke nach unten 
}

function schneefall()
 {
 
//scrollpositionen dazuaddieren
addposy=0
addposx=0
if(document.all)
{
addposy=parseInt(document.body.scrollTop)
addposx=parseInt(document.body.scrollLeft)
}
else
{
addposy=parseInt(window.pageYOffset);
addposx=parseInt(window.pageXOffset);
}
//neue Position für jede Flocke
for (i = 0; i < no; ++ i)
 {
pos_ko[i][2] += pos_ko[i][5]; 
//maximale Browserhoehe erreicht
//Flocke neu Positionieren am oberen Rand 
if (pos_ko[i][2] > browserhoehe-bildhoehe)
 { 
pos_ko[i][1] = Math.random()*(browserbreite-pos_ko[i][3]-(bildbreite/2)); 
pos_ko[i][2] = 0
pos_ko[i][4] =0.02+ Math.random()/10; 
pos_ko[i][5] =schritt + Math.random(); 
} 
pos_ko[i][0] += pos_ko[i][4]; 
if (ie4)
{ 
document.all["flocke"+i].style.pixelTop = pos_ko[i][2]+addposy; 
document.all["flocke"+i].style.pixelLeft = pos_ko[i][1] + pos_ko[i][3]*Math.sin(pos_ko[i][0])+addposx; 
if(browserbreite!=parseInt(document.body.clientWidth)|| browserhoehe!=parseInt(document.body.clientHeight))
{
//browser in Größe verändert?
//werte anpassen und neu initialisieren
browserbreite=parseInt(document.body.clientWidth)
browserhoehe=parseInt(document.body.clientHeight)
init()
}
} 
else if (ns6)
{ 
//browser in Größe verändert?
//werte anpassen und neu initialisieren
document.getElementById("flocke"+i).style.top=pos_ko[i][2]+addposy; 
document.getElementById("flocke"+i).style.left=pos_ko[i][1] + pos_ko[i][3]*Math.sin(pos_ko[i][0])+addposx; 
browserbreite=parseInt(window.innerWidth)
browserhoehe=parseInt(window.innerHeight)

} 
else if(ns4)
{
//browser in Größe verändert?
//werte anpassen und neu initialisieren
document.layers["flocke"+i].top=pos_ko[i][2]+addposy; 
document.layers["flocke"+i].left=pos_ko[i][1] + pos_ko[i][3]*Math.sin(pos_ko[i][0])+addposx; 
browserbreite=parseInt(window.innerWidth)
browserhoehe=parseInt(window.innerHeight)
}
}
//function ruft sich selber nach vorgegebener Zeit wieder auf
schneetimer=setTimeout("schneefall()", tempo); 
} 
// anzeige initialisieren
init()
//schneefall starten
schneefall(); 


