//alterado em 22/09/2009 por Tallis

//DEFINICOES
var config = new Array();
config['loadingDiv'] = "loadingDiv"; //o id da div loadingDiv

//array que determina qual distancia do topo da pagina serao posicionadas as divs
var divPositions = new Array(0, 350, 350, 850, 1100, 1100, 1500); 

//frame é o frame acessado
//se for uma string vazia, ignora
function setValue(id, value, frame) {
	
	//se frame for diferente de string significa que estamos trabalhando num frame, senao
	//estamos no topo da window
	if (typeof(frame)!=undefined&&frame!="") {b=1;a = frame;}
	else {b=0;a = window;}
	return a.document.getElementById(id).value = value;
}

//frame é o objeto frame acessado
//se for uma string vazia, ignora
function setInnerHTML(id, value, frame) {
	
	//se frame for diferente de string significa que estamos trabalhando num frame, senao
	//estamos no topo da window
	if (typeof(frame)!=undefined&&frame!="") {b=1;a = frame;}
	else {b=0;a = window;}
//alert("b: "+b);
//alert("frame: "+frame);
//alert("document.forms.length: "+document.forms.length);
//alert("window.frames.length: "+window.frames.length);
//alert("a.frames.length: "+a.frames.length);
	return a.document.getElementById(id).innerHTML = value;
}

function ajaxRequest(){
	var activexmodes=['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'] //activeX versions to check for in IE
	if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
		for (var i=0; i<activexmodes.length; i++){
			try{ return new ActiveXObject(activexmodes[i]); }
			catch(e){}
		}
	} else if (window.XMLHttpRequest) // if Mozilla, Safari etc
		return new XMLHttpRequest();
	else return false
}

function XML() {
	this.path;
	this.workFile;
	this.teste = 5;
	this.ajaxRequest = new ajaxRequest();
	this.lastSent = null; //ultimo xml enviado (Date)
	this.currentSent = null; //xml atual (Date)
	this.error = ''; //string que descreve o ultimo erro que ocorreu

	//funciona: Firefox, Chrome
	//nao funciona: IE
	try { this.ajaxRequest.overrideMimeType('text/xml'); } catch (e) {}
}

XML.prototype.abort = function () { this.ajaxRequest.abort(); }
XML.prototype.getTeste = function() { return this.teste; }
XML.prototype.setWorkFile = function(arg) { this.workFile = arg; }
XML.prototype.getWorkFile = function() { return this.workFile; }
XML.prototype.setPath = function(arg) { this.path = arg; }
XML.prototype.getPath = function() { return this.path; }
XML.prototype.setDevelop = function(arg) { this.develop = arg; }
XML.prototype.getDevelop = function() { return this.develop; }

//id: id do registro no banco de dados de onde deverá ser buscado o conteudo
//table: tabela onde sera procurado no banco de dados
XML.prototype.fetchContentSingle = function (id, table) {
	if (id <= 0) {
		this.error = 'ID inválida';
		return;
	}
	
	var url= this.path+this.workFile+'&in=xml&option=fetchContentSingle&table='+table+'&id='+id;
//alert(url);

	this.ajaxRequest.open("GET",url,false);
	this.ajaxRequest.send(null);
if (this.develop) alert(this.ajaxRequest.responseText);
	return this.ajaxRequest.responseXML; //retrieve result as an XML object
}

//cid: cid dos registros no banco de dados de onde deverá ser buscado o conteudo
//table: tabela onde sera procurado no banco de dados
//columns: array colunas da tabela que serao retornadas
XML.prototype.fetchContentColumns = function (cid, table, columns) {
	if (cid <= 0) {
		this.error = 'CID inválida';
		return;
	}
	columns = columns.join(",");
	
	var url= this.path+this.workFile+'&in=xml&option=fetchContentColumns&table='+table+'&columns='+columns+'&cid='+cid;
//alert(url);

	this.ajaxRequest.open("GET",url,false);
	this.ajaxRequest.send(null);
//alert(this.ajaxRequest.responseText);
	return this.ajaxRequest.responseXML; //retrieve result as an XML object
}

//event e: é o evento ocorrido
//string frame: é uma string que indica o frame acessado, por exemplo: window.frames[0] é o primeiro frame
//se for uma string vazia, define que os objetos estao no topo (window)
//table: tabela onde sera procurado no banco de dados
//divId: div onde serao colocados os resultados
//divContent: div que aparece na frente de tudo, ao clicar em um resultado esta devera ser escondida
//elementId: o id do input onde sera colocado o resultado quando clicado no link
//obs: o valor do resultado sera colocado no span de id = 'span_'+elementId
XML.prototype.showHint = function (str, table, divId, divContent, elementId, frame, e) {

	var window_event = window.event; //assume que a window do evento é a window (para o IE)
	
	//se frame for uma string e de tamanho > 0 significa que estamos trabalhando num frame, senao
	//estamos no topo da window
	try {
		b = (frame!=""&&frame.length>0) ? 1 : 0;
		window_event = window.top.event; //se estamos num frame, assessamos a window top
	} catch (e) {
		b = 0;
	}
	a = b ? frame : "window"; //a é uma string
	
	//window.event	-->IE
	//e				-->Firefox, Chrome
	evento = typeof e == "undefined" ? window_event : e;
	var tecla = evento.keyCode;
	
	//Esc
	if (tecla==27) {
		//esconde a div
		showDiv('', '');
		return;
	}

	//           <-          espaco          a              z                0              9                0              9
	if (!(tecla==8 || tecla==32 || (tecla >= 65 && tecla <= 90) || (tecla >= 48 && tecla <= 57) || (tecla >= 96 && tecla <= 105))) {
		//esconde a imagem carregando
		document.getElementById(divId).innerHTML = '';
		return;
	}
	
	html = '';
	if (str.length<3) {
		document.getElementById(divId).innerHTML = html;
		return;
	}
	
	var url= this.path+this.workFile+'&in=xml&table='+table+'&SearchTbAux='+str;
if (this.develop) alert('URL:'+url);

	//se ocorreu uma nova chamada a esta funcao mas a chamada anterior ainda está esperando retorno, então abortamos
	//funciona apenas no firefox
	var readyState = this.ajaxRequest.readyState;
	//  UNINITIALIZED || COMPLETED
	if (readyState!=0 && readyState!=4) {
		this.ajaxRequest.abort();
//		alert("abortou");
	}

	this.ajaxRequest.open("GET",url,false);
	this.ajaxRequest.send(null);
if (this.develop) alert(this.ajaxRequest.responseText);
	var xmldata=this.ajaxRequest.responseXML; //retrieve result as an XML object
	var x=xmldata.getElementsByTagName(table);
if (this.develop) alert('NUMERO DE REGISTROS: '+x.length);
	check = 0;
	html = '<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#EBEBEB" align="center"><tr><td><table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#EFEFEF"><tr height="25" class="arial_1133"><td align="center" background="'+this.path+'imagens/iface_content_fd_top.jpg"><strong>nome</strong></a></td></tr>';
	for (i=0;i<x.length;i++) {
		
		if (elementId.indexOf('pai') >= 0) { str = 'pai'; str2 = 'mae'; }
		else { str = 'mae'; str2 = 'pai'; }

		campoEncontrado = x[i].getElementsByTagName('campoEncontrado')[0].childNodes[0].nodeValue;
		
		//alert(elementId);
		switch (campoEncontrado) {
			case "nome":
				nome='nome';
				pai='gen_pai';
				mae='gen_mae';
				pai_avo1='gen_pai_avo1'; pai_avo1_avo1='gen_pai_avo1_avo1'; pai_avo1_avo2='gen_pai_avo1_avo2';
				pai_avo2='gen_pai_avo2'; pai_avo2_avo1='gen_pai_avo2_avo1'; pai_avo2_avo2='gen_pai_avo2_avo2';
				mae_avo1='gen_mae_avo1'; mae_avo1_avo1='gen_mae_avo1_avo1'; mae_avo1_avo2='gen_mae_avo1_avo2';
				mae_avo2='gen_mae_avo2'; mae_avo2_avo1='gen_mae_avo2_avo1'; mae_avo2_avo2='gen_mae_avo2_avo2';
			break;
			case "gen_pai":
				nome='gen_pai';
				pai='gen_pai_avo1';
				mae='gen_pai_avo2';
				pai_avo1='gen_pai_avo1_avo1'; pai_avo1_avo1=''; pai_avo1_avo2='';
				pai_avo2='gen_pai_avo1_avo2'; pai_avo2_avo1=''; pai_avo2_avo2='';
				mae_avo1='gen_pai_avo2_avo1'; mae_avo1_avo1=''; mae_avo1_avo2='';
				mae_avo2='gen_pai_avo2_avo2'; mae_avo2_avo1=''; mae_avo2_avo2='';
			break;
			case "gen_mae":
				nome='gen_mae';
				pai='gen_mae_avo1';
				mae='gen_mae_avo2';
				pai_avo1='gen_mae_avo1_avo1'; pai_avo1_avo1=''; pai_avo1_avo2='';
				pai_avo2='gen_mae_avo1_avo2'; pai_avo2_avo1=''; pai_avo2_avo2='';
				mae_avo1='gen_mae_avo2_avo1'; mae_avo1_avo1=''; mae_avo1_avo2='';
				mae_avo2='gen_mae_avo2_avo2'; mae_avo2_avo1=''; mae_avo2_avo2='';
			break;
			case "gen_pai_avo1":
				nome='gen_pai_avo1';
				pai='gen_pai_avo1_avo1';
				mae='gen_pai_avo1_avo2';
				pai_avo1=''; pai_avo1_avo1=''; pai_avo1_avo2='';
				pai_avo2=''; pai_avo2_avo1=''; pai_avo2_avo2='';
				mae_avo1=''; mae_avo1_avo1=''; mae_avo1_avo2='';
				mae_avo2=''; mae_avo2_avo1=''; mae_avo2_avo2='';
			break;
			case "gen_pai_avo2":
				nome='gen_pai_avo2';
				pai='gen_pai_avo2_avo1';
				mae='gen_pai_avo2_avo2';
				pai_avo1=''; pai_avo1_avo1=''; pai_avo1_avo2='';
				pai_avo2=''; pai_avo2_avo1=''; pai_avo2_avo2='';
				mae_avo1=''; mae_avo1_avo1=''; mae_avo1_avo2='';
				mae_avo2=''; mae_avo2_avo1=''; mae_avo2_avo2='';
			break;
			case "gen_mae_avo1":
				nome='gen_mae_avo1';
				pai='gen_mae_avo1_avo1';
				mae='gen_mae_avo1_avo2';
				pai_avo1=''; pai_avo1_avo1=''; pai_avo1_avo2='';
				pai_avo2=''; pai_avo2_avo1=''; pai_avo2_avo2='';
				mae_avo1=''; mae_avo1_avo1=''; mae_avo1_avo2='';
				mae_avo2=''; mae_avo2_avo1=''; mae_avo2_avo2='';
			break;
			case "gen_mae_avo2":
				nome='gen_mae_avo2';
				pai='gen_mae_avo2_avo1';
				mae='gen_mae_avo2_avo2';
				pai_avo1=''; pai_avo1_avo1=''; pai_avo1_avo2='';
				pai_avo2=''; pai_avo2_avo1=''; pai_avo2_avo2='';
				mae_avo1=''; mae_avo1_avo1=''; mae_avo1_avo2='';
				mae_avo2=''; mae_avo2_avo1=''; mae_avo2_avo2='';
			break;
			default:
			break;
		}
if (this.develop) alert('campoEncontrado: '+campoEncontrado+'\nnome:'+nome+'\npai:'+pai+'\nmae:'+mae+'\npai_avo1:'+pai_avo1+'\npai_avo2:'+pai_avo2+'\nmae_avo1:'+mae_avo1+'\nmae_avo2:'+mae_avo2+'\npai_avo1_avo1:'+pai_avo1_avo1+'\npai_avo1_avo2:'+pai_avo1_avo2+'\nmae_avo1_avo1:'+mae_avo1_avo1+'\nmae_avo1_avo2:'+mae_avo1_avo2);
		switch (elementId) {
			case "gen_pai":
			case "gen_mae":
				gen_pai = nome;
				gen_pai_avo1 = pai; gen_pai_avo2 = mae;
				gen_pai_avo1_avo1 = pai_avo1; gen_pai_avo1_avo2 = pai_avo2;
				gen_pai_avo2_avo1 = mae_avo1; gen_pai_avo2_avo2 = mae_avo2;
			break;
			case "gen_pai_avo1":
			case "gen_mae_avo1":
				gen_pai = '';
				gen_pai_avo1 = nome; gen_pai_avo2 = '';
				gen_pai_avo1_avo1 = pai; gen_pai_avo1_avo2 = mae;
				gen_pai_avo2_avo1 = ''; gen_pai_avo2_avo2 = '';
			break;
			case "gen_pai_avo2":
			case "gen_mae_avo2":
				gen_pai = '';
				gen_pai_avo1 = ''; gen_pai_avo2 = nome;
				gen_pai_avo1_avo1 = ''; gen_pai_avo1_avo2 = '';
				gen_pai_avo2_avo1 = pai; gen_pai_avo2_avo2 = mae;
			break;
			default:
			break;
		}
if (this.develop) alert('elementId: '+elementId+'\ngen_pai:'+gen_pai+'\ngen_pai_avo1:'+gen_pai_avo1+'\ngen_pai_avo2:'+gen_pai_avo2+'\ngen_pai_avo1_avo1:'+gen_pai_avo1_avo1+'\ngen_pai_avo1_avo2:'+gen_pai_avo1_avo2+'\ngen_pai_avo2_avo1:'+gen_pai_avo2_avo1+'\ngen_pai_avo2_avo2:'+gen_pai_avo2_avo2);

		titulo = x[i].getElementsByTagName(campoEncontrado)[0].childNodes[0].nodeValue;
		gen_pai = gen_pai!= '' ? x[i].getElementsByTagName(gen_pai)[0].childNodes[0].nodeValue : '';
		gen_pai_avo1 =  gen_pai_avo1!= '' ? x[i].getElementsByTagName(gen_pai_avo1)[0].childNodes[0].nodeValue : '';
		gen_pai_avo2 =  gen_pai_avo2!= '' ? x[i].getElementsByTagName(gen_pai_avo2)[0].childNodes[0].nodeValue : '';
		gen_pai_avo1_avo1 =  gen_pai_avo1_avo1!= '' ? x[i].getElementsByTagName(gen_pai_avo1_avo1)[0].childNodes[0].nodeValue : '';
		gen_pai_avo1_avo2 =  gen_pai_avo1_avo2!= '' ? x[i].getElementsByTagName(gen_pai_avo1_avo2)[0].childNodes[0].nodeValue : '';
		gen_pai_avo2_avo1 =  gen_pai_avo2_avo1!= '' ? x[i].getElementsByTagName(gen_pai_avo2_avo1)[0].childNodes[0].nodeValue : '';
		gen_pai_avo2_avo2 =  gen_pai_avo2_avo2!= '' ? x[i].getElementsByTagName(gen_pai_avo2_avo2)[0].childNodes[0].nodeValue : '';

if (this.develop) alert('Valores das tags:\nelementId:'+elementId+'\ntitulo:'+titulo+'\ngen_pai:'+gen_pai+'\ngen_pai_avo1:'+gen_pai_avo1+'\ngen_pai_avo2:'+gen_pai_avo2+'\ngen_pai_avo1_avo1:'+gen_pai_avo1_avo1+'\ngen_pai_avo1_avo2:'+gen_pai_avo1_avo2+'\ngen_pai_avo2_avo1:'+gen_pai_avo2_avo1+'\ngen_pai_avo2_avo2:'+gen_pai_avo2_avo2);
		
		//se os valores sao o codigo *-* significa vazio, entao devemos trocar por vazio
		gen_pai = gen_pai=='*-*' ? '' : gen_pai;
		gen_pai_avo1 = gen_pai_avo1=='*-*' ? '' : gen_pai_avo1;
		gen_pai_avo2 = gen_pai_avo2=='*-*' ? '' : gen_pai_avo2;
		gen_pai_avo1_avo1 = gen_pai_avo1_avo1=='*-*' ? '' : gen_pai_avo1_avo1;
		gen_pai_avo1_avo2 = gen_pai_avo1_avo2=='*-*' ? '' : gen_pai_avo1_avo2;
		gen_pai_avo2_avo1 = gen_pai_avo2_avo1=='*-*' ? '' : gen_pai_avo2_avo1;
		gen_pai_avo2_avo2 = gen_pai_avo2_avo2=='*-*' ? '' : gen_pai_avo2_avo2;
		
//		id = x[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
		if(check == 1) { bg = '#F6F6F6'; check--; }
		else { bg = '#FFFFFF'; check++; }
//alert(gen_pai+'\n'+gen_mae+'\n'+gen_pai_avo1+'\n'+gen_pai_avo2+'\n'+gen_pai_avo1_avo1+'\n'+gen_pai_avo1_avo2+'\n'+gen_pai_avo2_avo1+'\n'+gen_pai_avo2_avo2+'\n'+gen_mae_avo1+'\n'+gen_mae_avo2+'\n'+gen_mae_avo1_avo1+'\n'+gen_mae_avo2_avo2);
		bg = ' bgcolor='+bg+' id="aL'+i+'" name="aL'+i+'" onmouseover="javascript:changeLine(\'aL'+i+'\',\'#FFF2CC\')" onmouseout="javascript:changeLine(\'aL'+i+'\',\''+bg+'\')"';
		html += '<tr><td height="22" '+bg+' class="arial_1133" style="cursor: pointer;" onclick=" ';
//		html += ' setValue(\''+elementId+'\', \''+nome+'\','+a+');';
		html += ' hideDiv(\''+divContent+'\','+a+'); ';
		html += ' preencheCampos(\''+elementId+'\',\''+gen_pai+'\', \''+gen_pai_avo1+'\', \''+gen_pai_avo2+'\', \''+gen_pai_avo1_avo1+'\', \''+gen_pai_avo1_avo2+'\', \''+gen_pai_avo2_avo1+'\', \''+gen_pai_avo2_avo2+'\');"';
		html += '>'+titulo+'</td></tr>';
if (this.develop) alert(html);
	}
	html += '</table></td></tr></table>';
//alert(html);
	if (x.length==0) html = '<center><br>Sem Resultados</center>';
	
	try {
		document.getElementById(divId).innerHTML = html;
	} catch (e) {
//alert(e.message+divId);
	}
}

function preencheCampos(elementId,gen_pai,gen_pai_avo1,gen_pai_avo2,gen_pai_avo1_avo1,gen_pai_avo1_avo2,gen_pai_avo2_avo1,gen_pai_avo2_avo2) {
//alert('preencheCampos:\n'+elementId+'\n'+gen_pai_avo1+'\n'+gen_pai_avo2+'\n'+gen_pai_avo1_avo1+'\n'+gen_pai_avo1_avo2+'\n'+gen_pai_avo2_avo1+'\n'+gen_pai_avo2_avo2);
		switch (elementId) {
			case 'gen_pai':
				document.getElementById('gen_pai').value = gen_pai;
				document.getElementById('gen_pai_avo1').value = gen_pai_avo1;
				document.getElementById('gen_pai_avo2').value = gen_pai_avo2;
				document.getElementById('gen_pai_avo1_avo1').value = gen_pai_avo1_avo1;
				document.getElementById('gen_pai_avo1_avo2').value = gen_pai_avo1_avo2;
				document.getElementById('gen_pai_avo2_avo1').value = gen_pai_avo2_avo1;
				document.getElementById('gen_pai_avo2_avo2').value = gen_pai_avo2_avo2;
			break;
			case 'gen_pai_avo1':
				document.getElementById('gen_pai_avo1').value = gen_pai_avo1;
				document.getElementById('gen_pai_avo1_avo1').value = gen_pai_avo1_avo1;
				document.getElementById('gen_pai_avo1_avo2').value = gen_pai_avo1_avo2;
			break;
			case 'gen_pai_avo2':
				document.getElementById('gen_pai_avo2').value = gen_pai_avo2;
				document.getElementById('gen_pai_avo2_avo1').value = gen_pai_avo2_avo1;
				document.getElementById('gen_pai_avo2_avo2').value = gen_pai_avo2_avo2;
			break;
			case 'gen_mae':
				document.getElementById('gen_mae').value = gen_pai;
				document.getElementById('gen_mae_avo1').value = gen_pai_avo1;
				document.getElementById('gen_mae_avo2').value = gen_pai_avo2;
				document.getElementById('gen_mae_avo1_avo1').value = gen_pai_avo1_avo1;
				document.getElementById('gen_mae_avo1_avo2').value = gen_pai_avo1_avo2;
				document.getElementById('gen_mae_avo2_avo1').value = gen_pai_avo2_avo1;
				document.getElementById('gen_mae_avo2_avo2').value = gen_pai_avo2_avo2;
			break;
			case 'gen_mae_avo1':
				document.getElementById('gen_mae_avo1').value = gen_pai_avo1;
				document.getElementById('gen_mae_avo1_avo1').value = gen_pai_avo1_avo1;
				document.getElementById('gen_mae_avo1_avo2').value = gen_pai_avo1_avo2;
			break;
			case 'gen_mae_avo2':
				document.getElementById('gen_mae_avo2').value = gen_pai_avo2;
				document.getElementById('gen_mae_avo2_avo1').value = gen_pai_avo2_avo1;
				document.getElementById('gen_mae_avo2_avo2').value = gen_pai_avo2_avo2;
			break;
		}
}

var pai = Array('pai4','pai5');
var pai3 = Array('pai6','pai7');
var pai2 = Array('pai','pai4','pai5','pai3','pai6','pai7');
var mae = Array('mae4','mae5');
var mae3 = Array('mae6','mae7');
var mae2 = Array('mae','mae4','mae5','mae3','mae6','mae7');

//id: id do cavalo no banco de dados
//elementId: id do input html
function buscaOutros(id, elementId) {
//alert(id+elementId);
	switch (elementId) {
		case 'pai': busca(id, pai); break;
		case 'pai2': busca(id, pai2); break;
		case 'pai3': busca(id, pai3); break;
		case 'mae': busca(id, mae); break;
		case 'mae2': busca(id, mae2); break;
		case 'mae3': busca(id, mae3); break;
		
	}
}
function busca(id, pai){
	var nome = '';
	for (i in pai) {
		if (pai[i]=="pai"||pai[i]=="pai3"||pai[i]=="mae"||pai[i]=="mae3") nome = foo.buscaNome(id, pai[i]);
		else foo.buscaNome(nome, pai[i]);
	}
}

XML.prototype.buscaNome=function(id, divId) {
//	alert(id+' '+divId);
	var table = 'animais_cavalocrioulo';
	
	var url= this.path+this.workFile+'&in=xml_id&table='+table+'&id='+id+'&columns=nome-id';
//alert(url);
	//apenas para firefox
	var readyState = this.ajaxRequest.readyState;
	//  UNINITIALIZED || COMPLETED
	if (readyState!=0 && readyState!=4) {
		this.ajaxRequest.abort();
//		alert("abortou");
	}
	
	this.ajaxRequest.open("GET",url,false);
	this.ajaxRequest.send(null);
//alert(this.ajaxRequest.responseText);
	var xmldata=this.ajaxRequest.responseXML; //retrieve result as an XML object
	var x=xmldata.getElementsByTagName(table);
//alert(x.length);
	for (i=0;i<x.length;i++) {
		title = x[i].getElementsByTagName('nome')[0].childNodes[0].nodeValue;
		id = x[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
	}
	document.getElementById(divId).value = title;
	//foo.buscaNome(id, pai[i]);
}

//mostra a div e posiciona no lugar correto da pagina
//se divNumber for uma string vazia ele é ignorado
function showDiv(divId, divNumber) {
	var nr = 1;
	while(theDiv = document.getElementById('img'+nr)) {
		nr++;
		theDiv.style.display = 'none';
	}
	if (theDiv = window.top.document.getElementById(divId)) {
		if (divNumber!='') theDiv.style.top = divPositions[divNumber];
		theDiv.style.display = 'block';
	}
}

//hides the div
function hideDiv(divId) {
	if (theDiv = window.top.document.getElementById(divId)) {
		theDiv.style.display = 'none';
	}
}
