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

	(*)	'protStr.js' is required
		(c) 2006 furyu (http://furyu.tea-nifty.com/annex)

	(*)	'cocolog_ajax_search.js' is recommended
		(c) Naoyuki-san (http://java.cocolog-nifty.com/blog/)

*/


//	_/_/_/ Global Variables _/_/_/

var	_myBlogName_ = "/" ;
var	_myScriptPath_ = "/script/" ;
var	_myStrPostLinktoArticle_ = "この記事についてクイック投稿" ;
var	_myPostNotice_ = [
	'<div>メールアドレスおよびURL欄への記入は任意です。'
,	'両方もしくはURLのみ記入するとURLだけが公開されます。'
,	'<span style="color:red; font-weight:bold">メアドだけ記入すると、メアドが公開されてしまいますので御注意下さい。</span></div>'
,	'<div>コメント本文中のHTMLタグ及び"&～;"は無効です(そのまま表示されます)。'
,	'"http://～"、"ftp://～"、及びメールアドレスはリンクに変換されます。'
,	'また、改行は自動的に反映されます。</div>'
,	'<div>管理人が不適切と見なしたコメントについては予告無く削除する場合が有ります。悪しからずご了承下さい。</div>'
].join("<br />") ;

var	_myScreenTimeout_ = 10 ;		//	sec
var	_myScreenBlinkIntv_ = 500 ;		//	msec
var	_myScreenCheckCycle_ = 300 ;	//	msec
var	_myScreenTopMargin_ = "10px" ;

var	_myScreenBlink_ = false ;
//var	_myScreenAjaxCache_ = false ;
var	_myScreenAjaxCache_ = true ;
var	_myScreenHydeBodyInProgress_ = false ;
var	_myScreenDebug_ = false ;

var	_myScreen_ = "" ;
var	_myScreenFirstCall_ = true ;
var	_myScreenHistoryBack_ = false ;
var	_myScreenRequestInfo_ = "" ;
var	_myScreenTimerID_ = 0 ;
var	_myScreenTimeCnt_ = 0 ;
var	_myScreenCheckID_ = 0 ;
var	_myScreenLastHash_ = "" ;
var	_myScreenBackupTB_ = "" ;
var	_myScreenBackupText_ = "" ;
var	_myScreenBackupAuth_ = "" ;
var	_myScreenBackupEmail_ = "" ;
var	_myScreenBackupURL_ = "" ;
var	_myScreenBackupChk_ = true ;
var	_myScreenDummyHTML_ = "cocoQLinkdummy.html" ;
var	_myScreenCheckQLink_ = true ;
var	_myScreenCatchOnload_ = false ;

//	for 'cocolog_ajax_search.js' or 'blog_ajax_json_search.js' (thans to Naoyuki-san)
var	_myScreenArchiveIndex_ = "archives.html" ;	//	name of Archive Index Template
var	_myScreenUseSearchData_ = false ;			//	use "blog_ajax_json_search.js" (only for cocolog "pro" course)
var	_myScreenSearchData_ = "search_data.txt" ;	//	name of database template for blog_ajax_json_search.js
var	_myScreen_ligting_search_keyword_ = null ;	//	patched to ligting_search_keyword()

//	for 'cocoTBlistPro.js'
var	_myScreenTBlistFile_ = "tblist.txt" ;
var	_myScreenCommntListFile_ = "commentlist.txt" ;
var	_myScreenArchiveListFile_ = "archivelist.txt" ;

/*	-----------------------------------------------------	*/
/*	--- temporary patched to 'cocolog_ajax_search.js' ---	*/
/*	-----------------------------------------------------	*/
function	parse_enteries_page( request ) {
    var entries_page = request.responseText;
    entries_page = entries_page.replace( new RegExp( '\n', "g"), '' );
    entries_page = entries_page.replace( new RegExp( '\r', "g"), '' );
    entry_list = entries_page.match(/<div class="entry">.*?<\/div><div class="entry-bottom"><\/div>/ig);
    for ( var i = 0; i < entry_list.length; i++ ) {
//	patched by furyu -- from --
//        entry_list[i].match(/.*<h3>(.*?)<\/h3>.*<div class="entry-body-text">(.*?)<\/div>.*<a class="permalink" href="(.*?)">.*/i);
        entry_list[i].match(/.*<h3>(.*?)<\/h3>.*<div class="entry-body-text">(.*?)<div class="entry-body-bottom">.*<a class="permalink" href="(.*?)">.*/i);
//	patched by furyu --  to  --
        var title = RegExp.$1;
        var body = RegExp.$2;
        var link = RegExp.$3;
        body = body.replace( new RegExp( '<.*?>', 'ig'), '' );
        entries[ entries.length ] = {title:title, body:body, link:link};
    }
    page_counter++;
    load_backnumber();
}
/*	--- end of parse_enteries_page() ---	*/


/*	-------------------------------------------------------	*/
/*	--- temporary patched to 'blog_ajax_json_search.js' ---	*/
/*	-------------------------------------------------------	*/
function highlight( text, keywords ) {
    var keyword = '';
    for ( var i= 0; i<keywords.length; i++ ) {
        if ( i == keywords.length - 1 ) {
            keyword += keywords[i];
        } else {
            keyword += keywords[i] + '|'; 
        }
    }
    
	// original --- from ---
//    return text.replace( new RegExp( '(' + keyword + ')', "ig"), '<span style="background-color: #FFCC33;">' + "$1" + '</span>' );
	// original ---  to  ---

	// patched --- from --- ( referred to 'cocolog_ajax_search.js' )
    replaced_text = text.replace( new RegExp( '(' + keyword + ')', "ig"), '<span style="background-color: #FFCC33;">' + "$1" + '</span>' );
    while( replaced_text.match( new RegExp( '(<[^>]+)<span style="background-color: #FFCC33;">(' + keyword + ')</span>(.*?>)', "ig") ) ) {
        replaced_text = replaced_text.replace( new RegExp( '(<[^>]+)<span style="background-color: #FFCC33;">(' + keyword + ')</span>(.*?>)', "ig"), "$1$2$3" );
    }
    return replaced_text;
	// patched ---  to  ---
}
/*	--- end of highlight() ---	*/


//	_/_/_/ Functions  _/_/_/

function	ccqlinkJump2URL()
{
	if ( _myScreenFirstCall_ == false ) return ;
	
//	_myScreenFirstCall_ = false ;
	
	/*	http://(homeURL)/#ccqlink=(fileName)	*/
	
	var	homeURL = 'http://' + document.domain + _myBlogName_ ;
	var	fileName = location.href.replace( /(.*?)#(ccqlink|ccqlist|ccqfile|ccqsrch)=/, "" ) ;
	
	if ( fileName == location.href ) {
		if ( location.href != homeURL ) {
			location.replace( homeURL + "#ccqlink=" + fileName.replace( homeURL, _myBlogName_ ) ) ;
			return ;
		}
		var	currentURL = homeURL ;
		var	optKind = "ccqlink" ;
	}
	else {
		var	currentURL = RegExp.$1 ;
		var	optKind = RegExp.$2 ;
	}
	fileName = fileName.replace( homeURL, _myBlogName_ ) ;
	
	if ( currentURL != homeURL ) {
		location.replace( homeURL + "#ccqlink=" + fileName ) ;
		return ;
	}
	if ( _myScreenHydeBodyInProgress_ ) {
		document.body.style.display = "none" ;
	}
	cssAddRule( '#center', 'display:none;' ) ;
	
	switch ( optKind ) {
		case	"ccqlink"	:
			if ( fileName == _myBlogName_ ) {
				_myScreenRequestInfo_ = fileName.split('#') ;
				setMyScreenTimer() ;
			}
			else {
				showMyArticleRequestTimer( fileName ) ;
			}
			break ;
		case	"ccqlist"	:
			showMyListRequestTimer( fileName ) ;
			break ;
		case	"ccqfile"	:
			showMyListRequestURLTimer( fileName ) ;
			break ;
		case	"ccqsrch"	:
			showMySrchRequestTimer( fileName ) ;
			break ;
	}
	
	var windowOnloadOrig = window.onload ;
	window.onload = function() {
		if ( typeof windowOnloadOrig == 'function' ) windowOnloadOrig() ;
		_myScreenCatchOnload_ = true ;
	} ;

}	//	ccqlinkJump2URL()


function	setMyScreen()
{
	if ( _myScreen_ != "" ) return true ;
	
	if ( _myScreenCatchOnload_ == false ) return false ;
	
	var	center = document.getElementById('center') ;
	if ( !center ) return false ;
	var	divs = center.getElementsByTagName('div') ;

	for ( var ci=0; ci < divs.length; ci++ ) {
		if ( divs[ci].className == 'content' ) {
			_myScreen_ = divs[ci] ;
			break ;
		}
	}
	if ( divs.length <= ci ) return false ;
	
	var	anchor = document.createElement('a') ;
	anchor.style.display = "block" ;
	anchor.style.fontWeight = "normal" ;
	anchor.style.fontSize = _myScreenTopMargin_ ;
	anchor.style.lineHeight = _myScreenTopMargin_ ;
	anchor.style.border = "none" ;
	anchor.name = "_myScreenAnchor_" ;
	anchor.innerHTML = "&nbsp;" ;
	
	document.body.style.marginTop = "0px" ;
	document.body.insertBefore( anchor, document.body.firstChild ) ;

	if ( navigator.userAgent.toLowerCase().match( "msie" ) ) {	//	for IE
		var	dummyframe = document.createElement('iframe') ;
		dummyframe.style.display = ( _myScreenDebug_ == true ) ? "block" : "none" ;
		dummyframe.id = "_myScreenDummy_" ;
		dummyframe.src = "" ;
		center.insertBefore( dummyframe, center.firstChild ) ;
	}
	changeMyScreenAnchor( "ccqlink=" + _myBlogName_ ) ;

//	alert( "setMyScreen() complete" ) ;

//	-- 2007.01.14:<FROM> override 'document.write'
	if ( navigator.userAgent.match( /Firefox/i ) ) {
		var	original_documentwrite = document.write ;
		document.write = function (str) {
			var	scriptStrs = str.match( /<script.*?script>/mgi ) ;
			if ( !scriptStrs ) {
				return original_documentwrite(str) ;
			}
			for ( var ci=0; ci < scriptStrs.length; ci++ ) {
				var	scriptStr = scriptStrs[ci] ;
				var	scriptElm = document.createElement('script') ;
				if ( scriptStr.match( /language="(.*?)"/mi ) ) {
					scriptElm.language = RegExp.$1 ;
				}
				if ( scriptStr.match( /type="(.*?)"/mi ) ) {
					scriptElm.type = RegExp.$1 ;
				}
				if ( scriptStr.match( /charset="(.*?)"/mi ) ) {
					scriptElm.charset = RegExp.$1 ;
				}
				if ( scriptStr.match( /src="(.*?)"/mi ) ) {
					scriptElm.src = RegExp.$1 + "?reload=" + (new Date).getTime() ;
				}
				else if ( scriptStr.match( /^<script.*?>(.*?)<\/script>$/mi ) ) {
					scriptElm.text = RegExp.$1 ;
				}
				scriptElm.defer = 'defer' ;
				_myScreen_.appendChild( scriptElm ) ;
			}
			return 0 ;
		} ;
	}
//	-- 2007.01.14:< TO >

	return true ;
	
}	//	end of setMyScreen()


function	setMyScreenTimer()
{
	if ( setMyScreen() == false ) {
		setTimeout( "setMyScreenTimer()", _myScreenCheckCycle_ ) ;
		return ;
	}
	makeQuickLinkMyScreen() ;
	
}	//	setMyScreenTimer()


function	showMyArticleRequestTimer( fileName )
{
	if ( setMyScreen() == false ) {
		setTimeout( "showMyArticleRequestTimer('" + fileName + "')", _myScreenCheckCycle_ ) ;
		return ;
	}
	showMyArticleRequest( fileName ) ;
	
}	//	showMyArticleRequestTimer()


function	showMyListRequestTimer( fileName )
{
	if ( setMyScreen() == false ) {
		setTimeout( "showMyListRequestTimer('" + fileName + "')", _myScreenCheckCycle_ ) ;
		return ;
	}
	showMyListRequest( fileName ) ;
	
}	//	showMyListRequestTimer()


function	showMyListRequestURLTimer( fileName )
{
	if ( setMyScreen() == false ) {
		setTimeout( "showMyListRequestURLTimer('" + fileName + "')", _myScreenCheckCycle_ ) ;
		return ;
	}
	showMyListRequestURL( fileName ) ;
	
}	//	showMyListRequestURLTimer()


function	showMySrchRequestTimer( fileName )
{
	if ( setMyScreen() == false ) {
		setTimeout( "showMySrchRequestTimer('" + fileName + "')", _myScreenCheckCycle_ ) ;
		return ;
	}
	showMySrchRequest( fileName ) ;
	
}	//	showMySrchRequestTimer()


function	clearMyScreenAnchor()
{
	var	anchors = document.body.getElementsByTagName('a') ;
	for ( var ci=0; ci < anchors.length; ci++ ) {
		if ( anchors[ci].name == "_myScreenAnchor_" ) {
			anchors[ci].id = "_myScreenAnchor_" ;
			break ;
		}
	}

}	//	end of clearMyScreenAnchor()


function	checkMyScreenAnchor( cyclic )
{
	var	retry = true ;
	
	for (;;) {
		var	dummyframe = document.getElementById('_myScreenDummy_') ;
		
		if ( dummyframe ) {	//	for IE
			if ( cyclic == true ) {
				break ;	//	only make QuickLink
			}
			var	dummydoc = dummyframe.contentWindow.document ;
			var	div = dummydoc.getElementById('_current-hash-name_') ;
			if ( !div ) break ;
			if ( div.innerHTML == "(null)" ) break ;
			if ( _myScreenDebug_ == true ) {
				var	anchors = document.body.getElementsByTagName('a') ;
				for ( var ci=0; ci < anchors.length; ci++ ) {
					if ( anchors[ci].name == "_myScreenAnchor_" ) {
						anchors[ci].innerHTML = div.innerHTML ;
						break ;
					}
				}
			}
			if ( div.innerHTML == _myScreenLastHash_ ) break ;
			var	fileName = div.innerHTML.replace( /^(ccqlink|ccqlist|ccqfile|ccqsrch)=/, "" ) ;
			if ( fileName == div.innerHTML ) break ;
		}
		else {
			var	anchor = document.getElementById(location.hash.replace("#","")) ;
			if ( anchor ) break ;
			var	fileName = location.hash.replace( /^#(ccqlink|ccqlist|ccqfile|ccqsrch)=/, "" ) ;
			if ( fileName == location.hash ) break ;
		}
		retry = false ;
		_myScreenHistoryBack_ = true ;
		
		optKind = RegExp.$1 ;
		
		switch ( optKind ) {
			case	"ccqlink"	:
				showMyArticleRequest( fileName ) ;
				break ;
			case	"ccqlist"	:
				showMyListRequest( fileName ) ;
				break ;
			case	"ccqfile"	:
				showMyListRequestURL( fileName ) ;
				break ;
			case	"ccqsrch"	:
				showMySrchRequest( fileName ) ;
				break ;
		}
		break ;
	}
	if ( retry == true ) {
		if ( _myScreenCheckQLink_ == true ) {
			if ( 0 < makeQuickLink( _myScreen_ ) ) {
				_myScreenCheckQLink_ = false ;
			}
		}
	}
	_myScreenCheckID_ = ( retry == true ) ? setTimeout( "checkMyScreenAnchor(true)", _myScreenCheckCycle_ ) : 0 ;
	
}	//	end of checkMyScreenAnchor()


function	changeMyScreenAnchor( name, title, tgtId )	//	2006.07.17: tgtAnchor => tgtId
{
	if ( !title ) {
		var	title = document.title ;
	}
	if ( _myScreenCheckID_ != 0 ) {
		clearTimeout( _myScreenCheckID_ ) ;
	}
	var	dummyframe = document.getElementById('_myScreenDummy_') ;
	if ( dummyframe ) {	//	for IE
		dummyframe.src = _myScriptPath_ + _myScreenDummyHTML_ + "?hash=" + escape(name) + "&title=" + escape(title) ;
	}
	else {
		var	anchors = document.body.getElementsByTagName('a') ;
		for ( var ci=0; ci < anchors.length; ci++ ) {
			if ( anchors[ci].name == "_myScreenAnchor_" ) {
				anchors[ci].id = name ;
				break ;
			}
		}
	}
	var	oldTitle = document.title ;
	document.title = title ;
	location.hash = name ;
	
	if ( typeof cocoPView != "undefined" ) {	//	cocoPView.js
		if ( oldTitle != title || name.split('#')[0] != _myScreenLastHash_.split('#')[0] ) {
			cocoPView.initContent( _myScreen_ ) ;
		}
	}
	
	if ( tgtId && _myScreenFirstCall_ == true ) {
		if ( document.body.style.display == "none" ) {
			document.body.style.display = "block" ;
		}
		cssAddRule( '#center', 'display:block;' ) ;
	}
	var	tgtAnchor = ( tgtId ) ? document.getElementById( tgtId ) : null ;
	if ( tgtAnchor ) {
		var	oldPosition = tgtAnchor.style.position ;
		tgtAnchor.style.position = "absolute" ;
		window.scrollTo( 0, tgtAnchor.offsetTop ) ;
		tgtAnchor.style.position = oldPosition ;
	}
	else {
		window.scrollTo( 0, 0 ) ;
	}
//	document.title = title ;
	
	restoreMyPostForm() ;

	_myScreenHistoryBack_ = false ;
	_myScreenLastHash_ = name ;
	
	_myScreenCheckID_ = setTimeout( "checkMyScreenAnchor(true)", _myScreenCheckCycle_ ) ;

}	//	end of changeMyScreenAnchor()


function	showMyScreenNotice( notice, style, toTop )
{
	if ( _myScreen_ == "" ) return ;
	
	var waitHTML = [
		'<div id="my-screen-notice" style="display:inline; margin:0px 0px 0px 12px; padding:0px; ' + style + '">'
	,	notice
	,	'</div>'
	].join("\n") ;
	
//	_myScreen_.innerHTML = waitHTML ;

	var	div = document.getElementById('my-screen-notice') ;
	if ( div ) {
		div.outerHTML = waitHTML ;
	}
	else {
		var	h2s = _myScreen_.getElementsByTagName('h2') ;
		if ( 0 < h2s.length ) {
			h2s[0].innerHTML += waitHTML ;
		}
		else {
			var	h3s = _myScreen_.getElementsByTagName('h3') ;
			if ( 0 < h3s.length ) {
				h3s[0].innerHTML += waitHTML ;
			}
			else {
				return ;
			}
		}
	}
	if ( toTop == true ) {
		window.scrollTo( 0, 0 ) ;
	}

}	//	end of showMyScreenNotice()


function	hideMyScreenNotice()
{
	stopMyScreenWait() ;
	
	if ( _myScreen_ == "" ) return ;
	var	div = document.getElementById('my-screen-notice') ;
	if ( !div ) return ;
	
	div.style.display = "none" ;
	
}	//	end of hideMyScreenNotice()


function	showMyScreenTimeout()
{
	_myScreenTimeCnt_ ++ ;
	if ( _myScreenTimeCnt_ >= _myScreenTimeout_ * 1000 / _myScreenBlinkIntv_ ) {
		showMyScreenNotice( Math.floor(_myScreenTimeCnt_ * _myScreenBlinkIntv_ / 1000) + ' sec. passed', "color:red; font-size:12px; font-weight:bold;", true ) ;
	}
	if ( _myScreenBlink_ == true ) {
		var	div = document.getElementById('my-screen-notice') ;
		if ( div ) {
			div.style.display = ( _myScreenTimeCnt_ % 2 ) ? "none" : "inline" ;
		}
	}
	_myScreenTimerID_ = setTimeout( "showMyScreenTimeout()", _myScreenBlinkIntv_ ) ;
	
}	//	end of showMyScreenTimeout()


function	stopMyScreenWait()
{
	if ( _myScreenTimerID_ ) {
		clearTimeout( _myScreenTimerID_ ) ;
	}
	_myScreenTimerID_ = 0 ;

	if ( _myScreen_ == "" ) return ;
	var	div = document.getElementById('my-screen-notice') ;
	if ( !div ) return ;
	
	div.style.display = "inline" ;

}	//	end of stopMyScreenWait()


function	startMyScreenWait()
{
	stopMyScreenWait() ;
	_myScreenTimerID_ = setTimeout( "showMyScreenTimeout()", _myScreenBlinkIntv_ ) ;
	_myScreenTimeCnt_ = 0 ;
	
}	//	end of startMyScreenWait()


function	showMyScreenError( request )
{
	stopMyScreenWait() ;
	showMyScreenNotice( 'URL: ' + _myScreenRequestInfo_.join("#") + ' was not found', "color:red; font-size:12px; font-weight:bold;", true ) ;

}	//	end of showMyScreenError()


function	MyPostHtml2Text( submitObj )
{
	if ( submitObj._origclick ) {
		submitObj.disabled = true ;
	}
	var	formObj = document.getElementById( "comment-form" ) || document.comment_form || document.comments_form ;
	
	if ( !formObj ) return ;

	formObj.text.value = changeHtml2Text( formObj.text.value ) ;

//	if ( submitObj.id == "post" ) {
//		return	disableButton(submitObj) ;
//	}
	if ( submitObj._origclick ) {
		return	submitObj._origclick() ;
	}
	return	true ;

}	//	end of MyPostHtml2Text()


function	modMyPostForm()
{
	var	formObj = document.getElementById( "comment-form" ) || document.comment_form || document.comments_form ;
	
	if ( !formObj ) return ;

	if ( document.getElementById('comment-postform-modified') ) return ;
	
	var	div = document.createElement('div') ;
	div.id = 'comment-postform-modified' ;
	formObj.appendChild( div ) ;
	
//	formObj.preview.setAttribute( "_origclick", ((formObj.preview.onclick)?formObj.preview.onclick:null) ) ;
	formObj.preview._origclick = ( formObj.preview.onclick ) ? formObj.preview.onclick : null ;
	formObj.preview.onclick = function() { MyPostHtml2Text( this ); } ;
	
//	formObj.post.setAttribute( "_origclick", ((formObj.post.onclick)?formObj.post.onclick:null) ) ;
//	formObj.post._origclick = ( formObj.post.onclick ) ? formObj.post.onclick : null ;
	formObj.post._origclick = function() {
		var	formObj = document.getElementById( "comment-form" ) || document.comment_form || document.comments_form ;
		handleSubmit( formObj ) ;
		var	e = formObj.post ;
	    if (!requestSubmitted) {
	        e.disabled = true; // 送信ボタンの無効化：この回のsubmitイベントはIE6では抑制されるがFirefoxでは抑制されない
	        theForm = e.form;
	        requestSubmitted = true;
	        if ( navigator.userAgent.toLowerCase().match( "msie" ) ) { // 二重投稿防止：IEの場合のみタイマでsubmitIt()をコール
	            setTimeout('submitIt()', 250);
	        }
	    } else {
	        return false;
	    }
	} ;
	formObj.post.onclick = function() { MyPostHtml2Text( this ); } ;
	
	//	in 'comments.js'
	//	doLoaded() ;	//	NG on Firefox
// -- 2007.01.15: commented out <from>
/*
//	my_doLoaded( formObj ) ;
*/
// -- 2007.01.15: commented out < to >
	function	my_doLoaded( f )
	{
//		f.onsubmit = handleSubmitEvent ;	//	NG on Firefox
		f.onsubmit = function() { handleSubmitEvent(); } ;
		
//		setFormValues( f ) ;	//	NG on Firefox
		my_setFormValues( f ) ;
		if( f.author && f.author.value && f.bakecookie ) f.bakecookie.checked = true ;
	}
	function	my_setFormValues( f )
	{
	    var	val = my_getCookie( "typepadauthor" ) ;
	    if ( f.author && !f.author.value && val ) f.author.value = val ;
	    val = my_getCookie("typepademail") ;
	    if ( f.email && !f.email.value && val ) f.email.value = val;
	    val = my_getCookie("typepadurl") ;
	    if ( f.url && !f.url.value && val ) f.url.value = val;
	}
	function	my_getCookie( name )
	{
//		return getCookie( name ) ;	//	NG on Firefox (getCookie function butting?)
		if ( typeof hostName != 'undefined' ) {
			hostName = document.domain.replace( /^[^\.]+/, '' ) ;
		}
	    var	key = name + '=' ;
	    var	c = document.cookie ;
	    var	keyFrom = c.indexOf( key ) ;
	    if ( keyFrom < 0 ) return '' ;
	    var keyTo = c.indexOf( ';', keyFrom + key.length ) ;
	    if ( keyTo < 0 ) keyTo = c.length ;
	    return unescape( c.substring( keyFrom + key.length, keyTo ) ) ;
	}
	
	//	from commentNotice(): thanks to facet-san (http://facet.cocolog-nifty.com/divers/2004/11/post_12.html)
	var ref = document.getElementById('comment-regist') || formObj.bakecookie.parentNode.parentNode ;
	if ( ref ) {
		var	div = document.createElement('div') ;
		
		div.id = 'comment-notice' ;
		div.innerHTML = _myPostNotice_ ;
		if ( ref.id ) {
			ref.appendChild( div ) ;
		}
		else {
			ref.parentNode.insertBefore( div, ref.nextSibling ) ;
		}
	}
// -- 2007.01.15: added <from>
	var	call_doLoaded = function () {
		var	call_after = function () {
			hostName = document.domain.replace( /^[^\.]+/, '' ) ;
		}
		if ( typeof doLoaded != 'function' ) {
			setTimeout( call_doLoaded, 100 ) ;
			return ;
		}
		doLoaded() ;
		setTimeout( call_after, 2000 ) ;
	}
	setTimeout( call_doLoaded, 1000 ) ;
// -- 2007.01.15: added < to >

}	//	end of modMyPostForm()


function	backupMyPostForm()
{
	var	formObj = document.getElementById( "comment-form" ) || document.comment_form || document.comments_form ;
	
	if ( !formObj ) return ;
	
	var	textObj = formObj.text ;
	
	if ( textObj && textObj.value != "" ) {
		var	tb = getTrackBackURL( _myScreen_ ) ;
		if ( tb != "" ) {
			_myScreenBackupTB_ =  tb ;
			_myScreenBackupText_ = textObj.value ;
			var	tmp = formObj.author ;
			_myScreenBackupAuth_ = (tmp) ? tmp.value : "" ;
			tmp = formObj.email ;
			_myScreenBackupEmail_ = (tmp) ? tmp.value : "" ;
			tmp = formObj.url ;
			_myScreenBackupURL_ = (tmp) ? tmp.value : "" ;
			tmp = formObj.bakecookie ;
			_myScreenBackupChk_ = (tmp) ? tmp.checked : true ;
		}
	}
	
}	//	end of backupMyPostForm()


function	restoreMyPostForm()
{
	var	formObj = document.getElementById( "comment-form" ) || document.comment_form || document.comments_form ;
	
	if ( !formObj ) return ;
	
	modMyPostForm() ;
	
	var	textObj = formObj.text ;
	
	if ( textObj && textObj.value == "" ) {
		var	tb = getTrackBackURL( _myScreen_ ) ;
		if ( tb == _myScreenBackupTB_ ) {
			textObj.value = _myScreenBackupText_ ;
			var	tmp = formObj.author ;
			if ( tmp ) tmp.value = _myScreenBackupAuth_ ;
			tmp = formObj.email ;
			if ( tmp ) tmp.value = _myScreenBackupEmail_ ;
			tmp = formObj.url ;
			if ( tmp ) tmp.value = _myScreenBackupURL_ ;
			tmp = formObj.bakecookie ;
			if ( tmp ) tmp.checked = _myScreenBackupChk_ ;
		}
	}

}	//	end of restoreMyPostForm()


function	showMyScreenWait( toTop )
{
	backupMyPostForm() ;
	
//	showMyScreenNotice( 'now loading ...', "color:green; font-size:12px; font-weight:bold; text-decoration:blink;" ) ;
//	showMyScreenNotice( 'now loading ...', "color:green; font-size:12px; font-weight:bold;" ) ;
	showMyScreenNotice( 'now loading ...', "color:green; font-size:12px; font-weight:bold;", toTop ) ;
	startMyScreenWait() ;
	
}	//	end of showMyScreenWait()


function	showMyScreenNotFound()
{
	showMyScreenNotice( 'not found', "color:red; font-size:12px; font-weight:bold;", true ) ;
	
}	//	end of showMyScreenNotFound()


function	changeLinkURLtoQuick( linkObj, myEvent )
{
	if ( myEvent.shiftKey || myEvent.button == 2 ) {
		linkObj.href = linkObj.getAttribute( "_nlink" ) ;
	}
	else {
		linkObj.href = linkObj.getAttribute( "_qlink" ) ;
	}

}	//	end of changeLinkURL()


function	changeLinkURLtoNormal( linkObj, myEvent )
{
	linkObj.href = linkObj.getAttribute( "_nlink" ) ;

}	//	end of changeLinkURLtoQuick()


function	makeQuickLink( obj )
{
	var	srch = 'http://' + document.domain + _myBlogName_ ;
	var	links = obj.getElementsByTagName('a') ;
	var	link ;
	var	ldir = "" ;
	var	qlinkCnt = 0 ;
	for ( var ci=0; ci < links.length; ci++ ) {
		link = links[ci] ;
		if ( link.onclick ) continue ;
//		if ( link.target != "" && link.target != "_self" ) continue ;
//		if ( link.className == "permalink" ) continue ;
		ldir = link.href ;
		ldir = ldir.replace( srch, _myBlogName_ ) ;
		var	srchFmt = new RegExp( '^'+_myBlogName_, "" ) ;
		if ( ldir.match( srchFmt ) ) {
			if ( link.target != "" && link.target != "_self" ) {
				link.target = "_self" ;
			}
//			link.href = "javascript:showMyArticleRequest('" + ldir + "');" ;

			link.setAttribute( "_nlink", link.href ) ;
			
			var	fileName = ldir.replace( /(.*?)#(ccqlink|ccqlist|ccqfile|ccqsrch)=/, "" ) ;
			if ( fileName != ldir ) {
				switch ( RegExp.$2 ) {
					case	"ccqlink"	:
						link.setAttribute( "_qlink", "javascript:showMyArticleRequest('" + fileName + "');" ) ;
						break ;
					case	"ccqlist"	:
						link.setAttribute( "_qlink", "javascript:showMyListRequest('" + fileName + "');" ) ;
						break ;
					case	"ccqfile"	:
						link.setAttribute( "_qlink", "javascript:showMyListRequestURL('" + fileName + "');" ) ;
						break ;
					case	"ccqsrch"	:
						link.setAttribute( "_qlink", "javascript:showMySrchRequest('" + fileName + "');" ) ;
						break ;
				}
			}
			else {
				link.setAttribute( "_qlink", "javascript:showMyArticleRequest('" + ldir + "');" ) ;
			}
			if ( !document.all ) {
//				window.captureEvents(Event.MOUSEOVER|Event.MOUSEDOWN|Event.MOUSEOUT|Event.MOUSEMOVE) ;
//			 	link.addEventListener( "mousedown", function() { changeLinkURLtoQuick( this, event ); }, true ) ;
//			 	link.addEventListener( "mouseout", function() { changeLinkURLtoNormal( this, event ); }, true ) ;
					/* "addEventListener()" on Firefox: NG (scope problem of 'event')	*/
			 	link.setAttribute( "onmousedown", "javascript:changeLinkURLtoQuick( this, event );" ) ;
			 	link.setAttribute( "onmouseout", "javascript:changeLinkURLtoNormal( this, event );" ) ;
			}
			else {
				link.onmousedown = function() { changeLinkURLtoQuick( this, event ); } ;
				link.onmouseout = function() { changeLinkURLtoNormal( this, event ); } ;
					/* "onmouse* = function() {} ;" on Firefox: NG (scope problem of 'event')	*/
			}
			qlinkCnt ++ ;
		}
		else {
			if ( ldir.match( /^(http[s]?|ftp):/ ) ) {
				link.target = "_blank" ;
			}
		}
	}
	return qlinkCnt ;

}	//	end of makeQuickLink()


function	makeQuickLinkMyScreen()
{
	if ( setMyScreen() == false ) {
		setTimeout( "makeQuickLinkMyScreen()", _myScreenCheckCycle_ ) ;
		return ;
	}
	addPostFormToMyArticle( _myScreen_ ) ;
	
	if ( _myScreen_ligting_search_keyword_ == null ) {
		//	patched to original ( 'cocolog_ajax_search.js' or 'blog_ajax_json_search.js' )
		if ( typeof ligting_search_keyword != "undefined" && typeof getHashArgs != "undefined" ) {
			var	text_getHashArgs = getHashArgs.toString() ;
			var	text_ligting_search_keyword = ligting_search_keyword.toString() ;
			text_getHashArgs = text_getHashArgs.replace( "getHashArgs", "_myGetHashArgs_" ).replace( /replace\(.+\)/, 'replace( /.*?#search_word/, "search_word")' ) ;
			text_ligting_search_keyword = text_ligting_search_keyword.replace( /.*{/, '{'+text_getHashArgs ).replace( "getHashArgs", "_myGetHashArgs_" )  ;
			text_ligting_search_keyword = text_ligting_search_keyword.replace( /\|,/, '|　+)/,' ).replace( /\|,/, '|　)$/,' ).replace( /\|\)/, '|　/)' ) ;
				// for Firefox ( bug of toString() ? )
			text_ligting_search_keyword = text_ligting_search_keyword.replace( "'entry-body-text'", "'entry-body-text' || div[i].className == 'comment-content'" ) ;
			_myScreen_ligting_search_keyword_ = new Function( "center", text_ligting_search_keyword ) ;
		}
	}
	if ( _myScreen_ligting_search_keyword_ != null ) {
		_myScreen_ligting_search_keyword_( _myScreen_ ) ;
	}
	if ( _myScreenFirstCall_ == true ) {
		if ( typeof cocoPView != "undefined" ) {	//	cocoPView.js
			cocoPView.initContent( _myScreen_ ) ;
		}
		if ( typeof checkCreateCalendar == 'function' ) {
			getCalendarInfo() ;
			checkCreateCalendar() ;
		}
	}
	else {
		if ( typeof RbookSearch != "undefined" ) {	//	RbookSearch.js
			RbookSearch.setDefaultTheme() ;
		}
	}
	_myScreenCheckQLink_ = ( makeQuickLink( _myScreen_ ) == 0 ) ? true : false ;
	
	hideMyScreenNotice() ;	
	
	if ( navigator.userAgent.match( 'Firefox' ) ) {
		var divs = document.getElementById('center').getElementsByTagName('div') ;
		for ( var ci=0; ci < divs.length; ci++ ) {
			if ( divs[ci].className != 'sourcecode' ) continue ;
			var	src = divs[ci].innerHTML ;
//			src = src.replace( /([:\-\.\/\?=;_])/g, '$1<wbr />' ) ;
//				[メモ] 内部のタグまで変換してしまうのでNG
			src = src.replace( /(&nbsp;)/gi, '$1<wbr />' ) ;
			divs[ci].innerHTML = src ;
		}
	}
	if ( _myScreenFirstCall_ == true ) {
		_myScreenFirstCall_ = false ;
		if ( document.body.style.display == "none" ) {
			document.body.style.display = "block" ;
		}
		cssAddRule( '#center', 'display:block;' ) ;
	}

}	//	end of makeQuickLinkMyScreen()


function	makeQuickLinkSideBar()
{
	var	divs = document.getElementsByTagName('div') ;
	
	for ( var ci=0; ci < divs.length; ci++ ) {
		if ( divs[ci].className == 'sidebar' ) {
			makeQuickLink( divs[ci] ) ;
			break ;
		}
	}
//	makeQuickLinkMyScreen() ;
	
}	//	end of makeQuickLinkSideBar()


function	showMyList( request )
{
	stopMyScreenWait() ;

	if ( _myScreen_ == "" ) return ;
	
	for (;;) {
		var		baseFile = _myScreenRequestInfo_[0] ;
		if ( _myScreenUseSearchData_ == true ) {
			if ( typeof cocoTBparseData != "undefined" && baseFile.match(_myScreenTBlistFile_) ) {
				cocoTBparseData( request ) ;
				var	title = document.title.replace( /: .+/, "") + ": トラックバック一覧" ;
				break ;
			}
			else if ( typeof cocoCommentParseData != "undefined" && baseFile.match(_myScreenCommntListFile_) ) {
				cocoCommentParseData( request ) ;
				var	title = document.title.replace( /: .+/, "") + ": コメント一覧" ;
				break ;
			}
			else if ( typeof cocoArchiveParseData != "undefined" && baseFile.match(_myScreenArchiveListFile_) ) {
				cocoArchiveParseData( request ) ;
				var	title = document.title.replace( /: .+/, "") + ": 記事一覧" ;
				break ;
			}
		}
		var	showHTML = [
			'<div class="main-module-list">'
		,	request.responseText
		,	'</div>'
		].join("\n") ;
	
		_myScreen_.innerHTML = showHTML ;
		
		var	title = document.title.replace( /: .+/, "") ;
		var	h2s = _myScreen_.getElementsByTagName('h2') ;
		if ( 0 < h2s.length ) {
			title = title +  ": " + h2s[0].innerHTML ;
		}
		else {
			showMyScreenError() ;
			return ;
		}
		break ;
	}
	changeMyScreenAnchor( "ccqfile=" + _myScreenRequestInfo_.join("#"), title ) ;
	
//	document.title = title ;
	
	makeQuickLinkMyScreen() ;
	
}	//	end of showMyList()


function	showMyListRequestURL( fileName, reload )
{
	if ( setMyScreen() == false ) {
		location.href = fileName ;
		return ;
	}
	showMyScreenWait() ;
	
	var	strs = fileName.split('#') ;
	var	baseFile = strs[0] ;
	var	dateFrom = "" ;
	var	dateTo = "" ;
	
	for ( var ci=1; ci < strs.length; ci++ ) {
		if ( strs[ci].match( /^from=(.+)/ ) ) {
			dateFrom = RegExp.$1 ;
		}
		else if ( strs[ci].match( /^to=(.+)/ ) ) {
			dateTo = RegExp.$1 ;
		}
	}
	if ( typeof _tbShowWindow_ != "undefined" ) {
		_tbShowWindow_ = _myScreen_ ;
		cocoTBsetDateRange( dateFrom, dateTo ) ;
	}
	if ( _myScreenUseSearchData_ == true ) {
		if ( reload == false ) {
			var	chk = false ;
		
			if ( typeof _tbShowCalled_ != "undefined" && _tbShowCalled_ == true && baseFile.match(_myScreenTBlistFile_) ) {
				cocoTBshow() ;
				var	title = document.title.replace( /: .+/, "") + ": トラックバック一覧" ;
				chk = true ;
			}
			else if ( typeof _cmtShowCalled_ != "undefined" && _cmtShowCalled_ == true && baseFile.match(_myScreenCommntListFile_) ) {
				cocoCommentShow() ;
				var	title = document.title.replace( /: .+/, "") + ": コメント一覧" ;
				chk = true ;
			}
			else if ( typeof _archShowCalled_ != "undefined" && _archShowCalled_ == true && baseFile.match(_myScreenArchiveListFile_) ) {
				cocoArchiveShow() ;
				var	title = document.title.replace( /: .+/, "") + ": 記事一覧" ;
				chk = true ;
			}
			if ( chk == true ) {
				changeMyScreenAnchor( "ccqfile=" + fileName, title ) ;
				makeQuickLinkMyScreen() ;
				return ;
			}
		}
	}
	_myScreenRequestInfo_ = strs ;
	if ( _myScreenAjaxCache_ == true ) {
		var	callName = _myScreenRequestInfo_[0] ;
	}
	else {
		var	callName = _myScreenRequestInfo_[0] + ( (_myScreenRequestInfo_[0].match(/\?/)) ? '&' : '?' ) + "ccqcache=" + (new Date).getTime() ;
	}
	new Ajax.Request( callName, {method: 'get', onSuccess: function(request){ showMyList( request ); }, onFailure: function(request){ showMyScreenError( request ); } } ) ;
	
}	//	end of showMyListRequestURL()


function	showMyListRequest( listID )
{
	var	fileName = "/lists/" + listID + "/module.inc" ;
	
	if ( setMyScreen() == false ) {
		location.href = fileName ;
		return ;
	}
//	var div = document.getElementById( listID ) ;
	var	h2 = document.getElementById( listID ) ;
	if ( !h2 || !h2.parentNode ) return ;
	var	div = h2.parentNode ;

	showMyScreenWait() ;
	
	if ( div ) {
		stopMyScreenWait() ;
		
		var	title = document.title.replace( /: .+/, "") ;
		var	subTitle = "" ;
		var	showdiv = document.createElement('div') ;
		showdiv.innerHTML = div.innerHTML ;
		var	obj = showdiv.firstChild ;
		while ( obj ) {
			if ( obj.tagName ) {
				if ( obj.tagName == "H2" ) {
					var	links = obj.getElementsByTagName('a') ;
					if ( 0 < links.length ) {
						subTitle = links[0].innerHTML ;
//						links[0].innerHTML = "" ;
						links[0].parentNode.removeChild( links[0] ) ;
						obj.innerHTML = subTitle + obj.innerHTML ;
					}
					else {
						subTitle = obj.innerHTML ;
					}
				}
				obj.style.display = "block" ;
			}
			obj = obj.nextSibling ;
			while ( obj ) {
				if ( obj.nodeType == 1 ) break ;
				obj = obj.nextSibling ;
			}
		}
		var	showHTML = [
			'<div class="main-module-list">'
		,	showdiv.innerHTML
		,	'</div>'
		].join("\n") ;
		
		_myScreen_.innerHTML = showHTML ;
		
		title = title + ": " + subTitle ;
		changeMyScreenAnchor( "ccqlist=" + listID, title ) ;
		
//		document.title = title + ": " + subTitle ;
		
		makeQuickLinkMyScreen() ;
		return ;
	}
	_myScreenRequestInfo_ = fileName.split('#') ;
	if ( _myScreenAjaxCache_ == true ) {
		var	callName = _myScreenRequestInfo_[0] ;
	}
	else {
		var	callName = _myScreenRequestInfo_[0] + ( (_myScreenRequestInfo_[0].match(/\?/)) ? '&' : '?' ) + "ccqcache=" + (new Date).getTime() ;
	}
//	new Ajax.Request( callName, {method: 'get', onComplete: function(request){ showMyList( request ); } } ) ;
	new Ajax.Request( callName, {method: 'get', onSuccess: function(request){ showMyList( request ); }, onFailure: function(request){ showMyScreenError( request ); } } ) ;

}	//	end of showMyListRequest()


function	showMySrch( request )
{
	stopMyScreenWait() ;

	if ( _myScreen_ == "" ) return ;
	
	if ( _myScreenUseSearchData_ == true ) {
		/* --- parse_archive_data(): function of 'blog_ajax_json_search.js' --- */
		parse_archive_data( request ) ;
	}
	else {
		/* --- parse_backnumbers(): function of 'cocolog_ajax_search.js' --- */
		parse_backnumbers( request ) ;
	}
	var	title = document.title.replace( /: .+/, "") + ": '" + search_keyword + "'の検索結果" ;
	
	changeMyScreenAnchor( "ccqsrch=" + search_keyword, title ) ;
	
	makeQuickLinkMyScreen() ;
	
}	//	end of showMySrch()


function	showMySrchRequest( srchKeyword, reload )
{
	if ( setMyScreen() == false ) return ;
	if ( _myScreenUseSearchData_ == true ) {
		if ( typeof blogAjaxJsonSearch == "undefined" ) {
			showMyScreenNotice( "'blog_ajax_json_search.js' is required", "color:red; font-size:12px; font-weight:bold;", true ) ;
			return ;
		}
	}
	else {
		if ( typeof cocologAjaxSearch == "undefined" ) {
			showMyScreenNotice( 'cocolog_ajax_search.js is required', "color:red; font-size:12px; font-weight:bold;", true ) ;
			return ;
		}
	}
	showMyScreenWait() ;
	
	/* --- search_keyword & result_content: global variables of 'cocolog_ajax_search.js' or 'blog_ajax_json_search.js' --- */
	search_keyword = srchKeyword ;
	result_content = _myScreen_ ;
	
	if ( _myScreenUseSearchData_ == true ) {
		/* --- is_loaded: global variable of 'cocolog_ajax_search.js' --- */
		if ( is_loaded && reload == false ) {
			/* --- search(): funtion of 'cocolog_ajax_search.js' --- */
			search() ;
			
			var	title = document.title.replace( /: .+/, "") + ": '" + search_keyword + "'の検索結果" ;
			changeMyScreenAnchor( "ccqsrch=" + search_keyword, title ) ;
			makeQuickLinkMyScreen() ;
		}
		else {
			new Ajax.Request( _myBlogName_ + _myScreenSearchData_, {method: 'get', onComplete: function(request){ showMySrch( request ); } } );
		}
	}
	else {
		new Ajax.Request( _myBlogName_ + _myScreenArchiveIndex_, {method: 'get', onComplete: function(request){ showMySrch( request ); } } );
	}

}	//	end of showMySrchRequest()


function	getBlogId( obj )
{
	var	blog_id = "" ;
	var	imgs = obj.getElementsByTagName('img') ;
	if ( 0 < imgs.length ) {
		var	src = imgs[imgs.length-1].src ;
		var	srchFmt = new RegExp( 'blog_id=([0-9]+)', "" ) ;
		if ( src.match( srchFmt ) ) {
			blog_id = RegExp.$1 ;
		}
	}
	return blog_id ;

}	//	end of getBlogId()


function	getTrackBackURL( obj )
{
	var	tburl = "" ;
	var	p_s = obj.getElementsByTagName('p') ;
	for ( var ci=0; ci < p_s.length; ci++ ) {
		if ( p_s[ci].className == 'trackback-url' ) {
			var	srchFmt = new RegExp( '(http:.+)$', "" ) ;
			if ( p_s[ci].innerHTML.match( srchFmt ) ) {
				tburl = RegExp.$1 ;
				break ;
			}
		}
	}
	return tburl ;

}	//	end of getTrackBackURL()


function	addPostFormToMyArticle( obj )
{
	var	h3s = obj.getElementsByTagName('h3') ;
	
	for ( var ci=0; ci < h3s.length; ci++ ) {
	
		var	h3 = h3s[ci] ;

//		if ( h3.nextSibling.className == "post-link-to-article" ) continue ;
//		if ( h3.parentNode.lastChild.className == "post-link-to-article" ) continue ;

		var	links = h3.parentNode.getElementsByTagName('a') ;
		for ( var cj=0; cj < links.length; cj++ ) {
			if ( links[cj].className == "permalink" ) {
				break ;
			}
		}
		if ( links.length <= cj ) continue ;
		
		var	insObj = links[cj].parentNode ;
		if ( insObj.lastChild.className == "post-link-to-article" ) continue ;
		
		var	url = links[cj].href ;
		
		var	link = document.createElement('a') ;
		link.innerHTML = _myStrPostLinktoArticle_ ;
		link.target = "_blank" ;
	
		var	href = [
			'https://app.cocolog-nifty.com/t/app/weblog/post?is_qp=1&v=2&__mode=edit_entry'
		,	'&qp_show=tb,ca,ac,ap,cb,ex,tm,kw'
		,	'&qp_title=' + escape( document.title.replace( /: .+/, "") + ': ' + h3.innerHTML )
		,	'&qp_href=' + escape( url )
//		,	'&qp_text='
//		,	'&to_ping_urls=' + escape( tburl )
		].join("") ;
		
		link.href = href ;
		
		var	div = document.createElement('div') ;
		div.className = "post-link-to-article" ;
		div.appendChild( link ) ;
	
//		h3.parentNode.insertBefore( div, h3.nextSibling ) ;
//		h3.parentNode.appendChild( div ) ;
		insObj.appendChild( div ) ;
	}

}	//	end of addPostFormToMyArticle()


function	copyScriptObjElm( dst, src )
{
	if ( src.language ) dst.language = src.language ;
	if ( src.type ) dst.type = src.type ;
	if ( src.charset ) dst.charset = src.charset ;
	if ( src.text ) {
		dst.text = src.text ;
	}
	else {
		if ( src.src ) dst.src = src.src ;
	}
	dst.defer = 'defer' ;
	
}	//	end of copySecriptObj()


function	copyObjectElm( dst, src )
{
/*
	for ( var name in src ) {
		dst[name] = src[name] ;
	}
*/
	var	elms = [
		'src', 'data', 'quality', 'loop', 'bgcolor', 'wmode', 'menu', 'scale', 'salign', 'classid'
	,	'pluginspace', 'codebase', 'height', 'width', 'hspace', 'vspace', 'align', 'class'
	,	'id', 'name', 'type', 'declare', 'innerHTML'
//	,	'style'		//	NG: Firefox
//	,	'play', 	//	NG: IE
//	,	'innerHTML'	//	NG: IE(空)
	] ;
	for ( var ci=0; ci < elms.length; ci++ ) {
//alert( elms[ci] ) ;
		if ( src[elms[ci]] ) {
//alert( '=>' + src[elms[ci]] ) ;
			dst[elms[ci]] = src[elms[ci]] ;
		}
	}
/*
	for (;;) {
		var	childObj = src.firstChild ;
		if ( !childObj ) break ;
		src.removeChild( childObj ) ;
		dst.appendChild( childObj ) ;
	}
*/
	
}	//	end of copyObjectElm()

function	callScript( scriptObj ) {
	var 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()
	
	var	getFile = function ( filename ) {
		var	xmlHttpObj = getXmlHttpObj() ;
		if ( !xmlHttpObj ) return null ;
		
		xmlHttpObj.open("get", filename, false ) ;
		xmlHttpObj.send(null) ;
		
		return xmlHttpObj.responseText ;
		
	}	//	end of getFile()
	
	var	execScript = function ( scriptStr ) {
		var	original_documentwrite = document.write ;
		document.write = function (str) {
			var	scriptStrs = str.match( /<script.*?script>/mgi ) ;
			if ( !scriptStrs ) {
				return original_documentwrite(str) ;
			}
			for ( var ci=0; ci < scriptStrs.length; ci++ ) {
				var	scriptStr = scriptStrs[ci] ;
				var	scriptElm = document.createElement('script') ;
				if ( scriptStr.match( /language="(.*?)"/mi ) ) {
					scriptElm.language = RegExp.$1 ;
				}
				if ( scriptStr.match( /type="(.*?)"/mi ) ) {
					scriptElm.type = RegExp.$1 ;
				}
				if ( scriptStr.match( /charset="(.*?)"/mi ) ) {
					scriptElm.charset = RegExp.$1 ;
				}
				if ( scriptStr.match( /src="(.*?)"/mi ) ) {
					scriptElm.src = RegExp.$1 ;
				}
				else if ( scriptStr.match( /^<script.*?>(.*?)<\/script>$/mi ) ) {
					scriptElm.text = RegExp.$1 ;
				}
				scriptElm.defer = 'defer' ;
				
				callScript( scriptElm ) ;
			}
			return 0 ;
		} ;
		eval( scriptStr ) ;
		document.write = original_documentwrite ;
	}

	if ( scriptObj.src ) {
		var	srcUrl = scriptObj.src ;
		var	rspText = '' ;
		if ( ( !srcUrl.match( /^http/ ) || srcUrl.match( 'http://' + document.domain ) ) ) {
			rspText =getFile( srcUrl ) ;
		}
		if ( rspText != '' ) {
			execScript( rspText ) ;
		}
		else {
			_myScreen_.appendChild( scriptObj ) ;
		}
	}
	else {
		execScript( scriptObj.text ) ;
	}

}	//	end of callScript()

function	showMyArticle( request )
{
	stopMyScreenWait() ;
	
	if ( _myScreen_ == "" ) return ;
	
	var	tmpText = request.responseText ;
	
	var	title = "" ;
	if ( tmpText.match( /<title>(.*)<\/title>/i ) ) {
		title = RegExp.$1 ;
	}
	tmpText = tmpText.replace( /<head/, '<div' ) ;
	tmpText = tmpText.replace( /<\/head>/, '</div>' ) ;
	
	tmpText = tmpText.replace( /<object/ig, '<dummyobject' ) ;
	tmpText = tmpText.replace( /<\/object>/ig, '</dummyobject>' ) ;
	
	var	article = document.createElement('div') ;
	
	article.innerHTML = "dummystring" + tmpText ;
	
	var	divs = article.getElementsByTagName('div') ;
	
	var	headScriptsNum = 0 ;
	if ( 0 < divs.length ) {
		var	scripts = divs[0].getElementsByTagName('script') ;
		var	headScriptsNum = scripts.length ;
		var	headScripts = new Array( headScriptsNum ) ;
		for ( var ci=0; ci < headScriptsNum; ci++ ) {
			headScripts[ci] = document.createElement('script') ;
			copyScriptObjElm( headScripts[ci], scripts[ci] ) ;
		}
	}
/*
//	var	execScript = function( parentObj, scriptObj ) {
//		var	my_documentwrite = function ( parent, target ) {
//		    return function(str) {
//		        parent.insertBefore( document.createTextNode(str), target ) ;
//		    } ;
//		} ;
//		var	original_documentwrite = document.write ;
//		if ( !scriptObj.src ) {
//			document.write = my_documentwrite( parentObj, scriptObj ) ;
//			eval( scriptObj.text ) ;
//			document.write = original_documentwrite ;
//		}
//	}
*/
	for ( var ci=0; ci < divs.length; ci++ ) {
	
		if ( divs[ci].className != 'content' ) continue ;
/*
//		{	// --- script elements in header
//			var	scripts = divs[0].getElementsByTagName('script') ;
//			for ( var cj=0; cj < scripts.length; cj++ ) {
//				var	check = scripts[cj].text ;
//				if ( check.match( "SymError" ) || check.match( "SymWinOpen" ) || check.match( "SymOnUnload" ) || check.match( "SymOnLoad" ) ) continue ;
//				divs[ci].insertBefore( scripts[cj], divs[ci].firstChild ) ;
//			}
//			var	scripts = divs[ci].getElementsByTagName('script') ;
//			for ( var cj=0; cj < scripts.length; cj++ ) {
//				scripts[cj].defer = 'defer' ;
//			}
//		}
//		_myScreen_.innerHTML = divs[ci].innerHTML.replace( /<dummyobject/gi, '<object' ).replace( /<\/dummyobject>/gi, '</object>' ) ;
*/

		var	scripts = divs[ci].getElementsByTagName('script') ;
		var	num = scripts.length ;
		var	newScripts = new Array( num ) ;
		for ( var cj=0; cj < num; cj++ ) {
			newScripts[cj] = document.createElement('script') ;
			copyScriptObjElm( newScripts[cj], scripts[cj] ) ;
		}
		for ( var cj=0; cj < num; cj++ ) {
//			scripts[cj].parentNode.removeChild( scripts[cj] ) ;
			scripts[scripts.length-1].parentNode.removeChild( scripts[scripts.length-1] ) ;
		}
		_myScreen_.innerHTML = divs[ci].innerHTML.replace( /<dummyobject/gi, '<object' ).replace( /<\/dummyobject>/gi, '</object>' ) ;
//		_myScreen_.innerHTML = '' ;

		for ( var cj=0; cj < headScriptsNum; cj++ ) {
//			_myScreen_.appendChild( headScripts[cj] ) ;

			var	check = headScripts[cj].innerHTML ;
			if ( check.match( "SymError" ) || check.match( "SymWinOpen" ) || check.match( "SymOnUnload" ) || check.match( "SymOnLoad" ) ) {
//	-- 2006.06.08: ignored to avoid conflict --
				continue ;
			}
			_myScreen_.appendChild( headScripts[cj] ) ;
//			callScript( headScripts[cj] ) ;
		}
//		var	nextObj = divs[ci].firstChild ;
//		while ( nextObj ) {
//			var	curObj = nextObj ;
//			nextObj = curObj.nextSibling ;
//			_myScreen_.appendChild( curObj ) ;
//		}
		for ( var cj=0; cj < num; cj++ ) {
			_myScreen_.appendChild( newScripts[cj] ) ;
//			callScript( newScripts[cj] ) ;
		}
		break ;
	}

	if ( divs.length <= ci ) {
		location.href = _myScreenRequestInfo_.join("#") ;
		return ;
	}
/*
	if ( document.body.style.display == "none" ) {
		document.body.style.display = "block" ;
	}
	cssAddRule( '#center', 'display:block;' ) ;
*/
	if ( title == "" ) {
		var	title = document.title.replace( /: .+/, "") ;
		var	h3s = _myScreen_.getElementsByTagName('h3') ;
		if ( ( _myScreenRequestInfo_[0] != _myBlogName_ ) && ( h3s.length == 1 ) ) {
			title = title +  ": " + h3s[0].innerHTML ;
		}
	}
	var	name = "ccqlink=" + _myScreenRequestInfo_.join("#") ;
	if ( 1 < _myScreenRequestInfo_.length ) {
//		var	anchor = document.getElementById( _myScreenRequestInfo_[1] ) ;
		changeMyScreenAnchor( name, title, _myScreenRequestInfo_[1] ) ;
	}
	else {
		changeMyScreenAnchor( name, title ) ;
	}
//	document.title = title ;

//	if ( typeof cocoPView != "undefined" ) {	//	cocoPView.js
//		cocoPView.initContent( _myScreen_ ) ;
//	}
	makeQuickLinkMyScreen() ;
	
}	//	end of showMyArticle()


function	showMyArticleRequest( fileName )
{
	if ( setMyScreen() == false ) {
		location.href = fileName ;
		return ;
	}
//	showMyScreenWait() ;

	if ( typeof checkCreateCalendar == 'function' ) {
		urlArray = fileName.match(/\/[0-9]{4}\/[0-9]{2}\/??/) ;
		if (urlArray) {
			dateArray = urlArray[0].split("/");
			dateArray.shift();
		}
		else {
			dateArray = null ;
		}
		// 現在の年月
		var now = new Date();
		
		nowYear = now.getFullYear();
		nowMonth = now.getMonth() + 1;
		if (nowMonth < 10) {
			nowMonth = "0" + nowMonth;
		}
		checkCreateCalendar() ;
	}
/*
	_myScreenRequestInfo_ = fileName.split('#') ;
*/
	var	tmpInfo = fileName.split('#') ;
	
	if ( _myScreenRequestInfo_ != "" && tmpInfo[0] == _myScreenRequestInfo_[0] ) {
		var	name = "ccqlink=" + fileName ;
		if ( 1 < tmpInfo.length ) {
//			var	anchor = document.getElementById( tmpInfo[1] ) ;
			changeMyScreenAnchor( name, document.title, tmpInfo[1] ) ;
		}
		else {
			changeMyScreenAnchor( name, document.title ) ;
		}
		_myScreenRequestInfo_ = tmpInfo ;
		makeQuickLinkMyScreen() ;
		return ;
	}
	if ( fileName.match( /\/[\d]{4}\/[\d]{2}\/index.html/ ) || fileName.match( /\/[\w]+\/index.html/ ) ) {
		showMyScreenWait( true ) ;
	}
	else {
		showMyScreenWait( false ) ;
	}
	_myScreenRequestInfo_ = tmpInfo ;
	
	if ( _myScreenAjaxCache_ == true ) {
		var	callName = _myScreenRequestInfo_[0] ;
	}
	else {
		var	callName = _myScreenRequestInfo_[0] + ( (_myScreenRequestInfo_[0].match(/\?/)) ? '&' : '?' ) + "ccqcache=" + (new Date).getTime() ;
	}
//	new Ajax.Request( callName, {method: 'get', onComplete: function(request){ showMyArticle( request ); } } ) ;
	new Ajax.Request( callName, {method: 'get', onSuccess: function(request){ showMyArticle( request ); }, onFailure: function(request){ showMyScreenError(request); } } ) ;
	
}	//	end of showMyArticleRequest()


function	addLinktoH2( h2, url )
{
	var	createFlag = true ;
	var	link ;
	
	var	links = h2.getElementsByTagName('a') ;
	if ( 0 < links.length ) {
		link = links[0] ;
		createFlag = false ;
	}
	else {
		link = document.createElement('a') ;
	}
	if ( url.match( /^list[_a-zA-Z0-9]+$/ ) ) {
//		if ( h2.parentNode ) {
//			h2.parentNode.id = url ;
//		}
		h2.id = url ;
		url = "javascript: showMyListRequest('" + url + "');"
	}
	link.href = url ;
	if ( createFlag == true ) {
		link.innerHTML = h2.innerHTML ;
		h2.innerHTML = "" ;
		h2.appendChild( link ) ;
	}

}   //  end of addLinktoH2()


function	addLinktoListTitle( catId, url )
{
	var div = document.getElementById(catId) ;
	if ( !div ) return ;
	var h2s = div.getElementsByTagName('h2') ;
	if ( !h2s || h2s.length == 0 ) return ;
	addLinktoH2( h2s[0], url ) ;

}   //  end of addLinktoListTitle()


function	addLinktoCategory()
{
	addLinktoListTitle( "archive-category", "./" + _myScreenArchiveIndex_ ) ;

}   //  end of addLinktoCategory()


function	addLinkToMyList()
{
	if ( typeof titleToLink == "undefined" || !titleToLink ) return ;
	
	var h2s = document.getElementsByTagName('h2') ;

	for ( var ci=0; ci < h2s.length; ci++ ) {

//		var	title = h2s[ci].innerHTML.replace(/<\/?[^>]+>/gi, '') ;

		var	div = document.createElement('div') ;
		div.innerHTML = h2s[ci].innerHTML ;
		var	obj = div.firstChild ;
		var	nextObj ;
		while ( obj ) {
			nextObj = obj.nextSibling ;
			if ( obj.tagName && obj.tagName != "A" && obj.tagName != "LABEL" ) {
//				obj.innerHTML = "" ;
				obj.parentNode.removeChild( obj ) ;
			}
			obj = nextObj ;
		}
//		var	title = div.innerText ;	//	NG on Firefox
		var	title = div.innerHTML.replace(/<\/?[^>]+>/gi, '') ;
		
		if ( titleToLink[title] ) {
			addLinktoH2( h2s[ci], titleToLink[title] ) ;
		}
	}

}   //  end of addLinkToMyList()


function	cssAddRule( selector, property )
{
// --- 2007.01.13: commented out
/*
	if ( document.styleSheets[0].addRule ) {			// for IE
		document.styleSheets[0].addRule( selector, "{" + property + "}" ) ;
	}
	else if ( document.styleSheets[0].insertRule ) {	// for Firefox
		document.styleSheets[0].insertRule( selector + "{" + property + "}", document.styleSheets[0].cssRules.length );
	}
*/
}	//	end of cssAddRule()
	
/* --- end of cocoQLink.js --- */

