var snowStorm=null;function SnowStorm(){var s=this;var storm=this;this.timers=[];this.flakes=[];this.disabled=false;this.terrain=[];var usePNG=false;var imagePath='/img/snow/';var flakeTypes=6;var flakesMax=60;var flakesMaxActive=60;var vMax=2.5;var flakeWidth=5;var flakeHeight=5;var flakeBottom=null;var snowCollect=false;var showStatus=false;var isIE=(navigator.appName.toLowerCase().indexOf('internet explorer')+1);var isWin9X=(navigator.appVersion.toLowerCase().indexOf('windows 98')+1);var isOpera=(navigator.userAgent.toLowerCase().indexOf('opera ')+1||navigator.userAgent.toLowerCase().indexOf('opera/')+1);if(isOpera)isIE=false;var screenX=null;var screenY=null;var scrollY=null;var vRndX=null;var vRndY=null;function rnd(n,min){if(isNaN(min))min=0;return(Math.random()*n)+min;}
this.randomizeWind=function(){vRndX=plusMinus(rnd(vMax,0.2));vRndY=rnd(vMax,0.2);if(this.flakes){for(var i=0;i<this.flakes.length;i++){if(this.flakes[i].active)this.flakes[i].setVelocities();}}}
function plusMinus(n){return(parseInt(rnd(2))==1?n*-1:n);}
this.resizeHandler=function(){if(window.innerWidth||window.innerHeight){screenX=window.innerWidth-(!isIE?24:2);screenY=(flakeBottom?flakeBottom:window.innerHeight);}else{screenX=(document.documentElement.clientWidth||document.body.clientWidth||document.body.scrollWidth)-(!isIE?8:0);screenY=flakeBottom?flakeBottom:(document.documentElement.clientHeight||document.body.clientHeight||document.body.scrollHeight);}
s.scrollHandler();}
this.scrollHandler=function(){scrollY=(flakeBottom?0:parseInt(window.scrollY||document.documentElement.scrollTop||document.body.scrollTop));if(isNaN(scrollY))scrollY=0;if(!flakeBottom&&s.flakes){for(var i=0;i<s.flakes.length;i++){if(s.flakes[i].active==0)s.flakes[i].stick();}}}
this.freeze=function(){if(!s.disabled){s.disabled=1;}else{return false;}
if(!isWin9X){clearInterval(s.timers);}else{for(var i=0;i<s.timers.length;i++){clearInterval(s.timers[i]);}}}
this.resume=function(){if(s.disabled){s.disabled=0;}else{return false;}
s.timerInit();}
this.stop=function(){this.freeze();for(var i=0;i<this.flakes.length;i++){this.flakes[i].o.style.display='none';}
removeEventHandler(window,'scroll',this.scrollHandler,false);removeEventHandler(window,'resize',this.resizeHandler,false);}
this.SnowFlake=function(parent,type,x,y){var s=this;var storm=parent;this.type=type;this.x=x||parseInt(rnd(screenX-12));this.y=(!isNaN(y)?y:-12);this.vX=null;this.vY=null;this.vAmpTypes=[2.0,1.0,1.25,1.0,1.5,1.75];this.vAmp=this.vAmpTypes[this.type];this.active=1;this.o=document.createElement('img');this.o.style.position='absolute';this.o.style.width=flakeWidth+'px';this.o.style.height=flakeHeight+'px';this.o.style.fontSize='1px';this.o.style.zIndex=2;this.o.src=imagePath+this.type+(pngHandler.supported&&usePNG?'.png':'.gif');document.body.appendChild(this.o);if(pngHandler.supported&&usePNG)pngHandler.transform(this.o);this.refresh=function(){this.o.style.left=this.x+'px';this.o.style.top=this.y+'px';}
this.stick=function(){s.o.style.top=(screenY+scrollY-flakeHeight-storm.terrain[Math.floor(this.x)])+'px';}
this.vCheck=function(){if(this.vX>=0&&this.vX<0.2){this.vX=0.2;}else if(this.vX<0&&this.vX>-0.2){this.vX=-0.2;}
if(this.vY>=0&&this.vY<0.2){this.vY=0.2;}}
this.move=function(){this.x+=this.vX;this.y+=(this.vY*this.vAmp);this.refresh();if(this.vX&&screenX-this.x<flakeWidth+this.vX){this.x=0;}else if(this.vX<0&&this.x<0-flakeWidth){this.x=screenX-flakeWidth;}
var yDiff=screenY+scrollY-this.y-storm.terrain[Math.floor(this.x)];if(yDiff<flakeHeight){this.active=0;if(snowCollect){var height=[0.75,1.5,0.75];for(var i=0;i<2;i++){storm.terrain[Math.floor(this.x)+i+2]+=height[i];}}
this.o.style.left=((this.x-(!isIE?flakeWidth:0))/screenX*100)+'%';if(!flakeBottom){this.stick();}}}
this.animate=function(){this.move();}
this.setVelocities=function(){this.vX=vRndX+rnd(vMax*0.12,0.1);this.vY=vRndY+rnd(vMax*0.12,0.1);}
this.recycle=function(){this.setVelocities();this.vCheck();this.x=parseInt(rnd(screenX-flakeWidth-1));this.y=parseInt(rnd(640)*-1)-flakeHeight;this.active=1;}
this.recycle();this.refresh();}
this.snow=function(){var active=0;var used=0;var waiting=0;for(var i=this.flakes.length-1;i>0;i--){if(this.flakes[i].active==1){this.flakes[i].animate();active++;}else if(this.flakes[i].active==0){used++;}else{waiting++;}}
if(snowCollect&&!waiting){this.createSnow(flakesMaxActive,true);}
if(active<flakesMaxActive){with(this.flakes[parseInt(rnd(this.flakes.length))]){if(!snowCollect&&active==0){recycle();}else if(active==-1){active=1;}}}}
this.createSnow=function(limit,allowInactive){if(showStatus)window.status='Creating snow...';for(var i=0;i<limit;i++){this.flakes[this.flakes.length]=new this.SnowFlake(this,parseInt(rnd(flakeTypes)));if(allowInactive||i>flakesMaxActive)this.flakes[this.flakes.length-1].active=-1;}
if(showStatus)window.status='';}
this.timerInit=function(){this.timers=(!isWin9X?setInterval("snowStorm.snow()",20):[setInterval("snowStorm.snow()",75),setInterval("snowStorm.snow()",25)]);}
this.init=function(){for(var i=0;i<8192;i++){this.terrain[i]=0;}
this.randomizeWind();this.createSnow(snowCollect?flakesMaxActive:flakesMaxActive*2);addEventHandler(window,'resize',this.resizeHandler,false);addEventHandler(window,'scroll',this.scrollHandler,false);this.timerInit();}
this.resizeHandler();if(screenX&&screenY&&!this.disabled){this.init();}}
function snowStormInit(){setTimeout("snowStorm = new SnowStorm()",500);}
var addEventHandler=null;var removeEventHandler=null;function postLoadEvent(eventType){return((eventType.toLowerCase().indexOf('load')>=0)&&document.body);}
function addEventHandlerDOM(o,eventType,eventHandler,eventBubble){if(!postLoadEvent(eventType)){o.addEventListener(eventType,eventHandler,eventBubble);}else{eventHandler();}}
function removeEventHandlerDOM(o,eventType,eventHandler,eventBubble){o.removeEventListener(eventType,eventHandler,eventBubble);}
function addEventHandlerIE(o,eventType,eventHandler){if(!eventType.indexOf('on')+1)eventType='on'+eventType;if(!postLoadEvent(eventType)){o.attachEvent(eventType,eventHandler);}else{eventHandler();}}
function removeEventHandlerIE(o,eventType,eventHandler){if(!eventType.indexOf('on')+1)eventType='on'+eventType;o.detachEvent(eventType,eventHandler);}
function addEventHandlerOpera(o,eventType,eventHandler,eventBubble){if(!postLoadEvent(eventType)){(o==window?document:o).addEventListener(eventType,eventHandler,eventBubble);}else{eventHandler();}}
function removeEventHandlerOpera(o,eventType,eventHandler,eventBubble){(o==window?document:o).removeEventListener(eventType,eventHandler,eventBubble);}
if(navigator.userAgent.toLowerCase().indexOf('opera ')+1||navigator.userAgent.toLowerCase().indexOf('opera/')+1){addEventHandler=addEventHandlerOpera;removeEventHandler=removeEventHandlerOpera;}else if(document.addEventListener){addEventHandler=addEventHandlerDOM;removeEventHandler=removeEventHandlerDOM;}else if(document.attachEvent){addEventHandler=addEventHandlerIE;removeEventHandler=removeEventHandlerIE;}else{addEventHandler=function(o,eventType,eventHandler,eventBubble){o['on'+eventType]=eventHandler;}
removeEventHandler=function(o,eventType,eventHandler,eventBubble){}}
function PNGHandler(){var self=this;this.na=navigator.appName.toLowerCase();this.nv=navigator.appVersion.toLowerCase();this.isIE=this.na.indexOf('internet explorer')+1?1:0;this.isWin=this.nv.indexOf('windows')+1?1:0;this.isIEMac=(this.isIE&&!this.isWin);this.isIEWin=(this.isIE&&this.isWin);this.ver=this.isIE?parseFloat(this.nv.split('msie ')[1]):parseFloat(this.nv);this.isMac=this.nv.indexOf('mac')+1?1:0;this.isOpera=(navigator.userAgent.toLowerCase().indexOf('opera ')+1||navigator.userAgent.toLowerCase().indexOf('opera/')+1);if(this.isOpera)this.isIE=false;this.filterID='DXImageTransform.Microsoft.AlphaImageLoader';this.supported=false;this.transform=self.doNothing;this.filterMethod=function(o){if(o.nodeName!='IMG'){var b=o.currentStyle.backgroundImage.toString();o.style.backgroundImage='none';var i1=b.indexOf('url("')+5;var newSrc=b.substr(i1,b.length-i1-2).replace('.gif','.png');o.style.writingMode='lr-tb';o.style.filter="progid:"+self.filterID+"(src='"+newSrc+"',sizingMethod='"+(o.className.indexOf('scale')+1?'scale':'crop')+"')";}else if(o.nodeName=='IMG'){var newSrc=o.getAttribute('src').replace('.gif','.png');o.src='image/none.gif';o.style.filter="progid:"+self.filterID+"(src='"+newSrc+"',sizingMethod="+(o.className.indexOf('scale')+1?'scale':'crop')+"')";o.style.writingMode='lr-tb';}}
this.pngMethod=function(o){bgImage=this.getBackgroundImage(o);if(bgImage){o.style.backgroundImage='url('+bgImage.replace('.gif','.png')+')';}else if(o.nodeName=='IMG'){o.src=o.src.replace('.gif','.png');}else if(!bgImage){}}
this.getBackgroundImage=function(o){var b,i1;var bgUrl=null;if(o.nodeName!='IMG'&&!(this.isIE&&this.isMac)){if(document.defaultView){if(document.defaultView.getComputedStyle){b=document.defaultView.getComputedStyle(o,'').getPropertyValue('background-image');i1=b.indexOf('url(')+4;bgUrl=b.substr(i1,b.length-i1-1);}else{return false;}}else{return false;}}
return bgUrl;}
this.doNothing=function(){}
this.supportTest=function(){if(this.isIE&&this.isWin&&this.ver>=5.5){self.transform=self.filterMethod;}else if(!this.isIE&&this.ver<5){self.transform=null;return false;}else if(!this.isIE&&this.ver>=5||(this.isIE&&this.isMac&&this.ver>=5)){self.transform=self.pngMethod;}else{self.transform=null;return false;}
return true;}
this.init=function(){this.supported=this.supportTest();}}
function getElementsByClassName(className,oParent){var doc=(oParent||document);var matches=[];var nodes=doc.all||doc.getElementsByTagName('*');for(var i=0;i<nodes.length;i++){if(nodes[i].className==className||nodes[i].className.indexOf(className)+1||nodes[i].className.indexOf(className+' ')+1||nodes[i].className.indexOf(' '+className)+1){matches[matches.length]=nodes[i];}}
return matches;}
var pngHandler=new PNGHandler();pngHandler.init();addEventHandler(window,'load',snowStormInit,false);
/*
   DHTML PNG Snowstorm! OO-style Jascript-based Snow effect
   --------------------------------------------------------
   Version 1.2.20041121a
   Dependencies: GIF/PNG images (0 through 4.gif/png)
   Code by Scott Schiller - www.schillmania.com
   --------------------------------------------------------
*/


