function getStates(country_field, state_field)
{
	c_value = document.kernel_form.elements[country_field].value;
	
	if ((c_value == 'CA' || c_value == 'US')) {

		country = '';
		state	  = '';
		s = '';
				
		if ( state_field == 'state_province' ) {
			initial_length = document.kernel_form.elements[state_field].options.length;;
				
			for (var i = initial_length - 1; i >= 0; i--) {
				if ( typeof(document.kernel_form.elements[state_field].options[i]) != 'undefined' ) {
					document.kernel_form.elements[state_field].options[i] = null; 
				}
			}
		
			state_reg = 'reg_' + state_field;
				
			document.kernel_form.elements[state_field].disabled = false;
			document.kernel_form.elements[state_field].options[0] = new Option('', ''); // add an new empty option
	
			for(country in countries) { // base countries list
				if (c_value == country) {
					i=1;
					for(state in countries[country]) { // base states list
						document.kernel_form.elements[state_field].options[i] = new Option(countries[country][state], state);
						i++;
					}
				}
			}
		}
		document.getElementById("statedropdown").style.display = 'block';
		if ( document.getElementById("stateeditbox") ) {
			document.getElementById("stateeditbox").style.display = 'none';
		}
		// 
		if ( c_value == 'US' ) {
			// special zip field
			document.getElementById("zip-us").style.display = 'block';
			
			if ( document.getElementById("zip-other") ) {
				document.getElementById("zip-other").style.display = 'none';
			}
				
		}
	}
	else {
		document.getElementById("statedropdown").style.display = 'none';
		if ( document.getElementById("stateeditbox") ) {
			document.getElementById("stateeditbox").style.display = 'block';
		}
		
		// hide us zip
		if ( document.getElementById("zip-us") ) {
			document.getElementById("zip-us").style.display = 'none';
		}

		// show us other
		if ( document.getElementById("zip-other") ) {
			document.getElementById("zip-other").style.display = 'block';
		}
	}
}

function ValidateZip(aInput, aLength)
{
	aZip = aInput.value;
	if ( !aZip.match(/[0-9]/)) { 
		aInput.value = '';
	}
	if ( aZip.length > aLength ) {
		aNewZip = aZip.substr(0, aLength); 
		aInput.value = aNewZip;
	}
}