var countrylist = [
                    { abbr: 'AF', name: 'Afghanistan' },
                    { abbr: 'AL', name: 'Albania' },
                    { abbr: 'DZ', name: 'Algeria' },
                    { abbr: 'AS', name: 'American Samoa' },
                    { abbr: 'AD', name: 'Andorra' },
                    { abbr: 'AO', name: 'Angola' },
                    { abbr: 'AI', name: 'Anguilla' },
                    { abbr: 'AQ', name: 'Antarctica' },
                    { abbr: 'AG', name: 'Antigua and Barbuda' },
                    { abbr: 'AR', name: 'Argentina' },
                    { abbr: 'AM', name: 'Armenia' },
                    { abbr: 'AW', name: 'Aruba' },
                    { abbr: 'AU', name: 'Australia',
                      states: [
                        { abbr: 'AAT', name: 'Australian Antarctic Territory' },
                        { abbr: 'ACT', name: 'Australian Capital Territory' },
                        { abbr: 'NSW', name: 'New South Wales' },
                        { abbr: 'NT', name: 'Northern Territory' },
                        { abbr: 'QLD', name: 'Queensland' },
                        { abbr: 'SA', name: 'South Australia' },
                        { abbr: 'TAS', name: 'Tasmania' },
                        { abbr: 'VIC', name: 'Victoria' },
                        { abbr: 'WA', name: 'Western Australia' }
                    ]},
                    { abbr: 'AT', name: 'Austria' },
                    { abbr: 'AZ', name: 'Azerbaijan' },
                    { abbr: 'AP', name: 'Azores' },
                    { abbr: 'BS', name: 'Bahamas' },
                    { abbr: 'BH', name: 'Bahrain' },
                    { abbr: 'BD', name: 'Bangladesh' },
                    { abbr: 'BB', name: 'Barbados' },
                    { abbr: 'BY', name: 'Belarus' },
                    { abbr: 'BE', name: 'Belgium' },
                    { abbr: 'BZ', name: 'Belize' },
                    { abbr: 'BJ', name: 'Benin' },
                    { abbr: 'BM', name: 'Bermuda' },
                    { abbr: 'BT', name: 'Bhutan' },
                    { abbr: 'BO', name: 'Bolivia' },
                    { abbr: 'BA', name: 'Bosnia And Herzegowina' },
                    { abbr: 'XB', name: 'Bosnia-Herzegovina' },
                    { abbr: 'BW', name: 'Botswana' },
                    { abbr: 'BV', name: 'Bouvet Island' },
                    { abbr: 'BR', name: 'Brazil',
                      states: [
                        { abbr: 'AC', name: 'Acre' },
                        { abbr: 'AL', name: 'Alagoas' },
                        { abbr: 'AP', name: 'Amapa' },
                        { abbr: 'AM', name: 'Amazonas' },
                        { abbr: 'BA', name: 'Baia' },
                        { abbr: 'CE', name: 'Ceara' },
                        { abbr: 'DF', name: 'Distrito Federal' },
                        { abbr: 'ES', name: 'Espirito Santo' },
                        { abbr: 'FN', name: 'Fernando de Noronha' },
                        { abbr: 'GO', name: 'Goias' },
                        { abbr: 'MA', name: 'Maranhao' },
                        { abbr: 'MT', name: 'Mato Grosso' },
                        { abbr: 'MS', name: 'Mato Grosso do Sul' },
                        { abbr: 'MG', name: 'Minas Gerais' },
                        { abbr: 'PA', name: 'Para' },
                        { abbr: 'PB', name: 'Paraiba' },
                        { abbr: 'PR', name: 'Parana' },
                        { abbr: 'PE', name: 'Pernambuco' },
                        { abbr: 'PI', name: 'Piaui' },
                        { abbr: 'RJ', name: 'Rio de Janeiro' },
                        { abbr: 'RN', name: 'Rio Grande do Norte' },
                        { abbr: 'RO', name: 'Rondonia' },
                        { abbr: 'RR', name: 'Roraima' },
                        { abbr: 'RS', name: 'Rio Grande do Sul' },
                        { abbr: 'SC', name: 'Santa Catarina' },
                        { abbr: 'SP', name: 'Sao Paulo' },
                        { abbr: 'SE', name: 'Sergipe' },
                        { abbr: 'TO', name: 'Tocatins' }
                    ]},
                    { abbr: 'IO', name: 'British Indian Ocean Territory' },
                    { abbr: 'VG', name: 'British Virgin Islands' },
                    { abbr: 'BN', name: 'Brunei Darussalam' },
                    { abbr: 'BG', name: 'Bulgaria' },
                    { abbr: 'BF', name: 'Burkina Faso' },
                    { abbr: 'BI', name: 'Burundi' },
                    { abbr: 'KH', name: 'Cambodia' },
                    { abbr: 'CM', name: 'Cameroon' },
                    { abbr: 'CA', name: 'Canada',
                      states: [
                        { abbr: 'AB', name: 'Alberta' },
                        { abbr: 'BC', name: 'British Columbia' },
                        { abbr: 'MB', name: 'Manitoba' },
                        { abbr: 'NB', name: 'New Brunswick' },
                        { abbr: 'NL', name: 'Newfoundland and Labrador' },
                        { abbr: 'NT', name: 'Northwest Territories' },
                        { abbr: 'NS', name: 'Nova Scotia' },
                        { abbr: 'NU', name: 'Nunavut' },
                        { abbr: 'ON', name: 'Ontario' },
                        { abbr: 'PE', name: 'Prince Edward Island' },
                        { abbr: 'QC', name: 'Quebec' },
                        { abbr: 'SK', name: 'Saskatchewan' },
                        { abbr: 'YT', name: 'Yukon Territory' }
                    ]},
                    { abbr: 'CV', name: 'Cape Verde' },
                    { abbr: 'KY', name: 'Cayman Islands' },
                    { abbr: 'CF', name: 'Central African Republic' },
                    { abbr: 'TD', name: 'Chad' },
                    { abbr: 'CL', name: 'Chile' },
                    { abbr: 'CN', name: 'China' },
                    { abbr: 'CX', name: 'Christmas Island' },
                    { abbr: 'CC', name: 'Cocos (Keeling) Islands' },
                    { abbr: 'CO', name: 'Colombia' },
                    { abbr: 'KM', name: 'Comoros' },
                    { abbr: 'CG', name: 'Congo' },
                    { abbr: 'CD', name: 'Congo, The Democratic Republic O' },
                    { abbr: 'CK', name: 'Cook Islands' },
                    { abbr: 'XE', name: 'Corsica' },
                    { abbr: 'CR', name: 'Costa Rica' },
                    { abbr: 'CI', name: 'Cote d` Ivoire (Ivory Coast)' },
                    { abbr: 'HR', name: 'Croatia' },
                    { abbr: 'CU', name: 'Cuba' },
                    { abbr: 'CY', name: 'Cyprus' },
                    { abbr: 'CZ', name: 'Czech Republic' },
                    { abbr: 'DK', name: 'Denmark' },
                    { abbr: 'DJ', name: 'Djibouti' },
                    { abbr: 'DM', name: 'Dominica' },
                    { abbr: 'DO', name: 'Dominican Republic' },
                    { abbr: 'TP', name: 'East Timor' },
                    { abbr: 'EC', name: 'Ecuador' },
                    { abbr: 'EG', name: 'Egypt' },
                    { abbr: 'SV', name: 'El Salvador' },
                    { abbr: 'GQ', name: 'Equatorial Guinea' },
                    { abbr: 'ER', name: 'Eritrea' },
                    { abbr: 'EE', name: 'Estonia' },
                    { abbr: 'ET', name: 'Ethiopia' },
                    { abbr: 'FK', name: 'Falkland Islands (Malvinas)' },
                    { abbr: 'FO', name: 'Faroe Islands' },
                    { abbr: 'FJ', name: 'Fiji' },
                    { abbr: 'FI', name: 'Finland' },
                    { abbr: 'FR', name: 'France (Includes Monaco)' },
                    { abbr: 'FX', name: 'France, Metropolitan' },
                    { abbr: 'GF', name: 'French Guiana' },
                    { abbr: 'PF', name: 'French Polynesia' },
                    { abbr: 'TA', name: 'French Polynesia (Tahiti)' },
                    { abbr: 'TF', name: 'French Southern Territories' },
                    { abbr: 'GA', name: 'Gabon' },
                    { abbr: 'GM', name: 'Gambia' },
                    { abbr: 'GE', name: 'Georgia' },
                    { abbr: 'DE', name: 'Germany' },
                    { abbr: 'GH', name: 'Ghana' },
                    { abbr: 'GI', name: 'Gibraltar' },
                    { abbr: 'GR', name: 'Greece' },
                    { abbr: 'GL', name: 'Greenland' },
                    { abbr: 'GD', name: 'Grenada' },
                    { abbr: 'GP', name: 'Guadeloupe' },
                    { abbr: 'GU', name: 'Guam' },
                    { abbr: 'GT', name: 'Guatemala' },
                    { abbr: 'GN', name: 'Guinea' },
                    { abbr: 'GW', name: 'Guinea-Bissau' },
                    { abbr: 'GY', name: 'Guyana' },
                    { abbr: 'HT', name: 'Haiti' },
                    { abbr: 'HM', name: 'Heard And Mc Donald Islands' },
                    { abbr: 'VA', name: 'Holy See (Vatican City State)' },
                    { abbr: 'HN', name: 'Honduras' },
                    { abbr: 'HK', name: 'Hong Kong' },
                    { abbr: 'HU', name: 'Hungary' },
                    { abbr: 'IS', name: 'Iceland' },
                    { abbr: 'IN', name: 'India' },
                    { abbr: 'ID', name: 'Indonesia' },
                    { abbr: 'IR', name: 'Iran' },
                    { abbr: 'IQ', name: 'Iraq' },
                    { abbr: 'EI', name: 'Ireland (Eire)',
                      states: [
                        { abbr: 'CO ANTRIM', name: 'County Antrim' },
                        { abbr: 'CO ARMAGH', name: 'County Armagh' },
                        { abbr: 'CO CARLOW', name: 'County Carlow' },
                        { abbr: 'CO CAVAN', name: 'County Cavan' },
                        { abbr: 'CO CLARE', name: 'County Clare' },
                        { abbr: 'CO CORK', name: 'County Cork' },
                        { abbr: 'CO DONEGAL', name: 'County Donegal' },
                        { abbr: 'CO DOWN', name: 'County Down' },
                        { abbr: 'CO DUBLIN', name: 'County Dublin' },
                        { abbr: 'CO FERMANAGH', name: 'County Fermanagh' },
                        { abbr: 'CO GALWAY', name: 'County Galway' },
                        { abbr: 'CO KERRY', name: 'County Kerry' },
                        { abbr: 'CO KILDARE', name: 'County Kildare' },
                        { abbr: 'CO KILKENNY', name: 'County Kilkenny' },
                        { abbr: 'CO LAOIS', name: 'County Laois' },
                        { abbr: 'CO LEITRIM', name: 'County Leitrim' },
                        { abbr: 'CO LIMERICK', name: 'County Limerick' },
                        { abbr: 'CO DERRY', name: 'County Londonderry' },
                        { abbr: 'CO LONGFORD', name: 'County Longford' },
                        { abbr: 'CO LOUTH', name: 'County Louth' },
                        { abbr: 'CO MAYO', name: 'County Mayo' },
                        { abbr: 'CO MEATH', name: 'County Meath' },
                        { abbr: 'CO OFFALY', name: 'County Offaly' },
                        { abbr: 'CO MONAGHAN', name: 'County Monaghan' },
                        { abbr: 'CO ROSCOMMON', name: 'County Roscommon' },
                        { abbr: 'CO SLIGO', name: 'County Sligo' },
                        { abbr: 'CO TIPPERARY', name: 'County Tipperary' },
                        { abbr: 'CO TYRONE', name: 'County Tyrone' },
                        { abbr: 'CO WATERFORD', name: 'County Waterford' },
                        { abbr: 'CO WESTMEATH', name: 'County Westmeath' },
                        { abbr: 'CO WEXFORD', name: 'County Wexford' },
                        { abbr: 'CO WICKLOW', name: 'County Wicklow' }
                    ]},
                    { abbr: 'IL', name: 'Israel' },
                    { abbr: 'IT', name: 'Italy' },
                    { abbr: 'JM', name: 'Jamaica' },
                    { abbr: 'JP', name: 'Japan' },
                    { abbr: 'JO', name: 'Jordan' },
                    { abbr: 'KZ', name: 'Kazakhstan' },
                    { abbr: 'KE', name: 'Kenya' },
                    { abbr: 'KI', name: 'Kiribati' },
                    { abbr: 'KP', name: 'Korea, Democratic People\'s Repub' },
                    { abbr: 'KW', name: 'Kuwait' },
                    { abbr: 'KG', name: 'Kyrgyzstan' },
                    { abbr: 'LA', name: 'Laos' },
                    { abbr: 'LV', name: 'Latvia' },
                    { abbr: 'LB', name: 'Lebanon' },
                    { abbr: 'LS', name: 'Lesotho' },
                    { abbr: 'LR', name: 'Liberia' },
                    { abbr: 'LY', name: 'Libya' },
                    { abbr: 'LI', name: 'Liechtenstein' },
                    { abbr: 'LT', name: 'Lithuania' },
                    { abbr: 'LU', name: 'Luxembourg' },
                    { abbr: 'MO', name: 'Macao' },
                    { abbr: 'MK', name: 'Macedonia' },
                    { abbr: 'MG', name: 'Madagascar' },
                    { abbr: 'ME', name: 'Madeira Islands' },
                    { abbr: 'MW', name: 'Malawi' },
                    { abbr: 'MY', name: 'Malaysia' },
                    { abbr: 'MV', name: 'Maldives' },
                    { abbr: 'ML', name: 'Mali' },
                    { abbr: 'MT', name: 'Malta' },
                    { abbr: 'MH', name: 'Marshall Islands' },
                    { abbr: 'MQ', name: 'Martinique' },
                    { abbr: 'MR', name: 'Mauritania' },
                    { abbr: 'MU', name: 'Mauritius' },
                    { abbr: 'YT', name: 'Mayotte' },
                    { abbr: 'MX', name: 'Mexico' },
                    { abbr: 'FM', name: 'Micronesia, Federated States Of' },
                    { abbr: 'MD', name: 'Moldova, Republic Of' },
                    { abbr: 'MC', name: 'Monaco' },
                    { abbr: 'MN', name: 'Mongolia' },
                    { abbr: 'MS', name: 'Montserrat' },
                    { abbr: 'MA', name: 'Morocco' },
                    { abbr: 'MZ', name: 'Mozambique' },
                    { abbr: 'MM', name: 'Myanmar (Burma)' },
                    { abbr: 'NA', name: 'Namibia' },
                    { abbr: 'NR', name: 'Nauru' },
                    { abbr: 'NP', name: 'Nepal' },
                    { abbr: 'NL', name: 'Netherlands',
                      states: [
                        { abbr: 'DR', name: 'Drente' },
                        { abbr: 'FL', name: 'Flevoland' },
                        { abbr: 'FR', name: 'Friesland' },
                        { abbr: 'GL', name: 'Gelderland' },
                        { abbr: 'GR', name: 'Groningen' },
                        { abbr: 'LB', name: 'Limburg' },
                        { abbr: 'NB', name: 'Noord Brabant' },
                        { abbr: 'NH', name: 'Noord Holland' },
                        { abbr: 'OV', name: 'Overijssel' },
                        { abbr: 'UT', name: 'Utrecht' },
                        { abbr: 'ZH', name: 'Zuid Holland' },
                        { abbr: 'ZL', name: 'Zeeland' }
                    ]},
                    { abbr: 'AN', name: 'Netherlands Antilles' },
                    { abbr: 'NC', name: 'New Caledonia' },
                    { abbr: 'NZ', name: 'New Zealand' },
                    { abbr: 'NI', name: 'Nicaragua' },
                    { abbr: 'NE', name: 'Niger' },
                    { abbr: 'NG', name: 'Nigeria' },
                    { abbr: 'NU', name: 'Niue' },
                    { abbr: 'NF', name: 'Norfolk Island' },
                    { abbr: 'MP', name: 'Northern Mariana Islands' },
                    { abbr: 'NO', name: 'Norway' },
                    { abbr: 'OM', name: 'Oman' },
                    { abbr: 'PK', name: 'Pakistan' },
                    { abbr: 'PW', name: 'Palau' },
                    { abbr: 'PS', name: 'Palestinian Territory, Occupied' },
                    { abbr: 'PA', name: 'Panama' },
                    { abbr: 'PG', name: 'Papua New Guinea' },
                    { abbr: 'PY', name: 'Paraguay' },
                    { abbr: 'PE', name: 'Peru' },
                    { abbr: 'PH', name: 'Philippines' },
                    { abbr: 'PN', name: 'Pitcairn' },
                    { abbr: 'PL', name: 'Poland' },
                    { abbr: 'PT', name: 'Portugal' },
                    { abbr: 'PR', name: 'Puerto Rico' },
                    { abbr: 'QA', name: 'Qatar' },
                    { abbr: 'RE', name: 'Reunion' },
                    { abbr: 'RO', name: 'Romania' },
                    { abbr: 'RU', name: 'Russian Federation' },
                    { abbr: 'RW', name: 'Rwanda' },
                    { abbr: 'KN', name: 'Saint Kitts And Nevis' },
                    { abbr: 'SM', name: 'San Marino' },
                    { abbr: 'ST', name: 'Sao Tome and Principe' },
                    { abbr: 'SA', name: 'Saudi Arabia' },
                    { abbr: 'SN', name: 'Senegal' },
                    { abbr: 'XS', name: 'Serbia-Montenegro' },
                    { abbr: 'SC', name: 'Seychelles' },
                    { abbr: 'SL', name: 'Sierra Leone' },
                    { abbr: 'SG', name: 'Singapore' },
                    { abbr: 'SK', name: 'Slovak Republic' },
                    { abbr: 'SI', name: 'Slovenia' },
                    { abbr: 'SB', name: 'Solomon Islands' },
                    { abbr: 'SO', name: 'Somalia' },
                    { abbr: 'ZA', name: 'South Africa' },
                    { abbr: 'GS', name: 'South Georgia And The South Sand' },
                    { abbr: 'KR', name: 'South Korea' },
                    { abbr: 'ES', name: 'Spain' },
                    { abbr: 'LK', name: 'Sri Lanka' },
                    { abbr: 'NV', name: 'St. Christopher and Nevis' },
                    { abbr: 'SH', name: 'St. Helena' },
                    { abbr: 'LC', name: 'St. Lucia' },
                    { abbr: 'PM', name: 'St. Pierre and Miquelon' },
                    { abbr: 'VC', name: 'St. Vincent and the Grenadines' },
                    { abbr: 'SD', name: 'Sudan' },
                    { abbr: 'SR', name: 'Suriname' },
                    { abbr: 'SJ', name: 'Svalbard And Jan Mayen Islands' },
                    { abbr: 'SZ', name: 'Swaziland' },
                    { abbr: 'SE', name: 'Sweden' },
                    { abbr: 'CH', name: 'Switzerland' },
                    { abbr: 'SY', name: 'Syrian Arab Republic' },
                    { abbr: 'TW', name: 'Taiwan' },
                    { abbr: 'TJ', name: 'Tajikistan' },
                    { abbr: 'TZ', name: 'Tanzania' },
                    { abbr: 'TH', name: 'Thailand' },
                    { abbr: 'TG', name: 'Togo' },
                    { abbr: 'TK', name: 'Tokelau' },
                    { abbr: 'TO', name: 'Tonga' },
                    { abbr: 'TT', name: 'Trinidad and Tobago' },
                    { abbr: 'XU', name: 'Tristan da Cunha' },
                    { abbr: 'TN', name: 'Tunisia' },
                    { abbr: 'TR', name: 'Turkey' },
                    { abbr: 'TM', name: 'Turkmenistan' },
                    { abbr: 'TC', name: 'Turks and Caicos Islands' },
                    { abbr: 'TV', name: 'Tuvalu' },
                    { abbr: 'UG', name: 'Uganda' },
                    { abbr: 'UA', name: 'Ukraine' },
                    { abbr: 'AE', name: 'United Arab Emirates' },
                    { abbr: 'UK', name: 'United Kingdom',
                      states: [
                        { abbr: 'AVON', name: 'Avon' },
                        { abbr: 'BEDS', name: 'Bedfordshire' },
                        { abbr: 'BERKS', name: 'Berkshire' },
                        { abbr: 'BUCKS', name: 'Buckinghamshire' },
                        { abbr: 'CAMBS', name: 'Cambridgeshire' },
                        { abbr: 'CHESH', name: 'Cheshire' },
                        { abbr: 'CLEVE', name: 'Cleveland' },
                        { abbr: 'CORN', name: 'Cornwall' },
                        { abbr: 'CUMB', name: 'Cumbria' },
                        { abbr: 'DERBY', name: 'Derbyshire' },
                        { abbr: 'DEVON', name: 'Devon' },
                        { abbr: 'DORSET', name: 'Dorset' },
                        { abbr: 'DURHAM', name: 'Durham' },
                        { abbr: 'ESSEX', name: 'Essex' },
                        { abbr: 'GLOUS', name: 'Gloucestershire' },
                        { abbr: 'GLONDON', name: 'Greater London' },
                        { abbr: 'GMANCH', name: 'Greater Manchester' },
                        { abbr: 'HANTS', name: 'Hampshire' },
                        { abbr: 'HERWOR', name: 'Hereford & Worcestershire' },
                        { abbr: 'HERTS', name: 'Hertfordshire' },
                        { abbr: 'HUMBER', name: 'Humberside' },
                        { abbr: 'IOM', name: 'Isle of Man' },
                        { abbr: 'IOW', name: 'Isle of Wight' },
                        { abbr: 'KENT', name: 'Kent' },
                        { abbr: 'LANCS', name: 'Lancashire' },
                        { abbr: 'LEICS', name: 'Leicestershire' },
                        { abbr: 'LINCS', name: 'Lincolnshire' },
                        { abbr: 'MERSEY', name: 'Merseyside' },
                        { abbr: 'NORF', name: 'Norfolk' },
                        { abbr: 'NHANTS', name: 'Northamptonshire' },
                        { abbr: 'NTHUMB', name: 'Northumberland' },
                        { abbr: 'NOTTS', name: 'Nottinghamshire' },
                        { abbr: 'OXON', name: 'Oxfordshire' },
                        { abbr: 'SHROPS', name: 'Shropshire' },
                        { abbr: 'SOM', name: 'Somerset' },
                        { abbr: 'STAFFS', name: 'Staffordshire' },
                        { abbr: 'SUFF', name: 'Suffolk' },
                        { abbr: 'SURREY', name: 'Surrey' },
                        { abbr: 'SUSS', name: 'Sussex' },
                        { abbr: 'WARKS', name: 'Warwickshire' },
                        { abbr: 'WMID', name: 'West Midlands' },
                        { abbr: 'WILTS', name: 'Wiltshire' },
                        { abbr: 'YORK', name: 'Yorkshire' }
                    ]},
                    { abbr: 'US', name: 'United States',
                      states: [
                        { abbr: 'AK', name: 'Alaska' },
                        { abbr: 'AL', name: 'Alabama' },
                        { abbr: 'AS', name: 'American Samoa' },
                        { abbr: 'AR', name: 'Arkansas' },
                        { abbr: 'AZ', name: 'Arizona' },
                        { abbr: 'CA', name: 'California' },
                        { abbr: 'CO', name: 'Colorado' },
                        { abbr: 'CT', name: 'Connecticut' },
                        { abbr: 'DC', name: 'D.C.' },
                        { abbr: 'DE', name: 'Delaware' },
                        { abbr: 'FL', name: 'Florida' },
                        { abbr: 'GA', name: 'Georgia' },
                        { abbr: 'GU', name: 'Guam' },
                        { abbr: 'HI', name: 'Hawaii' },
                        { abbr: 'ID', name: 'Idaho' },
                        { abbr: 'IL', name: 'Illinois' },
                        { abbr: 'IA', name: 'Iowa' },
                        { abbr: 'IN', name: 'Indiana' },
                        { abbr: 'KS', name: 'Kansas' },
                        { abbr: 'KY', name: 'Kentucky' },
                        { abbr: 'LA', name: 'Louisiana' },
                        { abbr: 'ME', name: 'Maine' },
                        { abbr: 'MP', name: 'Marianas' },
                        { abbr: 'MD', name: 'Maryland' },
                        { abbr: 'MH', name: 'Marshall Islands' },
                        { abbr: 'MA', name: 'Massachusetts' },
                        { abbr: 'MI', name: 'Michigan' },
                        { abbr: 'FM', name: 'Micronesia' },
                        { abbr: 'AA', name: 'Military Americas' },
                        { abbr: 'AE', name: 'Military Europe/ME/Canada' },
                        { abbr: 'AP', name: 'Military Pacific' },
                        { abbr: 'MN', name: 'Minnesota' },
                        { abbr: 'MS', name: 'Mississippi' },
                        { abbr: 'MO', name: 'Missouri' },
                        { abbr: 'MT', name: 'Montana' },
                        { abbr: 'NE', name: 'Nebraska' },
                        { abbr: 'NV', name: 'Nevada' },
                        { abbr: 'NH', name: 'New Hampshire' },
                        { abbr: 'NJ', name: 'New Jersey' },
                        { abbr: 'NM', name: 'New Mexico' },
                        { abbr: 'NY', name: 'New York' },
                        { abbr: 'NC', name: 'North Carolina' },
                        { abbr: 'ND', name: 'North Dakota' },
                        { abbr: 'OH', name: 'Ohio' },
                        { abbr: 'OK', name: 'Oklahoma' },
                        { abbr: 'OR', name: 'Oregon' },
                        { abbr: 'PW', name: 'Palau' },
                        { abbr: 'PA', name: 'Pennsylvania' },
                        { abbr: 'PR', name: 'Puerto Rico' },
                        { abbr: 'RI', name: 'Rhode Island' },
                        { abbr: 'SC', name: 'South Carolina' },
                        { abbr: 'SD', name: 'South Dakota' },
                        { abbr: 'TN', name: 'Tennessee' },
                        { abbr: 'TX', name: 'Texas' },
                        { abbr: 'UT', name: 'Utah' },
                        { abbr: 'VT', name: 'Vermont' },
                        { abbr: 'VI', name: 'Virgin Islands' },
                        { abbr: 'VA', name: 'Virginia' },
                        { abbr: 'WA', name: 'Washington' },
                        { abbr: 'WV', name: 'West Virginia' },
                        { abbr: 'WI', name: 'Wisconsin' },
                        { abbr: 'WY', name: 'Wyoming' }
                      ] },
                    { abbr: 'UM', name: 'United States Minor Outlying Islands' },
                    { abbr: 'UY', name: 'Uruguay' },
                    { abbr: 'UZ', name: 'Uzbekistan' },
                    { abbr: 'VU', name: 'Vanuatu' },
                    { abbr: 'XV', name: 'Vatican City' },
                    { abbr: 'VE', name: 'Venezuela' },
                    { abbr: 'VN', name: 'Vietnam' },
                    { abbr: 'VI', name: 'Virgin Islands (U.S.)' },
                    { abbr: 'WF', name: 'Wallis and Furuna Islands' },
                    { abbr: 'EH', name: 'Western Sahara' },
                    { abbr: 'WS', name: 'Western Samoa' },
                    { abbr: 'YE', name: 'Yemen' },
                    { abbr: 'YU', name: 'Yugoslavia' },
                    { abbr: 'ZR', name: 'Zaire' },
                    { abbr: 'ZM', name: 'Zambia' },
                    { abbr: 'ZW', name: 'Zimbabwe' }
                ];

function initcountries(country_id, state_id) {
    var csel = $('select#' + country_id);

    for (i=0; i<countrylist.length; ++i) {
        $("<option>" + countrylist[i].name + "</option>")
            .attr("value", countrylist[i].abbr)
            .appendTo(csel);
    }

    setTimeout(function(){ initcountryselected(country_id, state_id) }, 1);
    csel.bind("change", function(){ updatestateinput(country_id, state_id) });
}

function initcountryselected(country_id, state_id) {
    var csel = $('select#' + country_id);
    var val = $('#' + country_id + "val").attr('value') || 'US';
    csel.children("[value=" + val + "]").attr("selected", "on");
    if (state_id && $("#" + state_id).length ) updatestateinput(country_id, state_id);
}

function updatestateinput(country_id, state_id) {
    var csel = $('select#' + country_id);
    var opt = csel.children(":selected").attr('value') || "";

    for (i=0; i<countrylist.length; ++i) {
        if (countrylist[i].abbr == opt) {
            var newssel;
            var val = $('#' + state_id + "val").attr('value');

            if (countrylist[i].states) {
                newssel = $("<select></select>");
                $('<option value="">-- Select one --</option>').appendTo(newssel);
                for (j=0; j<countrylist[i].states.length; ++j) {
                    $("<option>" + countrylist[i].states[j].name + "</option>")
                        .attr("value", countrylist[i].states[j].abbr)
                        .appendTo(newssel);
                }

                if (val) {
                    newssel.children("[value=" + val + "]").attr("selected", "on");
                    $('#' + state_id + "val").attr('value', "");
                } else {
                    newssel.children(":first").attr("selected", "on");
                }
            } else {
                newssel = $('<input type="text">');
                if (val) {
                    newssel.attr("value", val);
                    $('#' + state_id + "val").attr('value', "");
                }
            }

            $(newssel).attr("tabindex", $('#' + state_id).attr("tabindex"));
            $(newssel).attr("tabIndex", $('#' + state_id).attr("tabIndex"));
            $(newssel).attr("name", $('#' + state_id).attr("name"));
            $(newssel).replaceAll('#' + state_id);

            $(newssel).attr("id", state_id); // Last to prevent duplicate id wackiness

            break;
        }
    }
}



/*###############Copyright##################
 *####   Copyright 2008 Texterity, Inc  ####
 *###############Copyright##################
 */
