//-----------------------------------
//個々の箱を動かす
//-----------------------------------
// 箱1
red.onEnterFrame = function(){
	// 移動?
	if( _global.comStatus == 'move' ){
		hakoCheckAndMove( _global.hako[ HAKO1 ], HAKO1 );
	}
};

// 箱2
blue.onEnterFrame = function(){
	//移動?
	if( _global.comStatus == 'move' ){
		hakoCheckAndMove( _global.hako[ HAKO2 ], HAKO2 );
	}
};

// 箱3
white.onEnterFrame = function(){
	//移動?
	if( _global.comStatus == 'move' ){
		hakoCheckAndMove( _global.hako[ HAKO3 ], HAKO3 );
	}
};

// 箱4
yellow.onEnterFrame = function(){
	//移動?
	if( _global.comStatus == 'move' ){
		hakoCheckAndMove( _global.hako[ HAKO4 ], HAKO4 );
	}
};

//----------------------------
//箱の移動確認と移動
//----------------------------
function hakoCheckAndMove( obj:MovieClip, HakoNumber:Number){
	var columnFrom:String;
	var columnTo:String;
	var rowFrom:String;
	var rowTo:String;
	var nextPOS:String;

	// 移動?
	if( _global.currentPOS[HakoNumber].pos != _global.nextPOS[HakoNumber].pos ){
	//行き先を分離して取出す
		columnFrom = _global.currentPOS[HakoNumber].pos.charAt(0,1);
		rowFrom = _global.currentPOS[HakoNumber].pos.charAt(1,1);
		columnTo = _global.nextPOS[HakoNumber].pos.charAt(0,1);
		rowTo = _global.nextPOS[HakoNumber].pos.charAt(1,1);

		//
		//同一棒の移動?
		if( columnFrom == columnTo ){
			//同一棒だったらそのまま最終目標を設定
			nextPOS = columnTo+rowTo;

		//
		//いまどこにいるか
		} else if( rowFrom != 'x' ){
			//上空に移動
			nextPOS = columnFrom + 'x';

		//
		//上空だったら
		} else if( rowFrom == 'x' ){
			//最終目標の上空に移動
			nextPOS = columnTo + 'x';
		}

		//
		//移動
		hakoMove( obj, HakoNumber, nextPOS );
	}
return;
};

//----------------------------
//各箱を動かす
//----------------------------
function hakoMove(obj:MovieClip, HakoNumber:Number, to:String):String{
	var fromX:Number;
	var fromY:Number;
	var toX:Number;
	var toY:Number;
	var xy:Number;
	var tmpMOVEVALUE:Number;

// from座標取得
	fromX = obj._x;
	fromY = obj._y;

// to各座標の取得
	toX = getMtx( to.charAt(0,1), 'x' );
	if( toX == '' ){
		trace("moveNG x");
		return;
	}

	toY = getMtx( to.charAt(1,1), 'y' );
	if( toY == '' ){
		trace("moveNG y");
		return;
	}

//
// 移動処理
//
	if( fromX == toX && fromY == toY ){
		//
		//移動終了ならカレント位置を変更
		_global.currentPOS[HakoNumber].pos = to;
		//
		//最終位置にきたか?  --ax,bx,cxは過渡的な最終位置
		if( to.charAt(1,1) != 'x' ){
			//
			//透明度を戻す
//			obj._alpha = 100;
			//
			//最前面にする
			setDepth( obj );
//			obj.swapDepths( _global.depth++ );

			//ステータス変更
			if( _global.comStatus == 'move' ){
				_global.comStatus = 'stick';
			}
		}
		//
		//はさみの移動
		stickCheckAndMove( sc_open );

		return to;
	}

	//
	//移動中の箱の透明度を変化させる
//	obj._alpha = 50;

	//
	//箱の移動量を取得
	tmpMOVEVALUE = _global.MOVEVALUE;

//
//x座標　減速しない
//
	if( fromX < toX ){		//右移動
		obj._x += tmpMOVEVALUE;
		if( obj._x > toX ){
		//
		//行き過ぎたら戻して残り全部移動
			obj._x -= tmpMOVEVALUE;
			obj._x += ( toX - obj._x );
		}
	}else if ( fromX > toX ){		//左移動
		obj._x -= tmpMOVEVALUE;
		if( obj._x < toX ){
		//
		//行き過ぎたら戻して残り全部移動
			obj._x += tmpMOVEVALUE;
			obj._x -= ( obj._x - toX );
		}
	}
//
//y座標　下向きだけ減速する
//
	if ( fromY < toY ){			//下向き移動
		obj._y += tmpMOVEVALUE;
		if( obj._y > toY ){
		//
		//行き過ぎたら戻して残りの半分移動(ブレーキをかける)
			obj._y -= tmpMOVEVALUE;
			obj._y += ( toY - obj._y );

//			xy = math.round( ( toY - obj._y ) /2 );
//			obj._y += xy;
		}
	}else if ( fromY > toY ){			//上向移動
		obj._y -= tmpMOVEVALUE;
		if( obj._y < toY ){
		//
		//行き過ぎたら戻して残り分移動
			obj._y += tmpMOVEVALUE;
			obj._y -= ( obj._y - toY );
		}
	}

	//
	//はさみの移動
	stickCheckAndMove( sc_open );

}
