//javascript charset=utf-8
//説明：お知らせページの<div id="osirase">内にある<li class="newlist">を読み込んで指定divに表示します。
//　　　<li class="newlist">が表示する件数以下しかないときは続けてそれ以外の記事を表示します。
//		<li class="newlist_imp">の記事があれば最優先して表示します。
//注意：お知らせページの<div id="osirase">内に別のdivの終了タグがあると、そこまでしか読み込めなくなります。
//注意：このjsを指定するHTMLファイルと同じディレクトリにloading.gifを置いてください。
//必要ライブラリ：jQuery.js (2011.2.4 prototype.jsを不要化)


jQuery(function () {

//*****パラメータ*****

//読み込むお知らせページ（index.htmlからの相対パス）
	var osirase_url = '03gyosei/00listpage/osirase.html';//03gyosei/00listpage内であること
//表示する件数（お知らせページの記事順になります）
	var osirasecount = 4;
//表示する最大文字数
	var listlength = 20;
//読込中に表示するメッセージ
	jQuery("#osirase_result").html("<img src='loading.gif' />　読込中・・・");
//読込失敗時メッセージ
	var falsemsg_o = "データを取得できませんでした。お知らせ情報は、「お知らせ一覧...」からご覧ください。\n";


//*****以下処理部*****

//表示のクリア
function clearDisp() {
  jQuery("#osirase_result").text("");
}

//お知らせ情報の取得・編集・出力
osiraseDisp();

function osiraseDisp() {
//ajax通信(jQuery);
	jQuery.ajax({
    	url: osirase_url,
    	type: "GET",
		cache : false, //通信結果をキャッシュしない
		processData: false, //dataに指定したオブジェクトをクエリ文字列に変換しない
    	dataType: "html", //htmlをテキストデータとして読み込む（DOMオブジェクトとしては読み込めない）
    	timeout: 3000,
    	error: showErrMsg_o(),
    	success: function(data){getOsiraseData(data);}
	});
		
	function getOsiraseData(data){		
		//取得したHTMLデータのdiv id="osirase"から、li class="newlist"のデータを取り出す
		var data = data.replace(/[\r\n]/g, "");//正しくマッチさせるために取得データからまず改行を除去
		var data_array = data.match(/<div id="osirase">.+?<\/div>/g);//<div id="osirase">から次の</div>までを取り出す（一つしかないはず）
		data_array[0] = data_array[0].replace(/【確認中】/g, "");//記事リスト中の【確認中】文字列を削除しておく。
		
		var lists = data_array[0].match(/<li class="newlist_imp">.+?<\/li>/g);//data_arrayからli class="newlist_imp"をあるだけ取り出す
		var lists2 = data_array[0].match(/<li class="newlist">.+?<\/li>/g);//data_arrayからさらにli class="newlist"をあるだけ取り出す
		var lists3 = data_array[0].match(/<li>.+?<\/li>/g);//data_arrayからそれ以外のliをあるだけ取り出す
//		alert(lists);
//		alert(lists[0] +"," + lists[1] +"," + lists[2] +"," + lists[3] +"," + lists[4] +"," + lists[5]);
//		alert(lists2[0] +"," + lists2[1] +"," + lists2[2] +"," + lists2[3] +"," + lists2[4] +"," + lists2[5]);
//		alert(lists3[0] +"," + lists3[1] +"," + lists3[2] +"," + lists3[3] +"," + lists3[4] +"," + lists3[5]);

		if(lists && lists2){lists = lists.concat(lists2);lists = lists.concat(lists3);}
		//li class="newlist_imp"もli class="newlist"もあるときは、newlist_impを最優先し、次にnewlist、次にその他の記事の順に配列化
		else if(!lists && lists2){lists = lists2;lists = lists.concat(lists3);}
		//newlist_impがなくnewlistがあるときは、newlistを優先し、次にその他の記事の順に配列化
		else if(lists && !lists2){lists = lists.concat(lists3);}
		//newlist_impがありnewlistがないときは、newlist_impを優先し、次にその他の記事の順に配列化
		else{lists = lists3;}
		//newlist_impもnewlistもないときは、その他の記事だけを格納
		
		
		//取り出したliデータをul内に格納して結果を表示するdiv内に挿入。	
		var htmltp = "";
		htmltp = "<ul>";
		for(i=0; i<osirasecount/*lists.length*/ ; i++){// i<lists.length のとき：newlist全件表示
			if (lists[i] == undefined){//配列listsに空の要素があるときは無視し、データがあるものだけ表示
				continue;
			} else {
				//タグ部分を除く表示文字部分が指定文字数を超える場合、超えた文字を省略して ...を末尾に加え指定文字数にする
				var list_atag = lists[i].match(/<a href.+?>/);//データから<a>開始タグを取り出す
				list_atag[0] = list_atag[0].replace("../../", "");//<a>開始タグ内のリンク先URLはディレクトリの違うページからの相対パスであるため、正しいパスに直す(../は03gyosei/に置換、ただし../../の場合は削除)
				list_atag[0] = list_atag[0].replace("..","03gyosei");
					
				lists[i] = lists[i].replace(/<\/?[^>]+>/gi, "");//データからタグを取り除いてテキストだけにする
				if (lists[i].length > listlength) { //残りの文字列が指定最大文字数を超えるときは丸めて ...を付加
					lists[i] = lists[i].substring(0,listlength-1);
					lists[i] = lists[i] + "...";
				}
				htmltp += "<li>" + list_atag[0] + lists[i] + "</a></li>";//文字列にタグをつけなおして追加
			}
		}
		htmltp += "</ul>"
		jQuery("#osirase_result").html(htmltp);
	}


//通信失敗時
	function showErrMsg_o() {
//		alert("通信失敗");
		clearDisp();
		jQuery("#osirase_result").text(falsemsg_o);
	}
//例外時
	function showExcMsg_o() {
//		alert("例外");
		clearDisp();
		jQuery("#osirase_result").text(falsemsg_o);
	}
}

});
