
var loadStartFlag = false;
var points = [];
var SLCanvas;
var time = 0;

var xapPath = "xap/contents.xap";
var xapObject = new XAPObject("contents", xapPath, 946, 950);
xapObject.initParams = getXapSettings();
xapObject.splashScreenSource = "xap/SplashScreen.xaml";
xapObject.noPluginCode = ''
	+ '<div><table width="946" cellpadding="0" cellspacing="0" border="0">'
	+ '<tr><td><img src="imgs/no_plugin_r1_c1.jpg" width="946" height="244" alt="Microsoft Silverlight 2をインストールして、このサイトでの新しい体験をお楽しみください。" /></td></tr>'
	+ '<tr><td><table cellpadding="0" cellspacing="0" border="0"><tr>'
	+ '<td><img src="imgs/no_plugin_r2_c1.jpg" width="364" height="65" /></td>'
	+ '<td><a href="http://go.microsoft.com/fwlink/?LinkID=124807" title="Microsoft Silverlight インストール"><img src="imgs/no_plugin_r2_c2.jpg" width="220" height="65" border="0" /></a></td>'
	+ '<td><img src="imgs/no_plugin_r2_c3.jpg" width="362" height="65" /></td>'
	+ '</tr></table></td></tr>'
	+ '<tr><td><img src="imgs/no_plugin_r3_c1.jpg" width="946" height="136" /></td></tr>'
	+ '</table></div>';

xapObject.onError = null;
xapObject.onSourceDownloadProgress = xapOnSourceDownloadProgress;
xapObject.onSourceDownloadComplete = xapOnSourceDownloadComplete;
var xap = xapObject.embedXAP();

Timeline.start(30);
Timeline.add(looping);

var Perticle = function(id, image)
{
	if(image)
	{
		this.target = image;
		this.id = id;
		var matrix = image.RenderTransform.Matrix;
		this.angle = Math.PI * 2 / 7 * id;
		this.ox = this.tx = this.x = matrix.OffsetX * 3;
		this.oy = this.ty = this.y = matrix.OffsetY * 3;
		this.oz = this.tz = this.z = 800;
		this.alpha = 0.0;
		this.scale = 0.0;
	}
}
Perticle.prototype.update = function()
{
	if(this.target)
	{
		this.target.Opacity = this.alpha;
		var focal = 280;
		var offsetZ = 0;
		var s = focal / (focal + this.z + offsetZ);
        var nx = this.x * s;
		var ny = this.y * s;
		this.scale = s;
		
		var w = 40 * s * 0.5;
		var matrix = this.target.RenderTransform.Matrix;
		matrix.M11 = matrix.M22 = s;
		matrix.OffsetX = nx - w;
		matrix.OffsetY = ny - w;
		this.target.RenderTransform.Matrix = matrix;
	}
}

function GetPreloadParticles()
{
	return {time: time, items: points};
}

function xapOnInit(sender, args)
{
	SLCanvas = sender.findName("LayoutRoot");
	
	progressSetup(sender);
}

function xapOnSourceDownloadProgress(sender, args)
{
	if(!loadStartFlag)
	{
		loadStartFlag = true;
		xapOnInit(sender, args);
	}
}

function xapOnSourceDownloadComplete(sender, args)
{
	Timeline.remove(looping);
}


function looping()
{
	time++;
	var total = points.length;
	for (var i = 0; i < total; i++)
	{
		var path = points[i];
		path.Opacity -= path.Opacity * 0.065;
		if (time % total == i)
		{
			path.Opacity = 1.0;
		}
	}
	
}

function showFullContents(){}


function progressSetup(sender)
{
	points = [];
	var plugin = sender.getHost();
    var cscreen = sender.findName("Screen");
    var n = 64;
	for(var i=0;i<n;i+=2)
	{
		var xaml = this.createObject(n, i, 0, 0);
		var path = plugin.content.createFromXaml(xaml, false);
		path.Opacity = 0.0;
		points.push(path);
		cscreen.children.add(path);
	}
}

function createObject(total, index)
{
	var length = total;
	var r = Math.PI * 2 / length;
	var angle1 = r * index;
	var angle2 = r * (index + 1);
	
	var x1 = Math.cos(angle1) * 9;
	var y1 = Math.sin(angle1) * 9;
	var x2 = Math.cos(angle1) * 25;
	var y2 = Math.sin(angle1) * 25;
	var x3 = Math.cos(angle2) * 25;
	var y3 = Math.sin(angle2) * 25;
	var x4 = Math.cos(angle2) * 9;
	var y4 = Math.sin(angle2) * 9;

	var pattern = [];
	pattern[0] = {x:x1, y:y1};
	pattern[1] = {x:x2, y:y2};
	pattern[2] = {x:x3, y:y3};
	pattern[3] = {x:x4, y:y4};
	
	var minX = x1;
	if(minX > x2) minX = x2;
	if(minX > x3) minX = x3;
	if(minX > x4) minX = x4;
	var minY = y1;
	if(minY > y2) minY = y2;
	if(minY > y3) minY = y3;
	if(minY > y4) minY = y4;
	
	var data = plottingPath(pattern, true);
	var color = "#FF82b6d8";
	var path = '<Path Fill="{FILL_COLOR}" Stretch="Fill" Canvas.Left="{LEFT}" Canvas.Top="{TOP}" Data="{DATA}"/>';
	
	path = path.replace("{FILL_COLOR}", color);
	path = path.replace("{DATA}", data);
	path = path.replace("{LEFT}", minX);
	path = path.replace("{TOP}", minY);
	return path;
}

function plottingPath(points, isClosed)
{
	var d = "";
	var n = points.length;
	for(var i=0;i<n;i++)
	{
		var p = points[i];
		if(i==0) d += "M";
		if(i==1) d += "L";
		d += p.x + "," + p.y + " ";
	}
	if(isClosed) d += "z";
	return d;
}

