/*
 * ランダム要素配列取得
 * In : int argCount 元の配列の要素数
 *      int argMax   生成する配列の要素数
 * Out: Array(int)   ランダム要素用の配列
 */
function randomElementBoxed(argCount, argMax) {

	/*** 異常値判別 ***/
	/* 元配列数 */
	//数値以外
	if (isNaN(argCount)) {
		return false;
	//範囲外
	} else if (argCount < 1) {
		return false;
	}
	//整数化して判別終了
	var iCount = parseInt(argCount);

	/* 生成配列最大数 */
	//数値以外
	if (isNaN(argMax)) {
		return false;
	//範囲外
	} else if (argMax < 1) {
		return false;
	}
	//整数化して判別終了
	var iMax = parseInt(argMax);


	/*** 設定 ***/
	//生成する配列の要素数
	if (iCount < iMax) {
		iMax = iCount;
	}
	//要素配列作成
	var iElementArray = new Array();
	for (var i=0; i<iCount; i++) {
		iElementArray.push(i);
	}
	//ランダム要素配列宣言
	var iRandomElementArray = new Array();


	/*** ランダムソート ***/
	for (var i=0; i<iMax; i++) {
		//ランダム値の作成
		iRandomNumber = Math.floor(Math.random() * iElementArray.length);

		//ランダム値番目の値をランダム要素配列にPUSH、さらに1番目の値をランダム値番目に入れ替え
		iRandomElementArray.push(iElementArray.splice(iRandomNumber,1,iElementArray[0]));
		//要素配列をSHIFT
		iElementArray.shift();
	}

	/*** 出力 ***/
	return iRandomElementArray;
}


/*
 * 初期呼び出し時処理 コミュニティ表示のランダム化
 * Global: arrCommunityCatalogArray コミュニティカタログデータ配列
 */
function communityReplace () {

	/*** ランダム要素配列を取得 ***/
	var iRandomArray = randomElementBoxed(arrCommunityCatalogArray.length, 12);


	/*** 初期表示を置換 ***/
	//ランダム配列長を取得
	var iCount = iRandomArray.length;
	//ランダム配列でループ
	for (var i=0; i<iCount; i++) {
		document.getElementById("community_title_" + (i + 1)).innerHTML = arrCommunityCatalogArray[iRandomArray[i]][0];
		document.getElementById("community_image_" + (i + 1)).innerHTML = arrCommunityCatalogArray[iRandomArray[i]][1];
		document.getElementById("community_explain_" + (i + 1)).innerHTML = arrCommunityCatalogArray[iRandomArray[i]][2];
	}
	//拡張表示リンクを置換
	if (iCount >= 4) {
		document.getElementById("community_word_more").innerHTML = "もっと見る";
	}

	//js無効時用cssを置換
	document.getElementById("community_display_noscript").style.display = "inline";

}


/*
 * 初期呼び出し時処理 リンク表示のランダム化
 * Global: arrLinkCatalogArray リンクカタログデータ配列
 */
function linkReplace () {

	/*** ランダム要素配列を取得 ***/
	var iRandomArray = randomElementBoxed(arrLinkCatalogArray.length, 10);


	/*** 初期表示を置換 ***/
	//ランダム配列長を取得
	var iCount = iRandomArray.length;
	//ランダム配列でループ
	for (var i=0; i<iCount; i++) {
		document.getElementById("link_title_" + (i + 1)).innerHTML = arrLinkCatalogArray[iRandomArray[i]][0];
		document.getElementById("link_image_" + (i + 1)).innerHTML = arrLinkCatalogArray[iRandomArray[i]][1];
		document.getElementById("link_explain_" + (i + 1)).innerHTML = arrLinkCatalogArray[iRandomArray[i]][2];
	}

	//js無効時用cssを置換
	document.getElementById("link_display_noscript").style.display = "inline";

}


/*
 * 拡張表示処理クラス
 */
communitySwitch = {

	/* 表示・非表示フラグ */
	displayParam:false, //true:全表示, false:部分表示

	/* 表示・非表示切り替え処理 */
	displayMore:function () {
		//拡張部分を非表示に
		if (this.displayParam) {
			this.displayParam = false;
			this.hidepara("community_display_more");
			document.getElementById("community_word_more").innerHTML="もっと見る";
		//拡張部分を表示に
		} else {
			this.displayParam = true;
			this.showpara("community_display_more");
			document.getElementById("community_word_more").innerHTML="元に戻す";
		}
	},

	/* 指定オブジェクトを表示に */
	showpara:function (type) {
		if (document.all) {
			document.all(type).style.display = "inline";
		} else if(document.getElementById) {
			document.getElementById(type).style.display = "inline";
		}
	},

	/* 指定オブジェクトを非表示に */
	hidepara:function (type) {
		if (document.all) {
			document.all(type).style.display = "none";
		} else if(document.getElementById) {
			document.getElementById(type).style.display = "none";
		}
	}

}


/*
 * 初期呼び出し時処理
 */
function load() {

	/*** 初期呼び出し ***/
	/* コミュニティ */
	communityReplace();

	/* リンク */
	linkReplace();

}
