//Cria o objeto HTTP Request
try{
    var xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(e){var xmlhttp = false;}
    }
}

//carregarMapa(): inicia o carreganto do xml com os dados do site
function carregarMapa(){
	//carrega o xml
	xmlhttp.open('GET', '../xml/bread.xml', true);
	xmlhttp.onreadystatechange = function() {
		//verifica se ele ja esta totalmente carregado
		if(xmlhttp.readyState == 4){ //4 = completamente carregado
			if(xmlhttp.status == 200){ //200 = eu não lembro
				//trata os dados do xml
				parsearXML(xmlhttp.responseXML);
			}
		}
	}
	xmlhttp.send(null);
}

//variaveis com valores constantes que controlam os atributos, não alterar seus valores
var url = 0;
var descricao = 1;

//destino do mapa
var conteudo;

//parsearXML(): le o xml e trata seus dados para montar o mapa do site
//	- xml: objeto do HTTP Request carregado com os dados do XML
function parsearXML(xml){
	//destino do mapa
	conteudo = document.getElementById('mapa');
	//abre a <ul> do mapa do site
	conteudo.innerHTML = '&lt;ul&gt;';
	//armazena os dados do xml
	var base = xml.getElementsByTagName('site')[0];
	///monta o mapa do site baseado nos dados do xml
	criarItensMapa(base.childNodes);
	//insere na tela
	var resultado = conteudo.innerHTML;
	//fecha a <ul> do mapa do site
	resultado += '&lt;/ul&gt;';
	//da um replace dos caracteres de escape para as tags html, pois se for inserida diretamente a tag html, o script fecha ela automaticamente antes de montar o mapa
	resultado = resultado.split("&gt;").join(">");
	resultado = resultado.split("&lt;").join("<");
	//insere na tela
	conteudo.innerHTML = resultado;
}


//criarItensMapa(): cria os itens do mapa do site, a partir de um item base
function criarItensMapa(itens) {
	//Varre todos os filhos e cria a arvore dos mesmos
	for (var no = 0; no < itens.length; no++) {
		if(itens[no].nodeType == 1)
		{
			if(!itens[no].attributes[2])
				criarItemMapa(itens[no]);
		}
	}
}

//criarItemMapa(): Cria um item do mapa do site. se esse item tiver filho, chama novamente a mesma função
function criarItemMapa(item) {
	if(item.nodeType == 1){ //verficica se o nodeType é um elemento xml (1 = elemento xml, 3 = elemento '#text')
		if(item.attributes[descricao].value != 'Mapa do Site'){
			conteudo.innerHTML += '&lt;li&gt;';
			if(item.attributes[url].value.indexOf('javascript') == -1)
				conteudo.innerHTML += '<a href="' + item.attributes[url].value + '">' + item.attributes[descricao].value + '</a>';
			else
				conteudo.innerHTML += item.attributes[descricao].value;
			
			if (item.hasChildNodes) {
				conteudo.innerHTML += '&lt;ul&gt;';
				criarItensMapa(item.childNodes);
				conteudo.innerHTML += '&lt;/ul&gt;';
			}
			conteudo.innerHTML += '&lt;/li&gt;';
		}
	}
}