function iniciaAjax()
{
//verifica se o navegado é o Iternet Explorer ou outros navegadores
if(window.ActiveXObject)
{
//estância o objeto ActiveX
ajax = new ActiveXObject("Microsoft.XMLHTTP");	
}
else
{
ajax = new XMLHttpRequest();
}

return ajax;
}

function carregando()
{
//limpa as cidades já existentes
document.getElementById('cidades').innerHTML = "";
//pega o local onde a combo de cidades será exibida]
var local = document.getElementById('cidades');

//cria uma combo select
var combo = document.createElement('select');
combo.setAttribute('name','cidade');
combo.setAttribute('id','cidade');	

var opcao = document.createElement('option');
opcao.setAttribute('value', 00);
opcao.appendChild(document.createTextNode("Carregando..."));

//adiciona essa opção na combo
combo.appendChild(opcao);

//coloca a combo dentro do div
local.appendChild(combo);
}

function mostrarCidades(id)
{

//inicia o AJAX
ajax = iniciaAjax();

ajax.onreadystatechange = mostrarCidades2;

//abre a conexão com o servidor
ajax.open("GET", "consulta.php?id="+id);

//informa que está carregando as cidades
carregando();

//envia a requisição para o servidor
ajax.send();
}

function mostrarCidades2()
{
//verifica o status da requisição, se for o processamento está completo 
if (ajax.readyState == 4) 
{ 
//verifica o número do status, se for diferente de 200 tem algum erro 
if (ajax.status == 200) 
{
var xml = ajax.responseXML;
if(xml != null)
{
if(xml.hasChildNodes())
{	
//limpa as cidades já existentes
document.getElementById('cidades').innerHTML = "";

//pega o local onde a combo de cidades será exibida]
var local = document.getElementById('cidades');

//cria uma combo select
var combo = document.createElement('select');
combo.setAttribute('name','cidade');
combo.setAttribute('id','cidade');

//pega todas as cidades qae retornou do XML
var nos = xml.getElementsByTagName('cidade');

//faz um loop para percorrer todas as tags produto
for(cont = 0; cont < nos.length; cont++)
{
//verifica se é o IE
if(window.ActiveXObject)
{	
var idCidade = nos[cont].childNodes[0].firstChild.nodeValue;
var cidade = nos[cont].childNodes[1].firstChild.nodeValue;
}
else
{
var idCidade = nos[cont].childNodes[1].firstChild.nodeValue;
var cidade = nos[cont].childNodes[3].firstChild.nodeValue;
}	

//cria um option do select
var opcao = document.createElement('option');
opcao.setAttribute('value', idCidade);
opcao.appendChild(document.createTextNode(cidade));

//adiciona essa opção na combo
combo.appendChild(opcao);

}

//coloca a combo dentro do div
local.appendChild(combo);
}
}
} 
else 
{
alert("Houve um problema ao carregar a lista de cidades:\n" + ajax.statusText);
}	
} 
}