﻿// charset=UTF-8
//説明：新着情報RSSをページ内に表示するスクリプト【RSS2.0専用】
//(1)ページロード時に指定したRSS(XMLファイルのみ)から記事を取得・解析
//(2)取得したXMLデータをHTMLリスト形式に編集
//(3)編集した新着情報を指定したidのdivタグ内に表示
//注意：このjsを指定するHTMLファイルと同じディレクトリにloading.gifを置いてください。
//必要ライブラリ：jQuery.js (2011.2.4 prototype.jsを不要化)



jQuery(function () {


//****パラメータ****

//新着情報参照先XMLファイル（index.htmlからの相対位置）
	var xml_url = "rss/beppu.xml";
//表示する件数（新しい順になります）
	var newscount = 5;
//表示する最大文字数
	var listlength = 23;
//読み込み中メッセージ
	var loadingmsg = "<img src='loading.gif' />　読込中・・・\n";
//読込失敗時メッセージ
	var falsemsg = "データを取得できませんでした。新着情報は、「新着一覧...」からご覧ください。\n";
	

//*****以下処理部*****

//表示のクリア
function clearDisp() {
  jQuery("#news_result").text("");
}


//新着情報の取得・編集・出力
newsDisp();

function newsDisp() {

  jQuery("#news_result").html(loadingmsg) ; //読込中lordingmsgに指定したメッセージを表示する
  
//ajax通信(jQuery);
	jQuery.ajax({
    	url: xml_url,
    	type: "GET",
		cache : false, //通信結果をキャッシュしない
		processData: false, //dataに指定したオブジェクトをクエリ文字列に変換しない
    	dataType: "xml", //htmlをテキストデータとして読み込む（DOMオブジェクトとしては読み込めない）
    	timeout: 1000,
    	error: showErrMsg_n(),
    	success: function(xml_data){getData(xml_data);}
	});
		
//データの解析・編集・出力
	function getData(xml_data){
		var item = xml_data.getElementsByTagName('item'); //XML内のitem要素をすべて取り出してｵﾌﾞｼﾞｪｸﾄﾃﾞｰﾀの配列としてitemに格納
	
		var tmpHtml="";

		tmpHtml += "<ul>";

		for(i = 0; i < newscount/*item.length*/ ; i++){ //itemのtitle,link,dateをnewscountで指定の件数取り出す
			var title = item[i].getElementsByTagName('title');
			var titleValue = title[0].firstChild.nodeValue; //title（配列に格納されたｵﾌﾞｼﾞｪｸﾄ）の中の文字列を取り出す
//			titleValue = titleValue.truncate(25, "..."); //指定文字数を超える場合、文字を省略し ...を付けて指定文字数にする(prototype)
			if (titleValue.length > listlength) { //残りの文字列が指定最大文字数を超えるときは丸めて ...を付加
				titleValue = titleValue.substring(0,listlength-1);
				titleValue = titleValue + "...";				
			}
	  
			var link = item[i].getElementsByTagName('link');
			var linkValue = link[0].firstChild.nodeValue;

			var pubdate = item[i].getElementsByTagName('pubDate');
			var dateText = pubdate[0].firstChild.nodeValue;
			dateDate = new Date(dateText); //pubdateデータを日付データ化
			var month = dateDate.getMonth();
			month ++; //getMonthで得られるデータは1月=0なので1を足す
			month = "0" + month; //数値monthの先頭に文字列０を付けて全体を先頭0付きの文字列化
			month = month.substr(month.length -2); //文字列monthの末尾から2文字だけをmonthに代入（２桁揃え）
			var day = dateDate.getDate();
			day = "0" + day;
			day = day.substr(day.length-2);
			var dateValue = month + "月" + day + "日";
//			alert("dateValue:: " + dateValue );

			tmpHtml += "<li><a href='" + linkValue + "'>" + titleValue + "</a>";
			tmpHtml += "<span class='newsdate'>" + dateValue + "</span></li>";
		} //for文ここまで
		tmpHtml += "</ul>";
		jQuery("#news_result").html(tmpHtml);  
	} //getdata定義ここまで
} //newdisp定義ここまで

//エラー時のメッセージの表示
function showErrMsg_n(){
  clearDisp();
  jQuery("#news_result").text(falsemsg);//読込失敗時falsemsgで指定したメッセージを表示する
}
		   });
