
//----------------------------
//サーバ通信
//----------------------------
function comServer() {
var currenthakoData:String;
var inputData:String;
var targethakoData:String;

	//
	//現在の箱位置を設定
	currenthakoData = "";
	
	for( i=0; i< _global.HakoCount; i++ ){
		currenthakoData = currenthakoData + _global.Label[ i ].name + _global.currentPOS[ i ].pos;
	}

	//
	//入力文字列を設定
	inputData = commandArea.text;
	//サーバとの通信を行う
	targethakoData = putAndGet( currenthakoData, inputData );
	if( targethakoData == "" ){
		QADisplay ( Answer, "通信エラー 009" );
		return;
	}

return;
}

//----------------------------
//サーバとの通信処理(実体)
//----------------------------
function putAndGet( tableString:String, inputString:String ):String {

	//
	//送信データ設定
	SendData = new LoadVars();
	SendData.table = tableString;
	SendData.input= inputString;
	SendData.addRequestHeader( "Cache-Control","no-cache" ); //キャッシュoff

	var answerString:String = '';
	var seedString:String = '';
	var QAString:String;

	//
	//
	QADisplay ( Answer, "サーバ問合せ中" );

	RcvData = new LoadVars();
	RcvData.onLoad = function(success) {
		if (success) {                            // 通信成功
			this.moveString = RcvData.move;
			_global.moveString = this.moveString;
			this.tableString = RcvData.table;
			_global.tableString = this.tableString;

str = "Table: "
str = str + this.tableString.substr( 0, this.tableString.length -2 );
str = str + " Move: "
str = str + this.moveString.substr( 0, this.moveString.length );
//debug.text = str;

			if(  this.tableString.substr(0,5) == 'error' ){
			//
			// error処理
			//
				//次の通信を許可する
				_global.comStatus = 'idle';
				//
				//エラー処理
				QADisplay( Answer, "わかりません。違う言葉で命令してください。" );

				return( this.answerString );
			}

			if(  this.tableString.substr(0,5) != 'error'
				&& this.moveString.length < 4 ){
			//
			// 操作なし処理
			//
				QADisplay( Answer, "操作がありません。" );

				//次の通信を許可する
				_global.comStatus = 'idle';
				//
				//箱を初期位置に移動
				restarthakoPosition();

				return( "" );
			}

			if(  this.tableString.substr(0,7) == 'message' ){
			//
			// message処理
			//
				//次の通信を許可する
				_global.comStatus = 'idle';
				//
				//エラー処理
				QADisplay( Answer, this.moveString );

				return( this.moveString );
			}

			//
			//正常回答を確認
			if( this.tableString.substr(0,5) != 'error' ){
				//
				//長さチェック
				if( this.moveString.length > 4 ){
					//
					//回答エリアに移動順を表示
					answerDisplay( _global.moveString );
					//
					//はさみ移動データを作成する
					makeStickMoveData();

					//
					//説明文を閉じる
					_global.explainFlag = 'close';

					if( _global.currentPOSs.substr( 1, 1 ) != '5' ){

						//上空静止じゃなかったらはさみを開く
						stickOpen();

						//
						//はさみから移動を開始する
						_global.comStatus = 'stick';
					} else {

						//
						//上空静止状態
						//
						//箱ごと移動を開始する
						hakoExtractAndSet();
						_global.comStatus = 'move';

					}

				} else {
					QADisplay( Answer, "通信エラー 001" );

					//次の通信を許可する
					_global.comStatus = 'idle';
					//
					//箱を初期位置に移動
					restarthakoPosition();
					return( "" );
				}
			} else {
					QADisplay( Answer, "通信エラー 002" );
				//次の通信を許可する
				_global.comStatus = 'idle';
			}
			return( this.answerString );
		} else {
		//
		//次の通信を許可する
		//
			_global.comStatus = 'idle';
			QADisplay( Answer, "命令をいれてください。" );
			//
			//箱を初期位置に移動
			restarthakoPosition();
			return( "" );
		}
QADisplay( Answer, "通信エラー 003" );
	return( "" );
	};

//
//サーバ送受信処理定義
//

//------ 外部Webサーバにて実行時　以下を有効にする ------//
	SendData.sendAndLoad(_root.domain+"/cgi-bin/tumiki.cgi", RcvData, "GET");
	return;
}

//----------------------------
//テキストエリアに出力
//----------------------------
function QADisplay( obj:TextField, outStr:String){

	obj.textColor =0xFFFFFF;
	obj.bold;
	obj.text = outStr;

}

//----------------------------
// 移動順を回答エリアに表示
//----------------------------
function answerDisplay( moveString:String ){
	var textString:String;

	fmt = new TextFormat();
	fmt.bold = true;
	fmt.color = 0xFFFFFF;
	Answer.setTextFormat( fmt );
	textString = "移動順 = ";

	//
	//移動数
	count = moveString.length / _global.ANSWER_COUNT;

	for( i =0; i < count ; i++ ){
			textString += " →  ■";
	}
	//
	文字列を設定
	Answer.text = textString;

	for ( i=0 ; i< count ; i++ ){
		switch( moveString.substr( 0, 1 ) ){
			case '赤': //赤
				fmt.color = 0xFF0000;
				break;
			case '青': //青
				fmt.color = 0x0000FF;
				break;
			case '白': //白
				fmt.color = 0xFFFFFF;
				break;
			case '黄': //黄
				fmt.color = 0xFFFF00;
				break;
		}

		Answer.setTextFormat( _global.ANSWER_COUNT*i +10, _global.ANSWER_COUNT*i +1 +10, fmt );

		//次の移動データを設定(ひとかたまり左シフト)
		moveString = moveString.substr( _global.ANSWER_COUNT );
	}
}


