//*****************************************************************************
//Objetivo:					Encapsular funcionalidades da Enquete 
//Data:						09/02/2004
//Autor:					Camila D. Silva
//Data Ultima alteração:	
//Motivo:					
//Autor:
//*****************************************************************************
//*****************************************************************************
// DECLARAÇÃO DAS VARIÁVEIS
//*****************************************************************************

 	//----------------------------------------------------------------------------------------------
	// Declaração de Variáveis Globais
	//----------------------------------------------------------------------------------------------
	
	//variável que contém o número da linha a ser inserida
	var intIndice = 4			
		
	/******************************************************************************************
	/ Objetivo  : Atualiza campos do formulário e guarda as respostas das perguntas em hiddens
	/ Premissas : 
	/ Entradas  : 
	/ Retorno   : Nenhum
	/******************************************************************************************/
	
	function AtualizaCampos()
	{
	
		var intCont;						//Contador
		var intAux;							//contador auxiliar
		var intContResp;					//contador de respostas
		var strNomeObj;						//Nome do objeto
		var strNomePerg;					//Nome da pergunta
		var intCodPerg;						//Código da pergunta
		var objPergunta;					//Objeto pergunta
		var strNameResp;					//Nome da resposta livre
		var strNameAltn;					//Nome da alternativa
		var blnDesabilita;					//Indicador para desabilitar ou não os campos pertencentes a pergunta
		var intQtdeAltn;					//Quantidade de alternativas
		var intContPerg;					//Código da pergunta
		var intContAltn;					//Contador de alternativas
		var intNivLimOpc;					//Nível limite de opções
		var strNameTxtOpc;					//Nome da opção livre
		var intNumCombos;					//Número de combos de opção
		var intCombo;						//Contador de combos
		var strNameComboOpc;				//Nome do combo da opção
		var arrRespPerg = new Array();		//Array 
		var strPergRespPrin;				//String com as respostas e perguntas principais da pergunta dependente
		var arrRespostaPerg = new Array();	//Array com as respostas das perguntas
		var intAlternSel = new Array();		//Código da alternativa selecionada
		var strRespPergAltn;				//String com as respostas da alternativa
		var intContador;					//Contador
		var objAltn;						//Objeto alternativa
		var objOpc;							//Objeto opção
		var strNameComboOpc;				//Nome do combo de opções
		var strNomeHdPerg;					//Nome do hidden da pergunta
		var arrRespPergAux;					//Array que guarda as respostas de uma pergunta
		var strResposta;					//resposta
		var strAuxOpc;						//texto da opção
		var strExpReg;						//Expressão regular a ser pesquisada
		var intIndice2;						//Índice 2
		var intIndiceAnt;					//Índice anterior
		var strTipoResposta;				//Tipo de resposta
		var strNameCbo;						//Nome do combo
		
		//Loop para todos os objetos da página
		for (intCont=intCodPergIni;intCont<=intCodPergFim;intCont++)
		{
		
			blnDesabilita = false;		//A pergunta inicialmente não será desabilitada
			intContResp = 0;			//Inicia o contador de respostas com zero
			
			//Zera array de respostas
			arrRespostaPerg = new Array();
			
			strNomePerg = "hdnPergunta" + intCont;
			
			objPergunta = document.getElementById(strNomePerg);
			intCodPerg = objPergunta.getAttribute("CodPerg");
			intContador=0;
			//Verifica se é uma pergunta dependente
			if(trim(objPergunta.getAttribute("PergRespPrin")) != "")
			{
				blnDesabilita = true;		//Variável que indica que a pergunta será desabilitada
				strPergRespPrin = objPergunta.getAttribute("PergRespPrin");			//Armazena a string com as respostas principais da pergunta dependente
					
				//Faz o loop nas respostas anteriores para verificar se a dependente pode ser habilitada ou não
				for(intContPerg=1;intContPerg<intCodPerg;intContPerg++)
				{
					//armazena a resposta da pergunta anterior
					arrRespPerg = RetornaRespostaPergunta(intContPerg);	
					//Verifica se a pergunta tem mais de uma alternativa como resposta
					if(arrRespPerg.indexOf(",0")!=-1)
					{
						arrRespPerg = arrRespPerg.split(",");
						//Faz um loop nas respostas do vetor
						for(intContResp=0;intContResp<arrRespPerg.length;intContResp++)
						{
							//Transforma em um array as respostas de uma alternativa, caso ela tem opções
							arrRespPergAux = arrRespPerg[intContResp].split("_|_");
							intIndice = arrRespPergAux[1].indexOf("|");
								
							//Armazena o código da alternativa escolhida
							if(intIndice!=-1)
								intAlternSel = arrRespPergAux[1].substring(0,intIndice);
							else
								intAlternSel = arrRespPergAux[1];

							//Verifica se o código da alternativa selecionada é diferente de zero
							if(parseInt(intAlternSel)!=0)
							{
								//String que concatena o código da pergunta e a alternativa escolhida
								strRespPergAltn = intContPerg + "|" + intAlternSel;
								//Caso a resposta da pergunta corresponda com alguma das respostas principais da pergunta dependente
								intIndiceAnt = intIndice2-1;
								intIndice2 = strPergRespPrin.indexOf(strRespPergAltn);
								if(intIndice2!=-1 && (intIndice2==0 ||(strPergRespPrin.charAt(intIndiceAnt)=="_")))
								{
									//Habilita as alternativas da pergunta
									blnDesabilita=false;								
									break;
								}
							}
						}
					}
					//Caso a resposta não esteja armazenada em vetor, verifica se a resposta da pergunta é diferente de vazio
					else if(trim(arrRespPerg)!="")
						{
							// Transforma a resposta num vetor, caso ela tenha opções
							arrRespPergAux = arrRespPerg.split("_|_")		
							intIndice = arrRespPergAux[1].indexOf("|");
								
							//Armazena o código da alternativa escolhida
							if(intIndice!=-1)
								intAlternSel = arrRespPergAux[1].substring(0,intIndice);
							else
								intAlternSel = arrRespPergAux[1];
							//Se a alternativa escolhida for igual a vazio, desabilita a pergunta
							if(intAlternSel=="")
								blnDesabilita=true;	
							//Caso contrário
							else
							{
								//Concatena o código da pergunta e da alternativa
								strRespPergAltn = intContPerg + "|" + intAlternSel;

								//Caso a resposta da pergunta corresponda com alguma das respostas principais da pergunta dependente
								intIndice2 = strPergRespPrin.indexOf(strRespPergAltn);
								intIndiceAnt = intIndice2-1;
								if(intIndice2!=-1 && (intIndice2==0 ||(strPergRespPrin.charAt(intIndiceAnt)=="_")))
								{
									//Habilita as alternativas da pergunta
									blnDesabilita=false;
									break;								
								}
							}
						}
					//Indica se a pergunta vai ser desabilitada ou não na propriedade 'Desabilitada' do hidden da pergunta
				}
				if(blnDesabilita==true)
				{
					objPergunta.setAttribute("Desabilitada","true");
				}
				else
				{
					objPergunta.setAttribute("Desabilitada","false");
				}
			}
			strTipoResposta = objPergunta.getAttribute("TipoRespPerg");
			//Verifica qual o tipo de resposta da pergunta
			if ((strTipoResposta == "textbox") || (strTipoResposta == "textarea"))
			{
				strNameResp = "txtResp" + intCodPerg;
				objResposta =  document.getElementById(strNameResp);
				objResposta.onkeypress = DeterminaTeclaPressionada;
								
				//Verifica se a alternativa não tem opções
				
				if(isNaN(objResposta.getAttribute("NivLimOpc"))||objResposta.getAttribute("NivLimOpc") == "")
				{
					//Caso a pergunta deva ser desabilitada é atribuido vazio a resposta dessa pergunta
					if(blnDesabilita)
					{
						objResposta.value = "";
					}
					//Caso contrário
					else
					{
						//Verifica se a resposta é diferente de vazio
						if(trim(objResposta.value) != "" && trim(objResposta.value) != "Responda aqui")
						{
							strResposta = objResposta.value;							
							// Para evitar erro de interpretação na procedure, é feita a substituição abaixo
							strResposta = Replace(strResposta,"\\","/");
							strResposta = Replace(strResposta,"|","");
							strResposta = Replace(strResposta,",0",".0");													
							//Verifica se o tipo da pergunta é de usuário
							if(parseInt(objPergunta.getAttribute("Tipo"))==1)
								arrRespostaPerg[0] = objPergunta.getAttribute("Tipo") + "_|_" + strResposta;
							else
								arrRespostaPerg[0] = objPergunta.getAttribute("Tipo") + "_|_" + objResposta.getAttribute("CodAltn") + "|" + strResposta;
						}
											
					}
					//Atribui a variável que indica se a pergunta deverá ser desabilitada ou não
					document.getElementById(strNameResp).disabled = blnDesabilita;
				}
				//Caso o text tenha opções
				else 
				{
					intNivLimOpc = objResposta.getAttribute("NivLimOpc");	
					intCodAltn = objResposta.getAttribute("CodAltn");
					strRespOpc = "";										
					strNameTxtOpc = "txtOpcao" + intCodPerg + "_" + intCodAltn + "_1";
					objOpc = document.getElementById(strNameTxtOpc);
					//Verifica se a alternativa tem uma opção textbox
					if(objOpc!=null)
					{
						//Verifica se é para desabilitar a pergunta
						if(blnDesabilita)
						{
							//Zera as respostas da pergunta e a desabilita
							objOpc.value = "";
							objResposta.value = "";
							objOpc.disabled = true;
							objResposta.disabled = true;
						}
						//Armazena as respostas
						else 												
						{
							//Habilita o text e a opção e armazena as respostas
							objOpc.disabled = false;
							objResposta.disabled = false;
							strAuxOpc = objOpc.value;
							strAuxOpc = Replace(strAuxOpc,"\\","/");
							strAuxOpc = Replace(strAuxOpc,"|","");
							strAuxOpc = Replace(strAuxOpc,","," ");
							strRespOpc = strRespOpc + "_|_" + objOpc.getAttribute("CodOpc") + "|" + strAuxOpc;
							if(trim(objOpc.value)=="")
							{
								objOpc.value = "Responda aqui";
							}
						}
					}
					//Armazena o número de combos de opções da alternativa
					intNumCombos = intNivLimOpc - 1;
					//Faz um loop no número de combos
					for(intCombo=1;intCombo<=intNumCombos;intCombo++)
					{
						strNameComboOpc = "sltOpcoes" + intCodPerg + "_" + intCodAltn + "_" + (intCombo + 1);
						objOpc = document.getElementById(strNameComboOpc);
						//Caso a pergunta deva ser desabilitada
						if(blnDesabilita)
						{
							//Zera os objetos, desmarca a alternativa e desabilita a alternativa e as opções
							objOpc.selectedIndex = 0;
							objResposta.value = "";
							objOpc.disabled = true; 
							objResposta.disabled = true;
						}
						//Armazena as respostas
						else 												
						{
							//Habilita o combo de opções e armazena as respostas
							objOpc.disabled = false;
							objResposta.disabled = false;
							strRespOpc = strRespOpc + "_|_" + objOpc.selectedIndex + "| ";
						}
					}
					strResposta = objResposta.value;
									
					// Para evitar erros de interpretação na procedure e do javascript, é feita a substituição abaixo
					strResposta = Replace(strResposta,"\\","/");
					strResposta = Replace(strResposta,"|","");
					strResposta = Replace(strResposta,",0",".0");

					//Armazena as respostas da alternativa
					arrRespostaPerg[0] = objPergunta.getAttribute("Tipo") + "_|_" + intCodAltn + "|" + strResposta + strRespOpc;
					intContador++;																									
				}
			}	
			else if (strTipoResposta == "combo")	
				{				
					intQtdeAltn = objPergunta.getAttribute("QtdeAltn");			//Armazena a quantidade de alternativas da pergunta
					strNameCbo = "sltAltn" + intCodPerg;
					//Faz um loop nas alternativas da pergunta
					//Verifica se a pergunta é do tipo radio ou checkbox para saber o nome das alternativas
					objAltn = document.getElementById(strNameCbo);		
					
					//Verifica se a alternativa não tem opções
					if(blnDesabilita)
					{
						objAltn.selectedIndex = 0;
						objAltn.disabled = true;
					}
					else
					{
						if(objAltn.selectedIndex!=0)
						{
							arrRespostaPerg[0] = objPergunta.getAttribute("Tipo") + "_|_" + objAltn.selectedIndex + "|";
						}
						objAltn.disabled = false;
					}
				}
				else if (strTipoResposta == "radio" || strTipoResposta == "checkbox")
					{	
						intQtdeAltn = objPergunta.getAttribute("QtdeAltn");			//Armazena a quantidade de alternativas da pergunta
						//Faz um loop nas alternativas da pergunta
						for(intContAltn=1;intContAltn<=intQtdeAltn;intContAltn++)
						{
							//Verifica se a pergunta é do tipo radio ou checkbox para saber o nome das alternativas
							if(objPergunta.getAttribute("TipoRespPerg")=="radio")
								strNameAltn = "rdnAltn" + intCodPerg + "_" + intContAltn;
							else if(objPergunta.getAttribute("TipoRespPerg")=="checkbox")
									strNameAltn = "chkAltn" + intCodPerg + "_" + intContAltn;
							objAltn = document.getElementById(strNameAltn);		
							intNivLimOpc = objAltn.getAttribute("NivLimOpc");
							//Verifica se a alternativa não tem opções
							if(intNivLimOpc=="")
							{
								if(blnDesabilita)
								{
									objAltn.checked = false;
									objAltn.disabled = true;
								}
								else
								{
									if(objAltn.checked)
									{
										arrRespostaPerg[intContador] = objPergunta.getAttribute("Tipo") + "_|_" + objAltn.value + "|";
										intContador++;																
									}
									objAltn.disabled = false;
								}
							}
							//Caso a alternativa tenha opções
							else 
							{
								strRespOpc = "";										
								strNameTxtOpc = "txtOpcao" + intCodPerg + "_" + intContAltn + "_1";
								objOpc = document.getElementById(strNameTxtOpc);
								//Verifica se a alernativa tem uma opção textbox
								if(objOpc!=null)
								{
									//Verifica se é para desabilitar a pergunta
									if(blnDesabilita)
									{
										//Zera as respostas da pergunta e a desabilita
										objOpc.value = "";
										objAltn.checked = false;
										objOpc.disabled = true;
										objAltn.disabled = true;
									}
									//Verifica se a alternativa foi marcada
									else if(objAltn.checked)													
											{
												//Habilita a alternativa e a opção e armazena as respostas
												objOpc.disabled = false;
												objAltn.disabled = false;
												strAuxOpc = objOpc.value;
												strAuxOpc = Replace(strAuxOpc,"\\","/");
												strAuxOpc = Replace(strAuxOpc,","," ");
												strAuxOpc = Replace(strAuxOpc,"|","");
												strRespOpc = strRespOpc + "_|_" + objOpc.getAttribute("CodOpc") + "|" + strAuxOpc;
												if(trim(objOpc.value)=="")
												{
													objOpc.value = "Responda aqui";
												}
											}
										 //Caso a alternativa não tenha sido escolhida
										 else
											{
												//Zera os objetos e desabilita a opção
												objOpc.value = "";
												objAltn.checked = false;
												objOpc.disabled = true;
											}
								}
								//Armazena o número da combos de opções da alternativa
								intNumCombos = intNivLimOpc - 1;
								//Faz um loop no número de combos
								for(intCombo=1;intCombo<=intNumCombos;intCombo++)
								{
									strNameComboOpc = "sltOpcoes" + intCodPerg + "_" + intContAltn + "_" + (intCombo + 1);
									objOpc = document.getElementById(strNameComboOpc);
									//Caso a pergunta deva ser desabilitada
									if(blnDesabilita)
									{
										//Zera os objetos, desmarca a alternativa e desabilita a alternativa e as opções
										objOpc.selectedIndex = 0;
										objAltn.checked = false;
										objOpc.disabled = true; 
										objAltn.disabled = true;
									}
									//Verifica se alternativa está marcada
									else if(objAltn.checked)													
											{
												//Habilita o combo de opções e armazena as respostas
												objOpc.disabled = false;
												strRespOpc = strRespOpc + "_|_" + objOpc.selectedIndex + "| ";
											}
										 else
											{
												//Zera o combo de opções e o desabilita
												objOpc.selectedIndex = 0;
												objAltn.checked = false;
												objOpc.disabled = true;
											}
								}
								//Verifica se a alternativa está selecionada
								if(objAltn.checked)
								{
									//Armazena as respostas da alternativa
									arrRespostaPerg[intContador] = objPergunta.getAttribute("Tipo") + "_|_" + objAltn.value + "| " + strRespOpc;
									intContador++;																									
								}
							}
						}
					}
				//Armazena as respostas da pergunta no hidden de resposta
				strNomeHdPerg = "hdnRespPerg" + intCodPerg;
				document.getElementById(strNomeHdPerg).value = arrRespostaPerg;		
		}
 	}
 	
 		
	/******************************************************************************
	/ Objetivo  : Retira os espaços da esquerda e da direita de uma string
	/ Premissas : 
	/ Entradas  : strAux: texto a ser formatado
	/ Retorno   : texto sem espaços a direita e a esquerda
	/******************************************************************************/	
	
	function trim(strAux){
	
		var intCont;		//Contador
		
		for (intCont = 0; intCont < strAux.length; intCont++){
			if (strAux.charAt(intCont) != " "){
				strAux = strAux.substr(intCont);
				break;
			}
		}
		for (intCont= strAux.length -1; intCont>=0; intCont--){
			if (strAux.charAt(intCont) != " "){
				strAux = strAux.substring(0, intCont + 1)
				break;
			}
		}
		if (strAux.charAt(0) != " ")
			return (strAux);
		else
			return ("");
	}

	/******************************************************************************
	/ Objetivo  : Retornar a resposta de uma determinada pergunta
	/ Premissas : 
	/ Entradas  : intCodPerg: Código da pergunta							  
	/ Retorno   : resposta da pergunta
	/******************************************************************************/	
	
	function RetornaRespostaPergunta(intCodPerg)
	{
		var strNomePerg;	//String com o nome do hidden da pergunta
		
		strNomePerg = "hdnRespPerg" + intCodPerg;
		return document.getElementById(strNomePerg).value;
	}

	/******************************************************************************
	/ Objetivo  : Desmarca as outras opções não checadas do radio
	/ Premissas : 
	/ Entradas  : objRadio:		Objeto radio selecionado
				  intCodPerg:	Código da pergunta
	/ Retorno   : Nenhum
	/******************************************************************************/	

	function DesmarcaOutros(objRadio,intCodPerg)
	{
		var intCodAltnSel;			//Código da alternativa selecionada
		var intQtdeAltn;			//Quantidade de alternativas
		var intCont;				//Contador
		var strNameAltn;			//Nome da alternativa
		var objAltn;				//Objeto alternativa
		var intCodPerg;				//Código da pergunta
		
		strNamePerg = "hdnPergunta" + intCodPerg;
		objPerg = document.getElementById(strNamePerg);
		intCodAltnSel = objRadio.value;
		intQtdeAltn = objPerg.getAttribute("QtdeAltn");
		for(intCont=1;intCont<=intQtdeAltn;intCont++)
		{
			if(intCont!=intCodAltnSel)
			{
				strNameAltn = "rdnAltn" + intCodPerg + "_" + intCont;
				objAltn = document.getElementById(strNameAltn);
				objAltn.checked=false;
			}
		}
	}

	
	/******************************************************************************
	/ Objetivo  : Retorna true ou false verificando se a resposta do usuário dada é válida
	/ Premissas : 
	/ Entradas  : intCodPerg: Código da pergunta
				  intCodTipoResp: Código da pergunta principal, caso queira								  
	/ Retorno   : Nenhum
	/******************************************************************************/
		
	function ValidaCampo(strResposta,intCodTipoResp)
	{
			
		switch(intCodTipoResp)
		{
			//CEP
			case "1":	if(!isCEP(strResposta))
							return false;
						else
							return true;
						break;
			//CPF
			case "2": 	if(!isCPFCNPJ(strResposta))
							return false;
						else
							return true;
						break;
			//E-mail
			case "3":	if(!isEmail(strResposta))
							return false;
						else
							return true;
						break;
			//Nome
			case "4":	return true;
						break;
			
			//Endereço
			case "5":	return true;
						break;
						
			//Tipo não validado
			default:	return true;
						break;
		}
	}
	
	/******************************************************************************
	/ Objetivo  : Verifica se o texto passado é um CEP
	/ Premissas : 
	/ Entradas  : strTexto - resposta do usuário						  
	/ Retorno   : true - Caso o CEP seja válido
				  false - Caso o CEP seja inválido
	/******************************************************************************/
		
	function isCEP(strTexto)
	{
		if(isNaN(strTexto) || strTexto.length!=8)
			return false;
		return true;
	}
	
	
	/******************************************************************************
	/ Objetivo  : Verifica se é numero de CPF ou CNPJ válido. 
	               Verificamos se o digitado está correto de acordo com seus dígitos verificadores
	/ Premissas : 	           
	/ Entradas  : txtCgc: CPF ou CNPJ a ser testado sem a formatacao de / e -
	/ Retorno   : sRetorno: true (ok) ou false (nok)
	/******************************************************************************/
		 
	function isCPFCNPJ (txtCgc)
	{
	   var strAux;			//Variável auxiliar
	   var intTam;			//Tamanho do campo
			   
	   strAux = txtCgc;
			   
	   //-- Tamanho da string sem o digito verificador
	   intTam = strAux.length - 2;
	   if ((strAux != "") && ((strAux.length <= 1) || (fValidaDV (strAux.substring (0, intTam)) != strAux.substring (strAux.length-2))))
			return false;
	   else
			return true;	
	}

	/******************************************************************************
	/ Objetivo  : Verifica se o dígito verificador do CPF/CGC está correto
	/ Premissas :
	/ Entradas  : intValor: Valor do CPF/CGC
	               sTipoValidacao: 1 -> CPF; 2 -> CGC
	/ Retorno   : strAux: sString contendo apenas os números
	/******************************************************************************/

	function fValidaDV(intValor)
	{
	   var intCont1;			//Contador 1
	   var intCont2;			//Contador 2
	   var intSoma=0;			//Soma
	   var intMult;				//Multiplicação
	   var intLimiteMult;		//Limite da multiplicação
	   
	   intLimiteMult = 9
	   for (intCont1 = 1; intCont1<=2; intCont1++)
	   {
	      intSoma = 0
	      intMult = 2
	      for (intCont2 = intValor.length; intCont2>=1; intCont2--)
	      {
	         intSoma = intSoma + (intMult * (intValor.substring(intCont2-1,intCont2)*1))
	         intMult++
	         if (intMult > intLimiteMult)
	            intMult = 2
	      }
	      intValor = intValor + (((intSoma * 10) % 11) % 10)
	   }
	   return(intValor.substring(intValor.length-2,intValor.length))
	}	
	
	/*****************************************************************************
	/ Objetivo:	Valida email
	/ Premisas:					
	/ Entradas:	strEmail1 - e-mail
	/ Retorno:	Nenhum
	/*****************************************************************************/	
	
	function isEmail(strEmail1)
	{
		var strComAcentos = "!&ãáàâäéèêëíìîïõóòôöúùûüñç$ÃÁÀÂÄÉÈÊËÍÌÎÏÕ#ÓÒÔÖÚÙÛÜÑÇ°ºª'"; //Constante contEndo string com acentos
		var blnVerificaCaracEspec;	//verifica se existem caracteres especiais no e-mail
		var intCont;				//Contador
		var strAuxAce;				//string que contém cada caracter especial
		var intContAux;				//Contador auxiliar
		var strVerifica				//String e-mail - @xxxxxx.xxx.xx
		
		blnVerificaCaracEspec = false;
		
		//Loop para verificação e substituição dos caractéres especiais
		for(intCont = 0;intCont<strComAcentos.length;intCont++)
		{
			strAuxAce = strComAcentos.substring(intCont, intCont + 1);
			for(intContAux = 0;intContAux<strEmail1.length;intContAux++)
			{
				if(trim(strAuxAce) == trim(strEmail1.substring(intContAux, intContAux + 1)))
				{
					blnVerificaCaracEspec = true;
					break;
				}
			}
		}
		if (blnVerificaCaracEspec || (strEmail1.lenght < 5) || (strEmail1.indexOf('@') == -1) || (strEmail1.indexOf('.') == -1) || strEmail1.indexOf(' ')!=-1 || strEmail1.indexOf('/')!=-1){
			alert("Digite o E-mail corretamente!");
			return false;
		}
		else {
			//Verifica se o e-mail é "bovespa.com.br" ou "cblc.com.br"
			if (strEmail1.indexOf('@') != -1) {
				strVerifica = strEmail1.substr(strEmail1.indexOf('@'), strEmail1.length);
				if ( (strVerifica == '@bovespa.com.br') || (strVerifica == '@cblc.com.br') ){
					return true;
				}
				else {
					alert("E-mail inválido. Utilize apenas o seu e-mail da empresa ( @bovespa ou @cblc ).");
					return false;
				}
			}	
		}
	}
	
	
	/******************************************************************************
	/ Objetivo  : Faz a validação das respostas e chama a próxima página
	/ Premissas : 
	/ Entradas  : 
	/ Retorno   : Nenhum
	/******************************************************************************/
	function ProximaPagina()
	{
		var blnValidacaoForm;		//Variável que indica se as respostas do form são válidas	
		var intCont;				//Contador
		var strNomeObj;				//String com o nome do objeto
		var strNomePerg;			//String com o nome da pergunta
		var strPergunta;            //Nome da Pergunta 				
		var intCodPerg;				//Código da pergunta
		var arrRespostaPerg;		//Array com as respostas da pergunta
		var intNumMiniResp;			//Número mínimo de respostas
		var intNumMaxResp;			//Número máximo de respostas
		var arrResposta;			//Array com as respostas
		var intContAux;				//Contador auxiliar
		var intCodOpc;				//Código da opção
		var intContAltn;			//Contador das alternativas
		var intQtdeAltn;			//Quantidade de alternativas
		var intCodAltn;				//Código da alternativa
		var strNmObjAltn;			//Nome do objeto da alternativa
		var strNameResp;			//Nome da resposta
		var objNameResp;			//Objeto resposta
		var strTxtResposta;			//resposta do text
		var strNmOpc;				//nome da opção
		var objOpc;					//objeto opção
		
		
		//Chama a função AtualizaCampos
		AtualizaCampos();
		
		//Variável que indica se a validação do form está OK
		blnValidacaoForm = true;
		
		document.getElementById("hdnVotar").value = "OK";
		
		//Loop em todos os objetos do formulário
		for (intCont=intCodPergIni;(intCont<=intCodPergFim) && (blnValidacaoForm==true);intCont++)
		{
			strNomePerg = "hdnPergunta" + intCont;
			objPergunta = document.getElementById(strNomePerg);
			intCodPerg = objPergunta.getAttribute("CodPerg");
			strPergunta = objPergunta.getAttribute("NomePerg");
			intQtdeAltn = objPergunta.getAttribute("QtdeAltn");
			
			//Consulta a resposta da pergunta
			arrRespostaPerg = RetornaRespostaPergunta(intCodPerg);	
					
			
			//Se a pergunta estiver habilitada faz as validações necessárias da resposta dada
			if(objPergunta.getAttribute("Desabilitada")=='false')
			{
				//Armazena o número mínimo e máximo de respostas da pergunta
				intNumMiniResp = objPergunta.getAttribute("QtdeMiniResp");
				intNumMaxResp = objPergunta.getAttribute("QtdeMaxResp");
				//Verifica qual o tipo de resposta da pergunta
				if(objPergunta.getAttribute("TipoRespPerg")=="textbox" || objPergunta.getAttribute("TipoRespPerg")=="textarea")
				{
					strNmObjResposta = "txtResp" + intCodPerg;
					objResp = document.getElementById(strNmObjResposta);

					if(arrRespostaPerg.length!=0)	//Caso alguma resposta tenha sido dada
					{
						arrResposta = arrRespostaPerg.split("_|_")
						if(arrResposta[1].indexOf("|")!=-1)
							strTxtResposta = arrResposta[1].substring(arrResposta[1].indexOf("|")+1);
						else
							strTxtResposta = arrResposta[1];
						if((trim(strTxtResposta)=="" || trim(strTxtResposta)=="Responda aqui") && (intNumMiniResp > 0 || objPergunta.getAttribute("Tipo")==1))
						{
							alert("Responda a pergunta '" + strPergunta + "'.");
							objResp.focus();
							blnValidacaoForm = false;
						}
						else if(objPergunta.getAttribute("Tipo")==1)	//Caso o tipo da pergunta seja de usuário
							{
								intTipoResposta = objResp.getAttribute("TipoPergUsua");
								//Chama a função de validação da resposta indicando qual o tipo de dado
								if(!ValidaCampo(strTxtResposta,intTipoResposta))
								{
									if (intTipoResposta!=3){
										alert("Responda a pergunta '" + strPergunta + "' corretamente!");
									}
									objResp.focus();
									blnValidacaoForm = false;
								}
								else if(intTipoResposta=="3")
									{
										document.getElementById("hdnEmail").value = trim(strTxtResposta);
									}
							}
					}
					else if(intNumMiniResp > 0 || objPergunta.getAttribute("Tipo")==1)		//Caso nenhuma resposta tenha sido dada e a pergunta seja obrigatória
						{
							alert("Responda a pergunta '" + strPergunta + "'.");
							objResp.focus();
							blnValidacaoForm = false;
						}
											
					//Caso a alternativa tenha opções
					if(objResp.getAttribute("NivLimOpc")>0 && blnValidacaoForm)
					{
						for(intContAux=2;intContAux<arrResposta.length;intContAux++)
						{
							intCodOpc = arrResposta[intContAux].substring(0,arrResposta[intContAux].indexOf("|"));
							//Verifica se nehuma opção foi escolhida
							if(intCodOpc==0)
							{
								alert("Responda completamente a pergunta '" +  strPergunta + "'.");
								objResp.focus();
								blnValidacaoForm = false;
								break;
							}
							//Verifica se existe alguma opção que seja textbox e faz a validação
							else if(arrResposta.length==(parseInt(objResp.getAttribute("NivLimOpc"))+2)&&intContAux==2)
								 {
									strTextoOpc = arrResposta[intContAux].substring((arrResposta[intContAux].indexOf("|")+1),arrResposta[intContAux].length);
									if(trim(strTextoOpc)=="" || trim(strTextoOpc)=="Responda aqui")
									{
										alert("Responda completamente a pergunta '" +  strPergunta + "'.");
										objResp.focus();
										blnValidacaoForm = false; 
										break;
									}
								}
						}
					}
				}										
				else if(objPergunta.getAttribute("TipoRespPerg")=="radio")
					{		
						if(arrRespostaPerg.length!=0)	//Caso alguma alternativa tenha sido escolhida
						{
							arrResposta = arrRespostaPerg.split("_|_");
							if(arrResposta[1].indexOf("|")!=-1)
								intCodAltn = arrResposta[1].substring(0,arrResposta[1].indexOf("|"));
							else
								intCodAltn = arrResposta[1];
													
							strNmObjAltn = "rdnAltn" + intCodPerg + "_" + intCodAltn;
							objAltn = document.getElementById(strNmObjAltn);
						}
						else if(intNumMiniResp > 0)		//Caso nenhuma alternativa tenha sido escolhida e a pergunta seja obrigatória
							{
								alert("Escolha uma alternativa para a pergunta '" + trim(strPergunta) + "'.");
								blnValidacaoForm = false;
								strNmObjAltn = "rdnAltn" + intCodPerg + "_1";
								objAltn = document.getElementById(strNmObjAltn);
								objAltn.focus();
								break;
							}
						//Caso a alternativa tenha opções
						if(objAltn.getAttribute("NivLimOpc")>0)
						{
							for(intContAux=2;intContAux<arrResposta.length;intContAux++)
							{
								intCodOpc = arrResposta[intContAux].substring(0,arrResposta[intContAux].indexOf("|"));
								//Verifica se nehuma opção foi escolhida
								if(intCodOpc==0)
								{
									if(arrResposta.length>2)
									{
										alert("Preencha todas as opções referentes à(s) alternativa(s) escolhida(s) na pergunta '" + strPergunta + "'.");
									}
									else
									{
										alert("Preencha a opção referente à(s) alternativa(s) escolhida(s) na pergunta '" + strPergunta + "'.");
									}
									objAltn.focus();
									blnValidacaoForm = false;
									break;
								}
								//Verifica se existe alguma opção que seja textbox e faz a validação
								else if(arrResposta.length==(parseInt(objAltn.getAttribute("NivLimOpc"))+2)&&intContAux==2)
									 {
										strTextoOpc = arrResposta[intContAux].substring((arrResposta[intContAux].indexOf("|")+1),arrResposta[intContAux].length);
										if(trim(strTextoOpc)=="" || trim(strTextoOpc)=="Responda aqui")
										{
											alert("Preencha o texto da alternativa escolhida na pergunta '" + strPergunta + "'.");
											objAltn.focus();
											blnValidacaoForm = false;
											break;
										}
									}
							}
						}
					}
					else if(objPergunta.getAttribute("TipoRespPerg")=="checkbox")
						{	
							if(arrRespostaPerg.length!=0)			//Verifica  se a resposta é diferente de vazio
								arrRespostaPerg = arrRespostaPerg.split(",");
							//Verifica se o número de respostas dadas é maior que número mínimo
							if(arrRespostaPerg.length<intNumMiniResp)
							{
								alert("Escolha pelo menos " + intNumMiniResp + " alternativa(s) para a pergunta '" + strPergunta + "'.");
								blnValidacaoForm = false;
								strNmObjAltn = "chkAltn" + intCodPerg + "_1";
								objAltn = document.getElementById(strNmObjAltn);
								objAltn.focus();
								break;												
							}
							//Verifica se o número de respostas dadas é maior que número máximo
							if(arrRespostaPerg.length>intNumMaxResp)
							{
							   alert("Escolha no máximo " + intNumMaxResp + " alternativa(s) para a pergunta '" + strPergunta + "'.");
							   blnValidacaoForm = false;
							   strNmObjAltn = "chkAltn" + intCodPerg + "_1";
							   objAltn = document.getElementById(strNmObjAltn);
							   objAltn.focus();
							   break;												
							}
							//Faz um loop nas alternativas escolhidas													
							for(intContAltn=0;intContAltn<arrRespostaPerg.length;intContAltn++)
							{
								arrResposta = arrRespostaPerg[intContAltn].split("_|_");
								if(arrResposta[1].indexOf("|")!=-1)
									intCodAltn = arrResposta[1].substring(0,arrResposta[1].indexOf("|"));
								else
									intCodAltn = arrResposta[1];
								strNmObjAltn = "chkAltn" + intCodPerg + "_" + intCodAltn;
								objAltn = document.getElementById(strNmObjAltn);
								//Verifica se a alternativa tem opções
								if(objAltn.getAttribute("NivLimOpc")>0)
								{
									for(intContAux=2;intContAux<arrResposta.length;intContAux++)
									{
										strNmOpc = "sltOpcoes" + intCodPerg + "_" + intCodAltn + "_" + intContAux
										objOpc = document.getElementById(strNmOpc);
										intCodOpc = arrResposta[intContAux].substring(0,arrResposta[intContAux].indexOf("|"));
										//Verifica se alguma opção foi escolhida
										if(intCodOpc==0)
										{
											if(intNumMiniResp==intQtdeAltn)
											{
												alert("Preencha todas as opções da pergunta '" + strPergunta + "'.");
											}
											else
												if(arrResposta.length>2)
												{
													alert("Preencha todas as opções referentes à(s) alternativa(s) escolhida(s) na pergunta '" + strPergunta + "'.");
												}
												else
												{
													alert("Preencha a opção referente à(s) alternativa(s) escolhida(s) na pergunta '" + strPergunta + "'.");
												}
											objOpc.focus();
											blnValidacaoForm = false;
											break;
										}
										//Verifica se existe alguma opção textbox e a valida
										else if(arrResposta.length==(parseInt(objAltn.NivLimOpc)+2)&&intContAux==2)
											 {
												strTextoOpc = arrResposta[intContAux].substring((arrResposta[intContAux].indexOf("|")+1),arrResposta[intContAux].length);
												if(trim(strTextoOpc)=="" || trim(strTextoOpc)=="Responda aqui")
												{
													alert("Preencha o texto da alternativa escolhida na pergunta '" + strPergunta + "'.");
													objAltn.focus();
													blnValidacaoForm = false;
													break;
												}
											 }
									}
								}	
								//Verifica se a validação do formulário não está OK
								if(!blnValidacaoForm)
								{
									//Caso afirmativo, sai do loop
									break;
								}
							}
						}
						else if(objPergunta.getAttribute("TipoRespPerg")=="combo")
							{
								if(arrRespostaPerg.length==0)	//Caso alguma alternativa tenha sido escolhida
								{
									if(intNumMiniResp > 0)		//Caso nenhuma alternativa tenha sido escolhida e a pergunta seja obrigatória
									{
										alert("Escolha uma alternativa para a pergunta '" + strPergunta + "'.");
										blnValidacaoForm = false;
										strNmObjAltn = "sltAltn" + intCodPerg;
										objAltn = document.getElementById(strNmObjAltn);
										objAltn.focus();
										break;
									}
								}
							}
			}
			//Verifica se a validação do formulário não está OK
			if(!blnValidacaoForm)
			{
				//Caso afirmativo, sai do loop
				break;
			}
		}
		//Verifica se todas as respostas do formulário são válidas
		if(blnValidacaoForm)
		{
			//Varifica se não é a última página
			if(intNumPage!=intNumPageFIN)
				//Chama a próxima página
				document.getElementById("frmEnquete").action = "ExecutaAcaoEnquete.asp";
			else
				//Chama a página de resposta
				//document.getElementById("frmEnquete").action = "ExecutaAcaoEnquete.asp";
				document.getElementById("frmEnquete").action = "ExecutaAcaoEnquete.asp";
			//Submete o formulário
			document.getElementById("frmEnquete").submit();
		}
	}
	
	/******************************************************************************
	/ Objetivo  : Limpa o valor do campo passado
	/ Premissas : 
	/ Entradas  : 
	/ Retorno   : Nenhum
	/******************************************************************************/
	function LimpaCampo(object)
	{
		if(trim(object.value)=="Responda aqui")
		object.value="";
	}
	
	/******************************************************************************
	/ Objetivo  : Limpa o valor do campo passado
	/ Premissas : 
	/ Entradas  : 
	/ Retorno   : Nenhum
	/******************************************************************************/
	function PreencheCampo(object)
	{
		if(trim(object.value)=="")
		{
			object.value = "";
		}
	}	
	
	/******************************************************************************
	/ Objetivo  : Substitui o caracter especificado por outro
	/ Premissas : 
	/ Entradas  : 
	/ Retorno   : String com os caracteres substituídos
	/******************************************************************************/
	function Replace(strTexto, strChr, strChrSub)
	{
		var blnContinua = 1;		//Variável que indica se o loop deve continuar
	
		while (blnContinua)
		{
			if (strTexto.indexOf(strChr)!=-1)
			{
				strTexto = strTexto.replace(strChr, strChrSub);
				blnContinua = 1;
			}
			else
			{
				blnContinua = 0;
			}
		}
		return strTexto;
	}	
	
	
	/******************************************************************************************
	/ Objetivo  : Verifica <ENTER>
	/ Premissas : 
	/ Entradas  : 
	/ Retorno   : Nenhum
	/******************************************************************************************/
	function DeterminaTeclaPressionada(objEvento)
	{
		if (window.event){
			if (window.event.keyCode == 13){
				return false;
			}
		}
		else{
			if (objEvento.which == 13){
				return false;
			}
		}
	}
