/**
	JS Pagination
 */

/**
 *
 */
var i_kaku_counter=0;


/**
 *
 */
function Kaku()
{
	/**
	 *
	 */
	var _i_controll_segment=0;

	
	/**
	 *
	 */
	var _i_per_page=0;
	
	
	/**
	 *
	 */
	var _i_total_rows=0;
	
	
	/**
	 *
	 */
	var _o_fun_action=null;
	
	
	/**
	 *
	 */
	var _o_Id=null;
	
	
	/**
	 *
	 */
	var _i_kaku_counter=0; 
	 
	
	/**
	 *
	 */
	this.kInitialize=function(i_total_rows,i_per_page,o_fun_action,_id)
	{
		if(!i_per_page && !i_total_rows && !o_fun_action && !_id)
		{
			
		return false;
		}
		
		if(typeof _id=="string")
		{
			try
			{
				_id=document.getElementById(_id);
			}
			catch(e)
			{
				
			return false;
			}
		}
		else if(typeof _id!="object")
		{
			
		return false;
		}
		
		try
		{
			Eshaku
			(
				document.getElementsByTagName("head")[0], 
				new Array
				(
					S_BASE_PATH + S_PATH_LIBS + "Kaku/Style/Css/hiryuu_kaku.css"
				), 
				"css"
			);
			}catch(e){}
		
		_i_kaku_counter=i_kaku_counter++;
		_i_total_rows=i_total_rows;
		_i_per_page=i_per_page;
		_o_fun_action=o_fun_action;
		_o_Id=_id;
		
	}
	
	
	/**
	 *
	 */
	this.kCreateLinks=function()
	{
		if(!_i_total_rows)
		{
		
		return false;
		}
		
		var i_div=Math.floor(_i_total_rows/_i_per_page);
		
		var i_main_count=0;
		// Plus one portion more, if the outcom from mod is larger than 0.
		var i_mod=_i_total_rows%_i_per_page;
		if(i_mod)
		{
			++i_div;
		}
		
		// begin 
		//	left arrow
		var o_Left_Arrow=new Kekomi().kCrtObjct("div","id=>left-controller|style=>display:inline;visibility:hidden");
		    o_Left_Arrow.innerHTML="&lsaquo;";
		
		_o_Id.appendChild(o_Left_Arrow);
		// end 
		//	left arrow
		
		
		var o_Portions_Handle=document.createElement("portions_"+_i_kaku_counter);
		
		_o_Id.appendChild(o_Portions_Handle);
		
		var oa_Url_Action=new Array(),oa_Portions=new Array();
		for(var i=0,j=0,k=0;i<i_div;i++,j+=_i_per_page)
		{
			if(i)
			{
				oa_Url_Action[i]=new Kekomi().kCrtObjct("a","i_action_id=>"+j+"|onclick=>kReplace(this,"+_i_kaku_counter+","+_o_fun_action+")|href=>#void");
			}
			else
			{
				oa_Url_Action[i]=new Kekomi().kCrtObjct
								(
									"span",
									"id=>deactivated-"+_i_kaku_counter+
									"|i_action_id=>"+j
								);
			}
			
			oa_Url_Action[i].appendChild(document.createTextNode(i+1));
			
			if(i%3==0)
			{
				oa_Portions.push(new Kekomi().kCrtObjct
								 (
								 	"portion_"+_i_kaku_counter,
									"style=>display:none"+
									"|class=>kaku-portion"+
									"|id=>hidden-"+_i_kaku_counter
								 )
								);
				++k;
			}
			
			oa_Portions[k-1].appendChild(oa_Url_Action[i]);
		}
		
		// Appending layers
		oa_Portions.forEach(kAppendChild);
		if(k==1)
		{
			
			//begin 
			//	Init
			var i_portion_vis=1;
			
			oa_Portions[0].setAttribute("id","visible-"+_i_kaku_counter);
			oa_Portions[0].style.display="inline";
			
			_o_fun_action(0,_i_per_page);
			//end 
			//	Init
		
		return true;
		}
		
		
		// begin 
		//	left arrow
		var o_Right_Arrow=new Kekomi().kCrtObjct("div","id=>right-controller|style=>display:inline");
		    o_Right_Arrow.innerHTML="&rsaquo;";
		
		_o_Id.appendChild(o_Right_Arrow);
		// end 
		//	left arrow
		
		// begin
		//	Onclick listeners
		var oc_Portions=document.getElementsByTagName("portion_"+_i_kaku_counter);
		
		o_Left_Arrow.addEventListener("click",function()
								{
									var o_Vibible_Div=document.getElementById("visible-"+_i_kaku_counter);
									try
									{
										var o_Prev_To_Vis=o_Vibible_Div.previousSibling;
										
										o_Vibible_Div.style.display="none";
										o_Vibible_Div.setAttribute("id","hidden-"+_i_kaku_counter);
										    
										    o_Prev_To_Vis.style.display="inline";
										    o_Prev_To_Vis.setAttribute("id","visible-"+_i_kaku_counter);
										
										o_Right_Arrow.style.visibility="visible";
										
										var o_action_id=oc_Portions[i_portion_vis-2].lastChild;
										
										kReplace(o_action_id,_i_kaku_counter,_o_fun_action);
										
										if(--i_portion_vis==1)
										{
											o_Left_Arrow.style.visibility="hidden";
											
										return;
										}
									}
									catch(e){}
									
								},false);
		
		o_Right_Arrow.addEventListener("click",function()
								{
									var o_Vibible_Div=document.getElementById("visible-"+_i_kaku_counter);
									try
									{
										var o_Next_To_Vis=o_Vibible_Div.nextSibling;
										
										o_Vibible_Div.style.display="none";
										o_Vibible_Div.setAttribute("id","hidden-"+_i_kaku_counter);
										    
										    o_Next_To_Vis.style.display="inline";
										    o_Next_To_Vis.setAttribute("id","visible-"+_i_kaku_counter);
										
										o_Left_Arrow.style.visibility="visible";
										
										var o_action_id=oc_Portions[i_portion_vis].childNodes[0];
										
										kReplace(o_action_id,_i_kaku_counter,_o_fun_action);
										
										if(++i_portion_vis==k)
										{
											o_Right_Arrow.style.visibility="hidden";
											
										return;
										}
										
									}
									catch(e){}
									
								},false);
		// end
		//	Onclick listeners
			
		//begin 
		//	Init
		var i_portion_vis=1;
		
		oa_Portions[0].setAttribute("id","visible-"+_i_kaku_counter);
		oa_Portions[0].style.display="inline";
		
		_o_fun_action(0,_i_per_page);
		//end 
		//	Init
		
		// Appends layers to handler.
		function kAppendChild(o_element)
		{
			o_Portions_Handle.appendChild(o_element);
		}
		
	}
	
}


/**
 *
 */
function kReplace(o_this,i_kaku_id,o_fun_action)
{
	var o_Deactivated=document.getElementById("deactivated-"+i_kaku_id);
	
	var o_Activated_Temp=new Kekomi().kCrtObjct("a","i_action_id=>"+o_Deactivated.getAttribute("i_action_id")+"|onclick=>kReplace(this,"+i_kaku_id+","+o_fun_action+")|href=>#void");
	    o_Activated_Temp.appendChild(document.createTextNode(o_Deactivated.firstChild.nodeValue));
	
	    o_Deactivated.parentNode.replaceChild(o_Activated_Temp,o_Deactivated);
	
	var o_Deactivated_Temp=new Kekomi().kCrtObjct("span","id=>deactivated-"+i_kaku_id+"|i_action_id=>"+o_this.getAttribute("i_action_id"));
	    o_Deactivated_Temp.appendChild(document.createTextNode(o_this.firstChild.nodeValue));
					
	o_this.parentNode.replaceChild(o_Deactivated_Temp,o_this);
	
	o_fun_action(o_this.getAttribute("i_action_id"));
}

