/*
 * newsPager.js
 *
 * Copyright (c) 2008 nori (norimania@gmail.com)
 * http://moto-mono.net
 * Licensed under the MIT
 *
 * $Date: 2008-08-01 03:00
 */
 
new function() {
	
	var a,t,l,p,tp,nt,pt,nc,pc,pgc;
	
	a = 10;	// 表示させる件数
	t = "newsPager";	// 対象にするリストのid
	l = "first-child";	// 対象にしたリストに表示される最初のリストに付加するクラス
	p = false;	// ナビゲーションの位置 : リストの - 前 true, 後 false
	//tp = "newsLeft";	// 対象にするリストの親要素のid - pがtrueの場合のみ
	nt = "次の" + a + "件>>";	// 次のページリンクのnodeValue "ex) 次の5件"
	pt = "<<前の"+ a + "件";	// 前のページリンクのnodeValue
	tt = "";	// ntとptのタイトル ex) nt(pt)[次の5件を]]表示する
	nc = "next";	// 次のページリンクのclass名
	pc ="previous";	// 前のページリンクのclass名
	pgc = "pager";	// ページナビのclass名
	
	function addEvent(elm,listener,fn){try{elm.addEventListener(listener,fn,false);}catch(e){elm.attachEvent("on"+listener,fn);}}
	function insertAfter(newElement,targetElement){var parent=targetElement.parentNode;if(parent.lastChild==targetElement){parent.appendChild(newElement);}else{parent.insertBefore(newElement,targetElement.nextSibling);}}
	function newsNav(){if(!document.getElementById)return false;if(!document.getElementById(t))return false;if(p==true)var newsParent=document.getElementById(tp);var news=document.getElementById(t);var lists=news.getElementsByTagName("li");if(lists.length<=a)return false;var pageNum=Math.ceil(lists.length/a);var page=0;if(lists.length%a!=0)var b=lists.length%a
	else var b=a;for(var allList=0;allList<lists.length;allList++){if(allList%a==0){if(lists[allList].className.indexOf(l)==-1){lists[allList].className+=" "+l;}}}
	if(lists.length>a){var listArray=new Array(pageNum);for(var y=0;y<pageNum;y++){listArray[y]=new Array(a);}
	for(var listNum=0,list_x=0,list_y=0;listNum<lists.length;listNum++){if(listNum%a!=0||listNum==0){if(list_x==0){listArray[list_x][list_y++]=lists[listNum];}else{listArray[list_x][++list_y]=lists[listNum];}}else{list_y=0;listArray[++list_x][list_y]=lists[listNum];}}}
	function display(group){for(var i=0;i<lists.length;i++){lists[i].style.display="none";}
	for(var list_y=0;list_y<a;list_y++){if(!listArray[group])return false;if(listArray[group][list_y]==undefined)return false;listArray[group][list_y].style.display="";}}
	display(page);var pager=document.createElement("ul");pager.className=pgc;var previous=document.createElement("li");previous.className=pc;previous.style.cursor="pointer";previous.title=pt+tt;previous.style.visibility="hidden";var previousNode=document.createTextNode(pt);previous.appendChild(previousNode);var next=document.createElement("li");next.className=nc;next.style.cursor="pointer";next.title=nt+tt;var nextNode=document.createTextNode(nt);next.appendChild(nextNode);pager.appendChild(previous);pager.appendChild(next);next.onclick=function(){if(previous.style.visibility=="hidden")previous.style.visibility="visible";display(++page);if(page==(pageNum-2)){this.lastChild.nodeValue=nt.replace(a,b);this.title=this.lastChild.nodeValue+tt;}
	if(page==(pageNum-1))this.style.visibility="hidden";}
	previous.onclick=function(){if((page-1)==0)this.style.visibility="hidden";if(next.style.visibility=="hidden")next.style.visibility="visible";if(page==(pageNum-2)){next.lastChild.nodeValue=nt.replace(b,a);next.title=next.lastChild.nodeValue+tt;}
	display(--page);}
	next.onmouseover=function(){if(this.className==nc)this.className+=" hover";}
	next.onmouseout=function(){if(this.className.indexOf("hover")!=-1)this.className=nc;}
	previous.onmouseover=function(){if(this.className==pc)this.className+=" hover";}
	previous.onmouseout=function(){if(this.className.indexOf("hover")!=-1)this.className=pc;}
	if(p==true)newsParent.insertBefore(pager,news);else insertAfter(pager,news);}
	addEvent(window,"load",newsNav);
}
