	var checkflag = "false";
	var libDir   = "";

	function setLibDir(dir) {
		libDir = dir;
	}
	
    function tryToDownload(url)
    {
  
        oIFrm = document.getElementById('myIFrm');
        oIFrm.src = url;
        //alert(url);
  
    }    
    
	function check(form) {
		if (checkflag == "false") {
		    for (i=0;i<form.elements.length;i++){
				  if(form.elements[i].type == "checkbox"){
					form.elements[i].checked = true;
					checkflag = "true";
				}			
			}
		    return "Desmarcar Todos";
		} else {
			for (i=0;i<form.elements.length;i++)
			  	if(form.elements[i].type == "checkbox"){
					form.elements[i].checked = false;
					checkflag = "false";			
				}
		    return "Marcar Todos";
	  	}
	}

	function campoCep_blur(arrFields) {
		consultaCep(obj.value);
	}	

	function campoCep_blur_Consultor(arrFields) {
		consultaCep(obj.value);
	}	

	function refreshArquivos(id,prod,empresa){
		makeRequestWithContainerAndWithFrames('lista_arquivos_ajax.php?id='+id+'&prod_id='+prod+'&empresa_id='+empresa,'lista_arquivos_ajax', 1);
        makeRequestWithContainerAndWithFrames('subtopo.php?prod_id='+prod+'tipo=1&id1='+id,'subtopo',0); 
		makeRequestWithContainer('i_conteudo.php?obj=conteudo&mtd=inicial&tipo=1&id1='+id,'conteudo_lista');
	}

// http://www.mattkruse.com/javascript/validations/source.html
// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

// HISTORY
// ------------------------------------------------------------------
// December 29, 2003: Added the option to specify a delimiter for
//    multiple valued input field via getInputValue(), etc.

//-------------------------------------------------------------------
// Trim functions
//   Returns string with whitespace trimmed
//-------------------------------------------------------------------
function LTrim(str){
	if (str==null){return null;}
	for(var i=0;str.charAt(i)==" ";i++);
	return str.substring(i,str.length);
	}
function RTrim(str){
	if (str==null){return null;}
	for(var i=str.length-1;str.charAt(i)==" ";i--);
	return str.substring(0,i+1);
	}
function Trim(str){return LTrim(RTrim(str));}
function LTrimAll(str) {
	if (str==null){return str;}
	for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++);
	return str.substring(i,str.length);
	}
function RTrimAll(str) {
	if (str==null){return str;}
	for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--);
	return str.substring(0,i+1);
	}
function TrimAll(str) {
	return LTrimAll(RTrimAll(str));
	}
//-------------------------------------------------------------------
// isNull(value)
//   Returns true if value is null
//-------------------------------------------------------------------
function isNull(val){return(val==null);}

//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
		}
	return true;
	}

//-------------------------------------------------------------------
// isInteger(value)
//   Returns true if value contains all digits
//-------------------------------------------------------------------
function isInteger(val){
	if (isBlank(val)){return false;}
	for(var i=0;i<val.length;i++){
		if(!isDigit(val.charAt(i))){return false;}
		}
	return true;
	}

//-------------------------------------------------------------------
// isNumeric(value)
//   Returns true if value contains a positive float value
//-------------------------------------------------------------------
function isNumeric(val){return(parseFloat(val,10)==(val*1));}

//-------------------------------------------------------------------
// isArray(obj)
// Returns true if the object is an array, else false
//-------------------------------------------------------------------
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}

//-------------------------------------------------------------------
// isDigit(value)
//   Returns true if value is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num) {
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
	}

//-------------------------------------------------------------------
// setNullIfBlank(input_object)
//   Sets a form field to "" if it isBlank()
//-------------------------------------------------------------------
function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}

//-------------------------------------------------------------------
// setFieldsToUpperCase(input_object)
//   Sets value of form field toUpperCase() for all fields passed
//-------------------------------------------------------------------
function setFieldsToUpperCase(){
	for(var i=0;i<arguments.length;i++) {
		arguments[i].value = arguments[i].value.toUpperCase();
		}
	}

//-------------------------------------------------------------------
// disallowBlank(input_object[,message[,true]])
//   Checks a form field for a blank value. Optionally alerts if 
//   blank and focuses
//-------------------------------------------------------------------
function disallowBlank(obj){
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;
	if (isBlank(getInputValue(obj))){
		if(!isBlank(msg)){alert(msg);}
		if(dofocus){
			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
			obj.focus();
			}
		return true;
		}
	return false;
	}

//-------------------------------------------------------------------
// disallowModify(input_object[,message[,true]])
//   Checks a form field for a value different than defaultValue. 
//   Optionally alerts and focuses
//-------------------------------------------------------------------
function disallowModify(obj){
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;
	if (getInputValue(obj)!=getInputDefaultValue(obj)){
		if(!isBlank(msg)){alert(msg);}
		if(dofocus){
			if (isArray(obj) && (typeof(obj.type)=="undefined")) {obj=obj[0];}
			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password") { obj.select(); }
			obj.focus();
			}
		setInputValue(obj,getInputDefaultValue(obj));
		return true;
		}
	return false;
	}

//-------------------------------------------------------------------
// commifyArray(array[,delimiter])
//   Take an array of values and turn it into a comma-separated string
//   Pass an optional second argument to specify a delimiter other than
//   comma.
//-------------------------------------------------------------------
function commifyArray(obj,delimiter){
	if (typeof(delimiter)=="undefined" || delimiter==null) {
		delimiter = ",";
		}
	var s="";
	if(obj==null||obj.length<=0){return s;}
	for(var i=0;i<obj.length;i++){
		s=s+((s=="")?"":delimiter)+obj[i].toString();
		}
	return s;
	}

//-------------------------------------------------------------------
// getSingleInputValue(input_object,use_default,delimiter)
//   Utility function used by others
//-------------------------------------------------------------------
function getSingleInputValue(obj,use_default,delimiter) {
	switch(obj.type){
		case 'radio': case 'checkbox': return(((use_default)?obj.defaultChecked:obj.checked)?obj.value:null);
		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
		case 'password': return((use_default)?null:obj.value);
		case 'select-one':
			if (obj.options==null) { return null; }
			if(use_default){
				var o=obj.options;
				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].value;}}
				return o[0].value;
				}
			if (obj.selectedIndex<0){return null;}
			return(obj.options.length>0)?obj.options[obj.selectedIndex].value:null;
		case 'select-multiple': 
			if (obj.options==null) { return null; }
			var values=new Array();
			for(var i=0;i<obj.options.length;i++) {
				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
					values[values.length]=obj.options[i].value;
					}
				}
			return (values.length==0)?null:commifyArray(values,delimiter);
		}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
	return null;
	}

//-------------------------------------------------------------------
// getSingleInputText(input_object,use_default,delimiter)
//   Utility function used by others
//-------------------------------------------------------------------
function getSingleInputText(obj,use_default,delimiter) {
	switch(obj.type){
		case 'radio': case 'checkbox': 	return "";
		case 'text': case 'hidden': case 'textarea': return(use_default)?obj.defaultValue:obj.value;
		case 'password': return((use_default)?null:obj.value);
		case 'select-one':
			if (obj.options==null) { return null; }
			if(use_default){
				var o=obj.options;
				for(var i=0;i<o.length;i++){if(o[i].defaultSelected){return o[i].text;}}
				return o[0].text;
				}
			if (obj.selectedIndex<0){return null;}
			return(obj.options.length>0)?obj.options[obj.selectedIndex].text:null;
		case 'select-multiple': 
			if (obj.options==null) { return null; }
			var values=new Array();
			for(var i=0;i<obj.options.length;i++) {
				if((use_default&&obj.options[i].defaultSelected)||(!use_default&&obj.options[i].selected)) {
					values[values.length]=obj.options[i].text;
					}
				}
			return (values.length==0)?null:commifyArray(values,delimiter);
		}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
	return null;
	}

//-------------------------------------------------------------------
// setSingleInputValue(input_object,value)
//   Utility function used by others
//-------------------------------------------------------------------
function setSingleInputValue(obj,value) {
	switch(obj.type){
		case 'radio': case 'checkbox': if(obj.value==value){obj.checked=true;return true;}else{obj.checked=false;return false;}
		case 'text': case 'hidden': case 'textarea': case 'password': obj.value=value;return true;
		case 'select-one': case 'select-multiple': 
			var o=obj.options;
			for(var i=0;i<o.length;i++){
				if(o[i].value==value){o[i].selected=true;}
				else{o[i].selected=false;}
				}
			return true;
		}
	alert("FATAL ERROR: Field type "+obj.type+" is not supported for this function");
	return false;
	}

//-------------------------------------------------------------------
// getInputValue(input_object[,delimiter])
//   Get the value of any form input field
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,reset,submit)
//-------------------------------------------------------------------
function getInputValue(obj,delimiter) {
	var use_default=(arguments.length>2)?arguments[2]:false;
	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
		var values=new Array();
		for(var i=0;i<obj.length;i++){
			var v=getSingleInputValue(obj[i],use_default,delimiter);
			if(v!=null){values[values.length]=v;}
			}
		return commifyArray(values,delimiter);
		}
	return getSingleInputValue(obj,use_default,delimiter);
	}

//-------------------------------------------------------------------
// getInputText(input_object[,delimiter])
//   Get the displayed text of any form input field
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,reset,submit)
//-------------------------------------------------------------------
function getInputText(obj,delimiter) {
	var use_default=(arguments.length>2)?arguments[2]:false;
	if (isArray(obj) && (typeof(obj.type)=="undefined")) {
		var values=new Array();
		for(var i=0;i<obj.length;i++){
			var v=getSingleInputText(obj[i],use_default,delimiter);
			if(v!=null){values[values.length]=v;}
			}
		return commifyArray(values,delimiter);
		}
	return getSingleInputText(obj,use_default,delimiter);
	}

//-------------------------------------------------------------------
// getInputDefaultValue(input_object[,delimiter])
//   Get the default value of any form input field when it was created
//   Multiple-select fields are returned as comma-separated values, or
//   delmited by the optional second argument
//   (Doesn't support input types: button,file,password,reset,submit)
//-------------------------------------------------------------------
function getInputDefaultValue(obj,delimiter){return getInputValue(obj,delimiter,true);}

//-------------------------------------------------------------------
// isChanged(input_object)
//   Returns true if input object's value has changed since it was
//   created.
//-------------------------------------------------------------------
function isChanged(obj){return(getInputValue(obj)!=getInputDefaultValue(obj));}

//-------------------------------------------------------------------
// setInputValue(obj,value)
//   Set the value of any form field. In cases where no matching value
//   is available (select, radio, etc) then no option will be selected
//   (Doesn't support input types: button,file,password,reset,submit)
//-------------------------------------------------------------------
function setInputValue(obj,value) {
	var use_default=(arguments.length>1)?arguments[1]:false;
	if(isArray(obj)&&(typeof(obj.type)=="undefined")){
		for(var i=0;i<obj.length;i++){setSingleInputValue(obj[i],value);}
		}
	else{setSingleInputValue(obj,value);}
	}
	
//-------------------------------------------------------------------
// isFormModified(form_object,hidden_fields,ignore_fields)
//   Check to see if anything in a form has been changed. By default
//   it will check all visible form elements and ignore all hidden 
//   fields. 
//   You can pass a comma-separated list of field names to check in
//   addition to visible fields (for hiddens, etc).
//   You can also pass a comma-separated list of field names to be
//   ignored in the check.
//-------------------------------------------------------------------
function isFormModified(theform,hidden_fields,ignore_fields){
	if(hidden_fields==null){hidden_fields="";}
	if(ignore_fields==null){ignore_fields="";}
	var hiddenFields=new Object();
	var ignoreFields=new Object();
	var i,field;
	var hidden_fields_array=hidden_fields.split(',');
	for (i=0;i<hidden_fields_array.length;i++) {
		hiddenFields[Trim(hidden_fields_array[i])]=true;
		}
	var ignore_fields_array=ignore_fields.split(',');
	for (i=0;i<ignore_fields_array.length;i++) {
		ignoreFields[Trim(ignore_fields_array[i])]=true;
		}
	for (i=0;i<theform.elements.length;i++) {
		var changed=false;
		var name=theform.elements[i].name;
		if(!isBlank(name)){
			var type=theform.elements[i].type;
			if(!ignoreFields[name]){
				if(type=="hidden"&&hiddenFields[name]){changed=isChanged(theform[name]);}
				else if(type=="hidden"){changed=false;}
				else {changed=isChanged(theform[name]);}
				}
			}
		if(changed){return true;}
		}
		return false;
	}
	
	
/**
* Função responsável por retornar o valor de alguma propriedade do objeto
*
**/
function getStyle(id_obj, propriedade)
{
	var x = document.getElementById(id_obj);
	if (x.currentStyle)
	{
		var y = x.currentStyle[propriedade];
	}
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(propriedade);

	return y;
}


/**
* Função responsável por mudar a cor da linha de uma tabela
**/
function altera_cor_linha_tbl(id_linha, hexadec_cor)
{
	var linha = document.getElementById(id_linha);
	
	linha.style.backgroundColor = hexadec_cor;
}


/**
* Função responsável por alterar o valor de um objeto
**/
function altera_valor_obj(id_obj, valor)
{
	var obj = document.getElementById(id_obj);
	
	obj.value = valor;
}


/**
* Função responsável por alterar a ação de um evento do objeto
**/
function altera_acao_evento_obj(id_obj, evento, acao)
{
	var obj = document.getElementById(id_obj);
	
	obj.evento = acao;
}

/**
*	Função responsável por exibir a descrição de um link de passo / subpasso / subpasso2.
**/
function lnks(id,desc){
	if(document.getElementById('lnk'+id).innerHTML.indexOf('+') > -1){
		document.getElementById(id).innerHTML = desc;
		document.getElementById('lnk'+id).innerHTML = "<SPAN class='bold size14'>-</SPAN>";				
	}
	else{
		document.getElementById(id).innerHTML = "";
		document.getElementById('lnk'+id).innerHTML = "<SPAN class='bold size14'>+</SPAN>";			
	}
}

/**
 *   Chamada da tela de resumo do diagnóstico, serve para editar por ajax alguma resposta antes da confirmação de que está tudo certo com 
 *    as respostas;
 *    
 *    Para se usar essa função, é necessário que o arquivo ajax.js esteja carregado no browser
 **/
function editar_diagnostico_resumo(idResposta,salvar, resposta) 
{
	// Constantes - Tipos de Pergunta de diagnóstico
	var PERGUNTA_DISSERTATIVA = 1;
	var PERGUNTA_BOOLEANA     = 2;

	// Tipo da pergunta em questão
	tipo_pergunta = document.getElementById("tipo_pergunta" + idResposta).value;

	if(!(salvar)) {
	
		
		// Div onde está a resposta atual, e também onde deve ser exibido os campos de alterar
		divResposta = document.getElementById("divResposta" + idResposta);
		divResposta.innerHTML = "";
		
		
		if(tipo_pergunta == PERGUNTA_DISSERTATIVA) {
			
			textArea = document.createElement("TEXTAREA");
			textArea.rows = 5;
			textArea.cols = 30;
			textArea.name = 'resposta'+idResposta;
			textArea.id   = 'resposta'+idResposta;
			textArea.innerHTML = resposta;
			
			divResposta.appendChild(textArea);
			divResposta.innerHTML += "<BR>";
		
		} else if(tipo_pergunta == PERGUNTA_BOOLEANA) {
			
			//Antigament os radios buttons eram criados por DOM, porém, gerava erro ao tentar criá-lo checado. O erro ocorria em IE
			//Com isso a solução foi criar
			/*input1 = document.createElement("INPUT");
			input1.type  = 'radio';
			input1.name  = 'resposta1';
			input1.id  	 = 'resposta1';
			input1.value = '1';
			if(resposta == "Sim")
				input1.checked = true;*/
			var strChecked = "";
			var inputRadio = "";
			if(resposta == "Sim")
				strChecked = "checked";
			inputRadio = "<input type='radio' name='resposta1' id='resposta1' value='1' "+strChecked+">";
			//divResposta.appendChild(input1);
			divResposta.innerHTML += inputRadio+" Sim &nbsp;";
			
			
			
			/*input2 = document.createElement("INPUT");
			input2.type  = 'radio';
			input2.name  = 'resposta1';
			input2.id  	 = 'resposta0';
			input2.value = '0';
			if(resposta == "Não")
				input2.checked = true;*/
			strChecked = "";
			
			if(resposta == "Não")
				strChecked = "checked";
			inputRadio = "<input type='radio' name='resposta1' id='resposta0' value='0' "+strChecked+">";
			//divResposta.appendChild(input2);
			divResposta.innerHTML += inputRadio+" Não &nbsp; &nbsp;";
		
		}
		
		
		links_salvar_cancelar =	"<a href='#' onclick='editar_diagnostico_resumo("+idResposta+",true);' " +
				"onmouseover='Tip(\"Clique neste bot&atilde;o para<br> salvar a resposta.\")'" 				   +
				"onmouseout='UnTip()'><img src='interface/include/imagem/ico_sim_on.gif' align=absmiddle>&nbsp;SALVAR</a>&nbsp;"+
				"<a href='javaScript: void(0);' onmouseover='Tip(\"Clique neste bot&atilde;o para cancelar<br> a edição.\")'"+
				"onclick = 'document.getElementById(\"divResposta"+idResposta+"\").innerHTML = document.getElementById(\"backupResposta"+idResposta+"\").value;' "+
				"onmouseout='UnTip()'><img src='interface/include/imagem/ico_nao_on.gif' align=absmiddle>&nbsp;CANCELAR</a>";
		
		divResposta.innerHTML += links_salvar_cancelar;
		
		

	} else {
		//input com a última resposta
		inputUltimaResposta = document.getElementById('backupResposta'+idResposta);
		
		url = "index.php?obj=diagnostico&mtd=altera";
		
		postData = "idAltera=" + idResposta + "&resposta=";
		
		if(tipo_pergunta == PERGUNTA_DISSERTATIVA) {

			postData += escape(document.getElementById("resposta"+idResposta).value);
			inputUltimaResposta.value = document.getElementById("resposta"+idResposta).value;

		} else if(tipo_pergunta == PERGUNTA_BOOLEANA) {
			
			if(document.getElementById("resposta1").checked) {
				postData += "Verdadeiro";
				inputUltimaResposta.value = "Sim";
			} else if(document.getElementById("resposta0").checked) {
				postData += "Falso";
				inputUltimaResposta.value = "Não";
			}
		
		}
		
		makePostRequestWithContainer(url,"divResposta"+idResposta,postData);
		
		
	}

}

	function confirmacao_finalizar_conteudo_proximo(id,idproximo,msg,titulo) {
		if(!msg) {
			if(confirm("Confirma que implementou todas as tarefas relativas ao passo "+titulo+" ("+id+")?")) {
				makeRequestWithContainerAndAction("../../index.php?obj=conteudo&mtd=finalizar&finalizar_id="+id+"&proximoid="+idproximo,"","confirmacao_finalizar_conteudo_proximo("+id+","+idproximo+",true,'"+titulo+"')");
			}
		} else {
			alert("Passo: "+titulo+" finalizado com sucesso.");
			//top.frames[0].location.reload();
			//top.location.href = "interface/conteudo/i_conteudo.php?obj=conteudo&mtd=inicial&tipo=1&id1="+idproximo;
			makeRequestWithContainerAndWithFrames('subtopo.php?tipo=1&id1='+idproximo,'subtopo',0); 
			makeRequestWithContainer('i_conteudo.php?obj=conteudo&mtd=inicial&tipo=1&id1='+idproximo,'conteudo_lista');
			scroll(top,0);	
		}
		
	}
	
	function confirmacao_finalizar_conteudo(id,msg,titulo) {
		if(!msg) {
			if(confirm("Confirma que implementou todas as tarefas relativas ao passo "+titulo+" ("+id+")?")) {
				makeRequestWithContainerAndAction("../../index.php?obj=conteudo&mtd=finalizar&finalizar_id="+id,"","confirmacao_finalizar_conteudo("+id+",true,'"+titulo+"')");
			}
		} else {
			alert("Passo: "+titulo+" finalizado com sucesso.");
				makeRequestWithContainerAndWithFrames('subtopo.php?tipo=1&id1='+id,'subtopo',0); 
				makeRequestWithContainer('i_conteudo.php?obj=conteudo&mtd=inicial&tipo=1&id1='+id,'conteudo_lista');
		}
		
	}
	
	function confirmacao_finalizar_negado(msg) {
		alert(msg);
	}


	// Executa a consulta de cep via AJAX através do rca_consulta_cep.php e retorna 
	// a resposta numa div de id tmpCep.
	// Se for passado algum parâmetro pra action, o conteúdo de action será
	// chamado por um eval no fim da conclusão da requisição assíncrona.
	function consultaCep(cep,action) {
		tmpCep = document.getElementById("tmpCep");
		if(tmpCep == null) {
			tmpCep    		   = document.createElement("DIV");
			tmpCep.id 		   = "tmpCep";
			tmpCep.style.display = "none";
			document.body.appendChild(tmpCep);
		}
		tmpCep.innerHTML = "";
        
        tmpLocaliza = document.getElementById("tmpLocalizaCep");
		if(tmpLocaliza != null) {
            tmpLocaliza.innerHTML = "&nbsp;<img src='ajax-loader.gif' width='110' height='19' align='absmiddle' />&nbsp;Localizando CEP...";
		}
        
		url = libDir + "rca_consulta_cep.php?cepDest="+cep;
		if(action) {
			makeRequestWithContainerAndAction(url,"tmpCep",action);
		} else {
			makeRequestWithContainer(url,"tmpCep");
		}
	}

	// Chama o método consultaCep e pede que ele volte quando terminar a requisição (a partir do step 1)
	// Depois extrai as informações de endereço em variáveis separadas, e aplica no formulário
	function campoCep_blur(obj,step) {
		if(!step) {
			document.getElementById("endereco_cep").Value = "Por favor aguarde enquanto localizamos o CEP";
			consultaCep(obj.value,"campoCep_blur(null,1)");
		} else if(step==1) {
			cmpEstado   = document.getElementById("estado_cep");
			cmpEndereco = document.getElementById("endereco_cep");
			cmpBairro   = document.getElementById("bairro_cep");
			cmpCidade   = document.getElementById("cidade_cep");
						
			var estado;
			var endereco;
			var bairro;
			var cidade;
			
			endereco = document.retorno.endereco.value;
			estado = document.retorno.estado.value;
			bairro = document.retorno.bairro.value;
			cidade = document.retorno.cidade.value;
			erro   = document.retorno.erro_descricao.value;
							
			if (erro.replace(/^\s+|\s+$/g,'') != ''){
				alert('Cep digitado não foi localizado.\n\nRedigite o CEP e vá para o próximo campo.\n\nCaso esta mensagem seja exibida novamente, preencha manualmente o endereço.');				
			}
		
			cmpEstado.selectedIndex = -1;
			if(cmpEstado.options) {
				for(i=0;i<cmpEstado.options.length;i++) {
					txtEstado = cmpEstado.options[i].innerHTML.substring(0,3);
					if(txtEstado.replace(/^\s+|\s+$/g,'') == estado) {
						cmpEstado.selectedIndex = i;
						break;
					}				
				}
			}			
			
			//Para atualizar a lista de cidades antes de selecionar na lista,
			//se não não acha o valor na lista.
			if (cidade.replace(/^\s+|\s+$/g,'') != '') {
				makeRequestWithContainerAndAction2('interface/cidade.php?uf='+cmpEstado.value+'&cidade='+cidade,'divcidade',"limpaDivLocalizaCep()");	
			}
			
			if (endereco.replace(/^\s+|\s+$/g,'') != '') {
				cmpEndereco.value = endereco;
			} else {
				cmpEndereco.value = '';
			}
			
			if (bairro.replace(/^\s+|\s+$/g,'') != '') {
				cmpBairro.value = bairro;
			} else {
				cmpBairro.value = '';
			}				
			
			cmpEndereco.setFocus;
			cmpEndereco.setFocus;
			cmpEndereco.setFocus;
		
		}
	}
	
    function limpaDivLocalizaCep() {    
        tmpLocaliza = document.getElementById("tmpLocalizaCep");
        if(tmpLocaliza != null) {
            tmpLocaliza.innerHTML = "";
        }
    }    
    
	function campoCep_blur2(obj,step) {
		if(!step) {
			document.getElementById("endereco_cep").Value = "Por favor aguarde enquanto localizamos o CEP";
			consultaCep(obj.value,"campoCep_blur2(null,1)");
		} else if(step==1) {
			cmpEstado   = document.getElementById("estado_cep");
			cmpEndereco = document.getElementById("endereco_cep");
			cmpBairro   = document.getElementById("bairro_cep");
			cmpCidade   = document.getElementById("cidade_cep");
						
			var estado;
			var endereco;
			var bairro;
			var cidade;
			
			endereco = document.retorno.endereco.value;
			estado = document.retorno.estado.value;
			bairro = document.retorno.bairro.value;
			cidade = document.retorno.cidade.value;
			erro   = document.retorno.erro_descricao.value;
							
			if (erro.replace(/^\s+|\s+$/g,'') != ''){
				alert('Cep digitado não foi localizado.\n\nRedigite o CEP e vá para o próximo campo.\n\nCaso esta mensagem seja exibida novamente, preencha manualmente o endereço.');				
			}
		
			cmpEstado.selectedIndex = -1;
			if(cmpEstado.options) {
				//alert(cmpEstado.options[5].innerHTML);
				for(i=0;i<cmpEstado.options.length;i++) {
					txtEstado = cmpEstado.options[i].innerHTML;
					//alert('Estado?'+estado+'='+txtEstado);
					if(txtEstado.replace(/^\s+|\s+$/g,'') == estado) {
						cmpEstado.selectedIndex = i;
						break;
					}				
				}
			}			
			
			//Para atualizar a lista de cidades antes de selecionar na lista,
			//se não não acha o valor na lista.
			if (cidade.replace(/^\s+|\s+$/g,'') != '') {
				makeRequestWithContainer('cidade.php?uf='+estado+'&cidade='+cidade,'divcidade');	
			}
			
			if (endereco.replace(/^\s+|\s+$/g,'') != '') {
				cmpEndereco.value = endereco;
			} else {
				cmpEndereco.value = '';
			}
			
			if (bairro.replace(/^\s+|\s+$/g,'') != '') {
				cmpBairro.value = bairro;
			} else {
				cmpBairro.value = '';
			}				
			
			cmpEndereco.setFocus;
			cmpEndereco.setFocus;
			cmpEndereco.setFocus;
		
		}
	}

	// Chama o método consultaCep e pede que ele volte quando terminar a requisição (a partir do step 1)
	// Depois extrai as informações de endereço em variáveis separadas, e aplica no formulário
	function campoCep_blur_Consultor(obj,step) {
		if(!step) {
			document.getElementById("endereco_cep").Value = "Por favor aguarde enquanto localizamos o CEP";
			consultaCep(obj.value,"campoCep_blur_Consultor(null,1)");
		} else if(step==1) {
			cmpEstado   = document.getElementById("estado_cep");
			cmpEndereco = document.getElementById("endereco_cep");
			cmpBairro   = document.getElementById("bairro_cep");
			cmpCidade   = document.getElementById("cidade_cep");
			
			var estado;
			var endereco;
			var bairro;
			var cidade;
			
			endereco = document.retorno.endereco.value;
			estado = document.retorno.estado.value;
			bairro = document.retorno.bairro.value;
			cidade = document.retorno.cidade.value;
			erro   = document.retorno.erro_descricao.value;
					
			if (erro.replace(/^\s+|\s+$/g,'') != ''){
				alert('Cep digitado não foi localizado.\n\nRedigite o CEP e vá para o próximo campo.\n\nCaso esta mensagem seja exibida novamente, preencha manualmente o endereço.');				
			}
		
			cmpEstado.selectedIndex = -1;
			if(cmpEstado.options) {
				for(i=0;i<cmpEstado.options.length;i++) {
					txtEstado = cmpEstado.options[i].innerHTML.substring(0,3);
					if(txtEstado.replace(/^\s+|\s+$/g,'') == estado) {
						cmpEstado.selectedIndex = i;
						break;
					}				
				}
			}			
			
			
			//Para atualizar a lista de cidades antes de selecionar na lista,
			//se não não acha o valor na lista.
			if (cidade.replace(/^\s+|\s+$/g,'') != '') {
				makeRequestWithContainer('interface/cidade.php?uf='+cmpEstado.value+'&cidade='+cidade,'divcidade');	
			}
			
			if (endereco.replace(/^\s+|\s+$/g,'') != '') {
				cmpEndereco.value = endereco;
			} else {
				cmpEndereco.value = '';
			}
			
			if (bairro.replace(/^\s+|\s+$/g,'') != '') {
				cmpBairro.value = bairro;
			} else {
				cmpBairro.value = '';
			}				
			
			cmpEndereco.setFocus;
			cmpEndereco.setFocus;
			cmpEndereco.setFocus;			
		
		}
	}

	
	// CHAT
	function saindo_do_chat(id)	{
		campo_msg =	'Chat finalizado';
		makeRequestWithContainer('index.php?obj=chat&mtd=saindo_do_chat&msg='+campo_msg+'&chatid='+id,'msg2');
	}

	function saindo_do_chatConteudo(id)	{
		campo_msg =	'Chat finalizado';
		makeRequestWithContainer('../../index.php?obj=chat&mtd=saindo_do_chat&msg='+campo_msg+'&chatid='+id,'msg2');
	}
	
	var chatWindow;
	function inicializarChatConteudo(){
        if(chatWindow) {
			chatWindow.close();
			chatWindow = null;
		}
		chatWindow = window.open('../../index.php?obj=chat','chatWindow','location=0,menubar=0,toolbar=0,fullscreen=0,directories=0,title=0,width=500,height=500,left=200,top=50');		
	}
	
	function inicializarChat(){
		if(chatWindow) {
			chatWindow.close();
			chatWindow = null;
		}
		
		chatWindow = window.open('index.php?obj=chat','chatWindow','location=0,menubar=0,toolbar=0,fullscreen=0,directories=0,title=0,width=500,height=500,left=200,top=50');		
	}	