User:Mattman243/js/snow.js

From Guild Wars Wiki
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
function initsnow() {

	// Set the number of snowflakes (more than 30 - 40 not recommended)
	var snowmax=35;
	
	// Set the colors for the snow. Add as many colors as you like
	var snowcolor=new Array('#FFFFFF','#CCFFCC','#FFCCCC');
	
	// Set the fonts, that create the snowflakes. Add as many fonts as you like
	var snowtype=new Array('Arial Black','Arial Narrow','Times','Comic Sans MS');
	
	// Set the letter that creates your snowflake (recommended: * )
	var snowletter='*';
	
	// Set the speed of sinking (recommended values range from 0.3 to 2)
	var sinkspeed=0.4;
	
	// Set the maximum-size of your snowflakes
	var snowmaxsize=22;
	
	// Set the minimal-size of your snowflakes
	var snowminsize=8;
	
	/*
	 * NO CONFIGURATION BELOW HERE
	 */
	
	// Do not edit below this line
	var snow = [];
	var marginbottom;
	var marginright;
	var snow_timer;
	var i_snow = 0;
	var x_mv = [];
	var crds = [];
	var lftrght = [];
	var snowspans = '';
	
	var browserinfos = navigator.userAgent;
	var ie5 = document.all && document.getElementById && !browserinfos.match(/Opera/);
	var ns6 = document.getElementById && !document.all;
	var opera = browserinfos.match(/Opera/);
	var browserok = ie5 || ns6 || opera;
	
	function randommaker(range) {
		return Math.floor(range*Math.random());
	};
	
	for( var i=0; i<=snowmax; i++ ) 
		snowspans += ('<span id="s'+ i +'" style="position:absolute; top:-'+ snowmaxsize +'; left:0;">'+ snowletter +'</span>');
	
	document.body.innerHTML += snowspans;
	
	if (ie5 || opera) {
		marginbottom = document.body.clientHeight;
		marginright  = document.body.clientWidth - 10;
	}
	else if (ns6) {
		marginbottom = window.innerHeight;
		marginright  = window.innerWidth - 10;
	}
	
	var snowsizerange = snowmaxsize - snowminsize;
	
	for (var i=0;i<=snowmax;i++) {
		
		crds[i]    = 0;
    	lftrght[i] = Math.random()*15;
    	x_mv[i]    = 0.03 + Math.random()/10;
		
		snow[i] = document.getElementById('s'+i);
		
		snow[i].style.fontFamily = snowtype[randommaker(snowtype.length)];
		snow[i].size             = randommaker(snowsizerange)+snowminsize;
		snow[i].style.fontSize   = snow[i].size;
		snow[i].style.color      = snowcolor[randommaker(snowcolor.length)];
		snow[i].sink             = sinkspeed*snow[i].size/5;
		snow[i].posx             = randommaker(marginright-snow[i].size);
		snow[i].posy             = randommaker(2*marginbottom-marginbottom-2*snow[i].size);
		snow[i].style.left       = snow[i].posx+'px';
		snow[i].style.top        = snow[i].posy+'px';
	}
	
	function movesnow() {
		
		for (var i=0;i<=snowmax;i++) {
			crds[i] += x_mv[i];
			snow[i].posy += snow[i].sink;
			snow[i].style.left = snow[i].posx + ( lftrght[i] * Math.sin(crds[i]) ) +'px';
			snow[i].style.top  = snow[i].posy +'px';
	
			if (snow[i].posy >= marginbottom - 4 * snow[i].size || parseInt(snow[i].style.left) > (marginright - 3 * lftrght[i])) {
				snow[i].posx = randommaker(marginright-snow[i].size);
				snow[i].posy = 0;
			}
		}
		
	};
	
	snow_timer = setInterval(movesnow,50);
	
};


if( window.addLoadEvent ) {
	// no need to add it...
} else {
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			}
		}
	};
}

addLoadEvent(initsnow);