	var	imageArray		= new Array();
	var	idArray			= new Array();
	var	widthArray		= new Array();
	var	index			= 0;
	
	function	DelayReplaceElementImegTag()
	{
		if(imageArray.length > 0)
		{
			var	ch	= 0;
			if(imageArray[0].width > 120)																ch	= 1;
			if(window.opera && imageArray[0].width > 0)													ch	= 2;
			if(!document.all && !window.opera && document.getElementById && imageArray[0].width > 0)	ch	= 3;
			if(ch > 0)
			{
				var	width	= widthArray[0];
				if(width > imageArray[0].width)
				{
					width	= imageArray[0].width;
				}
				var	str	= "<IMG SRC=" + imageArray[0].src + " width=" + (width + ">");
				var element	= document.getElementById(idArray[0]);
				element.innerHTML	= str;
			}
			
			imageArray.splice(0,1);
			idArray.splice(0,1);
			widthArray.splice(0,1);
		}
	}
	function	ReplaceElementImageTag(img,id,URL,width)
	{
		if(img.height > 0)
		{
			if(width > img.width)
			{
				width	= img.width;
			}
			var	str	= "<IMG SRC=" + URL + " width=" + (width + ">");
			var element	= document.getElementById(id);
			element.innerHTML	= str;
		}
		else
		{
			var element	= document.getElementById(id);
			element.innerHTML	= "";
			
			imageArray[index]	= img;
			idArray[index]		= id;
			widthArray[index]	= width;
			setTimeout("DelayReplaceElementImegTag()",1000*(index+1));
			index++;
		}
	}
	function	GetATagIfExist(id,URL,width)
	{
		var	img		= new Image();
		img.src		= URL;
		img.onload	= ReplaceElementImageTag(img,id,URL,width);
	}
	
	
	//----------------------------------------
	//XMLHttpRequestオブジェクト生成
	//----------------------------------------
	function createHttpRequest()
	{
		if(window.ActiveXObject)
		{
			try
			{
				return new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					return new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e2)
				{
					return null;
				}
			}
		}
		else if(window.XMLHttpRequest)
		{
			return new XMLHttpRequest();
		}
		return null;
	}
	
	//----------------------------------------
	// リクエスト＆受信
	//----------------------------------------
	var	requestedURL	= "";
	var	reviewString	= "";
	var	requestPage		= 1;
	var	totalPage		= 0;
	function requestFile( url )
	{
		requestedURL	= url;
		var httpobj = createHttpRequest();
		if(httpobj != null)
		{
			httpobj.open( "GET" , url + "&page=" + requestPage , true );
			httpobj.onreadystatechange = function()
			{ 
				if(httpobj.readyState == 4 && httpobj.status == 200)
				{
					on_loaded(httpobj);
				}
			}
			httpobj.send( null );
		}
	}
	function getNumOfKey(str,key)
	{
		var	num		= 0;
		var	index	= 0;
		while( (index = str.indexOf(key,index)) >= 0)
		{
			index++;
			num++;
		}
		return(num);
	}
	function translateDateString(str)
	{
		var	rex				= /<Date>[0-9]{14}<.Date>/;
		var	match_result	= str.match(rex);
		while(match_result != null)
		{
			var	ss	= match_result[0];
			
			var	yy	= ss.substring(6,10);
			var	mm	= ss.substring(10,12);
			var	dd	= ss.substring(12,14);
			var	sd	= "<Date>" + yy + " 年 " + mm + " 月 " + dd + " 日 </Date>";
			str	= str.replace(ss,sd);
			
			var	match_result	= str.match(rex);
		}
		return(str);
	}
	function	removeMatchString(str,rex)
	{
		var	match_result	= str.match(rex);
		while(match_result != null)
		{
			str	= str.replace(match_result[0],"");
			match_result	= str.match(rex);
		}
		return(str);
	}
	//----------------------------------------
	// 受信完了時コールバック関数
	// レビューを埋め込みます
	//----------------------------------------
	function on_loaded(httpobj)
	{
		//レスポンスを取得
		var	str		= httpobj.responseText;
		
		// データ内 Review 数取得
		var	num	= getNumOfKey( str , "<Article>" );
		
		if(num > 0)
		{
			if(totalPage == 0)
			{	// 初回なら 総ページ数を取得
				var	rex				= /<ReviewsPages>[0-9]*<.ReviewsPages>/;
				var	match_result	= str.match(rex);
				if(match_result != null)
				{
					var	sNumPage	= match_result[0];
					sNumPage		= sNumPage.replace("<ReviewsPages>","");
					sNumPage		= sNumPage.replace("</ReviewsPages>","");
					totalPage		= parseInt(sNumPage);
					if(totalPage > 2)
					{	// 総ページが 2より大きい場合、最後の２ページのみを表示する。
						requestPage	= totalPage-1;
						requestFile( requestedURL );
						return;
					}
					else
					{
						requestPage	= 1;
					}
				}
				else
				{
					return;
				}
			}
			
			// Date を yy 年 mm 月 dd 日 に置き換え
			str	= translateDateString(str);
			
			// <ReviewsTotla> および <ReviewsPages> を除去
			str	= removeMatchString(str,/<ReviewsTotal>[0-9]*<.ReviewsTotal>/);
			str	= removeMatchString(str,/<ReviewsPages>[0-9]*<.ReviewsPages>/);
			
			// <Response> タグ を 削除
			str	= str.replace("<Response>","");
			str	= str.replace("</Response>","");
			
			// その他のタグを <tr> および <td> タグへ置き換える。
			for(i=0;i<num;i++)
			{
				str	= str.replace("<Review>","<tr>");			str	= str.replace("</Review>","</tr>");
				str	= str.replace("<State>","<td>");			str	= str.replace("</State>","</td>");
				str	= str.replace("<Age>","<td>");				str	= str.replace("</Age>","</td>");
				str	= str.replace("<Sex>","<td>");				str	= str.replace("</Sex>","</td>");
				str	= str.replace("<Date>","<td>");				str	= str.replace("</Date>","</td>");
				str	= str.replace("<Article>","<tr><td colspan=\"4\">コメント : ");
				str	= str.replace("</Article>","</td></tr>SPLIT");
				str	= str.replace("<Article />","<tr><td colspan=\"4\"></td></tr>SPLIT");
			}
			reviewString	+= str;
			
			if(requestPage >= totalPage)
			{
				var	tdArray		= reviewString.split("SPLIT");
				var	len			= tdArray.length;
				reviewString	= "";
				
				for(var i=0;i<len;i++)
				{
					reviewString	+= tdArray[len-1-i];
				}
				reviewString	= "<table><tr><th colspan=\"4\">最近の購買履歴</th></tr><tr><th>State</th><th>Age</th><th>Sex</th><th>Date</th></tr>" + reviewString + "</table>";
				var element	= document.getElementById("review");
				element.innerHTML	= reviewString;
			}
			else
			{
				requestPage++;
				requestFile( requestedURL );
			}
		}
	}

