function validateState(){
var abrev = findAbrev(this.get());
if(this.abrev != null){
if(typeof(this.abrev) == "string") this.abrev = this.getSibling(this.abrev);
this.abrev.set((abrev == null) ? "" : abrev);
this.abrev.executeEvent("change");
}
if(abrev == null){
return this.setMessage("Please enter the name or postal abbreviation of a state, province, or U.S. territory.");
}
this.set(this.fullName ? STATES[abrev] : abrev);
if(this.all == true) return true;
if(TERRITORIES[abrev])
return this.setMessage((this.territories == true) ? "" : "U.S. territories are not permitted.");
if(CANADA[abrev])
return this.setMessage((this.canadian == true) ? "" : "Canadian provinces are not permitted.");
if(ARMED_FORCES[abrev])
return this.setMessage((this.armedForces == true) ? "" : "Armed forces addresses are not permitted.");
if(this.states == false || (this.contiguous == false && this.nonContiguous == false))
return this.setMessage("U.S. states are not permitted");
if(NON_CONTIGUOUS[abrev])
return this.setMessage((this.nonContiguous != false) ? "" : "Alaska and Hawaii are not permitted.");
return this.setMessage((this.contiguous != false) ? "" : "The 48 contiguous states and D.C. are not permitted");
}
function findAbrev(value){
if(STATES == null) initLists();

value = extract(value.toUpperCase(), UPPERALPHA);
var len = value.length;
if(len < 2)
return null;

if(len == 2){
if(STATES[value] != null)
return value;
return null;
}

if(value.substring(0, 11) == "ARMEDFORCES")
value = "AF" + value.substring(11);
len = value.length;
var maxLen = len < 8 ? len : 8;
var state = null;
for(var i = 3; i <= maxLen; i++){
state = ABREV_LOOKUP[value.substring(0, i)];
if(state != null){
if(state == "WA" && value.indexOf("DC") != -1)
return "DC";
return state;
}
}
return null;
}

var STATES, ABREV_LOOKUP, NON_CONTIGUOUS, TERRITORIES, CANADA, ARMED_FORCES;
function initLists(){
STATES = new Array();
ABREV_LOOKUP = new Array();
NON_CONTIGUOUS = makeSet("AK","HI");
TERRITORIES = makeSet("AS","FM","GU","MH","NP","PW","PR","UM","VI");
CANADA = makeSet("AB","BC","MB","NB","NF","NS","NT","ON","PE","QC","SK","YT");
ARMED_FORCES = makeSet("AA","AE","AP");

addState("AB", "Alberta", "ALB"); addState("AK", "Alaska", "ALAS"); addState("AL", "Alabama", "ALAB"); addState("AR", "Arkansas", "ARK");
addState("AS", "American Samoa", "AME", "SAM"); addState("AZ", "Arizona", "ARI"); addState("BC", "British Columbia", "BRI"); addState("CA", "California", "CAL");
addState("CO", "Colorado", "COL"); addState("CT", "Connecticut", "CON"); addState("DC", "District of Columbia", "DIS"); addState("DE", "Delaware", "DEL");
addState("FM", "Federated States of Micronesia", "FED", "MICR"); addState("FL", "Florida", "FLO"); addState("GA", "Georgia", "GEO"); addState("GU", "Guam", "GUA");
addState("HI", "Hawaii", "HAW"); addState("IA", "Iowa", "IOW"); addState("ID", "Idaho", "IDA"); addState("IL", "Illinois", "ILL"); addState("IN", "Indiana", "IND");
addState("KS", "Kansas", "KAN"); addState("KY", "Kentucky", "KEN"); addState("LA", "Louisianna", "LOU"); addState("MH", "Marshall Islands", "MARS");
addState("MA", "Massachusetts", "MAS"); addState("MB", "Manitoba", "MAN"); addState("MD", "Maryland", "MARY"); addState("ME", "Maine", "MAI"); addState("MI", "Michigan", "MICH");
addState("MN", "Minnesota", "MINN"); addState("MO", "Missouri", "MISSO"); addState("MP", "Northern Mariana Islands", "NORTHE", "MARI"); addState("MS", "Mississippi", "MISSI");
addState("MT", "Montana", "MON"); addState("NB", "New Brunswick", "NEWB"); addState("NE", "Nebraska", "NEB"); addState("NF", "Newfoundland", "NEWF");
addState("NH", "New Hampshire", "NEWH"); addState("NJ", "New Jersey", "NEWJ"); addState("NM", "New Mexico", "NEWM"); addState("NC", "North Carolina", "NCA", "NORTHC");
addState("ND", "North Dakota", "NDA", "NORTHD"); addState("NS", "Nova Scotia", "NOV"); addState("NT", "Nunavut", "NUN"); addState("NV", "Nevada", "NEV");
addState("NY", "New York", "NEWY"); addState("OH", "Ohio", "OHI"); addState("OK", "Oklahoma", "OKL"); addState("ON", "Ontario", "ONT"); addState("OR", "Oregon", "ORE");
addState("PW", "Palau", "PAL"); addState("PA", "Pennsylvania", "PEN"); addState("PE", "Prince Edward Island", "PRI"); addState("PR", "Puerto Rico", "PUE");
addState("QC", "Quebec", "QUE"); addState("RI", "Rhode Island", "RHO"); addState("SC", "South Carolina", "SCA", "SOUTHC"); addState("SD", "South Dakota", "SDA", "SOUTHD");
addState("SK", "Saskatchewan", "SAS"); addState("TN", "Tennessee", "TEN"); addState("TX", "Texas", "TEX"); addState("UT", "Utah", "UTA"); addState("VA", "Virginia", "VIRGINIA");
addState("VI", "Virgin Islands", "VIRGINIS"); addState("VT", "Vermont", "VER"); addState("WA", "Washington", "WAS"); addState("WI", "Wisconsin", "WIS");
addState("WV", "West Virginia", "WES", "WVI"); addState("WY", "Wyoming", "WYO"); addState("YT", "Yukon", "YUK"); addState("AA", "Armed Forces Americas", "AFAM");
addState("AE", "Armed Forces Europe", "AFAF", "AFC", "AFE", "AFM"); addState("AP", "Armed Forces Pacific", "AFP"); addState("UM", "U.S. Minor Outlying Islands", "USM", "OUT", "MINO");
}
function addState(abrev, fullName){
STATES[abrev] = fullName;
var i, args = addState.arguments, numArgs = args.length;
for (var i = 2; i < numArgs; i++)
ABREV_LOOKUP[args[i]] = abrev;
}
var _SR_;
if(_SR_ != null) _SR_.notify("validatestate.js");