var gUrl;
var tplID='posts';
var loadStart=(new Date()).getTime();
var loadTm;
function LoadSingle(anc, talk, postid){
	if(anc){
		if(anc.target || anc.srcElement){
			U.StopEvent(anc);
			anc=anc.target||anc.srcElement;
		}
		postid=postid||'-1';
		gUrl=anc.href;
		EI('posts').innerHTML='Loading ...';
		Dabten.Net.Load(gUrl, GetSingle, {method:'POST', force:true, postData:{poke:''+postid}});
	}else if(talk){//if(anc)
		FreeTalk(startingTalk);
	}//if(anc)
	CloseAllPopupmenu();
	return true;
}


function GetSingle(o){
	var r=SplitResponse(o.client);
	var dt={};
	
	dt.url=gUrl; // global
	dt.ttl=r['title'];
	dt.info=r['info'];
	dt.excerpt=r['excerpt'];
	dt.trackback=r['trackback'];
	dt.nav=r['navi'];
	Dabten.InsertHTML('posts', tplID, dt);
	NaviTalkSetup(EI('posts'));
	
	field.ShowMessage('', '', '-');
	if(r['ads'] && r['ads'].length){
		var lines=r['ads'].split('\n');
		for(var i=0,p,line;i<lines.length;i++){
			line=lines[i];
			p=line.indexOf(',');
			ads[line.substring(0,p)]=line.substring(p+1);
		}
	}
	
	U.EI('talks').innerHTML=r['talks'];
	CommentformSetup();
D.Clear();
	
	FreeTalk(r['script']);
	
	delete r;
	delete dt;
	return true;
}
//function GetSingle(o){
//	var dt={};
//	dt.url=gUrl; // global
//	var p1=o.client.responseText.indexOf(spliter);
//	var p2=o.client.responseText.indexOf(spliter, p1+spliter.length);
//	var p3=o.client.responseText.indexOf(spliter, p2+spliter.length);
//	var p4=o.client.responseText.indexOf(spliter, p3+spliter.length);
//	var p5=o.client.responseText.indexOf(spliter, p4+spliter.length);
//	var p6=o.client.responseText.indexOf(spliter, p5+spliter.length);
//	var p7=o.client.responseText.indexOf(spliter, p6+spliter.length);
//	
//	dt.ttl=o.client.responseText.substring(0, p1);
//	dt.info=o.client.responseText.substring(p1+spliter.length, p2);
//	var adsTemp=o.client.responseText.substring(p2+spliter.length, p3);
//	dt.excerpt=o.client.responseText.substring(p3+spliter.length, p4);
//	dt.trackback=o.client.responseText.substring(p4+spliter.length, p5);
//	var scr=o.client.responseText.substring(p5+spliter.length, p6);
//	dt.nav=o.client.responseText.substring(p6+spliter.length, p7);
//	var com=o.client.responseText.substring(p7+spliter.length);
//	
//	Dabten.InsertHTML('posts', tplID, dt);
//	NaviTalkSetup(EI('posts'));
//	
//	//EI('ads').innerHTML=(ads.length!=0)?'<p>'+ads+'</p>':'';
//	field.ShowMessage('', '', '-');
//	if(adsTemp.length){
//		//field.ShowMessage(ads, '', '=');
//		var lines=adsTemp.split('\n');
//		for(var i=0,p,line;i<lines.length;i++){
//			line=lines[i];
//			p=line.indexOf(',');
//			ads[line.substring(0,p)]=line.substring(p+1);
//		}
//	}
//	
////alert(!!EI('posts')+' '+!!EI('ads') + ' '+!!EI('talks'));
////alert(U.EI('talks').innerHTML);
//	U.EI('talks').innerHTML=com;
//	CommentformSetup();
//D.Clear();
////D.Out(0,'GetSingle', scr);
////D.Out(1,'GetSingle', o.client.responseText);
//	
//	FreeTalk(scr);
//}

/**********/
function LoadMulti(anc, talkid, postid){
	if(!anc)
		return true;
	
	if(anc.target || anc.srcElement){
		U.StopEvent(anc);
		anc=anc.target||anc.srcElement;
	}
	gUrl=anc.href;
	EI('posts').innerHTML='Loading ...';
	Dabten.InsertFromURI('posts', 'text', '', gUrl, {method:'POST', force:true, postData:{poke:'-1'}, onSuccess:GetMulti });
	CloseAllPopupmenu();
	return true;
}

function GetMulti(o){
	NaviTalkSetup(EI('posts'));
}


/**********/
function WPLoad(){
	U.RE(window, 'load', WPLoad);
	if(loadTm)
		loadTm=clearTimeout(loadTm);
	//U.AE(window, 'mousemove', NavibarPopupmenu); // does not work on IE
	U.AE(document.body, 'mousemove', NavibarPopupmenu);
		
	if(NaviTalkSetup(EI('navisibai')))
		NaviTalkSetup(EI('navisibai').parentNode);
	if(NaviTalkSetup(EI('navipost')))
		NaviTalkSetup(EI('navipost').parentNode);
	if(NaviTalkSetup(EI('naviarch')))
		NaviTalkSetup(EI('naviarch').parentNode, true);
	
	if(NaviTalkSetup(EI('talksibai')))
		NaviTalkSetup(EI('talksibai').parentNode);
	if(NaviTalkSetup(EI('talkpost')))
		NaviTalkSetup(EI('talkpost').parentNode);
	if(NaviTalkSetup(EI('talkcate')))
		NaviTalkSetup(EI('talkcate').parentNode, true);
	if(NaviTalkSetup(EI('talkmonth')))
		NaviTalkSetup(EI('talkmonth').parentNode, true);
	
	NaviTalkSetup(EI('posts'));
	CommentformSetup();
	return true;
}
U.AE(window, 'load', WPLoad);
	
Dabten.Set(tplID, 
 '<div class="post"><h4 class="bookmark"><a href="{tpl:url}" rel="bookmark" title="{tpl:ttl}">BOOKMARK</a></h4>'
+'<h3 class="topic"><a href="{tpl:url}" onclick="LoadSingle(this);return false;">{tpl:ttl}</a></h3>'
+'<div class="info">{tpl:info}</div>'
+'<div class="entry">{tpl:excerpt}</div>'
+'<div class="info"><div class="trackback"><form onsubmit="return false;">TrackbackURI &raquo; <input type="text" size="100" onfocus="SelectText(this);" value="{tpl:trackback}" /></form></div></div>'
+'{tpl:nav}</div>'
);


function NavibarPopupmenu(e){
	e=e?e:window.event;
	var tar=e.target||e.srcElement;
	if(!tar)
		return -1;
	
	for(var i=0,div,pa,ids=['navisibai','naviarch','navipost'],id;id=ids[i];i++){
		tar=e.target||window.event.srcElement;
		div=EI(id);
		if(!div)
			continue;
		
		pa=div=div.parentNode;
		while(tar){
			if(div==tar)
				break;
			tar=tar.parentNode;
		}//while(tar)
		
		var ul=pa.firstChild;
		while(ul && ul.nodeName.toUpperCase()!='UL')
			ul=ul.nextSibling;
	
		if(ul)
			ul.style.display=!tar?'none':'block';
	}
	return 0;
}

function NaviTalkSetup(elm, isMulti){
	if(!elm)
		return false;
	var elms=elm.getElementsByTagName('A');
	if(isMulti){
		for(var i=0,anc,cname;i<elms.length;i++){
			anc=elms[i];
			anc.onclick=function(e){LoadMulti(e||window.event, '', '');};
		}
	}else{
		for(var i=0,anc,cname,href,text;i<elms.length;i++){
			anc=elms[i];
			cname=anc.parentNode.className;
			href=anc.href;
			text=anc.textContent||anc.innerText;
			
			if(href.indexOf('.php')!=-1 || text=='BOOKMARK')
				continue;
			
			if(href.indexOf('#')!=-1)
				anc.href=href.substring(0, href.indexOf('#'));
			
//if(elm.id=='posts')alert(href+' ; '+cname+' ;'+(href.indexOf('category')!=-1));
			if(cname=='prev' || cname=='next' || href.indexOf('category')!=-1)
				anc.onclick=function(e){LoadMulti(e||window.event, '', '');};
			else
				anc.onclick=function(e){LoadSingle(e||window.event, '', '');};
		}
	}
	return true;
}

function CloseAllPopupmenu(){
	for(var i=0,div,pa,ids=['navisibai','naviarch','navipost'],id;id=ids[i];i++){
		div=EI(id);
		if(!div || !(pa=div.parentNode))
			continue;
		
		ul=pa.firstChild;
		while(ul && ul.nodeName.toUpperCase()!='UL')
			ul=ul.nextSibling;
	
		if(ul)
			ul.style.display='none';
	}
	return 0;
}

function CommentformSetup(){
	var frm=EI('commentform');
	if(frm){
		frm.onsubmit=CommentformSubmit;
	}
	
	if(NaviTalkSetup(EI('talksibai')))
		NaviTalkSetup(EI('talksibai').parentNode);
	if(NaviTalkSetup(EI('talkpost')))
		NaviTalkSetup(EI('talkpost').parentNode);
	if(NaviTalkSetup(EI('talkcate')))
		NaviTalkSetup(EI('talkcate').parentNode, true);
	if(NaviTalkSetup(EI('talkmonth')))
		NaviTalkSetup(EI('talkmonth').parentNode, true);
	return true;
}

function CommentformSubmit(e){
	e=e||window.event;
	var frm=e.target||window.event.srcElement;
	U.StopEvent(e||window.event);
	Dabten.Net.Load(frm.action, CommentformRecieve, {method:frm.method||'POST', force:true, enctype:frm.enctype, postData:[frm, {poke:-1}]});
	frm.comment.value='ちょっと待ってね';
	scrollTo(0,0);
	return false;
}

function CommentformRecieve(o){
	FreeTalk('\\p[0]\\s[6]コメントを受け付けました。\\n\\s[5]ありがと～\\n');

	if(!gUrl)
		gUrl=location.href;
	Dabten.Net.Load(gUrl, CommentUpdate, {method:'POST', force:true, postData:{poke:'-1'}});

	return true;
}

function CommentUpdate(o){
	var o=SplitResponse(o.client);
	
	U.EI('talks').innerHTML=o['talks'];
	CommentformSetup();
}
//function CommentUpdate(o){
//	var p1=o.client.responseText.indexOf(spliter);
//	var p2=o.client.responseText.indexOf(spliter, p1+spliter.length);
//	var p3=o.client.responseText.indexOf(spliter, p2+spliter.length);
//	var p4=o.client.responseText.indexOf(spliter, p3+spliter.length);
//	var p5=o.client.responseText.indexOf(spliter, p4+spliter.length);
////	var p6=o.client.responseText.indexOf(spliter, p5+spliter.length);
////	var p7=o.client.responseText.indexOf(spliter, p6+spliter.length);
//	
//	var com=o.client.responseText.substring(p6+spliter.length);
//	
//	U.EI('talks').innerHTML=com;
//	CommentformSetup();
//}

function SplitResponse(client){
	var ret={
		title:''
		,ads:''
		,info:''
		,excerpt:''
		,trackback:''
		,script:''
		,navi:''
		,talks:''
	}, key='', tmp='';
	var lines=client.responseText.split('\n');
	for(var i=0;i<lines.length;i++){
		if(lines[i].match(/^\[(.+?)\]/)){
			if(key && tmp){
				ret[key]=tmp;
				tmp='';
			}
			key=RegExp.$1;
		}else{
			tmp+=lines[i]+'\n';
		}
	}
	if(key && tmp)
		ret[key]=tmp;
	delete key;
	delete tmp;
	return ret;
}

function SelectText(elm){
	if(elm.value && elm.select)
		elm.select();
	return true;
}
