/*****************************************************************************
 * 名前空間用オブジェクトの生成
 *****************************************************************************/
var nyan;
if( !nyan ){
	nyan = {};
}
else if( typeof nyan != "object" ){
	throw new Error( "nyan already exists and is not an object!");
}

/*****************************************************************************
 * 計算用オブジェクト
 *****************************************************************************/
nyan.operators = {
	add:		function(x,y){ return Number(x)+Number(y); },
	subtract:	function(x,y){ return Number(x)-Number(y); },
	multiply:	function(x,y){ return Number(x)*Number(y); },
	devide:		function(x,y){ return Number(x)/Number(y); }
};

/*****************************************************************************
 * 指定した要素以外のすべての要素を非表示にする
 *****************************************************************************/
nyan.displays = ["main_menu", "muso_menu", "free_menu", "rank_menu", 
"muso_disp", "muso_result_disp", "free_disp", "free_result_disp",
"rank_disp"];

nyan.changeDisplay = function( elm_id ){
	for( var i=0; i<nyan.displays.length; i++){
		if( elm_id != nyan.displays[i] ){
			document.getElementById(nyan.displays[i]).style.display = "none";
		}
	}

	document.getElementById(elm_id).style.display = "block";
}

/*****************************************************************************
 * 解答ボックスの色を変更する
 ****************************************************************************/
nyan.checkAnswer = function( elm_ans, elm_next_button, operand1, operand2, operator ){
	if( elm_ans.value == nyan.operators[operator]( operand1, operand2 ) ){
		// 解答ボックスの背景を青くする
		elm_ans.style.backgroundColor = '#CCF';
		elm_next_button.disabled = undefined;
	}
	else{
		// 解答ボックスの背景を赤くする
		elm_ans.style.backgroundColor = '#FCC';
		elm_next_button.disabled = 'true';
	}
}

/*****************************************************************************
 * XMLHttpRequestでリクエスト送信
 ****************************************************************************/
nyan.sendRequest = function( url, callback, method, data ){
	// XMLHttpRequestオブジェクト生成
	var req = createXMLHTTP();
	if( !req ){
		return false;
	}

	// レスポンスデータ受信時に呼び出すイベントハンドラ
	req.onreadystatechange = function(){
		getResponse( req, callback );
	}

	// GETメソッドの場合はURLの後にクエリパラメータをつける
	if( method.toUpperCase() == 'GET' && data.length > 0 ){
		url += '?' + data;
		data = '';
	}

	// 指定したURLに接続
	req.open( method, url, true );

	// POSTデータ用ヘッダ
	req.setRequestHeader(
		'Content-Type',
		'application/x-www-form-urlencoded; charset=UTF-8'
	);

	// HTTPリクエスト送信
	req.send( data );

	// XMLHttpRequestオブジェクト生成
	function createXMLHTTP(){
		if( window.XMLHttpRequest ){
			return new XMLHttpRequest();
		}
		else{
			return false;
		}
	}

	// レスポンスデータ受信
	function getResponse( req, callback ){
		if( req.readyState == 4 ){
			if( req.responseText ){
				callback( req );
			}
		}
	}
}


