var GetLastName_sh	= '/sl/new/cgi-bin/GetLastname.cgi';
var CreateUser_sh	= '/sl/new/cgi-bin/CreateUser.cgi';
var CheckName_sh	= '/sl/new/cgi-bin/ChkName.cgi';
var loading_img		= '<img src=/sl/new/images/loading.gif>';
var ErrorMsg_jp		= './error_jp.xml';

Event.observe(window, 'load', function() {
	show_ChkName();

	$("last_names_list").innerHTML =  loading_img;
//	ajaxReq(GetLastName_sh);

	var msec = (new Date()).getTime();
	new Ajax.Request(GetLastName_sh, {
		method: "get",
		parameters: "cache="+msec,
		onSuccess:function(httpObj){
			var Res = httpObj.responseText;
			if( 1 < Res.length ){
//			if ( true == GetResCode(httpObj) ){
				$("last_names_list").innerHTML = httpObj.responseText;
			}else{
//				$("last_names_list").innerHTML = "b"+Res.length;
//				$("last_names_list").innerHTML = "エラーで読み込めませんでした code=01";
				show_ChkServer();
			}
			
		},
		onFailure:function(httpObj){
			$("last_names_list").innerHTML = "エラーで読み込めませんでした code=02";
		}
	});



});



function show_ChkName(){
	Form.enable('ChkName_form');
	Form.disable('RegUser_form');



	Element.hide($('ChkServer_section'));
	Element.show($('Reg_Info'));
	Element.show($('ChkName_section'));
	Element.hide($('RegUser_section'));
	Element.hide($('Download_section'));

//	$('ChkName_section').style.visibility = 'visible';
//	$('RegUser_section').style.visibility = 'hidden';
//	$('Download_section').style.visibility = 'hidden';
}

function show_RegUser(){
	Form.disable('ChkName_form');
	Form.enable('RegUser_form');

	Element.show($('Reg_Info'));
	Element.show($('ChkName_section'));
	Element.show($('RegUser_section'));
	Element.hide($('Download_section'));


//	$('ChkName_section').style.visibility = 'hidden';
//	$('RegUser_section').style.visibility = 'visible';
//	$('Download_section').style.visibility = 'hidden';
}

function show_Download(){
//	Form.disable('ChkName_form');
//	Form.disable('RegUser_form');
	$("CreateUser_res").innerHTML = "";

	Element.hide($('Reg_Info'));
	Element.hide($('ChkName_section'));
	Element.hide($('RegUser_section'));
	Element.show($('Download_section'));

//	$('ChkName_section').style.visibility = 'hidden';
//	$('RegUser_section').style.visibility = 'hidden';
//	$('Download_section').style.visibility = 'visible';
}


function show_ChkServer(){
	Form.disable('ChkName_form');
	Form.disable('RegUser_form');

	Element.show($('ChkServer_section'));

	Element.hide($('Reg_Info'));
	Element.hide($('ChkName_section'));
	Element.hide($('RegUser_section'));
	Element.hide($('Download_section'));

}

function ChkUserName(url){
	var username;
	var lastnameID;
	username = $('username').value;
	lastnameID = $('lastnameID').value;
//	$("first_name_field").value = username;
//	$("last_name_field").value = lastnameID;

//	window.alert("username:"+username);
//	window.alert("lastnameID:"+lastnameID);

	var errors = Array();
	if ($('username').value.length < 2) {
		$("ChkFirstName_res").innerHTML = "２文字以上のユーザ名を入力してください";
		return;
	} else if ($('username').value.length > 31) {
		$("ChkFirstName_res").innerHTML =  "３１文字以下のユーザ名を入力してください";
		return;
	}
	if (!$('username').value.match(/^\w+$/)) {
		$("ChkFirstName_res").innerHTML =  "半角英数で入力してください";
		return;
	}
	$("ChkFirstName_res").innerHTML =  "";
	if ($('lastnameID').value == '') {
		$("ChkLastName_res").innerHTML = "リストから名前を選択してください";
		return;
	}

	if(null != $F("lastnameID"))
		$("ChkFirstName_res").innerHTML = "";
		$("ChkLastName_res").innerHTML = "";
		$("ChkUserName_res").innerHTML = loading_img + "調査中";
	var msec = (new Date()).getTime();


	new Ajax.Request(CheckName_sh, {
		method: "post",
		parameters: "cache="+msec+"&username="+ $('username').value+"&lastnameID="+$('lastnameID').value,
		onSuccess:function(httpObj){

//			var ResTxt = httpObj.responseText;
//			var xmlData = httpObj.responseXML;
//			ResTxt = xmlData.getElementsByTagName("res");
//			$("check_name_field").innerHTML = "ResTxt[" + ResTxt + "]";


//			var ResTxt = httpObj.responseText;
//			$("check_name_field").innerHTML = "ResTxt[" + ResTxt + "]";
//			$("check_name_field").innerHTML = "GetResCode(httpObj)[" + GetResCode(httpObj) + "]";

			if ( true == GetResCode(httpObj) ){
//			if("" != httpObj.responseText){
				show_RegUser();
				$('create_avatar_f_name').value = username;
				$('create_avatar_l_name_id').value = lastnameID;
				$('create_avatar_l_name').value = GetErrorResCode(httpObj);

				$('regist_avatar_f_name').innerHTML = $('create_avatar_l_name_id').value;
				$('regist_avatar_l_name').innerHTML = $('create_avatar_l_name').value;

//				$('ErrorCode_res').innerHTML = GetErrorResCode(httpObj);

				$("ChkUserName_res").innerHTML = "使用できます";
			}else{
				$("ChkUserName_res").innerHTML = "その名前は使用されています。<br>ファーストネーム、またはラストネームを選び直してください。";
			}

		},
		onFailure:function(httpObj){
			$("ChkUserName_res").innerHTML = "エラーで読み込めませんでした code=03";
		}
	});


/*
	new Ajax.Request(CheckName_sh, {
		method: "post",
		parameters:  "cache="		+ msec
					+"&username="	+ $('username').value
					+"&lastnameID="	+ $('lastnameID').value,
		onSuccess:ChkUserName_OK,
		onFailure:ChkUserName_NG
	});
*/


}


function ChkUserName_NG(httpObj){
	$("ChkUserName_res").innerHTML = "エラーで読み込めませんでした code=04";
}

function ChkUserName_OK(httpObj){
//
//<?xml version="1.0" ?>
//<llsd>
//	<map>
//		<key>res</key>
//		<string>true</string>
//	</map>
//</llsd>
//
//の形式でデータが帰ってくる

//	var ResTxt = httpObj.responseText;
//	$("check_name_field").innerHTML = "ResTxt[" + ResTxt + "]";
//return;

	var xmlData = httpObj.responseXML;
	ResTxt = xmlData.getElementsByTagName("res");
	$("check_name_field").innerHTML = "ResTxt[" + ResTxt + "]";
return;

//	var doc = txt.parse()
	CodeList = xmlData.getElementsByTagName("integer");
	DataList = xmlData.getElementsByTagName("string");

//	$("Int").innerHTML = CodeList[i].childNodes[0].nodeValue;
//	$("data").innerHTML = DataList[i].childNodes[0].nodeValue;



	//結果表示
	if ( true == GetResCode(httpObj) )
	{
		$('create_avatar_f_name').value = username;
		$('create_avatar_l_name_id').value = lastnameID;
		$("ChkUserName_res").innerHTML = "使用できます";
		show_RegUser();
	}else{
		$("ChkUserName_res").innerHTML = "使用中です";
	}
return;
}



function displayError(){
	$("disp").innerHTML = "ファイルの取得に失敗しました";
}

function ajaxReq(url){
	var msec = (new Date()).getTime();
	new Ajax.Request(url, {
		method: "get",
		parameters: "cache="+msec,
		onSuccess:function(httpObj){
			$("last_names_list").innerHTML = httpObj.responseText;
		},
		onFailure:function(httpObj){
			$("last_names_list").innerHTML = "エラーで読み込めませんでした code=05";
		}
	});
}


function create_avatar() {
	// 月末チェック
	var flag = true;
	
	var years = $("dob_year").value;
	var months = $("dob_month").value;
	var days = $("dob_day").value;

	$("ErrorCode_res").innerHTML = "";


	//適当な月末チェック
	//きちんとチェックすること
	if (days > 30 && 
		(months == 4 || months == 6 || months == 9 || months == 11)) 
	{
		$("Chkdob_res").innerHTML = "存在しない日付を選択しています";
		return;
	}

	if ($('dob_year').value.length != 4) {
		$("Chkdob_res").innerHTML = "年数は４桁で入力してください";
		return;
	} else {
		// 閏日チェック
		if ($('dob_month').value == 2) {
			if ($('dob_day').value > 28) {
				var isleap = ($('dob_year').value % 4 == 0 && ($('dob_year').value % 100 != 0 || $('dob_year').value % 400 == 0));
				if ($('dob_day').value > 29 || !isleap) {
					$("Chkdob_res").innerHTML = "存在しない日付を選択しています";
//					errors.push('February of ' + $('year_field').value + ' didn\'t have ' + $('day_field').value + ' days.');
					return;
				}
			}
		}
		// １８歳以下チェック
		var today = new Date();
		var thisYear = today.getFullYear();
		var thisMonth = today.getMonth()+1;
		var thisDay = today.getDate();
	
		if ($('dob_year').value > thisYear - 18 ||
			($('dob_year').value == thisYear - 18 &&
			$('dob_month').value > thisMonth) ||
			($('dob_year').value == thisYear - 18 &&
			$('dob_month').value == thisMonth &&
			$('dob_day').value > thisDay)) 
		{
			$("Chkdob_res").innerHTML = "18歳以下は登録できません";
			return;
		}
	}
	var dob_data;
	dob_data = $('dob_year').value + "-";
	if ($('dob_month').value < 10){
		dob_data += "0";
	}
	dob_data += $('dob_month').value+ "-";
	if ($('dob_day').value < 10){
		dob_data += "0";
	}
	dob_data += $('dob_day').value;
	
	
	
//	$("Chkdob_res").innerHTML = years + "/" + months + "/" + days;
//	$("Chkdob_res").innerHTML = dob_data;
	$("Chkdob_res").innerHTML = "";



	if ($('user_password').value.length < 6) {
		$("Chkpasswd_res").innerHTML = "パスワードが短いです";
		return;
	}

	if (16 < $('user_password').value.length) {
		$("Chkpasswd_res").innerHTML = "パスワードが長いです";
		return;
	}

	if ($('user_password').value != $('user_passconf').value) {
		$("Chkpasswd_res").innerHTML = "パスワードは、確認用と同じものを入力してください";
		return;
	}
	$("Chkpasswd_res").innerHTML = "";

	if (!$('user_email').value.match(/^.+@.+\.\w+$/)) {
		$("Chkusermail_res").innerHTML = "メールアドレスが間違っていませんか？";
		return;
	}

	if ($('user_email').value != $('user_emailconf').value) {
		$("Chkusermail_res").innerHTML = "メールアドレスは、確認用と同じものを入力してください";
		return;
	}
	$("Chkusermail_res").innerHTML = "";


	var createAvFormHash = $('RegUser_form').serialize(true);


//	$("check_name_field").innerHTML = Object.values(createAvFormHash);
	$("ChkUserName_res").innerHTML = "";
	$("CreateUser_res").innerHTML = loading_img + "登録作業中、しばらくお待ちください";


	new Ajax.Request(CreateUser_sh,
		{
		method: "post",
		parameters:  "&username="		+$('create_avatar_f_name').value
					+"&lastnameID="		+$('create_avatar_l_name_id').value
					+"&user_password="	+$('user_password').value
					+"&user_email="		+$('user_email').value
					+"&dob_data="		+dob_data
					+"&landing_point="	+$('landing_point').value,
	    onSuccess: createUser_OK,
	    onFailure: createUser_NG
		});

}

function createUser_NG(transport) {
	$("CreateUser_res").innerHTML = "アバターの作成に失敗しました。再度同じ処理を行ってください";
}

function createUser_OK(transport) {
//
//<?xml version="1.0" ?>
//<llsd>
//	<map>
//		<key>res</key>
//		<string>true</string>
//		<key>code</key>
//		<string>210</string>
//	</map>
//</llsd>
//
//の形式でデータが帰ってくる

//	var ResTxt = transport.responseText;
//	$("check_name_field").innerHTML = "ResTxt[" + ResTxt + "]";
//return;

	//結果表示
	if ( true == GetResCode(transport) )
	{
		show_Download();
		$('regist_avatar_f_name').innerHTML = $('create_avatar_f_name').value;
		$('regist_avatar_l_name').innerHTML = $('create_avatar_l_name').value;
		$('regist_avatar_f_name_input').value = $('create_avatar_f_name').value;
		$('regist_avatar_l_name_input').value = $('create_avatar_l_name').value;
		$("CreateUser_res").innerHTML = "登録に成功しました";
	}else{
		$("CreateUser_res").innerHTML = "登録に失敗しました";
		$('create_avatar_error_code').value = GetErrorResCode(transport);
		//エラーコードが出たときの処理
		Disp_Error_Data();
	}
return;

}

function Disp_Error_Data()
{
	new Ajax.Request(ErrorMsg_jp, { method: "get",  onComplete: displayErrorData });
}

function displayErrorData(httpObj)
{
	var xmlData = httpObj.responseXML;

//	var doc = txt.parse()
	CodeList = xmlData.getElementsByTagName("integer");
	DataList = xmlData.getElementsByTagName("string");

//	$("Int").innerHTML = CodeList[i].childNodes[0].nodeValue;
//	$("data").innerHTML = DataList[i].childNodes[0].nodeValue;

	txt = "";
	Error_Code = $('create_avatar_error_code').value;
//	$("check_name_field").innerHTML = "["+ $('create_avatar_error_code').value + "]";

//	$("ErrorCode_res").innerHTML = CodeList.length;

	for (i=0; i < CodeList.length; i++)
	{
		Intstr  = CodeList[i].childNodes[0].nodeValue;
		Datastr = DataList[i].childNodes[0].nodeValue;
		if ( Intstr == Error_Code){
			//エラー内容の表示
			$("ErrorCode_res").innerHTML = Datastr;
//			txt += "Code:[" + Intstr + "] Data:[" + Datastr + "]<br>";
		}
//		$("ErrorCode_res").innerHTML = "Error_Code[" + Error_Code + "] Intstr[" + Intstr + "]<BR>";
//		$("ErrorCode_res").innerHTML = txt;
		
	}
	

//	$("ErrorCode_res").innerHTML = txt;
}


//結果の解析
function GetResCode(httpObj)
{
	var xmlData = httpObj.responseXML;
    var xmlDoc = xmlData.documentElement;
	KeyList  = xmlDoc.getElementsByTagName('key');
	ResList = xmlDoc.getElementsByTagName('string');

	for (var i = 0; i < KeyList.length; i++)
	{
		KeyStr  = KeyList[i].firstChild.data;


//		$("check_name_field").innerHTML = "ResTxt[" + ResTxt + "]";
//		$("check_name_field").innerHTML = "KeyStr[" + KeyStr + "] BoolStr[" + BoolStr + "] [" + i + "]<BR>";

		if ( 'res' == KeyStr){
			ResStr = ResList[i].firstChild.data;

			if (ResStr == 'True') {
				return true;
			} else {
				return false;
			}
		}
//		$("check_name_field").innerHTML = "KeyStr[" + KeyStr + "] BoolStr[" + BoolStr + "] [" + i + "]<BR>";
//		$("ErrorCode_res").innerHTML = "KeyStr[" + KeyStr + "] BoolStr[" + BoolStr + "] [" + i + "]<BR>";
		
	}
	return false;
}

//結果の解析
function GetErrorResCode(httpObj)
{
//
//<?xml version="1.0" ?>
//<llsd>
//	<map>
//		<key>res</key>
//		<string>true</string>
//		<key>code</key>
//		<string>210</string>
//	</map>
//</llsd>
//
//の形式でデータが帰ってくる
	var xmlData = httpObj.responseXML;
    var xmlDoc = xmlData.documentElement;

	KeyList  = xmlDoc.getElementsByTagName('key');
	ResList  = xmlDoc.getElementsByTagName('string');

//	$("check_name_field").innerHTML = "KeyStr[" + KeyList[0].firstChild.data + "] ResStr[" + ResList[0].firstChild.data + "] [" + KeyList.length + "]<BR>";
//	$("check_name_field").innerHTML = "KeyStr[" + KeyList[1].firstChild.data + "] ResStr[" + ResList[1].firstChild.data + "] [" + KeyList.length + "]<BR>";


	for (var i = 0; i < KeyList.length; i++)
	{
		KeyStr  = KeyList[i].firstChild.data;
//		$("check_name_field").innerHTML = "KeyStr[" + KeyStr + "] ResStr[" + ResStr + "] [" + KeyList.length + "]<BR>";

		if ( 'code' == KeyStr){
			ResStr = ResList[i].firstChild.data;
//			$("ErrorCode_res").innerHTML = "KeyStr[" + KeyStr + "] ResStr[" + ResStr + "] [" + i + "]<BR>";
			return ResStr;
		}
		
	}
	return false;
}

