﻿/* 「ニュース＆天気」関連関数 */
/**
 * ニューストップページ情報表示用HTML出力関数
 * 1. data			:XMLデータ
 * 2. category		:検索カテゴリー(2:ニュース固定)
 * 3. genre			:ニュースジャンル
 * 4. yyyymmdd		:表示ニュース日付
 * 5. search		:検索状態(1:検索実施前、2:検索実施後)
 * 6. page			:現在のページ番号
 * 7. this_yyyymmdd	:検索実施日
 */
function setTopNewsList(data, category, genre, yyyymmdd, search, page, this_yyyymmdd){
	var i;
	var j;
	var k;
	var l;
	var str = '';
	var genre_length = data.itemList.genre.length;
	// トップページ項目毎表示ニュース数
	var top_category_news = 3;

	// 各ジャンル別ニュースデータ格納用リスト
	var data_set = new Array();
	var data_cat = new Array();
	var set_news = 0;
	var cat_news = 0;

	// ジャンル数でループ
	for (i=0; i<genre_length; i++){
		var item_length = data.itemList.genre[i].item.length;
		data_set[i] = data.itemList.genre[i];
		set_news = 0;
		
		// ニュース表示日＋表示日決定フラグ
		var disp_date;
		var past_date = parseInt(getDateFormat(7, 'before'));
		var fix_date  = false;
		
		if(!isEmpty(item_length)){
			for(j=0; j<item_length; j++){
				// ニュースデータの日付を取得
				if(j==0){
					disp_date = this_yyyymmdd;
				}
				
				if(fix_date == false && 
				   data.itemList.genre[i].item[j].yyyymmdd == disp_date &&
				   parseInt(data.itemList.genre[i].item[j].yyyymmdd) >= past_date){
					fix_date = true;
				}else if(fix_date == false && 
				         data.itemList.genre[i].item[j].yyyymmdd != disp_date &&
						 parseInt(data.itemList.genre[i].item[j].yyyymmdd) >= past_date){
					disp_date = data.itemList.genre[i].item[j].yyyymmdd;
					fix_date = true;
				}
				
				// 表示日が確定し、ニュースデータの日付が表示日と一致した場合
				if(fix_date == true && data.itemList.genre[i].item[j].yyyymmdd == disp_date){
					data_cat[set_news] = data.itemList.genre[i].item[j];
					set_news++;
					if(set_news==top_category_news){break};
				}
				if(j==item_length-1 && set_news<top_category_news){
					for(k=set_news; k<top_category_news; k++){
						data_cat[k] = '';
					}
				}
			}
		}else{
			if(parseInt(data.itemList.genre[i].item.yyyymmdd) >= past_date){
				data_cat[set_news] = data.itemList.genre[i].item;
			}
		}
		
		// カテゴリー別ヘッダ
		str += '<div class="cat">';
		if(set_news == 0){
			// 見出し表示
			if(i==0){
				str += setNoDataHTML(this_yyyymmdd, news_genre[i+1], genre);
			}else if(i==1){
				str += setNoDataHTML(this_yyyymmdd, news_genre[i-1], genre);
			}else{
				str += setNoDataHTML(this_yyyymmdd, news_genre[i]  , genre);
			}
		}else{
			str += writeMovieHtml(category, genre, yyyymmdd, search, page, i, data_cat[0]);
			if(set_news>1){
				str += '<div class="newsList">';
				str += '<ul>';
				for(l=0;l<set_news-1;l++){
					str += writeCategoryNews(category, genre, yyyymmdd, search, page, data_cat[l+1], i+1);
				}				
				str += '</ul>';
				str += '</div>';
				str += '<div class="clearfloat"></div>';
			}
		}
		str += '</div>';
	}
	return str;
}

/**
 * ニュースジャンル別ページ情報表示用HTML出力関数
 * 1. data			:XMLデータ
 * 2. category		:検索カテゴリー(2:ニュース固定)
 * 3. genre			:ニュースジャンル
 * 4. yyyymmdd		:表示ニュース日付
 * 5. search		:検索状態(1:検索実施前、2:検索実施後)
 * 6. page			:現在のページ番号
 * 7. search_date	:検索対象日
 */
function setGenreNewsList(data, category, genre, yyyymmdd, search, page, search_date){
	var i;
	var str = '';
	var position;
	var count_data = 0;
	if(genre==2){
		position = data.itemList.genre[genre-2];
	}else{
		position = data.itemList.genre[genre-1];
	}
	// カテゴリ別ニュース	開始
	str += '<div class="cat">';

	// ジャンル別のニュースデータが1件もない場合
	if(!isEmpty(position.item)){
		var data_length = position.item.length;

		if(!isEmpty(data_length)){
			for (i=0; i<data_length; i++){
				if(genre==2){
					// 指定された日付の記事のみ表示する。
					if(!isEmpty(position.item[i].yyyymmdd)){
						if(yyyymmdd == position.item[i].yyyymmdd){
							// 1件目は画像を表示する。
							if(count_data==0){
								// 見出し表示
								str += '<h1 class="newsColor">' + news_genre[genre-1] + 'ニュース</h1>';

								// ニュース一覧表示	開始
								str += '<div class="newsList">';
								str += '<ul>';
							}
							str += writeCategoryNews(category, genre, yyyymmdd, search, page, position.item[i], position.id);
							count_data++;
						}else if(count_data==0 && i==data_length-1){
							str += setNoDataHTML(search_date, news_genre[genre-1], genre);
						}
					}
				}else{
					// 指定された日付の記事のみ表示する。
					if(!isEmpty(position.item[i])){
						if(yyyymmdd == position.item[i].yyyymmdd){
							// 1件目は画像を表示する。
							if(count_data==0){
								// 見出し表示
								str += '<h1 class="newsColor">' + news_genre[genre-1] + 'ニュース</h1>';

								// ニュース一覧表示	開始
								str += '<div class="newsList">';
								str += '<ul>';
							}
							str += writeCategoryNews(category, genre, yyyymmdd, search, page,  position.item[i], position.id);
							count_data++;
						}else if(count_data==0 && i==data_length-1){
							str += setNoDataHTML(search_date, news_genre[genre-1], genre);
						}
					}
				}
			}
		}else{
			if(genre==2){
				// 指定された日付の記事のみ表示する。
				if(yyyymmdd == position.item.yyyymmdd){
					// 見出し表示
					str += '<h1 class="newsColor">' + news_genre[genre-1] + 'ニュース</h1>';

					// ニュース一覧表示	開始
					str += '<div class="newsList">';
					str += '<ul>';
					str += writeCategoryNews(category, genre, yyyymmdd, search, page,  position.item, position.id);
					count_data++;
				}else if(count_data==0){
					str += setNoDataHTML(search_date, news_genre[genre-1], genre);
				}
			}else{
				// 指定された日付の記事のみ表示する。
				if(yyyymmdd == position.item.yyyymmdd){
					// 見出し表示
					str += '<h1 class="newsColor">' + news_genre[genre-1] + 'ニュース</h1>';

					// ニュース一覧表示	開始
					str += '<div class="newsList">';
					str += '<ul>';
					str += writeCategoryNews(category, genre, yyyymmdd, search, page, position.item, position.id);
					count_data++;
				}else if(count_data==0){
					str += setNoDataHTML(search_date, news_genre[genre-1], genre);
				}
			}
		}
	}
	str += '</ul>';
	str += '</div>';
	// ニュース一覧表示	終了
	str += '<div class="clearfloat"></div>';
	str += '</div>';
	// カテゴリ別ニュース	終了
	
	return str;
}

// 画像付きニュース用HTML設定用関数
writeMovieHtml = function (category, genre, yyyymmdd, search, page, genre_id, data_node){
	var i;
	var j;
	var str = '';
	// 「ニュース＆天気」内引数一覧
	var info_param = new Array();
	info_param[0] = category;
	info_param[1] = genre;
	info_param[2] = yyyymmdd;
	info_param[3] = search;
	info_param[4] = page;

	// 見出し表示
	if(genre_id==0){
		str += '<h1 class="newsColor">' + news_genre[genre_id+1] + 'ニュース</h1>';
	}else if(genre_id==1){
		str += '<h1 class="newsColor">' + news_genre[genre_id-1] + 'ニュース</h1>';
	}else{
		str += '<h1 class="newsColor">' + news_genre[genre_id] + 'ニュース</h1>';
	}
	// 1件目ニュース	開始
	str += '<div class="newsMain">';

	// サムネイル
	str += '<div class="newsPhoto">';

	// 画像が入っていない場合、画像なし時の画像を設定する
	if(data_node.banner_id != '/news_pic/'){
		str += '<img src="./xml' + data_node.banner_id + '">';
	}else{
		str += '<img src="./xml' + data_node.banner_id + 'noimage_160x120.jpg">';
	}

	str += '</div>';

	// テキスト
	str += '<div class="newsText">';
	str += '<h2><a href="#" onclick="dispNewsDetails(';
	for(i=0; i<info_param.length; i++){
		if(i!=(info_param.length-1)){
			if(!isEmpty(info_param[i])){
				str += info_param[i] + ',';
			}else{
				str += '\'\',';
			}
		}else{
			if(!isEmpty(info_param[i])){
				str += info_param[i] + ',';
			}else{
				str += '\'\',';
			}
		}
	}
	if(!isEmpty(data_node.newsitemid)){
		str += '\'' + data_node.newsitemid + '\',' + genre_id;
	}else{
		str += '\'\',' + genre_id;
	}
	str += ');return false;">' + data_node.title + '</a></h2>';

	str += '<p>' + data_node.lead + '(' + data_node.mmddhhmm + ')</p>';
	str += '<p>[<a href="#" onclick="dispNewsDetails(';
	for(j=0; j<info_param.length; j++){
		if(j!=(info_param.length-1)){
			if(!isEmpty(info_param[j])){
				str += info_param[j] + ',';
			}else{
				str += '\'\',';
			}
		}else{
			if(!isEmpty(info_param[j])){
				str += info_param[j] + ',';
			}else{
				str += '\'\',';
			}
		}
	}
	if(!isEmpty(data_node.newsitemid)){
		str += '\'' + data_node.newsitemid + '\',' + genre_id;
	}else{
		str += '\'\',' + genre_id;
	}
	str += ');return false;">全文読む</a>]</p>';

	// ムービーリンク
	if(!isEmpty(data_node.movie_url)){
		str += writeMovieLinkHTML(data_node.movie_url, '01', 'b56k', 'b300k', 'news');
	}
	str += '</div>';

	str += '<div class="clearfloat"></div>';
	str += '</div><!-- end of newsMain -->';

	str += '<div class="pageCng">';
	str += '</div>';
	return str;
}

// カテゴリ内ページ番号設定用関数
writeCategoryNews = function (category, genre, yyyymmdd, search, page, data_node, genre_id){
	var i;
	var str = '';
	// 「ニュース＆天気」内引数一覧
	var info_param = new Array();
	info_param[0] = category;
	info_param[1] = genre;
	info_param[2] = yyyymmdd;
	info_param[3] = search;
	info_param[4] = page;

	str += '<li>';
	// タイトル
	str += '<div class="newsTitle">';
	str += '<h3><a href="#" onclick="dispNewsDetails(';
	for(i=0; i<info_param.length; i++){
		if(i!=(info_param.length-1)){
			if(!isEmpty(info_param[i])){
				str += info_param[i] + ',';
			}else{
				str += '\'\',';
			}
		}else{
			if(!isEmpty(info_param[i])){
				str += info_param[i] + ',';
			}else{
				str += '\'\',';
			}
		}
	}
	if(!isEmpty(data_node.newsitemid)){
		str += '\'' + data_node.newsitemid + '\',';
	}else{
		str += '\'\',';
	}
	if(genre == 2){
		str += genre_id;
	}else{
		str += genre_id-1;
	}
	str += ');return false;">' + data_node.title + '</a></h3>';
	str += '<p class="datetime">[' + data_node.mmddhhmm + ']</p>';
	str += '</div>';

	// ムービーリンク
	if(!isEmpty(data_node.movie_url)){
		str += writeMovieLinkHTML(data_node.movie_url, '02', 'b56k', 'b300k', 'news');
	}
	str += '</li>';
	return str;
}

// ニュース詳細データ表示用関数
function dispNewsDetails(category, genre, yyyymmdd, search, page, newsid, genre_id) {
	// Parse Each XMLs
	// XML URL Path
	var url = './xml/category_news.xml';

	var http = new JKL.ParseXML(url);
	var func = "";

	func = function(data){
		var str = '';
		var count_data = 0;

		str += '<div id="openResult">';
		str += '<a href="#" onclick="dispData(';
		str += category + ',';
		if(!isEmpty(genre)){
			str += genre + ',';
		}else{
			str += '\'\',';
		}
		if(!isEmpty(yyyymmdd)){
			str += yyyymmdd + ',';
		}else{
			str += '\'\',';
		}
		if(!isEmpty(search)){
			str += '2' + ',';
		}else{
			str += '\'\',';
		}
		if(!isEmpty(page)){
			str += page;
		}else{
			str += '\'\'';
		}
		str += ');return false;">';

		// 2007/10/17	使用画像修正
		//str += '<img src="news/open.gif" alt="検索結果を表示する" height="25" width="121">';
		str += '<img src="news/open.gif" alt="検索結果一覧へ戻る" title="検索結果一覧へ戻る" width="170" height="25" />';

		str += '</a></div>';
		str += '<h3>FBSニュース、全国ニュースをお知らせします。</h3>';

		str += '<div class="main">';
		str += '<div class="left">';
		str += '<h1><span class="alt">番組について知りたい</span></h1>';
		str += '</div>';

		// 詳細部分
		for (i=0; i<data.itemList.genre[genre_id].item.length; i++){
			if(genre == 2 && genre_id ==1){
				genre_id = 0;
			}
			var data_node = data.itemList.genre[genre_id].item[i];
		
			if(data_node.newsitemid==newsid){
				str += '<div class="right">';
				str += '<p class="oadate">' + data_node.mmddhhmm + '</p>';
				str += '<div class="subtitle"><h2 class="title">' + data_node.title + '</h2></div>';
				str += '<div class="photo">';
				// 画像が入っていない場合、画像なし時の画像を設定する
				if(data_node.banner_id != '/news_pic/'){
					str += '<img src="./xml' + data_node.banner_id + '"></div>';
				}else{
					str += '<img src="./xml' + data_node.banner_id + 'noimage_160x120.jpg" border="1"></div>';
				}
				// ムービーリンク
				if(!isEmpty(data_node.movie_url)){
					str += writeMovieLinkHTML(data_node.movie_url, '100', 'b56k2', 'b300k2', 'news');
				}
				str += '<div class="info">';
				if(!isEmpty(data_node.body)){
					str += '<p>' + changeLineCode(data_node.body) + '</p>';
				}
				str += '</div>';
				str += '</div>';
				count_data++;
				if(count_data > 0){
					break;
				}
			}
		}
		str += '<div class="bottom"></div>';
		str += '</div>';
		str += '<div class="newsBottom"></div>';

		// 番組詳細表示においては「災害情報、気象情報、交通情報は表示しない」
		// HTML書き込み(div id='left_data')
		document.getElementById('left_data').innerHTML = '';
		// HTML書き込み(div id='set_data')
		document.getElementById('set_data').innerHTML = '';

		SettingProcess(category);

		// 番組詳細情報書き込み
		// HTML書き込み(div id='newsContents')
		document.getElementById('newsContents').innerHTML = str;
	}
	http.async(func);
	http.parse();
}

// 表示ニュース0件時メッセージHTML設定用関数
function setNoDataHTML(date, genre_name, genre){
	var str = '';
	
	str += '<h1 class="newsColor">' + genre_name + 'ニュース</h1>';
	str += '<div class="newsList">';
	
	if(genre==2){
		str += '<div class="newsTitle">';
		str += '<ul>'	
	}
	
	if(genre==1){
		str += '過去1週間の' + genre_name + 'ニュースはございません。';	
	}else{
		str += date.substring(0,4) + '/';
		str += date.substring(4,6) + '/';
		str += date.substring(6,8) + 'の' + genre_name + 'ニュースはございません。';	
	}
	str += '</div>';
	return str;
}

