var state = '\
AU:ACT:Australian Capital Territory|\
AU:NT:Northern Territory|\
AU:NSW:New South Wales|\
AU:QLD:Queensland|\
AU:SA:South Australia|\
AU:TAS:Tasmania|\
AU:VIC:Victoria|\
AU:WA:Western Australia|\
CA:AB:Alberta|\
CA:BC:British Columbia|\
CA:MB:Manitoba|\
CA:NB:New Brunswick|\
CA:NL:Newfoundland and Labrador|\
CA:NS:Nova Scotia|\
CA:NT:Northwest Territories|\
CA:NU:Nunavut|\
CA:ON:Ontario|\
CA:PE:Prince Edward Island|\
CA:QC:Quebec|\
CA:SK:Saskatchewan|\
CA:YT:Yukon Territory|\
US:AL:Alabama|\
US:AK:Alaska|\
US:AZ:Arizona|\
US:AR:Arkansas|\
US:CA:California|\
US:CO:Colorado|\
US:CT:Connecticut|\
US:DE:Delaware|\
US:FL:Florida|\
US:GA:Georgia|\
US:HI:Hawaii|\
US:ID:Idaho|\
US:IL:Illinois|\
US:IN:Indiana|\
US:IA:Iowa|\
US:KS:Kansas|\
US:KY:Kentucky|\
US:LA:Louisiana|\
US:ME:Maine|\
US:MD:Maryland|\
US:MA:Massachusetts|\
US:MI:Michigan|\
US:MN:Minnesota|\
US:MS:Mississippi|\
US:MO:Missouri|\
US:MT:Montana|\
US:NE:Nebraska|\
US:NV:Nevada|\
US:NH:New Hampshire|\
US:NJ:New Jersey|\
US:NM:New Mexico|\
US:NY:New York|\
US:NC:North Carolina|\
US:ND:North Dakota|\
US:OH:Ohio|\
US:OK:Oklahoma|\
US:OR:Oregon|\
US:PA:Pennsylvania|\
US:RI:Rhode Island|\
US:SC:South Carolina|\
US:SD:South Dakota|\
US:TN:Tennessee|\
US:TX:Texas|\
US:UT:Utah|\
US:VT:Vermont|\
US:VA:Virginia|\
US:WA:Washington|\
US:WV:West Virginia|\
US:WI:Wisconsin|\
US:WY:Wyoming|\
';

function Trim(sInString) {
  if ( sInString ) {
    sInString = sInString.replace( /^\s+/g, "" );
    return sInString.replace( /\s+$/g, "" );
  }
}

function populateState() {
  var selObj = document.getElementById('state');
  var foundState = false;
  if (selObj != null) {
    // Empty options
    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('Please select one','');
      selObj.selectedIndex = 0;
    }
    // Populate states
    var stateLineArray = state.split("|");
    var optionCntr = 1;
    for (var loop = 0; loop < stateLineArray.length; loop++) {
      var lineArray = stateLineArray[loop].split(":");
      var countryCode  = Trim(lineArray[0]);
      var stateCode    = Trim(lineArray[1]);
      var stateName    = Trim(lineArray[2]);
      if (document.getElementById('country').value == countryCode && countryCode != '' ) {
	    // If it's a input element, change it to a select
        if ( selObj.type == 'text' ) {
          parentObj = document.getElementById('state').parentNode;
          parentObj.removeChild(selObj);
          var inputSel = document.createElement("SELECT");
          inputSel.setAttribute("name","state");
          inputSel.setAttribute("id","state");
		  inputSel.style.cssText = "width: 220px"
          parentObj.appendChild(inputSel) ;
          selObj = document.getElementById('state');
          selObj.options[0] = new Option('Please select one','');
          selObj.selectedIndex = 0;
        }
        if ( stateCode != '' ) {
          selObj.options[optionCntr] = new Option(stateName, stateCode);
        }
	    foundState = true;
        optionCntr++
      }
    }
	// If the country has no states, change the select to a text box
    if (!foundState ) {
      parentObj = document.getElementById('state').parentNode;
      parentObj.removeChild(selObj);
      // Create the Input Field
      var inputEl = document.createElement("INPUT");
      inputEl.setAttribute("id", "state");
      inputEl.setAttribute("type", "text");
      inputEl.setAttribute("name", "state");
      inputEl.setAttribute("size", 30);
	  inputEl.style.cssText = "width: 220px"
      parentObj.appendChild(inputEl) ;
    }
  }
}