﻿var cosRadius = 10;
var cosSpeed = 25;
var snowSpeed = 1.4;
var flakeCount = 49;
var flakeCosRadius = new Array(flakeCount);
var flakeSpeed = new Array(flakeCount);
var flakeName = "dot_";
var flakeScale = Math.random() * (3 / Math.random());
var snowRoot;
var snowAnim;
var parentPage;

function OnSnowLoaded(sender)
{
    //alert("OnSnowLoaded");
    snowRoot = sender.findName("SnowLayer");
    setArrayOfFlakesProperties(null);
    
    snowAnim = sender.findName("SnowAnim");
    snowAnim.SpeedRatio = 0.1;
    
    parentPage = sender.findName("Page");
    //alert(parentPage.name);
    
     snowRoot.Opacity = 0;
        parentPage.findName("Snow0").opacity = 0;
        parentPage.findName("Snow1").opacity = 0;
        parentPage.findName("Snow2").opacity = 0;
        parentPage.findName("Snow3").opacity = 0;
}

function setSnowParams(speed)
{
    snowAnim.stop();
    if(speed == 0)
    {
        snowRoot.Opacity = 0;
        parentPage.findName("Snow0").opacity = 0;
        parentPage.findName("Snow1").opacity = 0;
        parentPage.findName("Snow2").opacity = 0;
        parentPage.findName("Snow3").opacity = 0;
    }
    else
    {
        parentPage.findName("Snow0").opacity = 1.0;
        parentPage.findName("Snow1").opacity = 1.0;
        parentPage.findName("Snow2").opacity = 1.0;
        parentPage.findName("Snow3").opacity = 1.0;
        snowRoot.Opacity = 100;
        snowAnim.SpeedRatio = speed;
        snowAnim.begin();
    }
}

function setArrayOfFlakesProperties(flakeItem)
{	   
    //CustomValues for flakeItem
    
    var index;
    var scale = (Math.random() * 1.1 ) + 0.2;
            
    
    if(flakeItem != null)
    {            
        index = flakeItem.Name.substring(flakeName.length, flakeItem.Name.length);
        
	    flakeSpeed[index] = (Math.random() * snowSpeed ) + 0.2;		 
	    flakeCosRadius[index] = (Math.random() * cosRadius ) + 2;
	    
	    snowRoot.findName("flakeScale_" + index).ScaleX = scale;
	    snowRoot.findName("flakeScale_" + index).ScaleY = scale;
	    
	    return;
    }
    var tmpScale;
    
    //set start values for all flakesItems
    for(y=0; y <= flakeCount;y++)
    {   
        tmpScale = snowRoot.findName("flakeScale_" + y);
        
        tmpScale.ScaleX = (Math.random() * 1.1 ) + 0.2;
        tmpScale.ScaleY = tmpScale.ScaleX;
        
        flakeCosRadius[y] = Math.random() * cosRadius;
        flakeSpeed[y] = (Math.random() * snowSpeed ) + 0.2;	
    }
    
}

function OnSnowCompleted(sender, args)
{      	    
    // alert("OnSnowCompleted");
    for(y=0; y <= flakeCount;y++)
    {
        
        flakePosition(sender.findName(flakeName + y), flakeCosRadius[y], flakeSpeed[y]);
        
    }
    
    snowAnim.begin();
          
}

function flakePosition(flakeItem, flakeCosRadius, flakeSpeed)
{
       
    if(flakeItem.Y >= 500)
    {
        flakeItem.Y = - 120;
        setArrayOfFlakesProperties(flakeItem);
    }
    flakeAnim(flakeItem, flakeCosRadius, flakeSpeed);        
		
}

function flakeAnim(flakeItem, flakeCosRadius, flakeSpeed)
{
    cosRadius = flakeCosRadius;
    flakeItem.Y = flakeItem.Y + flakeSpeed;
	flakeItem.X = Math.cos(flakeItem.Y / cosSpeed) * cosRadius;
}