/*----------------------------------------------
  
  mooTopics.js ver0.7
  copyright 2008 Tenderfeel.
 
Usage:
▼ヘッダに入れる
<script type="text/javascript" src="mootools.js"></script>
<script type="text/javascript" src="mootopics.js"></script>

表示するブロック要素（divとかtdとか）にIDを適当につけて下記で設定。
デフォルトは#info

現段階では指定したIDのブロック要素内にulやtableを作成し指定件数分表示する。
リンク先があれば本文にリンクする。

文字コードUTF-8。
表示側とエンコードが違う場合は変更すること。

var0.7 URIデコード修正
var0.6 NEWマーク出るようにしてみた
------------------------------------------------*/

//表示するDivのIDを設定
var ListArea = 'info';

//表示件数
var Max = '30';

//表示方法
//List→リスト
//Table→テーブル
var ViewMode = 'List';

//表示要素につけるクラス名（ul class="○○"　←これ）
var ClassName ='';

//日付を入れるタグ（使わないなら''）
//Tableの場合はthのクラス名になる
var datetag = 'span';

//本文を入れるタグ（使わないなら''）
//Tableの場合はtdのクラス名になる
//strongは使用不可
var txttag = 'em';

//表示ページからのログファイルパス
var url = "mootopics/log.dat";

//NEWをつける日数
var Limit ="4";

//Newマークのアイコンパス。マーク出さないなら空に
var NewIco= "";
//アイコンサイズ
var IconW = "20"; //width
var IconH = "9"; //height

var a = new Date();
/*-----------------------------------------------*/
var decode = function(str) {
	str = str.replace("%3A%2F%2F","://");
	str = str.split("%2F");
	str =str.join("/");
	return str;
}
//NEW!!
var NewMark = function(date,el){
	b = Date.parse(date)+ (parseInt(Limit) * 24 * 3600 * 1000);//期限
	c = a.getTime();//現在時刻
	if(b>=c){
		var New = new Element('img',{'src':NewIco,'width':IconW,'height':IconH,'alt':'NEW!'}).injectInside(el);
		return New;
	}else{
		return null;
	}
}
var addlists = function(logs) {

	var data = $(ListArea);
	var CR = String.fromCharCode(10);
	var LogData = logs.split(CR);
	
	var n = LogData.pop();//最後尾の空白行削除
	var lineData =LogData.remove(n);
	
	switch(ViewMode){
		
		case 'List'://リスト表示モード

		if(lineData[0].contains('200') == true){
				
				if(ClassName !=''){
					var ul = new Element('ul', {'class':ClassName}).injectInside(data);
				}else{
					var ul = new Element('ul').injectInside(data);
				}

				for(i=0;i<lineData.length && i < Max;i++){
					
					var dat = lineData[i].split(',');
					
					dat[3]= decode(dat[3]);
					
					var li = new Element('li');

					if(txttag != ''){//本文を入れるタグあれば～
						if(datetag != ''){//日付を入れるタグあれば～
							var date = new Element(datetag).setText(dat[1]).injectInside(li);
							
							if(dat[3].match(/[a-z]/)){
								var txt = new Element(txttag);
								new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]).injectInside(txt);
								txt.injectAfter(date);
							}else{
								new Element(txttag).setHTML(dat[2]).injectAfter(date);
								
							}
							if(NewIco!="") NewMark(dat[1],li);
						}else{
							var date = li.setText(dat[1]);
							if(dat[3].match(/[a-z]/)){
								var txt = new Element(txttag);
								new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]).injectInside(txt);
								txt.injectInside(li);
							}else{
								new Element(txttag).setHTML(dat[2]).injectInside(li);
							}
							if(NewIco!="") NewMark(dat[1],li);
						}
					}else{//本文タグなし
						if(datetag != ''){//日付タグあれば
							var date = new Element(datetag).setText(dat[1]).injectInside(li);
							
							if(dat[3].match(/[a-z]/)){
								var uri = new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]).injectInside(li);
							}else{
								li.appendText(dat[2]);
							}
							if(NewIco!="") NewMark(dat[1],li);
						}else{
							
							if(dat[3].match(/[a-z]/)){
								
								var date = dat[1];
								var uri = new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]);
								li.setHTML(date);
								uri.injectInside(li);
								
							}else{
								var date = dat[1]+dat[2];
								li.setHTML(date);
							}
							if(NewIco!="") NewMark(dat[1],li);
						}
					}
					li.inject(ul);
					if(lineData.length < Max && i == lineData.length) break;
				}
			}else{
				var p = new Element('p',{'class':ClassName });
				var txt = p.setText('情報はありません');
				p.injectInside(data);
			}
		break;
		
		case 'Table': //テーブル表示モード
			
			if(lineData[0].contains('20') == true){
				
				if(ClassName !=''){
					var ul = new Element('table', {'class':ClassName}).injectInside(data);
				}else{
					var ul = new Element('table').injectInside(data);
				}
				for(i=0;i<lineData.length && i < Max;i++){
					
					var dat = lineData[i].split(',');
					dat[3]= decode(dat[3]);
					var li = new Element('tr');

					if(txttag != ''){//本文のクラス名あれば～
						if(datetag != ''){//日付のクラス名あれば～
							var date = new Element('th',{'class':datetag}).setText(dat[1]).injectInside(li);
							if(dat[3].match(/[a-z]/)){//リンクがあれば
								var txt = new Element('td',{'class':txttag});
								var uri = new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]).injectInside(txt);
								txt.injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
							}else{//リンクないぜ
								var txt = new Element('td',{'class':txttag}).setHTML(dat[2]).injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
							}
							
						}else{//日付ないぜ
							var date = new Element('th').setText(dat[1]).injectInside(li);
							if(dat[3].match(/[a-z]/)){
								var txt = new Element('td',{'class':txttag});
								var uri = new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]).injectInside(txt);
								txt.injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
							}else{var txt = new Element('td',{'class':txttag}).setHTML(dat[2]).injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
							}
						}
					}else{//本文クラスない
						if(datetag != ''){//日付クラスある
							var date = new Element('th',{'class':datetag}).setText(dat[1]).injectInside(li);
							if(dat[3].match(/[a-z]/)){//リンクある
								var txt = new Element('td');
								var uri = new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]).injectInside(txt);
								txt.injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
							}else{//リンクない
								var txt = new Element('td').setHTML(dat[2]).injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
							}
						}else{//日付クラスない
							var date = new Element('th').setText(dat[1]).injectInside(li);
							if(dat[3].match(/[a-z]/)){//リンクある
								var txt = new Element('td');
								var uri = new Element('a',{'href':dat[3],'title':'更新ページへ'}).setHTML(dat[2]).injectInside(txt);
								txt.injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
								
							}else{//リンクない
								var txt = new Element('td').setHTML(dat[2]).injectAfter(date);
								if(NewIco!="") NewMark(dat[1],txt);
							}
						}
					}
					li.inject(ul);
					if(lineData.length < Max && i == lineData.length) break;
				}
			}else{
				var p = new Element('p',{'class':ClassName });
				var txt = p.setText('情報はありません');
				p.injectInside(data);
			}
		break;
		
		case 'Ticker'://ティッカー（場所だけ確保）
		
			var ul = new Element('ul', {'class':ClassName}).injectInside(data);
			var CR = String.fromCharCode(10);
			var lineData = logs.split(CR);
			for(i=0;i<Max;i++){
					var dat = lineData[i].split(',');
					dat[3]= decode(dat[3]);
					var li = new Element('li');
					var date = li.setHTML(dat[1]);
					var txt = new Element('em').setHTML(dat[2]).injectInside(li);
					li.inject(ul);
			}
		break;
	}
};

var mooHistry = {
	start: function() {
		var data = $(ListArea);
		data.empty();
		new Ajax(url, {method: 'get',onComplete:function(Obj) {addlists(Obj);}}).request();
	}
}
window.addEvent('domready',mooHistry.start);
