// JavaScript Document

var PrevTopicDate;	// 一つ前のトピックの日付(年/月)判別フラグ;

/**
 * ＸＭＬファイルから取り込んだトピックの一覧の作成する
 *
 * @param listName (I) 一覧の名前　XML ファイル (???List.xml の ??? 部分)
 * @param listName (I) 一覧ファイルの所在アドレス
 * @param groupName (I) タグの名前
 *							tagItem.dateName 	表示日付タグ名
 *							tagItem.groupName	表示グループタグ名
 *							tagItem.linkName	表示リンクタグ名
 *							tagItem.titleName	表示タイトルタグ名
 *
 * @param CheckTopicFunc (I) 関数：一覧ごとの表示判定をする関数 (true/false を返す)
 * @param YearRange (I) 表示する年 (限定しない場合は 0、もしくは省くことも可)
 * @param LimitNum (I) 表示限定数 (限定しない場合は 0、もしくは省くことも可)
 * @param IsSeparate (I) 一覧に区切りをつけるか否か (デフォルトで区切る（1）　0:区切りなし)
 */
function InsertTopicList(ListName, Folder, TagItem, CheckTopicFunc, LimitNum, YearRange, IsSeparate){
	
	// null to zero;
	YearRange = Null2Value(YearRange, 0);
	LimitNum = Null2Value(LimitNum, 0);
	IsSeparate = Null2Value(IsSeparate, true);
	
	// データファイルロード;
	MakeXmlFileList(ListName, Folder);
	// ページにロードデータを設定する;
	;
	SetTopicList(ListName, TagItem, CheckTopicFunc, LimitNum, YearRange, IsSeparate);
}

function MakeXmlFileList(ListName, Folder){
	loadDataFile(Folder + ListName + 'List.xml', mapItemList);
	mapItemList();
}

/**
 * ページにＸＭＬファイルから取り込んだトピックを追加する
 *
 * @param ListName      (I) 一覧名
 * @param TagItem      (I) グループ名
 * @param CheckTopicFunc (I) トピック表示有無判別関数
 *							 CheckTopicFun
 * @param YearRange      (I) 表示を限定する年　（0 : 限定なし）
 * @param LimitNum       (I) 最大表示数
 * @param IsSeparate (I) 一覧に区切りをつけるか否か (デフォルトで区切る（1）　0:区切りなし)
 */
function SetTopicList(ListName, TagItem, CheckTopicFunc, LimitNum, YearRange, IsSeparate){
	var tagString;
	tagString = GetTagString(TagItem, CheckTopicFunc, LimitNum, YearRange, IsSeparate);
	document.getElementById(ListName + "RssArea").innerHTML = tagString;
}

function GetTagString(TagItem, CheckTopicFunc, LimitNum, YearRange, IsSeparate){
	
	var tagString;
	var curTopicNo;
	var judgeFlg;
	var todayDate;
	var listCount;
	var writeCount;
	var finishFlg;
	tagString = "";
	checkAddTopicFlg = 0;
	finishFlg = false;

	todayDate = new Date();
	PrevTopicDate = todayDate;
	
	// 表示数が"0"に設定されている場合は、全て表示;
	if (LimitNum == 0){
		listCount = itemTags.length;
		judgeFlg = false;
	} else{
		listCount = LimitNum;
		judgeFlg = true;
	}
	
	for (curTopicNo = 0; curTopicNo < itemTags.length; curTopicNo++){
		// 一覧への追加有無フラグ  -1: 以後必要なし　　0:今トピックが非表示  1:表示;
		switch(CheckTopicFunc(curTopicNo, YearRange, listCount, judgeFlg, todayDate)){
		case 1:
			tagString += GetTopic(TagItem, curTopicNo, todayDate, IsSeparate);
			listCount -= 1;
			break;
		case -1:
			finishFlg = true;
			break;
		}
		
		if (finishFlg == true){
			break;
		}
	}

	if(LimitNum != 0){
		var brCount;
		for(brCount = 1; brCount <= listCount; brCount++){
			tagString += "<br /><br /><br />";
		}
	}
			
	return tagString;
}

function getTitleImage(TagItem, imgName, CurTopicNo){	
	var imageAddress;
	var imgNum;
	imageAddress = "";

	for (imgNum = 0; imgNum < topicTags.length; imgNum++){
		if (topicTags[imgNum].getElementsByTagName("name")[0].childNodes[0].nodeValue == imgName){
			imageAddress = topicTags[imgNum].getElementsByTagName("image")[0].childNodes[0].nodeValue;
			break;
		}
	}

	var titleImage = "";
	if (imageAddress != ""){
		titleImage = "<div class='topicImg'>";
		titleImage += "<img src='" + imageAddress + "' alt='" + imgName + "' />";
		titleImage += "</div>";
	} else{
		titleImage = "<div style='background:url(/img/place_title_non.PNG) no-repeat; width:100px; float:left;'>";
		titleImage += "<div style='width:83px; float:left;'><center><font color=#FFFFFF>" + itemTags[CurTopicNo].getElementsByTagName(TagItem.groupName)[0].childNodes[0].nodeValue + "</font></center></div></div>";
	}
	return titleImage;
}

function getTitle(ItemLink, ItemTitle){
	var linkedTitle;
	linkedTitle = "";

	if (ItemLink != "nothing"){
		linkedTitle += "<a href='" + ItemLink + "' " 
					+ getTarget(ItemLink) + ">";
		linkedTitle += ItemTitle;
		linkedTitle += "</a>";
	} else{
		linkedTitle += ItemTitle;
	}
	
	return linkedTitle;
}

function getTarget(linkString){
	var target;
	if (linkString.indexOf("www.josai.jp") == -1){
		target = "target='_blank'";
	}
	return target;
}

function GetTopic(TagItem, CurTopicNo, TodayDate, IsSeparate){
	var topicTagString = "";

	var itemPubDate;
	var itemGroup;
	var itemLink;
	var itemTitle;
	var todayDateTime = TodayDate.getTime();
		
	itemPubDate = new Date(itemTags[CurTopicNo].getElementsByTagName(TagItem.dateName)[0].childNodes[0].nodeValue);
	itemGroup = itemTags[CurTopicNo].getElementsByTagName(TagItem.groupName)[0].childNodes[0].nodeValue;
	itemLink = itemTags[CurTopicNo].getElementsByTagName(TagItem.linkName)[0].childNodes[0].nodeValue;
	itemTitle = itemTags[CurTopicNo].getElementsByTagName(TagItem.titleName)[0].childNodes[0].nodeValue;
	
// 一覧内に月毎の表示を入れる;
	if (IsSeparate != false){
		topicTagString += DateSeparator(itemPubDate, TodayDate);
	}
	
	topicTagString += "<div class='topicSpace'>";	
		
	/* 日付の設定
	 */
	topicTagString += "<dt>";
	topicTagString += itemPubDate.getFullYear() + '.' + (itemPubDate.getMonth() + 1) + '.' + itemPubDate.getDate();
	if (todayDateTime < itemPubDate.getTime() + 10 * 24 * 60 * 60 * 1000){
		topicTagString += " <img src='/img/new.gif' />";
	}
	topicTagString += "</dt>";
	
	/* 画像の設定
	 */
	topicTagString += "<dd>";
	topicTagString += getTitleImage(TagItem, itemGroup, CurTopicNo);
	
	/* リンクの設定
	 */
	topicTagString += "<div class='topicText'>";
	topicTagString += getTitle(itemLink, itemTitle);
	
	topicTagString += "</div>";
	
	topicTagString += "</dd>";
	topicTagString += "</div>";	
		
	PrevTopicDate = itemPubDate;
	return topicTagString;
}

function Null2Value(TargetValue, SelectValue){
	return ((TargetValue == null) ? SelectValue : TargetValue);
}

function DateSeparator(PublicDate, TodayDate){
	var separator = "";
	var isSameMonth = false;
	var isSameYear = false;

	if (PublicDate.getFullYear() != PrevTopicDate.getFullYear() || PublicDate.getMonth() != PrevTopicDate.getMonth()){
		if (PrevTopicDate != TodayDate){
			separator += "<br /><br /><br /><br />";
		}
		
		separator += "<div width='200px'>";
		separator += "<h3>";
		
		if (PublicDate.getFullYear() != PrevTopicDate.getFullYear()){
			separator += (PublicDate.getFullYear() ) + MARK_YEAR_JA + " ";
		}
		
		separator += (PublicDate.getMonth() + 1) + MARK_MONTH_JA + "</h3>";
		separator += "</div><br />";
	}
	
	return separator;
}
