<!--//
var debugRPC = false;

function checaVazio( strValor ){
    try{
        if( strValor != null && strValor != "" ){
            return false;
        }else{
            return true;
        }
    }catch(e){
        return false;
    }
}

//*****************************************************************************************************************************************************
//Função para simular rpc com iframe
function Link( strUrl, Handle, blnModoXMLHttp, idMenu, blnModoAssincrono ){
	try{
        // Mostrar carregador
        divCarregador(true);

	    //Verificando a passagem do modo xmlhttp
	    if( blnModoXMLHttp != false && checaVazio( blnModoXMLHttp ) && ! checaVazio(Handle) ){
	        blnModoXMLHttp = true;
	    }
	    //Verificando a passagem do parametro de modo assincrono
	    if( (checaVazio(blnModoAssincrono) || blnModoAssincrono != false) && blnModoXMLHttp){
	        blnModoAssincrono = true;
	    }else{
	        blnModoAssincrono = false;
	    }
		//Define cookie para recuperar em recarregamento de pagina
		var blnDefineCookie = true;
		strUrl = strUrl.replace(/\&amp;/g, "&");
		var strListaDeHandle = "";

		//Verificando o modelo de rpc a ser usando XMLHttp ou iframe oculto	
		if( checaVazio( blnModoXMLHttp ) ){
			blnModoXMLHttp = false;
		}

        //Não cria cookie para chamadas sem handle
		if( checaVazio( Handle ) ){
		    blnDefineCookie = false;
		}else{
		    //Definição de cookie para chamada quando a pagina principal for recarregada
		    var arrExcecoes = new Array("rpcOutrasOfertas.asp", "rpcMaisVendidos.asp", "rpcEncerrar.asp", "rpcCarrinhoDeCompras.asp", "rpcRemoverItemCarrinho.asp", "rpcAdicionarAoCarrinho.asp", "rpcBanner.asp", "rpcMensagemCupomDesconto.asp", "rpcAplicaCupomDesconto.asp", "rpcChecaIdentificacao.asp", "rpcGravaCadastroBeneficiario.asp", "rpcGravaCadastro.asp", "rpcEnviaSenha.asp", "rpcConteudoProgramatico.asp", "rpcChecaPreCondicoes.asp", "rpcConteudoProgramasLMS", "rpcGravaVotoEnquete.asp");
		    for( var i=0; i < arrExcecoes.length; i++) {
			    if( strUrl.toLowerCase().indexOf(arrExcecoes[i].toLowerCase()) != -1 ){
				    blnDefineCookie = false;
				    break;
			    }
		    }
		}

		if( blnDefineCookie ){
			try{
			    //Criando histórico de navegação RPC
			    if( top.frames[0].name == "historico"  ){
			        var URLAnteriorCookie = GetCookie("URLRPC");
			        
			        if( ! checaVazio(URLAnteriorCookie) ){
			            URLAnteriorCookie = URLAnteriorCookie.split("|")[0];
			        }
			        
			        if( ! checaVazio(URLAnteriorCookie) && URLAnteriorCookie != strUrl ){
			            top.frames[0].location.href = "HistoricoNavegacaoRPC.asp?txtPaginaInicial=" + URLEncode(strUrl);
			        }
			    }
			}catch(e){}
			SetCookie( "URLRPC", strUrl + "|" + Handle + "|" + blnModoXMLHttp + "|" + idMenu );
		}
		if ( blnModoXMLHttp ){
		    //Montando Lista de Handles
			strListaDeHandle = Handle;

			Frpc( strUrl, strListaDeHandle, blnModoAssincrono );
		}else{
			var objDiv = document.getElementById("divRPC");
		    //Montando Lista de Handles
		    if( ! checaVazio(Handle) ){
			    Handle = Handle.split(";");
			    for(var i=0; i < Handle.length; i++ ){
			        strListaDeHandle += Handle[i].replace("()","").replace(";","");
			        if( Handle[i].indexOf("(") == -1 ){
			            strListaDeHandle+= "();"
			        }
			    }
			}
			objDiv.style.display = "block";
			objDiv.innerHTML = "<iframe id='ifrRPC' name='ifrRPC' src='" + strUrl + "' onload='" + strListaDeHandle + "' border='0' hspace='0' vspace='0' style='width:0px;height:0px;display:block;' ></iframe>"
			if( debugRPC ){ 
			    document.getElementById("ifrRPC").style.width = "500px";
			    document.getElementById("ifrRPC").style.height = "500px";
            }
		}

		// Marcar item de menu
		if( ! checaVazio(idMenu) ){
			menu(idMenu);
		}
		
		//Ocultando o hint
		callHint(null);
		if( blnDefineCookie ){
            voltarTopo();
        }
	}catch(e){
	}
}
//*****************************************************************************************************************************************************
//Função para fazer postagem RPC no modelo de xmlhttp
function Frpc( _Url, _Handle, _ModoAssincrono  )
{
	var retornoUrl = "";
	var oXMLHTTP;
	
	//Criando instância de objeto xmlhttp
	try{
		oXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e1){
		try{
			oXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e2){
			try{
				oXMLHTTP = new XMLHttpRequest();
			}catch(e3){
				oXMLHTTP = null; 
			}
		}
	}
	
	if( ! checaVazio( oXMLHTTP ) ){ 
		if( ! checaVazio(_Handle) ){
	        //verificando se foi passado o modoAssincrono
	        if( checaVazio( _ModoAssincrono ) ) {
	            _ModoAssincrono = true;
	        }
		    //Executando a url informada
		    oXMLHTTP.open( "GET", _Url, _ModoAssincrono );
		    oXMLHTTP.setRequestHeader("Content-Type","text/HTML") 
		    oXMLHTTP.onreadystatechange = function (){
			    if( oXMLHTTP.readyState == 4 || oXMLHTTP.readyState == 'complete' ){
				    retornoUrl = oXMLHTTP.responseText;
				    if( retornoUrl.indexOf("'") != -1 || retornoUrl.indexOf("<") != -1){
					    retornoUrl = URLEncode( retornoUrl );
				    }
				    //Montando Lista de Handles
			        _Handle = _Handle.split(";");
			        for( var i=0; i < _Handle.length; i++ ){
			            try{
			                if( i==0 ){
			                    //Executando o handle passado
			                    if( _Handle[i].indexOf("(") != -1 ){
			                        _Handle[i] = _Handle[i].split("(")[0] + "('" + retornoUrl + "'," + _Handle[i].split("(")[1];
			                    }else{
			                        _Handle[i] = _Handle[i] + "('" + retornoUrl + "');";
			                    }
                            }
                        }catch(e){}
                        //Executando o Handle
		                eval( _Handle[i] );
			        }
			    }
		    }	 
		    oXMLHTTP.send(null);
		}else{
	        //verificando se foi passado o modoAssincrono
	        if( checaVazio( _ModoAssincrono ) ) {
	            _ModoAssincrono = false;
	        }
		    //Executando a url informada
		    oXMLHTTP.open( "GET", _Url, _ModoAssincrono );
		    oXMLHTTP.setRequestHeader("Content-Type","text/HTML") 
		    oXMLHTTP.send(null);
	        retornoUrl = RPCDecode( oXMLHTTP.responseText );
	        return retornoUrl;
		}
	}else{
		Mensagem("Não foi possível iniciar o sistema RPC.");
	}
}
//*****************************************************************************************************************************************************
//Função para atribuir ao div o retorno do RPC
function PreencherDiv( strConteudo, strDestino, blnPreservarConteudoAnterior ){
	if( checaVazio(strDestino) ){
		strDestino = "divConteudoInterno";	
	}
	if( checaVazio(blnPreservarConteudoAnterior) || blnPreservarConteudoAnterior != true ){
	    blnPreservarConteudoAnterior = false;
	}
	
	if( ! checaVazio(strConteudo) ){
	    strConteudo = RPCDecode(strConteudo);
	    if( checaErroRPC(strConteudo) ){
		    ReportarErro( URLEncode(strConteudo), true);
		}
	}else{
		strConteudo = ConteudoIframe();
	}
	
	if( ! checaErroRPC(strConteudo) && ! checaVazio(strConteudo) && document.getElementById( strDestino ) ){
	    if( ! blnPreservarConteudoAnterior ){
		    document.getElementById( strDestino ).innerHTML = strConteudo;
		}else{
		    document.getElementById( strDestino ).innerHTML += strConteudo;
		}
	}
}
//*****************************************************************************************************************************************************
//Função para retornar o conteudo do iframe
function ConteudoIframe( strNomeIframe ){
	var strRetorno = "";
	
	try{
		if( checaVazio( strNomeIframe ) ){
			strNomeIframe = "ifrRPC";
		}
		
		if( ! document.all ){
			var objFrames = document.getElementsByTagName("iframe");
				for(var i=0; i < objFrames.length; i++ ){
				if( objFrames[i].hasAttribute("id") && objFrames[i].getAttribute("id") == strNomeIframe ){  
				    if( ! window.frames[i].document.getElementById("divContainer") ){
				        window.frames[i].document.getElementsByTagName("body")[0].setAttribute("id","body");
				        strRetorno = window.frames[i].document.getElementById("body").innerHTML;
				    }else{
				        strRetorno = window.frames[i].document.getElementById("divContainer").innerHTML;
				    }
					break; 
				}
			} 
		}else{
			var obj = eval( strNomeIframe );
		    obj = obj.document.body;
		    if( obj.document.getElementById("divContainer") ){
		        obj = obj.document.getElementById("divContainer");
		    }
			strRetorno = obj.innerHTML;
		}
		if( ! debugRPC ){
			document.getElementById("divRPC").innerHTML = "<iframe id='ifrRPC' name='ifrRPC' src='' border='0' hspace='0' vspace='0' style='width:500px;height:500px;display:none;' ></iframe>";
		}
		return strRetorno;
		
	}catch(e){
		return "";
	} 
}
//*****************************************************************************************************************************************************
//Função para preencher a barra de localização
function PreecherLocalizacao( strListaCaminho ){
	var strRetorno = "";
	try{
		strListaCaminho = strListaCaminho.split("|");
		for( var i=0; i < strListaCaminho.length; i++ ){
			if( i < ( strListaCaminho.length - 1) ){
				strRetorno += strListaCaminho[i] + ' / ';
			}else{
				strRetorno += strListaCaminho[i];
			}
		} 
		document.getElementById("divBarraLocalizacao").innerHTML = strRetorno; 
	}catch(e){}
}
//*****************************************************************************************************************************************************
//Função para chamar setTimeuout padrão
function Chamar( strFuncao, TempoAdicional ){
    try{
        if ( ! checaVazio(TempoAdicional) && ! isNaN(TempoAdicional) ){
            TempoAdicional += 400;
        }else{
            TempoAdicional = 400;
        }
    }catch(e){}
	setTimeout( strFuncao, TempoAdicional );
}
//*****************************************************************************************************************************************************
//função para exibição do calendário
var strFecharCalendario;
function Calendario(strDestino, lngInicio, lngFim, strOnde ){
	try{
		if( checaVazio( strOnde ) ){ strOnde = ""; }
		var objDiv;
		var objIframe;
	
		var numAltura = 237;
		var numLargura = 216;
		
		var numScrollTop = document.getElementsByTagName("html")[0].scrollTop;
		var numScrollLeft = document.getElementsByTagName("html")[0].scrollLeft;
		
		var numPosX;
		var numPosY;
		
		if(document.all){
			var strAlign = "right";
			if((event.clientX + numLargura + 15) < document.getElementsByTagName("html")[0].clientWidth){
				strAlign = "left";
				numPosX = (event.clientX - 15) + numScrollLeft;
			}else if((event.clientX - 15) > 10){
				numPosX = (event.clientX - numLargura - 15) + numScrollLeft;
			}
			if((event.clientY - numAltura - 17) > 10){
				numPosY = (event.clientY - numAltura - 17) + numScrollTop;
			}else if((event.clientY + numAltura + 17) < document.getElementsByTagName("html")[0].clientHeight){
				numPosY = (event.clientY + 17) + numScrollTop;
			}else{
				numPosY = ((document.getElementsByTagName("html")[0].clientHeight - numAltura)/2) + numScrollTop;
				if(strAlign == "right"){
					numPosX = (event.clientX + 15) + numScrollLeft;
				}else{
					numPosX = (event.clientX - numLargura - 15) + numScrollLeft;
				}
			}
		}else{
			var strAlign = "right";
			if((event.pageX + numLargura + 15) < document.getElementsByTagName("html")[0].clientWidth){
				strAlign = "left";
				numPosX = (event.pageX - 15) + numScrollLeft;
			}else if((event.pageX - 15) > 10){
				numPosX = (event.pageX - numLargura - 15) + numScrollLeft;
			}
			if((event.pageY - numAltura - 17) > 10){
				numPosY = (event.pageY - numAltura - 17) + numScrollTop;
			}else if((event.pageY + numAltura + 17) < document.getElementsByTagName("html")[0].clientHeight){
				numPosY = (event.pageY + 17) + numScrollTop;
			}else{
				numPosY = ((document.getElementsByTagName("html")[0].clientHeight - numAltura)/2) + numScrollTop;
				if(strAlign == "right"){
					numPosX = (event.pageX + 15) + numScrollLeft;
				}else{
					numPosX = (event.pageX - numLargura - 15) + numScrollLeft;
				}
			}
		}
		
		if( ! document.getElementById("divCalendario") ){
			objDiv = document.createElement("div");
			objDiv.setAttribute("id",  "divCalendario");
			objDiv.setAttribute("style",  "z-index: 1000;");
			var objBody = document.getElementsByTagName("body");
			objBody[0].appendChild( objDiv );
		}else{
			objDiv = document.getElementById("divCalendario");
		}
		
		var strUrl =  strOnde + 'rpcCalendario.asp?txtInicio=' + lngInicio + '&txtFim=' + lngFim + '&txtDestino=' + strDestino;
		
		var objSubDiv = "<div style='position:absolute; left:" + numPosX + "px; top:" + numPosY + "px; z-index:1001; border:1px solid #FFFFFF;'>" +
		"<iframe id='ifrCalendario' height='" + numAltura + "' width='" + ((document.all)? numLargura:numLargura+2) + "' scrolling='no' frameborder='0' border='0' style='border:1px solid #999999;' src='" + strUrl + "'></iframe></div>";
		
		objDiv.innerHTML = objSubDiv;
		
		strFecharCalendario = window.setTimeout('(document.all)? document.attachEvent("onclick",fecharCalendario):document.addEventListener("click",fecharCalendario,true)',1000);
	}catch(e){
		Mensagem( "Não foi possível inicializar o calendário" );
	}
}
function fecharCalendario(){
    try{
	    document.getElementsByTagName("body")[0].removeChild(document.getElementById("divCalendario"));
	    window.clearTimeout(strFecharCalendario);
	    (document.all)? document.detachEvent("onclick",fecharCalendario):document.removeEventListener("click",fecharCalendario,false);
	}catch(e){}
}
//*****************************************************************************************************************************************************
//Função para exibição de mensagem
function Mensagem( strMensagem, strTipo, strNomeCampoFocar ){
	if( checaVazio( strTipo) ){
        if( strMensagem.indexOf("&#") != -1 ){
            strMensagem = HTMLDecode( strMensagem );
        }
		alert( strMensagem );
	}else if( strTipo == "atencao" ){
	    try{
	        var objCaixaMensagem;
            var objForm = document.getElementsByTagName("form");
            if( ! checa800() && objForm.length > 2 ){
                objForm = objForm[1];
            }else{
                objForm = objForm[2];
            }
	        if( ! document.getElementById("divCaixaMensagem") ){
	            objCaixaMensagem = document.createElement("div");
	            objCaixaMensagem.id = "divCaixaMensagem";
	            objCaixaMensagem.style.display = "none";
	            objCaixaMensagem.style.position = "relative";
	            objForm.appendChild( objCaixaMensagem );
	            objForm.insertBefore( objCaixaMensagem, objForm.firstChild );
	        }else{
	            objCaixaMensagem = document.getElementById("divCaixaMensagem");
	        }
	        if( document.getElementById("divCaixaMensagem") ) {
	            objCaixaMensagem = document.getElementById("divCaixaMensagem");
		        if( ! checaVazio(strMensagem) ){

		            //verifica a existência de um campo para ser focado quando clicado        
		            if( ! checaVazio(strNomeCampoFocar) && document.getElementById( strNomeCampoFocar ) ){
		                var strInicioLink ="<a href=\"javascript:void(document.getElementById('" + strNomeCampoFocar + "').focus())\">"; 
		                var objFocar = document.getElementById( strNomeCampoFocar );
		                strMensagem = strMensagem.replace(/<br>/ig, "<br />");
		                
                        if( strMensagem.indexOf( objFocar.getAttribute("texto") ) != -1){
                            strMensagem = strMensagem.substring(0, strMensagem.indexOf( objFocar.getAttribute("texto") ) -1 ) + strInicioLink + "\"" + objFocar.getAttribute("texto") + "\"</a>" + strMensagem.substring( strMensagem.indexOf( objFocar.getAttribute("texto") ) + objFocar.getAttribute("texto").length + 1, strMensagem.length );
		                }else if( strMensagem.indexOf("<br />") != -1){
		                    strMensagem = strInicioLink + strMensagem.substring(0, strMensagem.indexOf("<br />") ) + "</a>" + strMensagem.substring( strMensagem.indexOf("<br />"), strMensagem.length );
		                }else{
		                    strMensagem = strInicioLink + strMensagem + "</a>";
		                }
	                }
    	            
	                //Montando a caixa de atenção
	                objCaixaMensagem.innerHTML = "";
	                objCaixaMensagem.innerHTML += ("<div id='aviso' class='aviso' style='display:block'><div class='aviso_divInterno'>"  +
	                "<!-- Ícone --><table width='100%' height='40' cellpadding='1px' cellspacing='0'><tr><td style='padding-right:10px;' width='1%'><img src='imagens/ico_atencao.png' alt='' /></td><!-- / Ícone -->"  +
		            "<td valign='middle' width='99%'><b>" + strMensagem + "</b></td>" +
		            "</tr></table></div></div><br />");
		            objCaixaMensagem.style.display = "block";
		            voltarTopo();
    		        
		        }else{
		            document.getElementById("divCaixaMensagem").parentNode.removeChild(document.getElementById("divCaixaMensagem"));
		        }
	        }else{
	            Mensagem( strMensagem );
	        }
	    }catch(e){}
    }
    divCarregador();
}
//*****************************************************************************************************************************************************
//Função para atribuir no onload do iframe a chamda a uma função de handle
function SetaOnloadRPC( Handle ){
	try{
		document.getElementById("divRPC").innerHTML = "<iframe id='ifrRPC' name='ifrRPC' src='' onload='" + Handle + "();' border='0' hspace='0' vspace='0' style='width:500px;height:500px;display:none;' ></iframe>";
		var objIfrRPC = document.getElementById("ifrRPC");
		if( debugRPC ){ objIfrRPC.style.display = "block"; }
	}catch(e){}
}
//*****************************************************************************************************************************************************

//Função para codificação de caracteres tipo url
function URLEncode(strStringACodificada) 
{
  strStringACodificada = escape( strStringACodificada );
  strStringACodificada = strStringACodificada.replace( /\+/g, "%2B"); //Não pode mudar a ordem deste item
  strStringACodificada = strStringACodificada.replace( /%20/g, "+");
  strStringACodificada = strStringACodificada.replace( /\*/g, "%2A");
  strStringACodificada = strStringACodificada.replace( /-/g, "%2D");
  strStringACodificada = strStringACodificada.replace( /\./g, "%2E");
  strStringACodificada = strStringACodificada.replace( /\//g, "%2F");
  strStringACodificada = strStringACodificada.replace( /\@/g, "%40");
  strStringACodificada = strStringACodificada.replace( /_/g, "%5F");
  return strStringACodificada; 
}
//*****************************************************************************************************************************************************
//Função para decodificação de caracteres tipo url
function URLDecode(strStringCodificada) 
{
  var strRegularExpression = /\+/g;
  return unescape(String(strStringCodificada).replace(strRegularExpression, " ")); 
}
//*****************************************************************************************************************************************************
//Função para codificar o conteudo no padrão usado pelo RPC
function RPCEncode(strDados){
    if( ! checaVazio(strDados) ){
        strDados = HTMLEncode( strDados );
        strDados = strDados.replace(/&lt;/ig, "<");
        strDados = strDados.replace(/&gt;/ig, ">");
        strDados = strDados.replace(/&quot;/ig, String.fromCharCode(34) );
        strDados = strDados.replace(/&amp;/ig, "&");
    }
	return strDados;
}
//*****************************************************************************************************************************************************
//Função para decodificar o conteudo no padrão usado pelo RPC
function RPCDecode(strDados){
    if( ! checaVazio( strDados ) ) {
	    if(strDados.indexOf("%") != -1 || strDados.indexOf("+") != -1){
		    strDados = URLDecode(strDados);
	    }
	    if(strDados.indexOf("&#") != -1){
		    strDados = HTMLDecode(strDados);
	    }
	}
	return strDados;
}
//*****************************************************************************************************************************************************
//função para decodificar HTML
function HTMLDecode( strDados ){
	var tmp = strDados;
	tmp = tmp.replace(/&quot;/g, String.fromCharCode(34));
	tmp = tmp.replace(/&lt;/g  , String.fromCharCode(60));
	tmp = tmp.replace(/&gt;/g  , String.fromCharCode(62));
	tmp = tmp.replace(/&amp;/g , String.fromCharCode(38));
	tmp = tmp.replace(/&nbsp;/g, String.fromCharCode(32));
	for (var i=1; i <= 255; i++){
		strRegExp = new RegExp("&#" + i + ";","g");
		tmp = tmp.replace(strRegExp, String.fromCharCode(i));
	}
	return tmp;
}
//*****************************************************************************************************************************************************
//função para codificar HTML
function HTMLEncode( strDados ){
	var tmp = strDados;
    var strRegExp = "";
    
	strRegExp = new RegExp(String.fromCharCode(38), "g");
	tmp = tmp.replace(strRegExp, "&amp;" );
	
	strRegExp = new RegExp(String.fromCharCode(34), "g");
	tmp = tmp.replace(strRegExp, "&quot;" );
	
	strRegExp = new RegExp(String.fromCharCode(60), "g");
	tmp = tmp.replace(strRegExp, "&lt;" );
	
	strRegExp = new RegExp(String.fromCharCode(62), "g");
	tmp = tmp.replace(strRegExp, "&gt;" );

	strRegExp = new RegExp(String.fromCharCode(32), "g");
	tmp = tmp.replace(strRegExp, "&nbsp;" );

	for ( var i=192; i <= 255; i++ ){
        strRegExp = new RegExp(String.fromCharCode(i), "g");
	    tmp = tmp.replace(strRegExp, "&#" + i + ";" );
	}
	
	return tmp;
}
//*****************************************************************************************************************************************************