/*----------------------------------------
Copyright(c)  2005 Fu's Lab Co.,Ltd.
http://www.whoselab.com
----------------------------------------*/

function Keyman(){}

// XMLHttpsオブジェクト作成
Keyman.prototype.XML_CreateXMLHttp = function()
{
	try { return new ActiveXObject ("Microsoft.XMLHTTP"); }
	catch(e)
	{
		try		 { return new XMLHttpRequest(); }
		catch(e) { return null; }
	}
	return null;
}

Keyman.prototype.doRequest = function(methodid, arrPara)
{
	xmlhttp = this.XML_CreateXMLHttp();
	if (xmlhttp)
	{
		var strpara = "methodid=" + methodid;
		for (i=0; i<arrPara.length; i++)
		{
			strpara +=  "&" + i + "=" + convertANDEQU(arrPara[i]);
		}
		xmlhttp.onreadystatechange = doResponse;
		ansyn = true;
		if (arguments.length >= 3) ansyn = arguments[2];
		//!!!!!!!
		xmlhttp.open("POST",KeymanUrl, ansyn);
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xmlhttp.send(strpara);
	}
}

function doResponse()
{
	//alert (xmlhttp.readyState+"   "+xmlhttp.status);
	if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
	{
		var xmlDoc = xmlhttp.responseXML;
		//alert(xmlhttp.responseText);
		if (xmlDoc.getElementsByTagName("rtnstatus").length <= 0)
		{

			if (xmlDoc.getElementsByTagName("lng").length > 0)
			{
				var lng = "";
				var lngEle = xmlDoc.getElementsByTagName("lng")[0];
				lng = lngEle.childNodes[0].nodeValue;
				var lat = "";
				var latEle = xmlDoc.getElementsByTagName("lat")[0];
				lat = latEle.childNodes[0].nodeValue;
	
				afterSrchLocate1(lng, lat);
			}
			else if (xmlDoc.getElementsByTagName("error").length > 0)
			{
				afterSrchLocateErr();
			}
			else{
				var rtnvalue = new Array();
				var choEle = xmlDoc.getElementsByTagName("choice");
				for (i=0; i<choEle.length; i++)
				{
					rtnvalue.push(choEle[i].childNodes[0].nodeValue);
				}

				afterSrchLocate2(rtnvalue);
			}
		}
		else
		{
			var rtnSts = "";
			var obj = xmlDoc.getElementsByTagName("rtnstatus")[0];
			if (obj.hasChildNodes())	rtnSts = obj.childNodes[0].nodeValue;
			else						alert('(プログラムエラー)rtnStsをセットしていません');
			var rtnMth = "";
			var obj = xmlDoc.getElementsByTagName("rtnmethod")[0];
			if (obj.hasChildNodes())	rtnMth = obj.childNodes[0].nodeValue;
			else						alert('(プログラムエラー)rtnMthをセットしていません');
			var rtnMsg = "";
			obj = xmlDoc.getElementsByTagName("rtnmessage")[0];
			if (obj.hasChildNodes())	rtnMsg = revertTag(obj.childNodes[0].nodeValue);
			var rtnvalue = new Array();
			var elmData = xmlDoc.getElementsByTagName("rtnvalue");
			for (i=0; i<elmData.length; i++)
			{
				var vlu = elmData[i];
				if (vlu.attributes[0].value == 'a')
				{
					rtnvalue.push(revertArrayVlu(vlu));
				}
				else if (vlu.attributes[0].value == 's')
				{
					if (vlu.hasChildNodes())	rtnvalue.push(revertTag(vlu.childNodes[0].nodeValue));
					else						rtnvalue.push('');
				}
			}
			switch (rtnMth)
			{
				case    '0' :
					gotoMain();
					break;
				case    '1' :
					gotoLogin(rtnMsg);
					break;
				case    '2' :
					showPublist(rtnvalue,rtnMsg);
					break;
				case    '3' :
					showMemo(rtnvalue);
					break;
				case    '4' :
					showOneBlog(rtnvalue);
					break;
				case    '5' :
					showNotice(rtnvalue);
					break;
				case    '6' :
					showKojinInfo(rtnvalue);
					break;
				case    '7' :
					showSaveKojinInfo(rtnMsg);
					break;
				case    '8' :
					showMyPublist(rtnvalue,rtnMsg);
					break;
				case    '9' :
					showMyOneBlog(rtnvalue);
					break;
				case    '10' :
					afterAddedToko(rtnvalue);
					break;
				case    '11' :
					afterUpdateToko();
					break;
				case    '12' :
					afterTorikesiToko();
					break;
				case    '13' :
					afterAddNewMemo(rtnvalue);
					break;
				case    '14' :
					afterUpdateMemo();
					break;
				case    '15' :
					afterDeleteBlog();
					break;
				case    '16' :
					showSearchRtn(rtnvalue,rtnMsg);
					break;
				case    '17' :
					afterChngPass(rtnMsg);
					break;
				case    '19' :
					afterDeleteMemo(rtnMsg);
					break;
				case    '20' :
					afterSendPass(rtnMsg);
					break;
				case	'30' :
					afterCreatGroup(rtnMsg);
					break;
				case	'31':
					afterDelGroupMember(rtnvalue,rtnMsg);
					break;
				case	'32':
					afterJoinGroupMember(rtnvalue,rtnMsg);
					break;
				case 	'33':
					afterQuitGroup(rtnMsg);
					break;
				case    '34' :
					showSearchGroup(rtnvalue,rtnMsg);
					break;
				//method = 50
				case    '35' :
					showMyGrouplist(rtnvalue);
					break;
				case    '36' :
					showGroupPublist(rtnvalue,rtnMsg);
					break;
				case    '37' :
					showGroupOneBlog(rtnvalue);
					break;
				case    '38' :
					afterAddedGroupToko(rtnvalue);
					break;
				case    '39' :
					afterGroupTorikesiToko();
					break;
				case    '40' :
					afterUpdateGroupToko(rtnvalue);
					break;
				case    '41' :
					showGroupMyOneBlog(rtnvalue);
					break;
				case    '42' :
					showGroupAlllist(rtnvalue,rtnMsg);
					break;
				case    '43' :
					showGroupAllPublist(rtnvalue,rtnMsg);
					break;
				case    '45' :
					showGroupUser(rtnvalue,rtnMsg);
					break;
				case    '46' :
					break;
				case    '47' :
					showMyGroup(rtnvalue);
					break;
				case    '48' :
					afterEditMyGroupInfo(rtnMsg);
					break;
				case    '49' :
					afterHopeJoinGroup(rtnMsg);
					break;
				case '1001' :
					showErrMsg(rtnMsg);
					break;
				default   :
					break;
			}
		}
	}
}

function revertArrayVlu(vlu)
{
	var rtnArr = new Array();

	if (!vlu.hasChildNodes()) return rtnArr;
	for (n=0; n<vlu.childNodes.length; n++)
	{
		var child = vlu.childNodes[n];
		if (child.attributes[0].value == 'a')
		{
			rtnArr.push(revertArrayVlu(child));
		}
		else if (child.attributes[0].value == 's')
		{
			if (child.hasChildNodes())	rtnArr.push(revertTag(child.childNodes[0].nodeValue));
			else						rtnArr.push('');
		}
	}
	
	return rtnArr;
}

function revertTag(str)
{
	str = replaceAll(new String(str), "#f#", "<");
	str = replaceAll(new String(str), "#e#", ">");
	str = replaceAll(new String(str), "#]_A", "&");
	str = replaceAll(new String(str), "#]_E", "=");
	str = replaceAll(new String(str), "#]_P", "+");
	return str;
}

function convertANDEQU(str)
{
	str = replaceAll(new String(str), "&", "#]_A");
	str = replaceAll(new String(str), "=", "#]_E");
	str = replaceAll(new String(str), "+", "#]_P");
	return str;
}
