var aplicacao = location.href.substring(location.href.lastIndexOf('=')+1, location.href.length);

if(aplicacao.indexOf("#") > -1)
	aplicacao = aplicacao.split("#")[0];

switch (aplicacao)	{
	case "caminhao_articulado" : infos = "caminhao_articulado";
		nomeAplicacao = 'Caminhão Articulado';
		break;		
		
	case "caminhao_rigido" : infos = "caminhao_rigido";
		nomeAplicacao = 'Caminhão Rígido';
		break;	
		
		
	case "pas_carregadeiras" : infos = "pas_carregadeiras";
		nomeAplicacao = 'Pás Carregadeiras';
		break;
	case "motoscrapers" : infos = "motoscrapers";
		nomeAplicacao = 'Motoscrapers';
		break;
	case "movimentadores" : infos = "movimentadores";
		nomeAplicacao = 'Movimentadores de Container';
		break;
	case "retro_escavadeiras" : infos = "retro_escavadeiras";
		nomeAplicacao = 'Carregadeira Subterrânea';
		break;	
	case "carregadeiras" : infos = "carregadeiras";
		nomeAplicacao = 'Carregadeiras';
		break;	
	case "rolo_compactador" : infos = "rolo_compactador";
		nomeAplicacao = 'Rolo Compactador';
		break;
	case "motoniveladoras" : infos = "motoniveladoras";
		nomeAplicacao = 'Motoniveladoras';
		break;		
	case "compactadores" : infos = "compactadores";
		nomeAplicacao = 'Compactadores';
		break;			
	case "procurar" : infos = "procurar";
		nomeAplicacao = 'Procurar';
		break;			
	default:
		infos = "caminhao_rigido";
		nomeAplicacao = 'Caminhão Rígido';
	break;
}

//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 carregarXML(){
	//carrega o xml
	xmlhttp.open('GET', '/catalogo_pneus/fora_estrada/js/catalogo_pneus.xml', true);
	xmlhttp.onreadystatechange = function() {
		//verifica se ele ja esta totalmente carregado
		if(xmlhttp.readyState == 4){ //4 = completamente carregado
			if(xmlhttp.status == 200){ //o xml foi carregado com sucesso
				//atribui o resultado na variavel
				parsearXML(xmlhttp.responseXML);
			}
		}
	}
	xmlhttp.send(null);
}

//variaveis com valores constantes que controlam os atributos(indicam os indices no xml), não alterar seus valores
var attr_url = 0;
var attr_descricao = 1;

var medida = 0;
var capacidade_lonas = 1;
var aros_admitidos = 2;
var pressao = 3;
var carga_maxima = 4;
var largura_secao = 5;
var diametro_total = 6;
var raio_estatico = 7;
var area_contato = 8;
var profundidade_desenho = 9;
var anel_vedacao = 10
var aplicacoes = 11;

var arrPneus = new Array();

//parsearXML(): le o xml e trata seus dados para montar a tabela de pneu
//	- xml: objeto do HTTP Request carregado com os dados do XML
function parsearXML(xml){
	var pneus = xml.getElementsByTagName('pneus')[0].getElementsByTagName('pneu');
	for(var i = 0; i < pneus.length; i ++){
		//cria o objeto pneu
		var pneu = new Object();
		//cria os atributos
		pneu.url = pneus[i].attributes[attr_url].value;
		pneu.descricao = pneus[i].attributes[attr_descricao].value;
		//monta o array de atributos de cada pneu
		pneu.atributos = new Array();
		for(var j = 0; j < pneus[i].childNodes.length; j ++){
			var m = pneus[i].childNodes[j];
			if (m.nodeType == 1){
				var obj = new Object();
				obj.medida =  m.attributes[medida].value;
				obj.capacidade_lonas =  m.attributes[capacidade_lonas].value;
				obj.aros_admitidos = m.attributes[aros_admitidos].value
				obj.pressao =  m.attributes[pressao].value;
				obj.carga_maxima =  m.attributes[carga_maxima].value;
				obj.largura_secao =  m.attributes[largura_secao].value;
				obj.diametro_total =  m.attributes[diametro_total].value;
				obj.raio_estatico =  m.attributes[raio_estatico].value;
				obj.area_contato =  m.attributes[area_contato].value;
				obj.profundidade_desenho =  m.attributes[profundidade_desenho].value;
				obj.anel_vedacao =  m.attributes[anel_vedacao].value;
				obj.aplicacoes =  m.attributes[aplicacoes].value;
				
				pneu.atributos.push(obj);
			}
			delete m;
		}
		//adiciona o objeto pneu ao array pneus
		arrPneus.push(pneu);
		delete pneu;
	}
}

// busca pneu por nome
function buscarPneu(valor){
	var arrResultados = new Array();
	for(var i = 0; i < arrPneus.length; i ++){
		//Verifica se existe pneu com o nome passado em valor
		if(arrPneus[i].descricao.toLowerCase().indexOf(valor.toLowerCase()) > -1)
			//se existir adiciona resultado ao array
			arrResultados.push(arrPneus[i]);
	}	
	//chama a funçao para mostrar os resultados da busca
	imprimirPneu(arrResultados);
}

function imprimirPneu(arr){
	var str = '<table cellpadding="0" cellspacing="1" width="100%" class="tabelaPneusCaminhoes" border="0"><tr><th>Pneu</th><th>Medidas</th><th>Cap. de lonas(PR)</th><th>Aros admitidos</th><th>Pressão de ar recomendada (Lb/Pol2)</th><th>Capacidade de carga (kg)</th><th>Largura da seção (mm)</th><th>Diâmetro total (mm)</th><th>Raio estático (mm)</th><th>Área de contato (cm<sup>2</sup>)</th><th>Profundidade do desenho</th><th>Anel de vedação (O`ring)</th></tr>';
	//verifica se obteve resultado na busca
	if(arr.length > 0){
		for(var i = 0; i < arr.length; i ++){
			//agrupa os resultados em uma string
			var cont = 0
			for (var j= 0; j < arr[i].atributos.length; j ++){
				//verifica se esta na pagina de busca, para colocar link no nome do produto
				str += '<tr>';										
				if(cont == 0){
					str += '<td  rowspan="' + arr[i].atributos.length + '">' + arr[i].descricao + '</td>';
					cont = 1
				}
				str += '<td>' + arr[i].atributos[j].medida + '</td>';
				str += '<td>' + arr[i].atributos[j].capacidade_lonas + '</td>';
				str += '<td>' + arr[i].atributos[j].aros_admitidos + '</td>';
				str += '<td>' + arr[i].atributos[j].pressao + '</td>';
				str += '<td>' + arr[i].atributos[j].carga_maxima + '</td>';
				str += '<td>' + arr[i].atributos[j].largura_secao + '</td>';
				str += '<td>' + arr[i].atributos[j].diametro_total + '</td>';
				str += '<td>' + arr[i].atributos[j].raio_estatico + '</td>';
				str += '<td>' + arr[i].atributos[j].area_contato + '</td>';
				str += '<td>' + arr[i].atributos[j].profundidade_desenho + '</td>';
				str += '<td>' + arr[i].atributos[j].anel_vedacao + '</td>';				
				str += '</tr>';
			}
		}
	}else{
		//se nao retornar valor, mostra mensagem
		str += '<tr><td align="center" colspan="12"><i>Nenhum pneu encontrado</i></td></tr>';
	}
	str += '</table>';
	//escreve resultado	
	document.getElementById('resultado').innerHTML = str;
}

//busca pneu, por atributo
//tipo = atributo, por exemplo medida
//valor = valor a procurar
function buscarAtributo(tipo, valor, aplicacao)
{
	//cria array para armazenar os resultados da busca
	var arrResultados = new Array();	
	
	//Flag que armazena se a aplicação do pneu condiz com a da página
	var aplicacaoOk = false;
	
	for(var i = 0; i < arrPneus.length; i ++)
	{
		var p = arrPneus[i];
		for(var j = 0; j < p.atributos.length; j ++)
		{
			//Verifica se o pneu está dentro da aplicação correta
			aplicacaoOk = (p.atributos[j].aplicacoes.indexOf(aplicacao) > -1)
			
			//Caso não tenha passado nenhuma aplicação, atribui true no flag para pegar todas
			if(!aplicacao) aplicacaoOk = true;
			
			//Verifica se existe pneu com a caracteristica passada em valor
			if(p.atributos[j][tipo] == valor && aplicacaoOk){
				//se existir adiciona resultado ao array
				arrResultados.push([p, j]);
			}
		}		
	}	
	//chama a funçao para mostrar os resultados
	imprimirResultados(arrResultados);
	
	location.hash = "#resultado";
}


function imprimirResultados(arr){
	var str = '<div id="destaqueMedida"><b>Pneus disponíveis para a medida '+arr[0][0].atributos[arr[0][1]].medida+'</b></div>';
	str += '<table cellpadding="0" cellspacing="1" width="100%" class="tabelaPneusCaminhoes" border="0"><tr><th>Pneu</th><th>Medidas</th><th>Cap. de lonas(PR)</th><th>Aros admitidos</th><th>Pressão de ar recomendada (Lb/Pol2)</th><th>Capacidade de carga (kg)</th><th>Largura da seção (mm)</th><th>Diâmetro total (mm)</th><th>Raio estático (mm)</th><th>Área de contato (cm<sup>2</sup>)</th><th>Profundidade do desenho</th><th>Anel de vedação (O`ring)</th></tr>';
	//verifica se obteve resultado na busca
	if(arr.length > 0){
		for(var i = 0; i < arr.length; i ++){
			str += '<tr>';			
			str += "<td><a href='" + arr[i][0].url + "' class='item'>" + arr[i][0].descricao + "</a></td>";
			//imprime todos os valores
			for(var k in arr[i][0].atributos[arr[i][1]]){
				if(k != 'aplicacoes')
					str += '<td>' + arr[i][0].atributos[arr[i][1]][k] + '</td>';
			}
			str += '</tr>';
		}
	}else
		//se nao retornar valor, mostra mensagem
		str += '<tr><td align="center" colspan="11"> <i>Nenhum pneu encontrado</i></td></tr>';
	str += '</table>';
	//escreve resultado
	document.getElementById('resultado').innerHTML = str;
}

function isRadial(valor)
{
	return (valor.indexOf('R') > -1);
}

//monta combo com as medidas de acordo com o trator selecionado
function montaPagina(aplicacao){

	//cria array para aramazenar as informaçoes dos pneus
	var diagonais = new Object();
	diagonais.nomes = new Array();
	diagonais.links = new Array();
	diagonais.combo = new Array();
	
	var radiais = new Object();
	radiais.nomes = new Array();
	radiais.links = new Array();
	radiais.combo = new Array();
	
	//le todos os pneus do xml
	for (var i = 0; i < arrPneus.length; i ++)
	{
		//se existir pega as medidas do pneu
		for (var j = 0; j < arrPneus[i].atributos.length; j ++)
		{
			//verifica se contem a aplicaçao passada no parametro
			if(arrPneus[i].atributos[j].aplicacoes.indexOf(aplicacao) > -1)
			{
				//guarda o nome do pneu e o link
				if(radiais.nomes.join(',').indexOf(arrPneus[i].descricao) < 0 && isRadial(arrPneus[i].atributos[j].medida))
				{					
					radiais.nomes.push(arrPneus[i].descricao);
					radiais.links.push(arrPneus[i].url);
				}
					
				else if(diagonais.nomes.join(',').indexOf(arrPneus[i].descricao) < 0 && !isRadial(arrPneus[i].atributos[j].medida))
				{
					diagonais.nomes.push(arrPneus[i].descricao);
					diagonais.links.push(arrPneus[i].url);
				}
				
				
				//verifica se a medida ainda nao foi adicionada				
				if(radiais.combo.join(',').indexOf(arrPneus[i].atributos[j].medida) < 0 && isRadial(arrPneus[i].atributos[j].medida))
				{
					radiais.combo.push(arrPneus[i].atributos[j].medida);
				}
					
				else if(diagonais.combo.join(',').indexOf(arrPneus[i].atributos[j].medida) < 0 && !isRadial(arrPneus[i].atributos[j].medida))
				{
					diagonais.combo.push(arrPneus[i].atributos[j].medida);
				}
			}			
		}
		
	}
	
	//limpa a div para escrever o combo
	document.getElementById('medidaRadial').innerHTML = '';
	document.getElementById('medidaDiagonal').innerHTML = '';
	
	var htmlCombo = '';
	var fotos = '';

	if(radiais.combo.length > 0)
	{
		
		ordena(radiais.combo);
		//Armazena os resultados dos pneus radiais em forma de html
		for(var k = 0; k < radiais.combo.length; k ++)
		{
			htmlCombo += '<a href="javascript:buscarAtributo(\'medida\', \''+radiais.combo[k]+'\', \'' + aplicacao + '\')" class="link">'+radiais.combo[k]+'</a><br>';
		}
		
		if (htmlCombo == "") htmlCombo = 'Nenhum pneu encontrado'
		
		//Imprime as medidas dos pneus radiais
		document.getElementById('medidaRadial').innerHTML = htmlCombo;
		
		htmlCombo = '';
		
		//monta o html das fotos dos pneus diagonais, colocando link para o produto
		for(var k = 0; k < radiais.nomes.length; k ++)
		{
			var imagem = radiais.links[k].substring(radiais.links[k].lastIndexOf('/')+1,radiais.links[k].lastIndexOf('.'));
			fotos += '<div class="imgPneu"><div class="center"><a href="'+radiais.links[k]+'" class="link"><img src="images/'+imagem+'.jpg" alt="" border="0"><br><b>'+radiais.nomes[k]+'</b></a></div></div>';
		}
		
		//Imprime o html na página
		document.getElementById('fotosPneusRadial').innerHTML = fotos;
		
		fotos = '';
	}
	
	else
	{
		TrocarConteudo('Diagonal')
		document.getElementById('abaRadial').style.display = 'none';
		document.getElementById('abaDiagonal').className = 'diagonalUnica';
	}
	
	if(diagonais.combo.length > 0)
	{
		ordena(diagonais.combo);
		
		//Armazena os resultados dos pneus diagonais em forma de html
		for(var k = 0; k < diagonais.combo.length; k ++)
		{
			htmlCombo += '<a href="javascript:buscarAtributo(\'medida\', \''+diagonais.combo[k]+'\', \'' + aplicacao + '\')" class="link">'+diagonais.combo[k]+'</a><br>';
		}
		
		if (htmlCombo == "") htmlCombo = 'Nenhum pneu encontrado'
		
		//Imprime as medidas dos pneus diagonais
		document.getElementById('medidaDiagonal').innerHTML = htmlCombo;
		
		//monta o html das fotos dos pneus diagonais, colocando link para o produto
		for(var k = 0; k < diagonais.nomes.length; k ++)
		{
			var imagem = diagonais.links[k].substring(diagonais.links[k].lastIndexOf('/')+1,diagonais.links[k].lastIndexOf('.'));
			fotos += '<div class="imgPneu"><div class="center"><a href="'+diagonais.links[k]+'" class="link"><img src="images/'+imagem+'.gif" alt="" border="0"><br><b>'+diagonais.nomes[k]+'</b></a></div></div>';
		}
		
		//Imprime o html na página, e redimensiona a div
		document.getElementById('fotosPneusDiagonal').innerHTML = fotos;
	}
	
	else
	{
		TrocarConteudo('Radial')
		document.getElementById('abaDiagonal').style.display = 'none';
		document.getElementById('abaRadial').className = 'radialUnica';
	}
	
	
	//coloca a imagem da aplicacao
	document.getElementById('foto').src = "images/"+ infos +".jpg";
	document.getElementById('foto').alt = nomeAplicacao;
	
	//escreve o nome da aplicacao
	document.getElementById('nomeAplicacao').innerHTML = '<b>'+nomeAplicacao+'</b>';
}

//monta combo com todos os pneus
function comboPneu(){
	var it = document.getElementById('comboInformacoesTecnicas');
	var d = document.getElementById('desenhos');
	
	var descricoes = new Array();
	
	//le todos os pneus do xml
	for (var i = 0; i < arrPneus.length; i ++)
	{
		//verifica se a medida ainda nao foi adicionada				
		if(descricoes.join(',').indexOf(arrPneus[i].descricao) < 0)
		{
			descricoes.push([arrPneus[i].url, arrPneus[i].descricao]);
		}
	}
	
	ordena(descricoes);	
	
	d.options[0] = new Option("Selecione", "#");
	it.options[0] = new Option("Código de aplicação", "#");
	
	for(var i = 1; i <= descricoes.length; i ++)
	{
		d.options[i] = new Option(descricoes[i - 1][1], descricoes[i - 1][0]);
		it.options[i] = new Option(descricoes[i - 1][1], descricoes[i - 1][0]);
	}
	
	it.disabled = false;
	d.disabled = false;
	
	//alert(descricoes.join('\n'));
}

function CarregarMedidas()
{
	var m = document.getElementById('medidas');
	var medidas = new Array();
	
	//le todos os pneus do xml
	for (var i = 0; i < arrPneus.length; i ++)
	{
		//se existir pega as medidas do pneu
		for (var j = 0; j < arrPneus[i].atributos.length; j ++)
		{
			//verifica se a medida ainda nao foi adicionada				
			if(medidas.join(',').indexOf(arrPneus[i].atributos[j].medida) < 0)
			{
				medidas.push(arrPneus[i].atributos[j].medida);
			}
		}
	}
	
	ordena(medidas);
	
	m.options[0] = new Option("Selecione", "#");
	
	for(var i = 1; i <= medidas.length; i ++)
	{
		m.options[i] = new Option(medidas[i - 1], medidas[i - 1]);
	}
	
	m.disabled = false;
}


//função para ordenar os indices de um Array
function ordena(array)
{
	for(i = 0; i < array.length; i ++)
	{
		for(j = 0; j < array.length; j ++)
		{
			if(array[j] > array[j + 1])
			{
				var temp = array[j];
				array[j] = array[j + 1];
				array[j + 1] = temp;
			}
		}
	}
}
		
//linkCombo(): linka um combo
//	- idCombo: id do combo a linkar
function linkCombo(idCombo){
	location.href = document.getElementById(idCombo).value;
}

