#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::AlphabeticalPagination;

use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::FormObject;
use base 'Common::FormObject';

use constant kOtherPage => '0';

sub _init {
    my ( $self, %args ) = @_;

    $self->SUPER::_init(%args);

    return $self->_initWithArgs(%args);
}

sub _initWithArgs {
    my ( $self, %args ) = @_;

    # All we really need to know is the current page.
    # The rest is essentially canned.
    #
    my $currentPage = $args{currentPage};

    # Remember, '0' is a valid page number (means 'Other')
    #
    $currentPage = 'A' unless defined $currentPage;

    $currentPage = uc($currentPage);

    my $next = _getNext($currentPage);
    my $prev = _getPrev($currentPage);

    $self->{Current}  = Common::FormObject::Scalar::String->new( value => $currentPage );
    $self->{Next}     = Common::FormObject::Scalar::String->new( value => $next );
    $self->{Previous} = Common::FormObject::Scalar::String->new( value => $prev );

    return $self;
}

sub _getNext {
    my ($page) = @_;

    return undef if 'ALL' eq uc($page);
    return undef if kOtherPage eq $page;
    return kOtherPage if 'Z' eq $page;
    return chr( ord($page) + 1 );
}

sub _getPrev {
    my ($page) = @_;

    return undef if 'ALL' eq uc($page);
    return undef if 'A' eq $page;
    return 'Z'   if kOtherPage eq $page;
    return chr( ord($page) - 1 );
}

###
1;    #
###
