// State table
// 
// To edit the list, just delete a line or add a line.  Order is important.  The order 
// displayed is the order it appears on the drop down.
//
var state = '\
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|\
AB:Alberta|\
NS:Nova Scotia|\
BC:British Columbia|\
ON:Ontario|\
MB:Manitoba|\
PE:Prince Edward Island|\
NB:New Brunswick|\
QC:Quebec|\
NL:Newfoundland and Labrador|\
SK:Saskatchewan|\
NT:Northwest Territories|\
YT:Yukon|\
NU:Nunavut|\
AS:American Samoa|\
GU:Guam|\
MH:Marshall Islands|\
FM:Micronesia|\
PW:Palau|\
PR:Puerto Rico|\
AE:Armed Forces Africa|\
AA:Armed Forces Americas|\
AE:Armed Forces Canada|\
AE:Armed Forces Europe|\
AE:Armed Forces Middle East|\
AP:Armed Forces Pacific|\
Foreign:Foreign|\
Other:Other|\
';


// Save the country & state field names
var stateFieldCfgArray   = document.getElementById('cs_config_state_field').value.split(' ');
// Save the names of the fields that hold the country & state default values
var stateDefaultCfgArray   = document.getElementById('cs_config_state_default').value.split(' ');
var defaultState = false;

function TrimString(sInString) {
   
   if ( sInString ) {

      sInString = sInString.replace( /^\s+/g, "" );// strip leading
      return sInString.replace( /\s+$/g, "" );// strip trailing
   }
}


function populateState( statestateIdName ) {

   var selObj = document.getElementById( stateIdName );
   var foundState = false;

   // Empty options just in case new drop down is shorter
   //
   if ( selObj.type == 'select-one' ) {

      selObj.options.length = 0;

      selObj.options[0] = new Option('Please Choose One...','');
      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-1; loop++) {

      lineArray = stateLineArray[loop].split(":");

      
      stateCode    = TrimString(lineArray[0]);
      stateName    = TrimString(lineArray[1]);


	 // If it's a input element, change it to a select
	 //
	 if ( selObj.type == 'text' ) {

		parentObj = document.getElementById( stateIdName ).parentNode;
		parentObj.removeChild(selObj);

		var inputSel = document.createElement("SELECT");
		inputSel.setAttribute("name","state"); 
		inputSel.setAttribute("id", stateIdName ); 

		parentObj.appendChild(inputSel) ;

		selObj = document.getElementById( stateIdName );
		selObj.options[0] = new Option('Select State','');
		selObj.selectedIndex = 0;
	 }
   
	 if ( stateCode != '' ) {

		selObj.options[optionCntr] = new Option(stateName, stateCode);
	 }
	 foundState = true;
	 optionCntr++
   }
}

function initState() {

   for (var loop = 0; loop < stateFieldCfgArray.length; loop++) {
   
      stateIdName    = stateFieldCfgArray[loop];

      // Read the default value hidden fields
      defaultState   = document.getElementById( stateDefaultCfgArray[loop] ).value;

      populateState( stateIdName );
   }
}
