﻿// charset=UTF-8
//説明：新着情報RSSをページ内に表示するスクリプト
//(1)ページロード時に指定したRSS(XMLファイルのみ)から記事を取得・解析
//(2)取得したXMLデータをHTMLリスト形式に編集
//(3)編集した新着情報を指定したidのdivタグ内に表示
//注意：このjsを指定するHTMLファイルと同じディレクトリにloading.gifを置いてください。
//必要ライブラリ：prototype.js, jQuery.js



jQuery(function () {


//****パラメータ****

//新着情報参照先XMLファイル（index.htmlからの相対位置）
	var xml_url = "rss/beppu.xml";
//HTML中に表示するdivのid
	var news_result = $("news_result");//(prototype)
//表示する件数（新しい順になります）
	var newscount = 5;
//読み込み中メッセージ
	var loadingmsg = "<img src='loading.gif' />　読込中・・・\n";
//読込失敗時メッセージ
	var falsemsg = "データを取得できませんでした。新着情報は、「新着一覧...」からご覧ください。\n";
	

//*****以下処理部*****

//表示のクリア
function clearDisp() {
  news_result.innerHTML = "";
}


//新着情報の取得・編集・出力
newsDisp();

function newsDisp() {

  news_result.innerHTML = loadingmsg; //読込中lordingmsgに指定したメッセージを表示する

  var url = xml_url;//xml_urlに指定したxmlファイルを読みに行く
  var paramList = "time=" + (new Date().getTime()); //現在時刻を取得しキャッシュ対策

//ajax通信(prototype)
  new Ajax.Request(url,
    {
      method: 'get',
      onSuccess: getData,
      onFailure: showErrMsg_n,
	  onException: showErrMsg_n,
	  on404: showErrMsg_n,
      parameters: paramList
  });
//データの取得(prototype)
  function getData(data){
    var rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; //rdfデータの名前空間を参照してrdf:**を使用可能にする
    var response;
    if(document.all){ //IEにしか実装されていない命令でIE対策
      response = data.responseXML.getElementsByTagName('rdf:RDF');//getElementsByTagNameNS未対応であるIEはこちら
    }else{
      response = data.responseXML.getElementsByTagNameNS(rdf,'RDF');//その他のブラウザはこちら
    }

    var item = response[0].getElementsByTagName('item'); 

//データの解析・編集・出力(prototype)
	var tmpHtml="";

      tmpHtml += "<ul>";

    for(i = 0; i < newscount/*item.length*/ ; i++){ //RSSのアイテムをnewscountで指定の件数取り出す
      var title = item[i].getElementsByTagName('title');
      var titleValue = title[0].firstChild.nodeValue;
	  titleValue = titleValue.truncate(25, "..."); //指定文字数を超える場合、文字を省略し ...を付けて指定文字数にする

      var link = item[i].getElementsByTagName('link');
      var linkValue = link[0].firstChild.nodeValue;

      var dc ="http://purl.org/dc/elements/1.1/"; //dcデータの名前空間を参照してdc:**を使用可能にする
      var dcDate;

      if(document.all){ //IEにしか実装されていない命令でIE対策
        dcDate = item[i].getElementsByTagName('dc:date');
      }else{
        dcDate = item[i].getElementsByTagNameNS(dc,'date');
      }

      var dcDateValue = dcDate[0].firstChild.nodeValue;
	  dcDateValue = dcDateValue.sub(/.*?-/,"",1);//取り出した文字列の年（先頭から最初のハイフンまで）を削除
	  dcDateValue = dcDateValue.gsub(/-/," / "); //取り出した文字列のハイフンをスラッシュに置換


      tmpHtml += "<li><a href='" + linkValue + "'>" + titleValue + "</a>«";
      tmpHtml += "<span class='newsdate'>" + dcDateValue + "</span></li>";
    }
      tmpHtml += "</ul>";

    news_result.innerHTML = tmpHtml;

  }

}

//エラー時のメッセージの表示
function showErrMsg_n(){
  clearDisp();
  news_result.innerHTML = falsemsg;//読込失敗時falsemsgで指定したメッセージを表示する
}
		   });