/*
	'cocoTBlistPro.js' version 0.02 (c) 2006 furyu
		http://furyu.tea-nifty.com/annex
	
	(*)	'prototype.js' is required
		Prototype JavaScript framework (c) 2005 Sam Stephenson
		http://prototype.conio.net/
*/

var	_tbShowWindow_ = null ;

var	_srchDateFrom_ = Date.parse("1970/1/2") ;
var	_srchDateTo_ = Date.parse("2100/1/1") ;

var	_tbShowCalled_ = false ;
var	_tbList_ = "" ;

var	_cmtShowCalled_ = false ;
var	_cmtList_ = "" ;

var	_archShowCalled_ = false ;
var	_archList_ = "" ;


function	cocoTBlistPro( tbListFile, reload, dateFrom, dateTo )
{
	if ( cocoTBsetShowWindow() == false ) {
		return ;
	}
	cocoTBsetDateRange( dateFrom, dateTo ) ;
	
	if ( _tbShowCalled_ == false || reload == true ) {
		new Ajax.Request( tbListFile, {method: 'get', onComplete: function(request){ cocoTBparseData( request ); } } );    
	}
	else {
		cocoTBshow() ;
	}

}	//	end of cocoTBlistPro()


function	cocoCommentListPro( cmtListFile, reload, dateFrom, dateTo )
{
	if ( cocoTBsetShowWindow() == false ) {
		return ;
	}
	cocoTBsetDateRange( dateFrom, dateTo ) ;
	
	if ( _cmtShowCalled_ == false || reload == true ) {
		new Ajax.Request( cmtListFile, {method: 'get', onComplete: function(request){ cocoCommentParseData( request ); } } );    
	}
	else {
		cocoCommentShow() ;
	}

}	//	end of cocoCommentlistPro()


function	cocoArchiveListPro( archListFile, reload, dateFrom, dateTo )
{
	if ( cocoTBsetShowWindow() == false ) {
		return ;
	}
	cocoTBsetDateRange( dateFrom, dateTo ) ;
	
	if ( _archShowCalled_ == false || reload == true ) {
		new Ajax.Request( archListFile, {method: 'get', onComplete: function(request){ cocoArchiveParseData( request ); } } );    
	}
	else {
		cocoArchiveShow() ;
	}

}	//	end of cocoArchiveListPro()


function	cocoTBsetShowWindow()
{
	if ( _tbShowWindow_ == null ) {
		var divs = document.getElementsByTagName('div') ;
		for ( var ci=0; ci < divs.length; ci++ ) {
			if ( divs[ci].className == 'content' ) {
				_tbShowWindow_ = divs[ci] ;
				break ;
			}
		}
	}
	if ( _tbShowWindow_ != null ) {
		_tbShowWindow_.innerHTML = '<h3>検索中 ...</h3>' ;
		return true ;
	}
	else {
		alert( 'Cannot show list on this site( need <div class="content"> tag )' ) ;
		return false ;
	}
	
}	//	end of cocoTBsetShowWindow()


function	cocoTBsetDateRange( dateFrom, dateTo )
{
	_srchDateFrom_ = Date.parse(dateFrom) ;
	if ( isNaN(_srchDateFrom_) == true ) _srchDateFrom_ = Date.parse("1970/1/2") ;
	_srchDateTo_ = Date.parse(dateTo) ;
	if ( isNaN(_srchDateTo_) == true ) _srchDateTo_ = Date.parse("2100/1/1") ;
	if ( dateTo && dateTo.match( /^\s*?\d{2,4}\/\d{1,2}\/\d{1,2}\s*?$/ ) ) {
		_srchDateTo_ += ( 1000 * 60 * 60 * 24 - 1 ) ;
	}

}	//	end of cocoTBsetDateRange()


function	cocoTBparseData( request )
{
	_tbList_ = eval( request.responseText.replace( /<.*?>/i, '' ) ) ;
	cocoTBshow() ;
	_tbShowCalled_ = true ;

}	//	end of cocoTBparseData()


function	cocoCommentParseData( request )
{
	_cmtList_ = eval( request.responseText.replace( /<.*?>/i, '' ) ) ;
	cocoCommentShow() ;
	_cmtShowCalled_ = true ;

}	//	end of cocoCommentParseData()


function	cocoArchiveParseData( request )
{
	_archList_ = eval( request.responseText.replace( /<.*?>/i, '' ) ) ;
	cocoArchiveShow() ;
	_archShowCalled_ = true ;

}	//	end of cocoCommentParseData()


function	cocoTBshow()
{
	var	showcnt = 0 ;
	var	tbcnt = 0 ;
	
	var	showHtml = '<div id="cocoTBlist"><ul class="tblist">' ;
	for ( var ci=0; ci < _tbList_.length-1; ci++ ) {
		var	archive = _tbList_[ci] ;

		if ( archive.tb.length <= 1 ) continue ;
		
		var	tmpcnt = tbcnt ;
		var	tmpHtml = '<ul class="tbl-tbindv">' ;
		for ( var cj=0; cj < archive.tb.length-1; cj++ ) {
			var	tb = archive.tb[cj] ;
			
			var tmpDate = Date.parse(tb.date) ;
			if ( tmpDate < _srchDateFrom_ || _srchDateTo_ < tmpDate ) continue ;
			
			tmpHtml += '<li class="tbl-tbindv-cont">' ;
			tmpHtml += '<span class="tbl-tbindv-cont-hash"><a href="' + archive.link + "#p" + tb.id + '">■</a></span>' ;
			tmpHtml += '<span class="tbl-tbindv-cont-date">[' + tb.date +  '] </span>' ;
			tmpHtml += '<span class="tbl-tbindv-cont-url"><a href="' + tb.url + '">' + tb.title + '</a></span>' ;
			tmpHtml += '<span class="tbl-tbindv-cont-from"> from ' + tb.blog + '</span>' ;
			tmpHtml += '<div class="tbl-tbindv-cont-excerpt">' + tb.excerpt + '</div>' ;
			tmpHtml += '</li>';
			tbcnt ++ ;
		}
		tmpHtml += '</ul>' ;
		
		if ( tbcnt == tmpcnt ) continue ;
		
		showHtml += '<li class="tbl-article"><div class="tbl-article-title"><a href="' + archive.link + '">' + archive.title + '</a><span class="tbl-article-tbnum"> (' + (tbcnt-tmpcnt) + ')</span></div>' ;
		showHtml += '<div class="tbl-article-tburl">[Trackback URL: ' + '<a href="' + archive.tburl + '">' + archive.tburl + '</a>]</div>' ;
		showHtml += tmpHtml + '</li>' ;
		
		showcnt ++ ;
	}
	if ( showcnt == 0 ) {
		showHtml += '<li class="tbl-article">見つかりませんでした</li>' ;
		showHtml = '<h3>トラックバック一覧</h3>' + showHtml ;
	}
	else {
		showHtml = '<h3>トラックバック一覧 <span class="tbl-article-total">(記事:' + showcnt + '件  トラックバック:' + tbcnt + '件)</span></h3>' + showHtml ;
	}
	showHtml += '</ul></div>';
	
	_tbShowWindow_.innerHTML = showHtml;
	
}	//	end of cocoTBshow()


function	cocoCommentShow()
{
	var	showcnt = 0 ;
	var	cmtcnt = 0 ;
	
	var	showHtml = '<div id="cocoCommentlist"><ul class="cmtlist">' ;
	for ( var ci=0; ci < _cmtList_.length-1; ci++ ) {
		var	archive = _cmtList_[ci] ;
		
		if ( archive.comment.length <= 1 ) continue ;
		
		var	tmpcnt = cmtcnt ;
		var	tmpHtml = '<ul class="cmtl-indv">' ;
		for ( var cj=0; cj < archive.comment.length-1; cj++ ) {
			var	cmt = archive.comment[cj] ;
			
			var tmpDate = Date.parse(cmt.date) ;
			if ( tmpDate < _srchDateFrom_ || _srchDateTo_ < tmpDate ) continue ;
			
			tmpHtml += '<li class="cmtl-indv-cont">' ;
			tmpHtml += '<span class="cmtl-indv-cont-hash"><a href="' + archive.link + "#c" + cmt.id + '">■</a></span>' ;
			tmpHtml += '<span class="cmtl-indv-cont-date">[' + cmt.date +  '] </span>' ;
			if ( cmt.url != '' ) {
				tmpHtml += '<span class="cmtl-indv-cont-by"> by <a href="' + cmt.url + '">' + cmt.auth + '</a></span>' ;
			}
			else {
				tmpHtml += '<span class="cmtl-indv-cont-by"> by ' + cmt.auth + '</span>' ;
			}
			tmpHtml += '<div class="cmtl-indv-cont-excerpt">' + cmt.excerpt + '</div>' ;
			tmpHtml += '</li>';
			cmtcnt ++ ;
		}
		tmpHtml += '</ul>' ;
		
		if ( cmtcnt == tmpcnt ) continue ;
		
		showHtml += '<li class="cmtl-article"><div class="cmtl-article-title"><a href="' + archive.link + '">' + archive.title + '</a><span class="cml-article-cmtnum"> (' + (cmtcnt-tmpcnt) + ')</span></div>' ;
		showHtml += tmpHtml + '</li>' ;
		
		showcnt ++ ;
	}
	if ( showcnt == 0 ) {
		showHtml += '<li class="cmtl-article">見つかりませんでした</li>' ;
		showHtml = '<h3>コメント一覧</h3>' + showHtml ;
	}
	else {
		showHtml = '<h3>コメント一覧 <span class="cmtl-article-total">(記事:' + showcnt + '件  コメント:' + cmtcnt + '件)</span></h3>' + showHtml ;
	}
	showHtml += '</ul></div>' ;
	
	_tbShowWindow_.innerHTML = showHtml;
	
}	//	end of cocoCommentShow()


function	cocoArchiveShow()
{
	var	showcnt = 0 ;
	
	var	showHtml = '<div id="cocoArchivelist"><ul class="archlist">' ;
	for ( var ci=0; ci < _archList_.length-1; ci++ ) {
		var	archive = _archList_[ci] ;
		
		var tmpDate = Date.parse(archive.date) ;
		if ( tmpDate < _srchDateFrom_ || _srchDateTo_ < tmpDate ) continue ;

		showHtml += [
			'<li class="archl-article">'
		,		'<div class="archl-article-title">'
		,			'<a href="' + archive.link + '">■</a>'
		,			'<span class="archl-article-id">[ID:' + archive.id + '] </span>'
		,			'<a href="' + archive.link + '">' + archive.title + '</a>'
		,		'</div>'
		,		'<div class="archl-article-info1">'
		,			'<span class="archl-article-date">[' + archive.date +  '] </span>'
		,			'<a href="' + archive.link + '#comments">コメント</a><span class="archl-article-num">(' + archive.ccnt + ')</span> | '
		,			'<a href="' + archive.link + '#trackback">トラックバック</a><span class="archl-article-num">(' + archive.tcnt + ')</span>'
		,		'</div>'
		,		'<div class="archl-article-info2">'
		,			'トラックバックURL: ' + archive.tlink
		,		'</div>'
		,		'<div class="archl-article-excerpt">' + archive.excerpt + '</div>'
		,	'</li>'
		].join('') ;
		
		showcnt ++ ;
	}
	if ( showcnt == 0 ) {
		showHtml += '<li class="archl-article">見つかりませんでした</li>' ;
		showHtml = '<h3>記事一覧</h3>' + showHtml ;
	}
	else {
		showHtml = '<h3>記事一覧 <span class="archl-article-total">(' + showcnt + '件)</span></h3>' + showHtml ;
	}
	showHtml += '</ul></div>' ;
	
	_tbShowWindow_.innerHTML = showHtml;
	
}	//	end of cocoArchiveShow()

