﻿/*==========================
**************分页函数
==========================*/
showPages = function(name) { // 初始化属性
    this.name = name; // 对象名称(可使用默认)
    this.pageCon = 'pager'; // 分页的容器(可使用默认)
    this.page = 1; // 当前页码
    this.recordCount = 0; // 记录总数(必须设置)
    this.pageSize = 20; // 每页列表项数(可使用默认)
    this.argPageNum = 'pn'; // url页码参数名(可使用默认)
    this.argPageSize = 'ps'; // url页大小参数名(可使用默认)
    this.argsStr = ''; // url的其他所有参数(必须设置)
    this.pageListUrl = ''; // 加载列表的url(必须设置)
    this.pageListCon = 'listcon'; // 列表加载容器(可使用默认)
    this.pageCount = 1;
}
// 总页数(无须设置)
showPages.prototype.getPageCount = function (){ 
    this.pageCount = Math.ceil(this.recordCount/this.pageSize);
}
// 生成分页的html代码
showPages.prototype.createHtml = function(){
    //初始 上一页：prevPage
    //下一页：nextPage
    //当前显示开始页：PageI
    //当前显示结束页：endPage；
	var strHtml = '', prevPage = this.page - 1, nextPage = this.page + 1;
	var endPage,PageI;
	strHtml += '<a class="count">共 ' + this.pageCount + '页</a>';
	if (prevPage < 1) {
		strHtml += '<a title="First Page">首页</a>';
		strHtml += '<a title="Prev Page">上一页</a>';
	} else {
		strHtml += '<a title="First Page" href="javascript:' + this.name + '.toPage(1);">首页</a>';
		strHtml += '<a title="Prev Page" href="javascript:' + this.name + '.toPage(' + prevPage + ');">上一页</a>';
	}
	//
    if (this.pageCount > this.page + 4) {
        endPage = this.page + 4;
	    PageI=this.page-4;
    }else{
        endPage = this.pageCount;
        PageI=this.pageCount-4;
    }
    //当前页小于5，显示1到9个页码
    if(this.page < 5){
        endPage = 9;
        PageI=1;
    }
    //当前页大于总页数-5，显示总页数-8到总页数之前的页码数
    if(this.page > this.pageCount-5){
        endPage = this.pageCount;
        PageI=this.pageCount-8;
    }
    //输入9个分页页码
	for (var i = PageI; i <= endPage; i++) {
		if (i > 0) {
			if (i == this.page) {
				strHtml += '<b title="Page ' + i + '">' + i + '</b>';
			} else {
				if (i <= this.pageCount) {
					strHtml += '<a title="Page ' + i + '" href="javascript:' + this.name + '.toPage(' + i + ');">' + i + '</a>';
				}
			}
		}
	}
	if (nextPage > this.pageCount) {
		strHtml += '<a title="Next Page">下一页</a>';
		strHtml += '<a title="Last Page">末页</a>';
	} else {
		strHtml += '<a title="Next Page" href="javascript:' + this.name + '.toPage(' + nextPage + ');">下一页</a>';
		strHtml += '<a title="Last Page" href="javascript:' + this.name + '.toPage(' + this.pageCount + ');">末页</a>';
	}
    strHtml += '<div>跳转到第 <input type="text" class="put" id="pageInput" value="' + this.page + '" onkeyup="this.value=this.value.replace(/\\D/g,\'\')"/>';
    strHtml += '<input type="button" name="go" class="btn" value="GO" onclick="' + this.name + '.toPage(document.getElementById(\'pageInput\').value);"/>';

    // 填充分页
    $(this.pageCon).innerHTML = strHtml;
    strHtml=null;
}
// 翻页方法
showPages.prototype.toPage = function(pageTemp){
    //检测分页数字有效性
    this.page=pageTemp;
    if (isNaN(parseInt(this.page))) this.page = 1;
    if (this.page < 1) this.page = 1;
    if (this.page > this.pageCount) this.page = this.pageCount;
    this.page = parseInt(this.page);
    if (this.page==null || this.page < 1) this.page = 1;
	if (this.page > this.pageCount) this.page = this.pageCount;
    // 输出分页
    this.createHtml();
    // 加载列表
    this.createArgsStr(this.argPageNum,this.page);
    this.loadPageList();
    this.saveState();
}
// 加载页内容列表
showPages.prototype.loadPageList = function(){
    var listCon = $(this.pageListCon);
    var filePath = this.pageListUrl + '?' + this.argsStr;
    
     var handle = {
        onCreate: function() {
            Element.show('dloading'); // 当创建Ajax请求时，显示loading
        },
        onComplete: function() {
        if (Ajax.activeRequestCount == 0) {// 当请求成功返回时，如果当前没有其他正在运行中的Ajax请求，隐藏loading
            Element.hide('dloading');
        }}};
    Ajax.Responders.register(handle);// 将handle注册到全局的Ajax.Responders对象中，使其生效
    //请求列表页传参并返回列表页内容；
    var myAjax=new Ajax.Request(filePath + '&utc=' + Math.random(), { 
        method:'get',
        asynchronous:true,
        //onLoading: document.getElementById("dloading").style.visibility="visible",
        //onComplete:document.getElementById("dloading").style.visibility="hidden",
        onSuccess: function(transport) {
            var txt=transport.responseText;
            if(txt!==''){
                listCon.innerHTML=txt;
             }else{
                listCon.innerHTML="<div class='nor'><b>&nbsp;</b>很抱歉，没有找到相关房源，请改变搜索条件重新搜索！</div>";
             }
            //释放变量
            txt=null;            
            var divA=document.getElementById(this.pageListCon);
            divA.kk=function(){};   
            divA.parentNode.removeChild(divA);  
            divA=null;
        },
        onFailure: function() {
            listCon.innerHTML="加载失败";
        } 
    }); 
    myAjax=null;
    handle=null;
}
// 初始加载及刷新加载
showPages.prototype.load = function(){
    this.getPageCount();
    var pnt=this.getArgs(this.argPageNum);
    if(pnt != null && this.pageCount >= pnt){
        this.toPage(pnt);
    }else{
        this.toPage(1);
    }
}
//丛url获得当前参数,如果变量重复只获取最后一个
showPages.prototype.getArgs = function(aname){ 
	var reg = new RegExp('[\#&]?' + aname + '=([^&]*)[&$]?', 'gi');
	var chk = this.argsStr.match(reg);
	if(chk!=null){
	    return RegExp.$1;
	}else{
	    return null;
	}
}
 //生成页面传参字符串
showPages.prototype.createArgsStr = function (aname,avalue) {
	var reg = new RegExp('([\#&]?)' + aname + '=[^&]*[&$]?', 'gi');
	this.argsStr = this.argsStr.replace(reg,'$1');
	
	if (this.argsStr == '') {
		this.argsStr += aname + '=' + avalue;
	} else if (this.argsStr.substr(this.argsStr.length - 1,1) == '#' || this.argsStr.substr(this.argsStr.length - 1,1) == '&') {
			this.argsStr += aname + '=' + avalue;
	} else {
			this.argsStr += '&' + aname + '=' + avalue;
	}
	reg=null;
}
// 重写url并保存数据到地址栏
showPages.prototype.saveState = function(){
    var url = window.location.href.replace(/#.*/g,"");
    window.location.href = url + "#"+ this.argsStr;
    url=null;
}
/* 分页函数结束 */


/*=========================
*********loading 层的实现
=========================*/
// 浏览器类型获取.
if (typeof Platform == 'undefined') var Platform = {};
Platform.getUserAgent = navigator.userAgent;
Platform.isGecko = Platform.getUserAgent.indexOf("Gecko") != -1;
Platform.isOpera = Platform.getUserAgent.indexOf("Opera") != -1;
Platform.isIE = Platform.getUserAgent.indexOf("MSIE") != -1;

var LoginUI = !!window.LoginUI || {};
//获取浏览器的宽
LoginUI.getViewportWidth = function(){
 var width=0;
 if(document.documentElement && document.documentElement.clientWidth){
 width=document.documentElement.clientWidth;}
 else if(document.body && document.body.clientWidth){
 width=document.body.clientWidth;}
 else if(window.innerWidth){
 width=window.innerWidth-18;}
 return width;
}
//获取浏览器的高
LoginUI.getViewportHeight = function() {
 var height=0;
 if(window.innerHeight){
 height=window.innerHeight-18;}
 else if(document.documentElement&&document.documentElement.clientHeight){
 height=document.documentElement.clientHeight;}
 else if(document.body&&document.body.clientHeight){
 height=document.body.clientHeight;}
 return height;
}
//获取页面滚动的X值
LoginUI.getViewportScrollX = function(){
 var scrollX=0;
 if(document.documentElement&&document.documentElement.scrollLeft){
 scrollX=document.documentElement.scrollLeft;}
 else if(document.body&&document.body.scrollLeft){
 scrollX=document.body.scrollLeft;}
 else if(window.pageXOffset){
 scrollX=window.pageXOffset;}
 else if(window.scrollX){
 scrollX=window.scrollX;}
 return scrollX;
}
//获取页面滚动的Y值
LoginUI.getViewportScrollY=function() {
 var scrollY=0;
 if(document.documentElement&&document.documentElement.scrollTop){
 scrollY=document.documentElement.scrollTop;}
 else if(document.body&&document.body.scrollTop){
 scrollY=document.body.scrollTop;}
 else if(window.pageYOffset){
 scrollY=window.pageYOffset;}
 else if(window.scrollY){
 scrollY=window.scrollY;}
 return scrollY;
}
//设置滚动条函数
function scrollMsgTip()
{
 var t = LoginUI.getViewportHeight()/2 + LoginUI.getViewportScrollY() - document.getElementById("dloading").offsetHeight;
 if(!Platform.isIE)
 {
  t += 16;
 }
document.getElementById("dloading").style.top = t + "px";
document.getElementById("dloading").style.right = LoginUI.getViewportWidth() + LoginUI.getViewportScrollX() - document.getElementById("dloading").offsetWidth + "px";
}
