﻿/*
	page分页条
	$.ebm.page.create({
		element:分页条的dom对象
	})


Depends
	util.js
	jQuery.js(1.3.2)
*/
var page = {
	page:{
		create:function(cfg){
			var n = cfg.element;			
			if(!$(n).attr("from"))return;
			var $par = $("#" + $(n).attr("from"));
			var d = $par.data("data");
			if(!d){
				d = $.ebm.util.getData($par.attr("ds"),null,1,{root:{page:{ index:1,size:$par.attr("size")||20 }}},false,'',1);
			}	
			if(!d) return;
			d = d.root.page;
			n.refresh = function(d){
				var r = createPageBar({
					type:$(n).attr("type")||'0',
					recordCount:d.totalCount,
					pageCount:d.totalPage,
					pageIndex:d.index
				});
				$(n).html(""+r);
			};	
			n.goTo=function(i){$par.get()[0].refresh(i)};
			if($par.data("compiled")){
	 			n.refresh( d );
	 		}
 			
 			function createPageBar(){
				var config=[{
						html:'<div class="page_1">共%recordCount%条记录 第%pageIndex%/%pageCount%页 %top%|%previous%|%next%|%bottom%&nbsp;跳转到%input%页</div>',
						top:'首页',previous:'上一页',next:'下一页',bottom:'尾页', 
						center:''
					},{
						html:'<div class="page_2"><b>%pageIndex%/%pageCount%</b> %top%%previous%%next%%bottom%</div>',
						top:'<font  style="font-family:webdings" title="首页">'+(Ie?9:'|<') +'</font>',previous:'<font face=webdings title="上一页">'+(Ie?7:' < ') +'</font>',next:'<font face=webdings title="上一页" >'+(Ie?8:' > ') +'</font>',bottom:'<font face=webdings title="未页">'+(Ie?':':' >| ') +'</font>',
						className:'',
						center:''
					},{
						html:'<div style="clear:both" class="page_1">共[<b>%recordCount%</b>]条信息&nbsp;&nbsp;页次 <b>%pageIndex%/%pageCount%</b>&nbsp;&nbsp;%top%  %previous% %center% %next%  %bottom% &nbsp;跳转到%input%页</div>',
						top:'<font style="font-family:webdings"  >9</font>',previous:'<font face=webdings>7</font>',next:'<font face=webdings>8</font>',bottom:'<font face=webdings>:</font>',
						className:'',
						center:'&nbsp;%i%&nbsp;'
					},{
						html:'<div style="clear:both"><b class=page>总数 %recordCount%</b><b class=page>%pageIndex%/%pageCount%</b> %top%  %previous% %center% %next%  %bottom%<b class=page> %input% </b></div>',
						top:'|&lsaquo;',previous:'&lsaquo;&lsaquo;',next:'&rsaquo;&rsaquo;',bottom:'&rsaquo;| ',className:'page',
						center:'' 
					}
				];
				var re= {
					type:0,
					recordCount:0,
					pageCount:0,
					pageIndex:1,
					toString:function(){
						var reg=/%(\w+)%/g;
						var cfg=config[this.type];
						for(var k in cfg)this[k]=cfg[k];
						var me=this;
						me.pageIndex=parseInt(me.pageIndex)||0;
						me.pageCount=parseInt(me.pageCount)||0;
						return cfg.html.replace(reg,function(s,k){
							switch(k){
								case 'top':
								case 'previous':
									return cA(me.pageIndex>1?action(k):'',me[k]);
								case 'next':
								case 'bottom':
									return cA(me.pageIndex<me.pageCount?action(k):'',me[k]);
								case 'center':
									var sIndex=((me.pageIndex-1)+"").replace(/\d$/,"");
									sIndex=((sIndex||0)-0)*10;
									for(var i=1,arr=[],index_;index_=sIndex+i,index_<=me.pageCount&&i<=10;i++){
										arr.push(cA( index_==me.pageIndex?'':action(index_),(me.center&&(me.center.replace(/%i%/g,index_))||index_) ));
									};
									return arr.join("");
								case 'input':
								return ('<input id="splitPageInput"  title="输入数字，回车跳转" '+
									//	'dataType="type:number;min:1;msg:请输入合法的数字!;instant:true"'+
										'onkeydown="javascript:if(event.keyCode==13)'+ action('this')+
										 '">' ); 
								default:
									return me[k];
							}
						});
						function cA(click,text){
								return '<a'+ (click?' href="javascript:;" ':'')+ (me.className?" class='"+ me.className +"'":'')+click+' >'+ text+ '</a>';
						}
						function action(key,type){
					   	var I={top:1,previous:me.pageIndex-1,next:me.pageIndex-0+1,bottom:me.pageCount,'this':'this'};
							key=I[key]||1;
							var arr=[me.pageCount,me.pageIndex,key];
							 return key=="this"?
								" ($).ebm.page.goPage(this," +  arr +")"
							 :"onclick=\"($).ebm.page.goPage(this," +  arr +")\"";
						}
					}
				}
				if(typeof arguments[0]=='object'){
					for(var k in  arguments[0])re[k]=arguments[0][k]; 	
				}
				return re;
			}			
		},
		//跳转到指定页
		goPage:function(e,pageCount,pageIndex,to){
			var i = to;
			typeof to == "object" && (i=to.value,to.value='');
			if( i<1 || i>pageCount || i==pageIndex ) return false;
			var splitObj= $(e).parents(".ebm_page").get()[0];
			splitObj&& splitObj.goTo &&splitObj.goTo(i);
		}
	}	
}

if($.ebm === undefined){
	$.extend({ebm: page});
	page = null;
}else{
	$.extend($.ebm, page);	
	page = null;
}

