var xmlAry = new Array();
var hitMember = new Object();
var targetCount = 0;
var image = new Image();
image.src = 'http://girled.net/img/indi.gif';

var maxView = 50;
var targetMaxView = 100;
var abortTime = 30000;

var xmlhttp = false;

function loadCms() {
	if(!chkCrossBrowser()) {
		alert('サポートされていない環境の為、利用できません。');
		return;
	}
	var cb = new chkCrossBrowser();
	xmlhttp = getXmlHttp();
	if (!xmlhttp) {
		alert('XMLHttpRequestがサポートされていない環境の為、利用できません。');
		return;
	}
	var comm_id = trimCommId(gid('comm').value);
	if (!comm_id) {
		alert('コミュニティURL、またはid番号を指定してください。');
		return;
	}
	var page = '';
	var get_count = 0;
	for (var i=0; i<xmlAry.length; i++) {
		if(xmlAry[i].getElementsByTagName('community')[0].getElementsByTagName('id')[0].firstChild.nodeValue == comm_id){
			page = trimPage(gid('comm').value);
			get_count = trimGetCount(gid('comm').value);
		}
	}
	if(get_count == 0)
	{
		get_count = gid('count').value;
	}
	//gid('commList').innerHTML = '';
	//gid('memList').innerHTML = '';
	hitMember = new Object();
	var image = new Image();
	image.src = 'http://girled.net/img/indi.gif';
	gid('indiImg').innerHTML = '<img src="http://girled.net/img/indi.gif" width="16" height="16" border="0" />';
	gid('indiText').innerHTML = 'メンバー情報をリクエストします･･･';
	disableForm();
	var abortId;
	if(cb.bw.opera || cb.bw.safari || cb.bw.mozes){
		gid('indiImg').innerHTML = '<img src="http://girled.net/img/indi.gif" width="16" height="16" border="0" />';
		gid('indiText').innerHTML = 'メンバー情報をリクエストしています･･･';
		xmlhttp.onload = function() {
			gid('indiImg').innerHTML = '<img src="http://girled.net/img/indi.gif" width="16" height="16" border="0" />';
			gid('indiText').innerHTML = 'メンバー情報を解析しています･･･';
			var rtnText = onHttpResult(xmlhttp);
			clearTimeout(abortId);
			gid('indiImg').innerHTML = '<img src="http://girled.net/img/n_indi.gif" width="16" height="16" border="0" />';
			gid('indiText').innerHTML = rtnText;
			ableForm();
		}
	}else{
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 1) {
				gid('indiImg').innerHTML = '<img src="http://girled.net/img/indi.gif" width="16" height="16" border="0" />';
				gid('indiText').innerHTML = 'メンバー情報をリクエストしています･･･';
			}
			if (xmlhttp.readyState == 2) {
				gid('indiImg').innerHTML = '<img src="http://girled.net/img/indi.gif" width="16" height="16" border="0" />';
				gid('indiText').innerHTML = 'メンバー情報を抽出しています･･･';
			}
			if (xmlhttp.readyState == 3) {
				gid('indiImg').innerHTML = '<img src="http://girled.net/img/indi.gif" width="16" height="16" border="0" />';
				gid('indiText').innerHTML = 'メンバー情報を受信しています･･･';
				ableForm();
			}
			if (xmlhttp.readyState == 4) {
				if(xmlhttp.status == 200) {
					gid('indiImg').innerHTML = '<img src="http://girled.net/img/indi.gif" width="16" height="16" border="0" />';
					gid('indiText').innerHTML = 'メンバー情報を解析しています･･･';
					var rtnText = onHttpResult(xmlhttp);
					clearTimeout(abortId);
					gid('indiImg').innerHTML = '<img src="http://girled.net/img/n_indi.gif" width="16" height="16" border="0" />';
					gid('indiText').innerHTML = rtnText;
					ableForm();
				}else{
					clearTimeout(abortId);
					gid('indiImg').innerHTML = '<img src="http://girled.net/img/n_indi.gif" width="16" height="16" border="0" />';
					gid('indiText').innerHTML = 'サービスが混雑しています。しばらくしてから再度実行してください。';
					ableForm();
				}
			}
		}
	}
	xmlhttp.open('GET', 'mcm.cgi?page='+page+'&id='+comm_id+'&cnt='+get_count);
	xmlhttp.send('');
	var abortFunc = function(){requestAbort()};
	abortId = setTimeout(abortFunc, abortTime);
}

function requestAbort() {
	xmlhttp.abort();
	gid('indiImg').innerHTML = '<img src="http://girled.net/img/n_indi.gif" width="16" height="16" border="0" />';
	gid('indiText').innerHTML = 'リクエストがタイムアウトしました。しばらくしてから再度実行してください。';
	ableForm();
}

function loadCms2(paramPage) {
	gid('comm').value = paramPage;
	loadCms();
}

function onHttpResult(xmlhttp) {
	var rtnText = '';
	var xmlDoc = xmlhttp.responseXML;
	if(xmlDoc!=null) {
		xmlDoc = xmlDoc.documentElement;
		if(xmlDoc!=null){
			if(xmlDoc.getElementsByTagName('community').length > 0){
				displayMember(xmlDoc);
			}else if(xmlDoc.getElementsByTagName('error').length > 0){
				rtnText = displayError(xmlDoc);
			}else {
				alert('不正なエレメント構成のXMLレスポンスです。');
				gid('viewCtrl').innerHTML = 'レスポンス内容';
				gid('commGuide').innerHTML = 'エラー詳細';
				gid('memList').innerHTML = '';
				gid('memList').appendChild(document.createTextNode(xmlhttp.responseText));
			}
		}else{
			alert('不正なXMLレスポンスです。');
			gid('viewCtrl').innerHTML = 'レスポンス内容';
			gid('commGuide').innerHTML = 'エラー詳細';
			gid('memList').innerHTML = '';
			gid('memList').appendChild(document.createTextNode(xmlhttp.responseText));
		}
	}else{
		alert('不正なレスポンスです。');
		gid('viewCtrl').innerHTML = 'レスポンス内容';
		gid('commGuide').innerHTML = 'エラー詳細';
		gid('memList').innerHTML = '';
		gid('memList').appendChild(document.createTextNode(xmlhttp.responseText));
	}
	return rtnText;
}

function displayMember(xmlDoc) {
	if(xmlDoc.getElementsByTagName('community').length <= 0
	&& xmlDoc.getElementsByTagName('member').length <= 0){
		alert('取得データがなんか変ですね。');
		gid('memList').appendChild(document.createTextNode(xmlhttp.responseText));
		return;
	}
	var docCommId = xmlDoc.getElementsByTagName('community')[0].getElementsByTagName('id')[0].firstChild.nodeValue;
	var docGetCount = xmlDoc.getElementsByTagName('community')[0].getElementsByTagName('getcount')[0].firstChild.nodeValue;
	var docPage = (xmlDoc.getElementsByTagName('page').length > 0) ? xmlDoc.getElementsByTagName('page')[0].firstChild.nodeValue : 0;
	var len = xmlDoc.getElementsByTagName('member').length;
	if(docPage != 0 && len > 50) {
		len = (len-(len%50));
	}
	var aryIndex  = -1;
	for (var i=0; i<xmlAry.length; i++) {
		var aryCommId = xmlAry[i].getElementsByTagName('community')[0].getElementsByTagName('id')[0].firstChild.nodeValue;
		if(aryCommId==docCommId && xmlAry[i].getElementsByTagName('page').length > 0 ){
			aryIndex = i;
			if(docPage > 0) {
				xmlDoc.removeChild(xmlDoc.getElementsByTagName('next')[0]);
			}else{
				xmlAry[i].removeChild(xmlAry[i].getElementsByTagName('next')[0]);
				gid('comm').value = '';
			}
			xmlDoc.removeChild(xmlDoc.getElementsByTagName('community')[0]);
			xmlAry[i].insertBefore(xmlDoc, null);
			break;
		}
	}
	if(xmlDoc.getElementsByTagName('error').length > 0){
		html += 'エラーコード: '+xmlDoc.getElementsByTagName('error')[0].firstChild.nodeValue;
		if(xmlDoc.getElementsByTagName('message').length > 0){
			html += ' ('+xmlDoc.getElementsByTagName('message')[0].firstChild.nodeValue+')';
		}
		gid('indiImg').innerHTML = '<img src="http://girled.net/img/n_indi.gif" width="16" height="16" border="0" />';
		gid('indiText').innerHTML = html;
		gid('memList').innerHTML = '';
	}else{
		if(aryIndex == -1) {
			aryIndex = xmlAry.length;
			xmlAry[aryIndex] = xmlDoc;
			gid('comm').value = '';
		}
		var html = '';
		var formSwitch = 1;
		for (var i=0; i<xmlAry.length; i++) {
			if(xmlAry[i].getElementsByTagName('page').length > 0) formSwitch = 0;
			html = communityView(i, xmlAry[i].getElementsByTagName('page').length, xmlAry[i].getElementsByTagName('community')[0], xmlAry[i].getElementsByTagName('member').length)
					+ html;
		}
		html += "<br style=\"clear:both;\" />\n";
		targetCount = 0;
		gid('commList').innerHTML = html;
		gid('formCols').innerHTML = (formSwitch) ? showForm(docGetCount) : hiddenForm() ;
		html = '';
		var seek = (maxView > len) ? len : maxView ;
		for (var i=0; i<seek; i++) {
			html += memberView(i, xmlDoc.getElementsByTagName('member')[i], 'FFFFFF');
		}
		html += "<br style=\"clear:both;\" />\n";
		gid('commGuide').innerHTML = showCommGuide(aryIndex);
		gid('viewCtrl').innerHTML = 'リストページ';
		gid('memList').innerHTML = html;
	}
}

function displayError(xmlDoc) {
	var html = '';
	html += 'エラーコード: '+xmlDoc.getElementsByTagName('error')[0].firstChild.nodeValue;
	if(xmlDoc.getElementsByTagName('message').length > 0){
		html += ' ('+xmlDoc.getElementsByTagName('message')[0].firstChild.nodeValue+')';
	}
	return html;
}

function gid(id) { return document.getElementById(id) }

function communityView(aryNum, docPage, communityDoc, docCount) {
	var html = '';
	var cId = communityDoc.getElementsByTagName('id')[0].firstChild.nodeValue;
	var cGetCnt = communityDoc.getElementsByTagName('getcount')[0].firstChild.nodeValue;
	var cSubject = communityDoc.getElementsByTagName('subject')[0].firstChild.nodeValue;
	var cLink = communityDoc.getElementsByTagName('link')[0].firstChild.nodeValue;
	var cImage = communityDoc.getElementsByTagName('image')[0].firstChild.nodeValue;
	var cCount = communityDoc.getElementsByTagName('count')[0].firstChild.nodeValue;
	cImage = replaceThum(cImage);
	if(docPage > 0) {
		var nextPage = ((docCount-(docCount%50))/50)+1;
		html += '<div class="commLite">\n';
		html += '<div id="commBg_'+aryNum+'" style="background: #FFF4E0;padding: 5px 5px 5px 5px;">\n';
		html += '[<a href="#" title="クリックするとメンバーリストを表示" onclick="showMemList('+aryNum+', 0)" onmouseover="showCommDetail('+aryNum+')" onmouseout="hiddenCommDetail('+aryNum+')">詳細</a>]<br />\n';
		html += '<div id="commDetail_'+aryNum+'">';
		html += '<a href="'+cLink+'"><img src="'+cImage+'" border="0" /></a><br />\n';
		html += '</div>\n';
		html += cSubject+'('+docCount+'/'+cCount+')<br />';
		html += '<input type="hidden" id="tlist_'+aryNum+'" name="tlist_'+aryNum+'" onclick="targetList('+aryNum+')">\n';
		html += '<input type="button" name="addbtn" onclick="loadCms2(\'page='+nextPage+'&id='+cId+'&cnt='+cGetCnt+'\')" value="メンバー追加">\n';
		html += '</div>\n';
		html += '</div>\n';
	}else{
		html += '<div class="commLite">\n';
		html += '<div id="commBg_'+aryNum+'" style="background: #FFFFFF;padding: 5px 5px 5px 5px;">\n';
		html += '[<a href="#" title="クリックするとメンバーリストを表示" onclick="showMemList('+aryNum+', 0)" onmouseover="showCommDetail('+aryNum+')" onmouseout="hiddenCommDetail('+aryNum+')">詳細</a>]<br />\n';
		html += '<div id="commDetail_'+aryNum+'">';
		html += '<a href="'+cLink+'" target="_blank"><img src="'+cImage+'" border="0" /></a><br />\n';
		html += '</div>\n';
		html += cSubject+'('+docCount+')<br />';
		html += '<input type="checkbox" id="tlist_'+aryNum+'" name="tlist_'+aryNum+'" onclick="targetList('+aryNum+')"> 比較対象に\n';
		html += '</div>\n';
		html += '</div>\n';
	}
	return html;
}

function memberView(aryNum, memberDoc, background) {
	var html = '';
	var mId = (memberDoc.getElementsByTagName('id').length > 0) ? memberDoc.getElementsByTagName('id')[0].firstChild.nodeValue : 0;
	var mSubject = (memberDoc.getElementsByTagName('subject')[0].childNodes.length > 0 && memberDoc.getElementsByTagName('subject').length > 0) ? memberDoc.getElementsByTagName('subject')[0].firstChild.nodeValue : '---さん';
	var mLink = (memberDoc.getElementsByTagName('link')[0].childNodes.length > 0 && memberDoc.getElementsByTagName('link').length > 0) ? memberDoc.getElementsByTagName('link')[0].firstChild.nodeValue : '';
	var mImage = (memberDoc.getElementsByTagName('image')[0].childNodes.length > 0 && memberDoc.getElementsByTagName('image').length > 0) ? memberDoc.getElementsByTagName('image')[0].firstChild.nodeValue : 'http://img.mixi.jp/photo/member/no_photo_small.gif';
	var mCount = (memberDoc.getElementsByTagName('count')[0].childNodes.length > 0 && memberDoc.getElementsByTagName('count').length > 0) ? memberDoc.getElementsByTagName('count')[0].firstChild.nodeValue : 0;
	html += '<div class="memLite" style="background: #'+background+';">\n';
	html += '<a href="'+mLink+'" target="_blank"><img src="'+mImage+'" border="0" /></a><br />\n';
	html += mSubject;
	html += '('+mCount+')';
	html += '</div>\n';
	return html;
}

function replaceThum(imgUrl) {
	if(imgUrl==null || imgUrl==undefined || imgUrl=='') return '';
	var img = imgUrl;
	if(img.indexOf('no_logo.gif') > -1){
		img = img.split("no_logo.gif");
		img = img.join("no_logo_small.gif");
	}else{
		img = img.split(".jpg");
		img = img.join("s.jpg");
		img = img.split(".gif");
		img = img.join("s.gif");
		img = img.split(".png");
		img = img.join("s.png");
	}
	return img;
}

function targetList(aryNum) {
	var html = '';
	var viewCount = 0;
	var mObj = xmlAry[aryNum].getElementsByTagName('member');
	var commBgNum = 'commBg_'+aryNum;
	var tlistNum = 'tlist_'+aryNum;
	if(gid(tlistNum).checked){
		targetCount++;
		gid(commBgNum).style.background = '#FEC977';
	}else{
		 targetCount--;
		gid(commBgNum).style.background = '#FFFFFF';
	}
	var bgcolor = (1 < targetCount) ? 'FFF4E0' : 'FFFFFF' ;
	for (var i=0; i<mObj.length; i++) {
		var mId = mObj[i].getElementsByTagName('id')[0].firstChild.nodeValue;
		if(hitMember[mId]==undefined) hitMember[mId] = 0;
		if(gid(tlistNum).checked) hitMember[mId]++;
		else hitMember[mId]--;
		if(targetCount <= hitMember[mId] && viewCount < targetMaxView){
			viewCount++;
			html += memberView(i, mObj[i], bgcolor);
		}
	}
	html += "<br style=\"clear:both;\" />\n";
	gid('viewCtrl').innerHTML = 'リストページ';
	if(gid(tlistNum).checked) gid('memList').innerHTML = html;
	else gid('memList').innerHTML = targetMemberDecrease(bgcolor);
	gid('commGuide').innerHTML = targetCommGuide();
}

function targetMemberDecrease(bgcolor) {
	var html = '';
	var viewCount = 0;
	for (var aryNum=0; aryNum<xmlAry.length; aryNum++) {
		var tlistNum = 'tlist_'+aryNum;
		if(gid(tlistNum).checked) {
			var mObj = xmlAry[aryNum].getElementsByTagName('member');
			for (var i=0; i<mObj.length; i++) {
				var mId = mObj[i].getElementsByTagName('id')[0].firstChild.nodeValue;
				if(targetCount <= hitMember[mId] && viewCount < maxView){
					viewCount++;
					html += memberView(i, mObj[i], bgcolor);
				}
			}
			break;
		}
	}
	html += "<br style=\"clear:both;\" />\n";
	return html;
}

function targetCommGuide() {
	var html = '';
	for (var aryNum=0; aryNum<xmlAry.length; aryNum++) {
		var tlistNum = 'tlist_'+aryNum;
		if(gid(tlistNum).checked){
			var cSubject = xmlAry[aryNum].getElementsByTagName('community')[0].getElementsByTagName('subject')[0].firstChild.nodeValue;
			var cLink = xmlAry[aryNum].getElementsByTagName('community')[0].getElementsByTagName('link')[0].firstChild.nodeValue;
			html += '<a href="'+cLink+'" target"_blank">'+cSubject+'</a> ';
		}
	}
	if(targetCount <= 1) html += 'メンバーリスト';
	else html += '共通メンバー';
	return html;
}

function disableForm() {
	if(document.rform!=null && document.rform.load!=null) document.rform.load.disabled = true;
	if(document.rform!=null && document.rform.clear!=null) document.rform.clear.disabled = true;
	if(document.rform!=null && document.rform.comm!=null) document.rform.comm.disabled = true;
	if(document.rform!=null && document.rform.count!=null) document.rform.count.disabled = true;
	if(document.cform.addbtn) {
		if(document.cform.addbtn.length > 0){
			for(var i=0; i<document.cform.addbtn.length; i++) document.cform.addbtn[i].disabled = true;
		}else{
			document.cform.addbtn.disabled = true;
		}
	}
	submitForm = false;
}

function ableForm() {
	if(document.rform!=null && document.rform.load!=null) document.rform.load.disabled = false;
	if(document.rform!=null && document.rform.clear!=null) document.rform.clear.disabled = false;
	if(document.rform!=null && document.rform.comm!=null) document.rform.comm.disabled = false;
	if(document.rform!=null && document.rform.count!=null) document.rform.count.disabled = false;
	if(document.cform.addbtn) {
		if(document.cform.addbtn.length > 0){
			for(var i=0; i<document.cform.addbtn.length; i++) document.cform.addbtn[i].disabled = false;
		}else{
			document.cform.addbtn.disabled = false;
		}
	}
	submitForm = true;
}

function clearDisp() {
	if(confirm('取得情報、表示内容をクリアしますか？')){
		xmlAry = new Array();
		hitMember = new Object();
		targetCount = 0;
		gid('commList').innerHTML = 'ここにメンバー情報を取得したコミュニティがリストされます。';
		gid('memList').innerHTML = 'ここに取得したメンバー、共通したメンバーがリストされます。';
		gid('viewCtrl').innerHTML = 'リストページ';
		gid('commGuide').innerHTML = 'コミュニティ名';
		gid('comm').value = '';
		gid('indiImg').innerHTML = '<img src="http://girled.net/img/n_indi.gif" width="16" height="16" border="0" />';
		gid('indiText').innerHTML = 'コミュニティページURL（またはid）を入力して、情報取得ボタンを押してください。';
		ableForm();
	}
}

function getXmlHttp() {
	var obj;
	try { 
		obj = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) { 
		try {
			obj = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			obj = false;
		}
	}
	if (!obj && typeof XMLHttpRequest!=undefined) obj = new XMLHttpRequest();
	return obj;
}

function trimCommId(inCommId) {
	if(inCommId==null || inCommId==undefined || inCommId=='') return '';
	var id = inCommId;
	if(id.indexOf('comm_id=') > -1) id = (((id.split('comm_id='))[1]).split('&'))[0];
	if(id.indexOf('id=') > -1) id = (((id.split('id='))[1]).split('&'))[0];
	return id;
}

function trimPage(inPage) {
	var num = inPage;
	if(num==null || num==undefined || num=='') return '';
	if(num.indexOf('page=') > -1) { return (((num.split('page='))[1]).split('&'))[0] }
	else { return '' }
}

function trimGetCount(inPage) {
	var num = inPage;
	if(num==null || num==undefined || num=='') return '';
	if(num.indexOf('page=') > -1) { return (((num.split('cnt='))[1]).split('&'))[0] }
	else { return '' }
}

function showForm(inGetCount) {
	var html = '';
	html += '<input type="text" id="comm" name="comm" autocomplete="off" />';
	html += ' <select id="count" name="count">';
	html += ' <option value="'+inGetCount+'" selected>'+inGetCount+'</option>';
	html += ' <option value="1000">1000</option>';
	html += ' <option value="900">900</option>';
	html += ' <option value="800">800</option>';
	html += ' <option value="700">700</option>';
	html += ' <option value="600">600</option>';
	html += ' <option value="500">500</option>';
	html += ' <option value="400">400</option>';
	html += ' <option value="300">300</option>';
	html += ' <option value="200">200</option>';
	html += ' <option value="100">100</option>';
	html += ' </select>件';
	html += ' <input type="button" name="load" onclick="loadCms()" value="情報取得" /> <input type="button" name="clear" onclick="clearDisp()" value="クリア" />';
	return html;
}

function hiddenForm() {
	var html = '';
	html += '<input type="hidden" id="comm" name="comm" autocomplete="off" /> <input type="hidden" name="load" onclick="loadCms()" value="情報取得" /> <input type="hidden" name="clear" onclick="clearDisp()" value="クリア" />';
	html += 'コミュニティのメンバー追加ボタンを押してください。';
	return html;
}

function showCommDetail(aryNum) {
	var html = '';
	var cId = xmlAry[aryNum].getElementsByTagName('id')[0].firstChild.nodeValue;
	var cSubject = xmlAry[aryNum].getElementsByTagName('subject')[0].firstChild.nodeValue;
	var cLink = xmlAry[aryNum].getElementsByTagName('link')[0].firstChild.nodeValue;
	var cImage = xmlAry[aryNum].getElementsByTagName('image')[0].firstChild.nodeValue;
	var cCount = xmlAry[aryNum].getElementsByTagName('count')[0].firstChild.nodeValue;
	var cDate = xmlAry[aryNum].getElementsByTagName('date')[0].firstChild.nodeValue;
	var cMaster = xmlAry[aryNum].getElementsByTagName('master')[0].firstChild.nodeValue;
	var cSubMaster = xmlAry[aryNum].getElementsByTagName('submaster')[0].firstChild.nodeValue;
	var cCategory = xmlAry[aryNum].getElementsByTagName('category')[0].firstChild.nodeValue;
	var cLevel = xmlAry[aryNum].getElementsByTagName('level')[0].firstChild.nodeValue;
	var cDetail = xmlAry[aryNum].getElementsByTagName('detail')[0].firstChild.nodeValue;
	html += '<a href="'+cLink+'" target="_blank"><img src="'+cImage+'" border="0" /></a><br />\n';
	html += 'コミュニティの名前:<br />'+cSubject+'<br />(id:'+cId+')<br />';
	html += '開設日: '+cDate+'<br />';
	html += '管理人: '+cMaster+'<br />';
	html += '副管理人: '+cSubMaster+'<br />';
	html += 'カテゴリ: '+cCategory+'<br />';
	html += 'メンバー数: '+cCount+'人<br />';
	//html += '参加条件と公開レベル:<br />'+cLevel+'<br />';
	//html += 'コミュニティの説明:<br />'	+cDetail+'<br />';
	gid('commDetail_'+aryNum).innerHTML = html;
}

function hiddenCommDetail(aryNum) {
	var html = '';
	var cLink = xmlAry[aryNum].getElementsByTagName('link')[0].firstChild.nodeValue;
	var cImage = xmlAry[aryNum].getElementsByTagName('image')[0].firstChild.nodeValue;
	cImage = replaceThum(cImage);
	html += '<a href="'+cLink+'" target="_blank"><img src="'+cImage+'" border="0" /></a><br />\n';
	gid('commDetail_'+aryNum).innerHTML = html;
}

function showMemList(aryNum, memIndex) {
	var ctrlHtml = '';
	var html = '';

	var len = xmlAry[aryNum].getElementsByTagName('member').length;
	var seek = (maxView > (len-memIndex)) ? (len-memIndex) : maxView ;
	for (var i=memIndex; i<memIndex+seek; i++) {
		html += memberView(i, xmlAry[aryNum].getElementsByTagName('member')[i], 'FFFFFF');
	}
	html += "<br style=\"clear:both;\" />\n";

	var preValue = 0;
	var nextValue = len;
	if(0 < memIndex) {
		preValue = (memIndex-maxView < 0) ? 0 : memIndex-maxView ;
		ctrlHtml += ' [<a href="#" onclick="showMemList('+aryNum+', '+preValue+')">前を表示</a>]';
	}else{
		ctrlHtml += ' [前を表示]';
	}
	if(memIndex+maxView < len) {
		nextValue = memIndex+maxView;
		ctrlHtml += ' [<a href="#" onclick="showMemList('+aryNum+', '+nextValue+')">次を表示</a>]';
	}else{
		ctrlHtml += ' [次を表示]';
	}
	var prePanel = (0 == memIndex) ? 1 : preValue+maxView+1 ;
	ctrlHtml = '('+prePanel+'-'+nextValue+'/'+len+') ' + ctrlHtml;

	gid('viewCtrl').innerHTML = ctrlHtml;
	gid('commGuide').innerHTML = showCommGuide(aryNum);
	gid('memList').innerHTML = html;
}

function showCommGuide(aryNum) {
	var html = '';
	var cId = xmlAry[aryNum].getElementsByTagName('id')[0].firstChild.nodeValue;
	var cSubject = xmlAry[aryNum].getElementsByTagName('subject')[0].firstChild.nodeValue;
	var cLink = xmlAry[aryNum].getElementsByTagName('link')[0].firstChild.nodeValue;
	html += '<a href="'+cLink+'" target="_blank">'	+cSubject+'</a> (id:'+cId+')';
	return html;
}

function chkCrossBrowser() {
	var a,ua=navigator.userAgent;
	this.bw={ 
	safari    : ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0]:0)>=124 ,
	konqueror : ((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3 ,
	mozes     : ((a=ua.split('Gecko/')[1])?a.split(" ")[0]:0) >= 20011128 ,
	opera     : (!!window.opera) && ((typeof XMLHttpRequest)=='function') ,
	msie      : (!!window.ActiveXObject)?(!!getXmlHttp()):false 
	};
	return (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie);
}

