﻿// JScript 文件
SeachPageHelper_Class = function(classFullName, pageSize, whereOql, fun)
{
    this.ClassFullName = classFullName;
    this.PageSize = pageSize;
    this.CurrentPage = 0;
    this.WhereOql = whereOql;
    this.Error = null;
    this.IsLoad = true;
    this.Loading = 0;
    this.OpCode = "";
    this.Loaded = fun;
    Page.GetTotal(classFullName, whereOql, function(value)
    {
        if (value != null && value.error != null && value.error.Message == 'NoLogin')
        {
            alert('请先登录');
            window.location = Uri.RootRequest() + '/CallCenter/CallCenterLogin.html';
            return;
        }
        if (value.value == null)
        {
            value.value = 0;
        }
        if (value.error != null)
        {
            value.context.Error = value.error.Message;
            value.context.IsLoad = false;
            return;
        }
        value.context.TotalCount = value.value;
        value.context.TotalPage = value.context.TotalCount / value.context.PageSize;
        if (parseInt(value.context.TotalPage) < value.context.TotalPage)
        {
            value.context.TotalPage = parseInt(value.context.TotalPage) + 1;
        }
        value.context.Loaded(value.context);
    }, this
    );
};
//得到首页
SeachPageHelper_Class.prototype.FirstPage = function(fun)
{
    this.CurrentPage = 1;
    this.Loading = 0;
    this.OpCode = Math.random();
    var op = this.OpCode;
    if (typeof (fun) == 'function')
    {
        var cp = 1;
        while (cp <= this.PageSize && cp <= this.TotalCount)
        {
            var obj = new Object();
            obj.SeachPageHelper = this;
            obj.oldPage = op;
            obj.Fun = fun;
            this.Loading++;
            Page.SeachPage(this.ClassFullName, this.WhereOql, cp, function(value)
            {
                if (value.context.oldPage != value.context.SeachPageHelper.OpCode)
                {
                    return;
                }
                value.context.SeachPageHelper.Loading--;
                value.context.Fun(value);
            }
            , obj);
            cp++;
        }
    }
    else
    {
        var obj = new Object();
        var index = 0;
        var cp = 1;
        while (cp <= this.PageSize && cp <= this.TotalCount)
        {
            var o = Page.SeachPage(this.ClassFullName, this.WhereOql, cp).value;
            obj[indx] = o;
            cp++;
            index++;
        }
        return obj;
    }
}
//得到上页
SeachPageHelper_Class.prototype.PreviousPage = function(fun)
{
    if (this.CurrentPage <= 1)
    {
        alert("已经到达首页");
        return;
    }
    this.Loading = 0;
    this.CurrentPage--;
    this.OpCode = Math.random();
    var cp = this.OpCode;
    var begin = (this.CurrentPage - 1) * this.PageSize + 1;
    var end = this.CurrentPage * this.PageSize;

    if (typeof (fun) == 'function')
    {
        while (begin <= end && begin <= this.TotalCount)
        {
            var obj = new Object();
            obj.SeachPageHelper = this;
            obj.oldPage = cp;
            obj.Fun = fun;
            this.Loading++;
            Page.SeachPage(this.ClassFullName, this.WhereOql, begin, function(value)
            {
                if (value.context.oldPage != value.context.SeachPageHelper.OpCode)
                {
                    return;
                }
                value.context.SeachPageHelper.Loading--;
                value.context.Fun(value);
            }, obj);
            begin++;
        }
    }
    else
    {
        var obj = new Object();
        var index = 0;
        var cp = 1;
        while (begin <= end && begin <= this.TotalCount)
        {
            var o = Page.SeachPage(this.ClassFullName, this.WhereOql, begin).value;
            obj[index] = o;
            begin++;
            index++;
        }
        return obj;
    }
}
//得到下页
SeachPageHelper_Class.prototype.NextPage = function(fun)
{
    if (this.CurrentPage >= this.TotalPage)
    {
        alert("已经到达最末页");
        return;
    }

    this.Loading = 0;
    this.CurrentPage++;
    this.OpCode = Math.random();
    var cp = this.OpCode;
    var begin = (this.CurrentPage - 1) * this.PageSize + 1;
    var end = this.CurrentPage * this.PageSize;

    if (typeof (fun) == 'function')
    {
        while (begin <= end && begin <= this.TotalCount)
        {
            var obj = new Object();
            obj.SeachPageHelper = this;
            obj.oldPage = cp;
            obj.Fun = fun;
            this.Loading++;
            Page.SeachPage(this.ClassFullName, this.WhereOql, begin, function(value)
            {
                if (value.context.oldPage != value.context.SeachPageHelper.OpCode)
                {
                    return;
                }
                value.context.SeachPageHelper.Loading--;
                value.context.Fun(value);
            }, obj);
            begin++;
        }
    }
    else
    {
        var obj = new Object();
        var index = 0;
        var cp = 1;
        while (begin <= end && begin <= this.TotalCount)
        {
            var o = Page.SeachPage(this.ClassFullName, this.WhereOql, begin).value;
            obj[index] = o;
            begin++;
            index++;
        }
        return obj;
    }
}
//得到末页
SeachPageHelper_Class.prototype.LastPage = function(fun)
{
    this.Loading = 0;
    this.CurrentPage = this.TotalPage;
    this.OpCode = Math.random();
    var cp = this.OpCode;
    var begin = (this.CurrentPage - 1) * this.PageSize + 1;
    var end = this.CurrentPage * this.PageSize;

    if (typeof (fun) == 'function')
    {
        while (begin <= end && begin <= this.TotalCount)
        {
            var obj = new Object();
            obj.SeachPageHelper = this;
            obj.oldPage = cp;
            obj.Fun = fun;
            this.Loading++;
            Page.SeachPage(this.ClassFullName, this.WhereOql, begin, function(value)
            {
                if (value.context.oldPage != value.context.SeachPageHelper.OpCode)
                {
                    return;
                }
                value.context.SeachPageHelper.Loading--;
                value.context.Fun(value);
            }, obj);
            begin++;
        }
    }
    else
    {
        var obj = new Object();
        var index = 0;
        var cp = 1;
        while (begin <= end && begin <= this.TotalCount)
        {
            var o = Page.SeachPage(this.ClassFullName, this.WhereOql, begin).value;
            obj[index] = o;
            begin++;
            index++;
        }
        return obj;
    }
}
//查询末页
SeachPageHelper_Class.prototype.SeachPage = function(page, fun)
{
    this.Loading = 0;
    this.CurrentPage = page;
    this.OpCode = Math.random();
    if (this.CurrentPage <= 1)
    {
        this.CurrentPage = 1;
    }
    if (this.CurrentPage >= this.TotalPage)
    {
        this.CurrentPage = this.TotalPage;
    }
    var cp = this.OpCode;
    var begin = (this.CurrentPage - 1) * this.PageSize + 1;
    var end = this.CurrentPage * this.PageSize;

    if (typeof (fun) == 'function')
    {
        while (begin <= end && begin <= this.TotalCount)
        {
            var obj = new Object();
            obj.SeachPageHelper = this;
            obj.oldPage = cp;
            obj.Fun = fun;
            Page.SeachPage(this.ClassFullName, this.WhereOql, begin, function(value)
            {
                if (value.context.oldPage != value.context.SeachPageHelper.OpCode)
                {
                    return;
                }
                value.context.SeachPageHelper.Loading--;
                value.context.Fun(value);
            }, obj);
            begin++;
        }
    }
    else
    {
        var obj = new Object();
        var index = 0;
        var cp = 1;
        while (begin <= end && begin <= this.TotalCount)
        {
            var o = Page.SeachPage(this.ClassFullName, this.WhereOql, begin).value;
            obj[index] = o;
            begin++;
            index++;
        }
        return obj;
    }
}
