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

use strict;
use warnings;

use lib '/app/tools/rps/lib';

use Common::FormObject;
use base 'Common::FormObject';

# This is a read-only XMLObject, so we don't need any
# of the accessor methods, just create the list of
# items and be on your way.
#

my %gUSStates = (
    AL   => 'Alabama',
    AK   => 'Alaska',
    AZ   => 'Arizona',
    AR   => 'Arkansas',
    CA   => 'California',
    CO   => 'Colorado',
    CT   => 'Connecticut',
    DE   => 'Delaware',
    DC   => 'District of Columbia',
    FL   => 'Florida',
    GA   => 'Georgia',
    HI   => 'Hawaii',
    ID   => 'Idaho',
    IL   => 'Illinois',
    IN   => 'Indiana',
    IA   => 'Iowa',
    KS   => 'Kansas',
    KY   => 'Kentucky',
    LA   => 'Louisiana',
    ME   => 'Maine',
    MD   => 'Maryland',
    MA   => 'Massachusetts',
    MI   => 'Michigan',
    MN   => 'Minnesota',
    MS   => 'Mississippi',
    MO   => 'Missouri',
    MT   => 'Montana',
    'NE' => 'Nebraska',
    NV   => 'Nevada',
    NH   => 'New Hampshire',
    NJ   => 'New Jersey',
    NM   => 'New Mexico',
    NY   => 'New York',
    NC   => 'North Carolina',
    ND   => 'North Dakota',
    OH   => 'Ohio',
    OK   => 'Oklahoma',
    OR   => 'Oregon',
    PA   => 'Pennsylvania',
    RI   => 'Rhode Island',
    SC   => 'South Carolina',
    SD   => 'South Dakota',
    TN   => 'Tennessee',
    TX   => 'Texas',
    UT   => 'Utah',
    VT   => 'Vermont',
    VA   => 'Virginia',
    WA   => 'Washington',
    WV   => 'West Virginia',
    WI   => 'Wisconsin',
    WY   => 'Wyoming',

    AS => 'American Samoa',
    FM => 'Federated States of Micronesia',
    GU => 'Guam',
    MH => 'Marshall Islands',
    MP => 'Northern Mariana Islands',
    PW => 'Palau',
    VI => 'Virgin Islands',
    PR => 'Puerto Rico',

    AA => 'Armed Forces (AA)',
    AE => 'Armed Forces (AE)',
    AP => 'Armed Forces (AP)',
);

# static method to get a state name
sub StateNameFor {
    my ($abbr) = @_;

    return $gUSStates{ uc $abbr } || undef;
}

sub IsValidState {
    my ($stateAbbr) = @_;

    return ( StateNameFor($stateAbbr) ) ? 1 : 0;
}

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

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

    $self->{State} = [];

    foreach my $code ( sort { $gUSStates{$a} cmp $gUSStates{$b} } keys %gUSStates ) {
        push @{ $self->{State} }, { StateCode => $code, Name => $gUSStates{$code} };
    }

    return $self;
}

1;

