var total = 8;			//画像の総数
var img;					//画像をいれる配列
var number;					//画像の番号を入れる配列
var index = 0;					//numberのインデックス
var xFront = 600;					//表の制御点のX座標
var xBack = 0;				//裏の制御点のX座標
var dx = -5;				//ｘの増分
var isToFront = false;	//前にまわってきたかどうか
var isMove = true;		//動いているかどうか
var isImgZoomRight = false;	//右へ画像が移動中かどうか
var isImgZoomLeft = false;	//左へ画像が移動中かどうか
var isImgZoomStop = false;	//画像移動が停止されたかどうか

	//画像の番号をいれる配列をつくります
	var i;
	number = new Array(total);
	for (i = 0; i < total; i++){
		number[i] = i;
	}

/* 画像を順番に出したい場合はここから削除 */
	i = total;
	while (i > 1){
		var random = Math.floor(Math.random() * i);
		var work = number[i - 1];
		number[i - 1] = number[random];
		number[random] = work;
		i--;
	}
/* 画像を順番に出したい場合はここまで削除 */

//色を入れる配列を用意します
	var color = new Array(6);
	color[0] = "#FF9999";
	color[1] = "#FFFF99";
	color[2] = "#99FF99";
	color[3] = "#9999FF";
	color[4] = "#FF99FF";
	color[5] = "#99FFFF";

//ロードされたとき
function canvasLoaded(sender, args){

	//すべての画像をロードします
	img = new Array(total);
	for (i = 0; i < total; i++){
		img[i] = new Image(400, 300);
		img[i].src = "slide" + (i + 1) + ".jpg";
	}

	//下の画像をセットします
	sender.findName("imgBack").ImageSource = img[number[index]].src;	
	//上の画像をセットします	
	sender.findName("imgFront").ImageSource = img[number[index]].src;
	//ダミーの画像をセットします	
	sender.findName("imgDamy").Source = img[number[index]].src;
}

//画像をロードする処理
function imageLoading(sender, args){

	//ダミーの画像が読み込まれたら
	if (sender.DownloadProgress == 1.0){

		//テキストを消して見えるようにします
		sender.findName("cnvContents").Opacity = "1.0";
		sender.findName("cnvContents").Cursor = "Hand";
		sender.findName("txtLoading").Opacity = "0.0";

		//スタートします
		timerStart(sender, args);
		colorChange(sender, args);
	}
}

//タイマー
function timerStart(sender, args){

	//画像が隠れそうなとき画像をチェンジします
	//画像を左右に移動します
	if (isToFront){

		//画像交換
		if (xFront == 500){
			//下の画像に今出ている画像をセットします
			sender.findName("imgBack").ImageSource = img[number[index]].src;
			index++;
			if (index == total){
				index = 0;
			}
			//上の画像に次の画像をセットします
			sender.findName("imgFront").ImageSource = img[number[index]].src;
     		//画像チェンジのストーリーボードを開始します
			sender.findName("stbImgChange").begin();
		}

		//画像を右へ移動
		if (xFront == 100){
			sender.findName("stbImgZoomRight").begin();
			isImgZoomRight = true;
		}
    }
	else{

		//画像を左へ移動
		if (xBack == 100){
			sender.findName("stbImgZoomLeft").begin();
			isImgZoomLeft = true;
		}
	}

	//ドームのパスをもとめます
	//楕円の左側のパス
	var string1 = "M 300,0 C 0,0 0,400 300,400 C ";
	//始点の座標
	var string2 = " 300,0";

	//PathにDataを与えます
	var stringFront = string1 + xFront + ",400 " + xFront + ",0" + string2;
	sender.findName("pathFront").Data = stringFront;

	var stringBack = string1 + xBack + ",400 " + xBack + ",0" + string2;
	sender.findName("pathBack").Data = stringBack;

	//楕円が向こう側に行くときは左右反転します
	if (isToFront){
		sender.findName("scaleFront").ScaleX = 1.0;
		sender.findName("scaleBack").ScaleX = 1.0;
	}
	else{
		sender.findName("scaleFront").ScaleX = -1.0;
		sender.findName("scaleBack").ScaleX = -1.0;
	}

	//制御点の位置をずらします
	xFront += dx;
	xBack -= dx;

	//制御点が０以下または600以上になったら増分の符合をかえます
	if (xFront <= 0){
		dx = dx * (-1);
		isToFront = true;

		//前の色を変えます
		var rndColor = Math.floor(Math.random() * 6);
		sender.findName("FrontColor").Color = color[rndColor];
	}
	if (xFront >= 600){
		dx = dx * (-1);
		isToFront = false;

		//後ろの色を変えます
		var rndColor = Math.floor(Math.random() * 6);
		sender.findName("BackColor").Color = color[rndColor];
	}

	//タイマーのストーリーボードを開始します
	sender.findName("stbTimer").begin();
}

//クリックされたとき
function canvasClick(sender, args){

	//動いていたら停止してとまっていたら再開
	if (isMove){
		sender.findName("stbTimer").pause();
		sender.findName("stbMiniBallColorChange").pause();
		isMove = false;
	}
	else{
		sender.findName("stbTimer").resume();
		sender.findName("stbMiniBallColorChange").resume();
		isMove = true;
	}

	//画像が移動中ならとめる
	if (!isImgZoomStop){
		if (isImgZoomRight){
			sender.findName("stbImgZoomRight").pause();
		}
		if (isImgZoomLeft){
			sender.findName("stbImgZoomLeft").pause();
		}
		isImgZoomStop = true;		
	}
	//画像移動が停止中なら再開
	else{
		if (isImgZoomRight){
			sender.findName("stbImgZoomRight").resume();
		}
		if (isImgZoomLeft){
			sender.findName("stbImgZoomLeft").resume();
		}
		isImgZoomStop = false;
	}
}

//小さいボールの色を変える処理
function colorChange(sender, args){

	var rndColor = Math.floor(Math.random() * 6);
	sender.findName("anmSmallColor").To = color[rndColor];

	var rndColor = Math.floor(Math.random() * 6);
	sender.findName("anmRightColor").To = color[rndColor];

	var rndColor = Math.floor(Math.random() * 6);
	sender.findName("anmLeftColor").To = color[rndColor];

	sender.findName("stbMiniBallColorChange").begin();

}

//右へ画像移動が終わったら
function isImgZoomRightToFalse(sender, args){

	isImgZoomRight = false;
}

//左へ画像移動が終わったら
function isImgZoomLeftToFalse(sender, args){

	isImgZoomLeft = false;
}
//2008.3.14 version 1.4 by akko