#------------------------------------------------------------
# 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;


