var state = '\
840:AK:Alaska|\
840:AL:Alabama|\
840:AR:Arkansas|\
840:AS:American Samoa|\
840:AZ:Arizona|\
840:CA:California|\
840:CO:Colorado|\
840:CT:Connecticut|\
840:DC:District Of Columbia|\
840:DE:Delaware|\
840:FL:Florida|\
840:GA:Georgia|\
840:GU:Guam|\
840:HI:Hawaii|\
840:IA:Iowa|\
840:ID:Idaho|\
840:IL:Illinois|\
840:IN:Indiana|\
840:KS:Kansas|\
840:KY:Kentucky|\
840:LA:Louisiana|\
840:MA:Massachusetts|\
840:MD:Maryland|\
840:ME:Maine|\
840:MI:Michigan|\
840:MN:Minnesota|\
840:MO:Missouri|\
840:MP:Marianas|\
840:MS:Mississippi|\
840:MT:Montana|\
840:NC:North Carolina|\
840:ND:North Dakota|\
840:NE:Nebraska|\
840:NH:New Hampshire|\
840:NJ:New Jersey|\
840:NM:New Mexico|\
840:NV:Nevada|\
840:NY:New York|\
840:OH:Ohio|\
840:OK:Oklahoma|\
840:OR:Oregon|\
840:PA:Pennsylvania|\
840:PR:Puerto Rico|\
840:RI:Rhode Island|\
840:SC:South Carolina|\
840:SD:South Dakota|\
840:TN:Tennessee|\
840:TX:Texas|\
840:UT:Utah|\
840:VA:Virginia|\
840:VI:Virgin Islands|\
840:VT:Vermont|\
840:WA:Washington|\
840:WI:Wisconsin|\
840:WV:West Virginia|\
840:WY:Wyoming|\
840:AA:Armed Forces Americas|\
840:AE:Armed Forces Europe|\
840:AP:Armed Forces Pacific|\
124:AB:Alberta|\
124:MB:Manitoba|\
124:AB:Alberta|\
124:BC:British Columbia|\
124:MB:Manitoba|\
124:NB:New Brunswick|\
124:NL:Newfoundland and Labrador|\
124:NS:Nova Scotia|\
124:NT:Northwest Territories|\
124:NU:Nunavut|\
124:ON:Ontario|\
124:PE:Prince Edward Island|\
124:QC:Quebec|\
124:SK:Saskatchewan|\
124:YT:Yukon Territory|\
';


function TrimString(sInString) {
  if ( sInString ) {
    sInString = sInString.replace( /^\s+/g, "" );// strip leading
    return sInString.replace( /\s+$/g, "" );// strip trailing
  }
}


function populateState(defaultState, countrySelectName, stateSelectName, ChangeEvent) {
  var selObj = document.getElementById(stateSelectName);
//  if ((defaultState == '') && (selObj.value != '')) {
//    defaultState = selObj.value;
//  }

  var foundState = false;
  // Empty options just in case new drop down is shorter
  if ( selObj.type == 'select-one' ) {
    for (var i = 0; i < selObj.options.length; i++) {
      selObj.options[i] = null;
    }
    selObj.options.length=null;
    selObj.options[0] = new Option('Select State','');
    selObj.selectedIndex = 0;
  }
  // Populate the drop down with states from the selected country
  var stateLineArray = state.split("|");  // Split into lines
  var optionCntr = 1;
  for (var loop = 0; loop < stateLineArray.length; loop++) {
    lineArray = stateLineArray[loop].split(":");
    countryCode  = TrimString(lineArray[0]);
    stateCode    = TrimString(lineArray[1]);
    stateName    = TrimString(lineArray[2]);
  if (document.getElementById(countrySelectName).value == countryCode && countryCode != '' ) {
    // If it's a input element, change it to a select
      if ( selObj.type == 'text' ) {
        parentObj = document.getElementById(stateSelectName).parentNode;
        parentObj.removeChild(selObj);
        var inputSel = document.createElement("SELECT");
        inputSel.setAttribute("name",stateSelectName);
        inputSel.setAttribute("id",stateSelectName);
        if (ChangeEvent) inputSel.setAttribute("onChange", ChangeEvent);
        parentObj.appendChild(inputSel) ;
        selObj = document.getElementById(stateSelectName);
        selObj.options[0] = new Option('Select State','');
        selObj.selectedIndex = 0;
      }
      if ( stateCode != '' ) {
        selObj.options[optionCntr] = new Option(stateName, stateCode);
      }
      // See if it's selected from a previous post
      if ( stateCode == defaultState ) {
        selObj.selectedIndex = optionCntr;
      }
      foundState = true;
      optionCntr++
    }
  }
  // If the country has no states, change the select to a text box
  if ( ! foundState ) {
    parentObj = document.getElementById(stateSelectName).parentNode;
    parentObj.removeChild(selObj);
  // Create the Input Field
    var inputEl = document.createElement("INPUT");
    inputEl.setAttribute("id", stateSelectName);
    inputEl.setAttribute("type", "text");
    inputEl.setAttribute("name", stateSelectName);
    inputEl.setAttribute("size", 20);
    inputEl.setAttribute("maxlength", 50);
    inputEl.setAttribute("value", defaultState);
    if (ChangeEvent) inputEl.setAttribute("onchange", ChangeEvent);
    parentObj.appendChild(inputEl) ;
  }
}

