/**//*
 插件名称:jPagerBar
 主要功能:对生成的GridView进行客户端加工,对指定的列进行分组并归类显示,更多新功能还在开发中
 当前版本号:1.1.1
 发布日期:2008/2/22
 作者:TNT2 (SZW on cnblogs) QQ:63408537(加位好友请说明来意) Email:szw2003@163.com www.56MAX.com
 
版权及相关说明:
1、作者对此插件保留所有权利。本插件本着开源、交流、共同进步的宗旨,以免费形式为大家无偿提供。修改、引用请保留以上说明信息,否则将视同为主动盗用本插件。
2、为保证本插件的完整性、安全性和版本统一性,解决任何单位和个人将此插件代码修改后以个人名义或“jGridViewBar”及类似名称发布,一旦发现,作者将不遗余进行力地进行追查、打击、曝光
3、作者对此插件保留最终解释权。
 
 
如有任何问题或意见、建议,欢迎与作者取得联系!让我们共同进步!
======================================================================================================================
*/
function ShowPageBar(containerId , url , attr)
{
 var style = (attr["style"] == null)? "technorati" : attr["style"];//class样式
 var totalCount =( attr["totalCount"]==null || attr["totalCount"] == 0) ? 0 : attr["totalCount"];;//parseInt()//总记录条数
 var pageCount = (attr["pageCount"] == null || attr["pageCount"] == 0) ? 20 : attr["pageCount"];//attr["pageCount"];//每页记录数
 var showPageNumber = (attr["showPageNumber"] == null || attr["showPageNumber"] == 0) ? 20 : attr["showPageNumber"];//attr["showPageNumber"];//显示页码数量
 var currentPageIndex = attr["currentPageIndex"];//当前页
 var onclick = attr["onclick"];//onclick参数,如果包含“return false”,则连接转为跳到barMark(暂留接口,其实return false后一般情况下href将失效。)
 var barMark = attr["mark"];//onclick后跳转到的标签
 var noRecordTip = attr["noRecordTip"];//没有记录提示(支持HTML)
 var preWord = (attr["preWord"] == null)? " < " : attr["preWord"];//上一条记录文字,默认为“ < ”
 var nextWord = (attr["nextWord"] == null)? " > " : attr["nextWord"];//下一条记录文字,默认为“ > ”
 
 //输出设置
 var barID = containerId + "_pageBar";
 //var barDiv = ("#"+barID);
 //添加PageBar层
 ("#"+containerId).html("
");
 //输出设置 结束
 
 //如果没有记录,返回空记录提示
 if(totalCount==0)
 {
 ("#"+barID).html(noRecordTip);
 return false;
 }
 
 pageCount = (pageCount == null || pageCount == 0) ? 20 : pageCount;//每页显示记录数
 var totalPage = parseInt((totalCount-1) / pageCount) +1;//总页数
 
 showPageNumber = (showPageNumber == null || showPageNumber == 0) ? 3 : showPageNumber;
 currentPageIndex = (currentPageIndex == null || currentPageIndex <= 0 || currentPageIndex > totalPage) ? 1 : currentPageIndex;
 var backPageStyle = (currentPageIndex <= 1) ? "disabled" : "";
 var nextPageStyle = (currentPageIndex >= totalPage) ? "disabled" : "";
 var firstDisplayPageEnd = 0;//从第1页显示到xx页
 var bodyDisplayPageStart = 0;//当前页临近最左页码
 var bodyDisplayPageEnd = 0;//当前页临近最右页码
 var endDisplayPageStart = 0;//从第xx页显示到最后一页
 //设定 bodyDisplayPageStart
 bodyDisplayPageStart = (currentPageIndex - showPageNumber <= 1) ? 1 : currentPageIndex - showPageNumber; // (ViewData.pageIndex - ViewData.showPageNumber <= ViewData.showPageNumber) ? ViewData.showPageNumber + 1 : ViewData.pageIndex - ViewData.showPageNumber;
 //设定 bodyDisplayPageEnd
 bodyDisplayPageEnd = (currentPageIndex + showPageNumber >= totalPage) ? totalPage : currentPageIndex + showPageNumber;
 //设定 firstDisplayPageEnd
 if(bodyDisplayPageStart > 1)
 {
 if(bodyDisplayPageStart - showPageNumber <= 1)
 firstDisplayPageEnd = bodyDisplayPageStart - 1;
 else
 firstDisplayPageEnd = showPageNumber;
 }
 else
 {
 firstDisplayPageEnd = 0;
 }
 
 //设定 endDisplayPageStart
 if(bodyDisplayPageEnd < totalPage)
 {
 if(bodyDisplayPageEnd + showPageNumber >= totalPage)
 endDisplayPageStart = bodyDisplayPageEnd + 1;
 else
 endDisplayPageStart = totalPage - showPageNumber + 1;
 }
 else
 {
 endDisplayPageStart = totalPage + 1;
 }
 
 
/**//******** 备用算法 Start ********/
// //设定 firstDisplayPageEnd
// if (currentPageIndex - showPageNumber > 0 && bodyDisplayPageStart > currentPageIndex - showPageNumber)
// firstDisplayPageEnd = (showPageNumber >= totalPage) ? 0 : showPageNumber;
// else
// firstDisplayPageEnd = 0; 
// //设定 endDisplayPageStart
// if (bodyDisplayPageEnd < totalPage)
// endDisplayPageStart = (bodyDisplayPageEnd + showPageNumber < totalPage) ? totalPage- showPageNumber + 1 : totalPage+1;
// else
// endDisplayPageStart = totalPage+1;
// 
// //alert(bodyDisplayPageEnd +"<" +totalCount +"- "+showPageNumber);
// ////设定补充首尾
// if(bodyDisplayPageStart > 1 && firstDisplayPageEnd == 0)
// firstDisplayPageEnd = (bodyDisplayPageStart > showPageNumber)? showPageNumber : bodyDisplayPageStart - 1;
// if(bodyDisplayPageEnd < totalPage && endDisplayPageStart > totalPage)
// endDisplayPageStart = (bodyDisplayPageEnd < totalPage - showPageNumber)? totalCount - showPageNumber + 1 : bodyDisplayPageEnd + 1;//MS第一个判断有点多余 TNT2
/**//******** 备用算法 End ********/
 //页面参数设定结束
 //开始输出
 //alert(("#"+barID).html());
 // 上一条
 if(currentPageIndex <= 1)
 ("" + preWord + "").appendTo(("#"+barID));
 else
 (GetPageLink(currentPageIndex-1,currentPageIndex,preWord,onclick,url,barMark)).appendTo(("#"+barID));
 
 //first
 for (var i = 1; i <= firstDisplayPageEnd; i++)
 (GetPageLink(i,currentPageIndex,i,onclick,url,barMark)).appendTo(("#"+barID));
 
 //省略号
 if (firstDisplayPageEnd + 1 < bodyDisplayPageStart)
 (" ").appendTo(("#"+barID));
 
 //body
 for (var i = bodyDisplayPageStart; i <= bodyDisplayPageEnd; i++)
 (GetPageLink(i,currentPageIndex,i,onclick,url,barMark)).appendTo(("#"+barID));
 
 //省略号
 if (bodyDisplayPageEnd + 1 < endDisplayPageStart)
 (" ").appendTo(("#"+barID));
 
 //end
 for (var i = endDisplayPageStart; i <= totalPage; i++)
 (GetPageLink(i,currentPageIndex,i,onclick,url,barMark)).appendTo(("#"+barID));
 
 // > 
 if(currentPageIndex >= totalPage)
 ("" + nextWord + "").appendTo(("#"+barID));
 else
 (GetPageLink(currentPageIndex + 1 ,currentPageIndex,nextWord,onclick,url,barMark)).appendTo(("#"+barID));
 
 //alert(("#"+barID).html());
}
//页码标签链接
function GetPageLink(linkPageIndex ,currentPageIndex,text,onclick,url,barMark)
{
 var pageData = "?page=";//string.Format("{0}page=", (Request.QueryString.Count == 0) ? "?" : "&") + "{0}";//页码参数
 
 onclick = (onclick != null)? "onclick=\"" + onclick + "\"" : "";
 onclick = onclick.replace("{pageindex}",linkPageIndex);
 href = (onclick != null && onclick.indexOf("return false") != -1)?"href=\"#" + barMark + "\" ":"href=\"" + url + pageData + linkPageIndex + "\" ";
 var linkHTML = "";
 
 if(linkPageIndex == currentPageIndex)
 linkHTML = "" + text + "";
 else
 linkHTML = "onclick + ">" + text + "";
 
 return linkHTML;
}