majaxpager.php


<?php

define('MAP_PREFIX', 'map_' );

class mAjaxPager {

    var $prefix;
    var $ajaxlib_url;
    var $ajaxif_url;

    var $pagenum;
    var $currentpage;

    var $controllerattr;
    var $buttonattr;
    var $infoattr;
    var $bodyattr;

    function mAjaxPager( $options )
    {
        $this->prefix = MAP_PREFIX;

        $this->ajaxlib_url = '';
        $this->ajaxif_url = '';

        $this->pagenum = 1;
        $this->currentpage = 1;

        $this->controllerattr = '';
        $this->buttonattr = '';
        $this->infoattr = '';
        $this->bodyattr = '';

        foreach ($options as $key => $value)
        {
            if( isset($this->{$key}) && !is_null($value) )
            {
                $this->{$key} = $value;
            }
        }
    }



    function GetController()
    {
        $fix = $this->prefix;

        $buf = <<<_EOD_
<script type="text/javascript" src="{$this->ajaxlib_url}" charset="utf-8"></script>
<script type="text/javascript"><!--

function {$fix}setElement( name, str )
{
    document.getElementById(name).innerHTML=str;
}


var statustimer = undefined;

function printActivate( name )
{
    var status = new Array( "Now Loading /", "Now Loading ―", "Now Loading \", "Now Loading |" );

    var str = document.getElementById(name).innerHTML;

    for( var i = 0; i < status.length; i++ )
    {
        if( str == status[i] )
        {
            i = (i+1)%4;
            {$fix}setElement( name, status[i] );
            return;
        }
    }

    {$fix}setElement( name, status[0] );
}

function stopActivate( name )
{
    clearInterval(statustimer);
    {$fix}setElement( name, "Complete." );
    statustimer = undefined;
}

var {$fix}page = {$this->currentpage};
var {$fix}pagenum = {$this->pagenum};

function {$fix}sendData( nextpage )
{
    if( !statustimer )
    {
        if( {$fix}page+nextpage < 1 )
        {
            {$fix}page = 1;
            {$fix}setElement( "{$fix}info", "Newest Page" );
        }
        else if( {$fix}pagenum < {$fix}page+nextpage )
        {
            {$fix}page = {$fix}pagenum;
            {$fix}setElement( "{$fix}info", "Oldest Page" );
        }
        else
        {
            {$fix}page += nextpage;

            statustimer = setInterval( new Function('printActivate("{$fix}info")'), 90 );
            sendRequest( {$fix}onloaded,'&page='+{$fix}page,'POST','{$this->ajaxif_url}',true,true);//送信
        }
    }
}

function {$fix}onloaded(res)
{
    {$fix}restxt = res.responseText;

    {$fix}setElement('{$fix}body',{$fix}restxt);
    {$fix}setElement('{$fix}page', {$fix}page );

    stopActivate("{$fix}info");
}

// --></script>
<div id="{$fix}ctrl" {$this->controllerattr}>
<input type="button" value="&lt; new " onclick="{$fix}sendData(-1); return true;" {$this->buttonattr} />
<input type="button" value=" old &gt;" onclick="{$fix}sendData(1); return true;" {$this->buttonattr} />
[ <span id="{$fix}page"> {$this->currentpage}</span>/{$this->pagenum} ]
<span id="{$fix}info" {$this->infoattr}>Ajax Pager</span>
</div>
_EOD_;

        return $buf;
    }


    function GetBody( $body )
    {
        $fix = $this->prefix;
        return "<div id=\"{$fix}body\"{$this->bodyattr}>$body</div>";
    }

    function Get( $_body )
    {
        $ctrl = $this->GetController();
        $body = $this->GetBody( $_body );

        return $ctrl.$body;
    }
}


?>