function getCountryData(countryCode, url, updateHTML, selectedRegionCode, useRegionAll)
{
	if (countryCode)
	{
		data = 'country=' + escape(countryCode);
		if (selectedRegionCode)
		{
			data = data + '&selectedRegion='+ selectedRegionCode;
		}
		if (useRegionAll)
		{
			data = data + '&useRegionAll=true';
		}

		$.ajax({
			url: url,
			data: data,
			dataType: 'json',
			error: function(response, status, error) {
						window.alert("Unable to get country region. If this continues, contact support.");				
			},
			success: function(json) {
				// Update the region select drop down.
				var regionHTML = json.regionHTML;
				var regions = updateHTML.regions;
				var regionCodeRqd = json.regionCodeRequired;
				var postalCodeRqd = json.postalCodeRequired;
				for(var i=0; i < regions.length; i++)
				{
					var result = regionHTML.replace('%ID%', regions[i].id);
					result = result.replace('%NAME%', regions[i].name);
					if (regions[i].onchange)
					{
						result = result.replace('%ONCHANGE%', regions[i].onchange);
					}
					else
					{
						result = result.replace('%ONCHANGE%', '');
					}
	
					if (regions[i].styleClass)
					{
						result = result.replace('%STYLECLASS%', regions[i].styleClass);
					}
					else
					{
						result = result.replace('%STYLECLASS%', '');
					}
	
					if (regions[i].disabled)
					{
						result = result.replace("%DISABLED%", "disabled=\"disabled\"");
					}
					else
					{
						result = result.replace("%DISABLED%", "");
					}
	
					document.getElementById(regions[i].divId).innerHTML = result;

					// Check to see if the region code is required
					if (regions[i].divRegionContainer)
					{
						if (regionCodeRqd)
						{
							
							if (regions[i].id == 'stateTaxRegion')
							{
								$("#"+regions[i].divRegionContainer).css('visibility', 'visible');
							}
							else
							{
								$("#"+regions[i].divRegionContainer).show();
							}
						}
						else
						{	
							if (regions[i].id == 'stateTaxRegion')
							{
								$("#"+regions[i].divRegionContainer).css('visibility', 'hidden');
							}
							else
							{
								$("#"+regions[i].divRegionContainer).hide();
							}
						}
					}
					// Check to see if the postal code is required
					if (regions[i].divPostalContainer)
					{
						if (postalCodeRqd)
						{
							$("#"+regions[i].divPostalContainer).show();
						}
						else
						{	// Hide the postal div and clear the postal select box
							$("#"+regions[i].divPostalContainer).hide();
							$("#"+regions[i].postCodeId).val('');
						}
					}
				}
	
				// Update the phone hint.
				var ph = json.phoneHint;
				var phoneHints = updateHTML.phoneHints;
				if (phoneHints)
				{
					for(var i=0; i<phoneHints.length; i++)
					{
						if (ph && jQuery.trim(ph) != '')
						{
							// This method expect a span tag inside the element that contains the phone hint
							$('#' + phoneHints[i] + ' span').text(ph);
							$('#' + phoneHints[i]).show();
						}
						else
						{
							$('#' + phoneHints[i]).hide();
						}
					}
				}
	
				if (postalCodeRqd)
				{
					// Update the postal code hint.
					var postHint = json.postalCodeHint;
					var postalHints = updateHTML.postalHints;
					if (postalHints)
					{
						for(var i=0; i<postalHints.length; i++)
						{
							if (postHint && jQuery.trim(postHint) != '')
							{
								// This method expect a span tag inside the element that contains the phone hint
								$('#' + postalHints[i] + ' span').text(postHint);
								$('#' + postalHints[i]).show();
							}
							else
							{
								$('#' + postalHints[i]).hide();
							}
						}
					}
				}
			}
		});
	}
}