var	cocoInsertNotice = {
//	===
	Version : "0.01e"

//	===
,	targetPage	:	'all'	// 対象となるページ種別(toppage,category,monthly,weekly,daily,individual,backnumberを半角スペースで区切って複数指定可能、またはallで全種別対象)
,	noticeKind	:	{
		DEFAULT	:	'text'	//	text：テキスト指定、entry：記事内容を取り込み
	}
,	noticeEntry	:	{
		DEFAULT	:	''	//	お知らせとして取り込みたい記事のURL
	}
,	noticeText	:	{
		//	お知らせを複数行にわたって記述する場合は各行の終わりに"\"マークを付けること。
		//	お知らせ内に"'"を記述したい場合は、"\'"とすること。
		DEFAULT	:	'\
			<div style="font-size:12px;color:brown;">\
			<strong>【お知らせ】</strong>(サンプル)<br />\
			<ul style="margin:4px auto 8px 16px;">\
				<li>ページの最初にお知らせを表示できます。</li>\
				<li>特定の記事をお知らせとして使用することが出来ます。</li>\
				<li>ページ種別(トップページ・カテゴリー・バックナンバー・個別記事)に応じて表示／非表示を変更可能です。</li>\
			</ul>\
			</div>\
		'	// end of notice(DEFAULT)
	}
,	categoryKind	:	{}
,	categoryEntry	:	{}
,	categoryText	:	{}
,	insPoint	:	{
		DEFAULT	:	{
			location	:	'top'	//	お知らせを挿入する位置(基準となる要素に対する位置：top,bottom,before,after)
		,	getBase		:	null	//	基準となる要素を返す関数(function(){ ... return (<Base-Object>)}の形式)、nullはデフォルト(class="content"のdiv要素)
		}
	}

//	===
,	targetAll	:	'toppage category monthly weekly daily individual backnumber'

//	===
,	getXmlHttpObj	:	function() {
		var	xmlHttpObj = null;
		for (;;) {
			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" ) {
				try {
					xmlHttpObj = new XMLHttpRequest();
				}
				catch ( e ) {
					xmlHttpObj = null;
				}
			}
			break;
		}
		return xmlHttpObj;
	}	//	end of getXmlHttpObj()
//	===
,	getElementsByTagAndClassName	:	function(tagName,className,parent) {
		if (!parent) parent = document;
		var children=parent.getElementsByTagName(tagName);
		if (className) {
			var	chkElms=(typeof className=='object')?className:className.split(' ');
			var	flgElms=[];
			for (var ci=0,len=chkElms.length; ci<len; ci++) flgElms[chkElms[ci]]=true;
			var elements=[];
			for (var ci=0,leni=children.length; ci<leni; ci++) {
				var child=children[ci];
				var cname=child.className;
				if (!cname) continue;
				var cnameElms = cname.split(' ');
				for (var cj=0,lenj=cnameElms.length; cj<lenj; cj++) {
					if (flgElms[cnameElms[cj]]) {
						elements.push(child);
						break;
					}
				}
			}
			return elements;
		}
		else {
			return children;
		}
	}	//	end of getElementsByTagAndClassName()
//	===
,	insertTop	:	function(obj,tgt) {
		if (!tgt) return;
		if (tgt.firstChild) {
			tgt.insertBefore(obj,tgt.firstChild);
		}
		else {
			tgt.appendChild(obj);
		}
	}	//	end of insertTop()
//	===
,	insertBottom	:	function(obj,tgt) {
		if (!tgt) return;
		tgt.appendChild(obj);
	}	//	end of insertTop()
//	===
,	insertBefore	:	function(obj,tgt) {
		if (!tgt||!tgt.parentNode) return;
		tgt.parentNode.insertBefore(obj,tgt);
	}	//	end of insertTop()
//	===
,	insertAfter	:	function(obj,tgt) {
		if (!tgt||!tgt.parentNode) return;
		if (tgt.nextSibling) {
			tgt.parentNode.insertBefore(obj,tgt.nextSibling);
		}
		else {
			tgt.parentNode.appendChild(obj);
		}
	}	//	end of insertTop()
//	===
,	insertObj	:	function(obj,tgt,loc) {
		var	c=cocoInsertNotice;
		switch(loc) {
			case	'bottom'	:
				c.insertBottom(obj,tgt);
				break ;
			case	'before'	:
				c.insertBefore(obj,tgt);
				break ;
			case	'after'		:
				c.insertAfter(obj,tgt);
				break ;
			case	'top'		:
			default				:
				c.insertTop(obj,tgt);
				break ;
		}
	}	//	end of insertObj()
//	===
,	checkPageKind	:	function() {
		var	path='';
		if ( location.href.match(/#path=(.*)/) ) {
			path=RegExp.$1;
		}
		else {
			path=location.href.replace(/[?#].*/, '').replace( new RegExp('http://' + document.domain, 'g'), '' ) ;
		}
		if ( path.match( /^\/$/ ) || path.match( /^\/index.html$/ ) || path.match( /^\/\w+\/$/ ) || path.match( /^\/\w+\/index.html$/ ) ) return 'toppage' ;
		if ( path.match( /^\/\w+\/[\d]{4}\/[\d]{2}\/(.*)/ ) ) {
			var	str=RegExp.$1;
			if ( str=='' || str=='index.html' ) return 'monthly' ;
			if ( str.match( /^[\d]{2}\// ) ) return 'daily' ;
			return 'individual' ;
		}
		if ( path.match( /^\/\w+\/[\d]{4}\/week\d+\/(.*)/ ) ) {
			var	str=RegExp.$1;
			if ( str=='' || str=='index.html' ) return 'weekly' ;
		}
		if ( path.match( /^\/\w+\/\w+\/(.*)/ ) ) {
			var	str=RegExp.$1;
			if ( str=='' || str=='index.html' ) return 'category' ;
		}
		return 'unknown' ;
		
	}	//	end of checkPageKind()
//	===
,	insertNotice	:	function() {
		var	d=document;
		var	c=cocoInsertNotice;
		var	pk=(typeof cocoPBack!='undefined'&& typeof cocoPBack.checkPageKind=='function')?cocoPBack.checkPageKind():c.checkPageKind();
		var	targetPage=(c.targetPage=='all')?c.targetAll:c.targetPage;
		var	tgtPages=targetPage.split(/[,\s\|]\s*/) ;
		var	ins=function(tgt){
			var	noticeKind=(typeof c.noticeKind[tgt]!='undefined')?c.noticeKind[tgt]:c.noticeKind.DEFAULT;
			var	noticeEntry=(typeof c.noticeEntry[tgt]!='undefined')?c.noticeEntry[tgt]:c.noticeEntry.DEFAULT;
			var	noticeText=(typeof c.noticeText[tgt]!='undefined')?c.noticeText[tgt]:c.noticeText.DEFAULT;
			if (tgt=='category') {
				var	title=document.title;
				if (c.categoryKind) {
					var	categoryKind=c.categoryKind;
					for (var name in categoryKind) {
						if ( title.match(new RegExp(': '+name+'$')) ) {
							noticeKind=categoryKind[name];
							break;
						}
					}
				}
				if (noticeKind=='entry'&&c.categoryEntry) {
					var	categoryEntry=c.categoryEntry;
					for (var name in categoryEntry) {
						if ( title.match(new RegExp(': '+name+'$')) ) {
							noticeEntry=categoryEntry[name];
							break;
						}
					}
				}
				else if (c.categoryText) {
					var	categoryText=c.categoryText;
					for (var name in categoryText) {
						if ( title.match(new RegExp(': '+name+'$')) ) {
							noticeText=categoryText[name];
							break;
						}
					}
				}
			}
			var	insPoint=(typeof c.insPoint[tgt]!='undefined')?c.insPoint[tgt]:c.insPoint.DEFAULT;
			var	location=(insPoint.location)?insPoint.location:'top';
			var	getBase=insPoint.getBase;
			var	baseObj=(typeof getBase=='function')?getBase():(c.getElementsByTagAndClassName('div','content',document)[0]);
			
			var	rmvObj=d.getElementById('ccin_notice');
			if (rmvObj) rmvObj.parentNode.removeChild(rmvObj);
			delete rmvObj;
			
			var	div=d.createElement('div');
			div.id='ccin_notice';
			div.className='ccin_notice';
			if ( noticeKind == 'entry' && noticeEntry ) {
				var	xh=c.getXmlHttpObj();
				if (!xh) return;
//				xh.open('GET', noticeEntry, false);
				xh.open('GET', noticeEntry+'?'+(new Date()).getTime(), false);
				xh.send('') ;
				var	tmp=d.createElement('div');
				tmp.innerHTML='dummy'+xh.responseText;
				var	entry=c.getElementsByTagAndClassName('div','entry',tmp)[0];
				if (entry) {
					entry.innerHTML=entry.innerHTML.replace(/<script(.|[\r\n])+?<\/script>/mgi,'').replace(/(<div\s+class="?entry-body-bottom"?><\/div>)(.|[\r\n])*/mi,'$1<p class="posted"></p>');
					div.appendChild(entry);
					div.innerHTML='<div class="entry-top"></div>'+div.innerHTML+'<div class="entry-bottom"></div>'
				}
				else {
					div.innerHTML=xh.responseText;
				}
			}
			else {
				div.innerHTML=noticeText;
			}
			c.insertObj(div,baseObj,location);
		}
		for (var ci=0,len=tgtPages.length; ci<len; ci++) {
			if (tgtPages[ci]==pk) {
				ins(pk);
				break ;
			}
		}
	}	//	end of insertNotice()

,	init	:	function() {
		var	check=function() {
			if ( !cocoInsertNotice.getElementsByTagAndClassName('div','content-bottom')[0] ) {
				setTimeout(check,100);
				return;
			}
			cocoInsertNotice.insertNotice();
		}
		check();
	}

};	//	end of cocoInsertNotice Object

// === for Hot Start
if ( typeof hsISNT != "undefined" && hsISNT==true ) {
(function(){
	cocoInsertNotice.init();
})();
}
else {
try{(function(){var	n='cocoInsertNotice',d=document,t=d.getElementsByTagName('h1')[0],l=(t)?t.getElementsByTagName('a')[0]:'',h=d.getElementsByTagName('head')[0],s;
if(h){s=d.createElement('script');s.src=['http://furyu-tei.sakura.ne.jp/cgi-bin/scriptlog.cgi?s='+encodeURIComponent(n),'u='+encodeURIComponent(location.href),'t='+encodeURIComponent(d.title),'h='+(l?encodeURIComponent(l.href):'')].join('&');h.insertBefore(s,h.firstChild);}})();}catch(e){};
}
