var	cocoEntryTree = {
//	---
	Version						:	"0.01c"
//	---
,	dateDescent					:	true	//	日付の表示順（true:新→旧 false:旧→新)
,	entryAscent					:	true	//	同一日付の記事表示順（true:旧→新 false:新→旧)
,	newHour						:	72		//	class="new"が付く時間(0は無効)
,	newCount					:	3		//	class="new"が付く記事数(0は無効・newHourの方が優先)
//	---
,	create		:	function	( tgtId ) {
		if ( !tgtId ) tgtId = 'recent-entries' ;
		for (;;) {
			var	links = document.getElementsByTagName('link') ;
			var	ci ;
			for ( ci=0; ci < links.length; ci++ ) {
				if ( links[ci].title.match(/RSS 1.0/) || links[ci].title== "RSS" ) break;	//	2008.10.26: ココログ仕様変更に伴う修正
			}
			if ( links.length <= ci ) {
//	2007.08.05: ↓煩わしいので出さないように修正
//				alert( "cocoEntryTree.js: RSSが見付かりません" ) ;
				break ;
			}
			var	rssurl = links[ci].href ;
			var	xmlHttpObj = null ;
			if ( typeof ActiveXObject != "undefined" ) {
				var	msXml = [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ] ;
				for ( var ci=0; ci < msXml.length; ci++ ) {
					xmlHttpObj = new ActiveXObject( msXml[ci] ) ;
					if ( xmlHttpObj ) break ;
				}
			}
			else if ( typeof XMLHttpRequest != "undefined" ) {
				xmlHttpObj = new XMLHttpRequest() ;
			}
			if ( !xmlHttpObj ) break ;
			xmlHttpObj.onreadystatechange = function() {
				for (;;) {
					if ( xmlHttpObj.readyState != 4 ) break ;
					if ( xmlHttpObj.status != 200 ) break ;
					var	rssText = xmlHttpObj.responseText.replace(/\r?\n/g, '') ;
					var	items = rssText.match( /<item rdf:about=.+?<\/item>/gi ) ;
					if ( !items ) break ;
					var	newcnt = 0 ;
					for ( var ci=0; ci < items.length; ci++ ) {
						if ( items[ci].match( /about="(.+?)".*?<title>(.+?)<\/title>.*?<dc:date>([\d\-]+)T([^\+]+?)\+.+?<\/dc:date>/gi ) ) {
							var	url   = RegExp.$1 ;
							var	title = RegExp.$2 ;
							var	date  = RegExp.$3 ;
							var	time = RegExp.$4 ;
//							title = title.replace( /&amp;/g, '&' ).replace( /&lt;/g, '<' ).replace( /&gt;/g, '>' ) ;
							title = title.replace( /&amp;/g, '&' ).replace( /&apos;/g, '&#39;')  ;
							date = date.replace(/\-/g,'/') ;
				            var now = (new Date()).getTime() ;
							var	atime = Date.parse(date+' '+time) ;
							var	linkHtml = '<li class="lst"><a href="' + url + '">' + title + '</a></li>' ;
							if ( 0 < cocoEntryTree.newHour ) {
					            if ( isNaN(atime) == true || ( (now-atime) < (cocoEntryTree.newHour*60*60*1000) ) ) {
									linkHtml = linkHtml.replace( /^(<li class="lst)/i, "$1 new latest" ) ;
								}
							}
							else if ( 0 < cocoEntryTree.newCount ) {
								if ( newcnt < cocoEntryTree.newCount ) {
									linkHtml = linkHtml.replace( /^(<li class="lst)/i, "$1 new latest" ) ;
									newcnt ++ ;
								}
							}
							if ( !items[date] ) items[date] = new Array() ;
							
							if ( cocoEntryTree.entryAscent ) {
								items[date].unshift( linkHtml ) ;
							}
							else {
								items[date].push( linkHtml ) ;
							}
						}
					}
					var	dates = new Array() ;
					for ( var date in items ) {
						if ( !date.match( /\d{4}.\d{2}.\d{2}/ ) ) continue ;
						items[date][items[date].length-1] = items[date][items[date].length-1].replace( /^(<li class=")lst/i, "$1end" ) ;
						dates.push( date ) ;
					}
					dates = dates.sort() ;
					if ( cocoEntryTree.dateDescent ) {
						dates = dates.reverse() ;
					}
					var	ulObj = document.createElement('ul') ;
					ulObj.className = 'module-list' ;
					
					var	htmls = new Array() ;
					
					for ( var ci=0; ci < dates.length; ci++ ) {
						htmls[ci] = [
							'<li>'
						,	'<div class="date">' + dates[ci] + '</div>'
						,	'<ul class="tree">'
						,	items[dates[ci]].join('\n')
						,	'</ul>'
						,	'</li>'
						].join('\n') ;
					}
					ulObj.innerHTML = htmls.join('\n') ;
					
					var	checkTgt = function() {
						for (;;) {
							var	tgtObj = document.getElementById(tgtId) ;
							if ( !tgtObj ) {
								setTimeout( checkTgt, 100 ) ;
								break ;
							}
							var	divs = tgtObj.getElementsByTagName('div') ;
							for ( var ci=0; ci < divs.length; ci++ ) {
								if ( divs[ci].className.match(/module-content/ ) || divs[ci].className.match(/module-body/ ) ) {
									divs[ci].innerHTML = '' ;
									divs[ci].appendChild(ulObj) ;
									if ( typeof makeQuickLink == 'function' ) makeQuickLink( divs[ci] ) ;
									break ;
								}
							}
							break ;
						}
					}
					setTimeout( checkTgt, 0 ) ;
					break ;
				}
			} ;
			xmlHttpObj.open( 'GET', rssurl, true ) ;
			xmlHttpObj.send( '' ) ;
			break ;
		}
	}	//	end of loadRssRequest()
}	//	end of cocoEntryTree object

//cocoEntryTree.create() ;
