/*
**FUNCOES NESTE ARQUIVO**
- ExtensaoArquivoChecar()
- Trim()
- checkMail()
- removeHTMLTags()
- confirmarOPERACAO()
- msgOBRIGATORIO()
- msgSUCESSO()
- msgINSUCESSO()
- validarFCKEditor()
- validarCamposOBRIGATORIOS()
- validarCamposSelectsOBRIGATORIOS()
- senhaConfirmacao()
- camposDadosConfirmar()
- validarPeriodo()
*/

/*
	Valida Periodo entre duas datas, dataInicial e dataFinal.
	
	Parametros:
		- ctrDataInicial = Id do controle que contem a Data INICIAL, exemplo: <input readonly type="text" size="11" name="txtDataInicio" id="txtDataInicio"/>
		- ctrDataFinal = Id do controle que contem a Data FINAL, exemplo: <input readonly type="text" size="11" name="txtDataFinal" id="txtDataFinal"/>
		- dataAtual = Data ATUAL do servido de aplicação, exemplo ColdFusion: '#DateFormat(now(),"dd/mm/yyyyy")#'
		
		Exemplo do Uso da Funcao: validarPeriodo('txtDataInicio','txtDataFinal','#DateFormat(now(),"dd/mm/yyyyy")#')
*/
function validarPeriodo(ctrDataInicial, ctrDataFinal, dataAtual){
	/*var var_DtInicial = new Date(document.getElementById(ctrDataInicial).value.split("/")[2]
								,document.getElementById(ctrDataInicial).value.split("/")[1]-1
								,document.getElementById(ctrDataInicial).value.split("/")[0]);
	
	var var_DtFinal = new Date(document.getElementById(ctrDataFinal).value.split("/")[2]
							,document.getElementById(ctrDataFinal).value.split("/")[1]-1
							,document.getElementById(ctrDataFinal).value.split("/")[0]);
	
	var var_DtAtual = new Date(dataAtual.split("/")[2],dataAtual.split("/")[1],dataAtual.split("/")[0]);*/
	
	var var_DtInicial = document.getElementById(ctrDataInicial).value.split("/")[2]
						+document.getElementById(ctrDataInicial).value.split("/")[1]
						+document.getElementById(ctrDataInicial).value.split("/")[0];
	
	var var_DtFinal = document.getElementById(ctrDataFinal).value.split("/")[2]
						+document.getElementById(ctrDataFinal).value.split("/")[1]
						+document.getElementById(ctrDataFinal).value.split("/")[0];
	
	var var_DtAtual = dataAtual.split("/")[2] + dataAtual.split("/")[1] + dataAtual.split("/")[0];
	
	/*if(typeof(periodoEmDias) != 'undefined' && periodoEmDias != 0){
		alert(Datevar_DtInicial);
		if(var_DtFinal-var_DtInicial > periodoEmDias){
			alert('O PERÍODO excede o limite permitido de '+periodoEmDias+' DIAS.')
			return false
		}else{
			return checkDatas();
		}
	}else{
		return checkDatas();
	}*/
	
/*function checkDatas(){*/
	if(var_DtInicial > var_DtAtual || var_DtFinal > var_DtAtual){
		if(var_DtInicial > var_DtAtual && var_DtFinal > var_DtAtual){
			$(ctrDataInicial).style.backgroundColor = '#FF5B5B';
			$(ctrDataFinal).style.backgroundColor = '#FF5B5B';
			alert('As DATAS NÃO podem ser SUPERIORES à DATA DE HOJE!');			
		}else if(var_DtInicial > var_DtAtual){
			$(ctrDataFinal).style.backgroundColor = '#FFFFFF';
			$(ctrDataInicial).style.backgroundColor = '#FF5B5B';
			alert('A DATA INICIAL NÃO pode ser SUPERIOR à DATA DE HOJE!');
		}else{
			$(ctrDataInicial).style.backgroundColor = '#FFFFFF';
			$(ctrDataFinal).style.backgroundColor = '#FF5B5B';
			alert('A DATA FINAL NÃO pode ser SUPERIOR à DATA DE HOJE!');
		}
		
		return false;
	}else if(var_DtFinal < var_DtInicial){
		$(ctrDataFinal).style.backgroundColor = '#FF5B5B';
		alert('A DATA FINAL NÃO pode ser INFERIOR à DATA INICIAL!');
		return false;
	}else{
		$(ctrDataInicial).style.backgroundColor = '#FFFFFF';
		$(ctrDataFinal).style.backgroundColor = '#FFFFFF';
		return true;
	}
/*}*/
}

/*
	Torna o back-Ground da <tr> da <Table> na cor amarela para evidenciá-la
	-Deve-se criar no documento um controle para que seja guardado a cor anterior da <tr>, por exemplo:
		<input type="hidden" name="hidCorAnterior" id="hidCorAnterior" />
	-A <tr> deverá receber a seguinte configuração:
		<tr id="tr_#currentRow#" onMouseOver="trMarcar('tr_#currentRow#','hidCorAnterior',0)" onMouseOut="trMarcar('tr_#currentRow#','hidCorAnterior',1)">
*/
function trMarcar(trNome,CorAnterior,Marcar){
	if(Marcar == 1){
		document.getElementById(CorAnterior).value = document.getElementById(trNome).style.backgroundColor;
		document.getElementById(trNome).style.backgroundColor = '#FFFF00';
	}else{
		document.getElementById(trNome).style.backgroundColor = document.getElementById(CorAnterior).value;
	}
}

/*	Verifica a extensao requerida do arquivo
	Parametros:
		++ ext == Extensao que se deseja que seja padrao: 'doc'
		++ ctr == Controle onde o arquivo foi informado: "'controle1'"
*/
function ExtensaoArquivoChecar(ext,ctr){
	
	// função modificada para suportar a verificação de vários tipos de arquivos e não somente um.
	/*var extensoesOk = ',.'+ext+',';
	var extensao = ','+Trim(document.getElementById(ctr).value.substr(document.getElementById(ctr).value.length - 4).toLowerCase())+',';
	
	if(extensoesOk.indexOf(extensao) == -1){
		alert('O arquivo NÃO POSSUI extensão '+ext+'.');
		return false;
	}else{return true;}
	*/
	
	extensoes_permitidas = ext;
		
	var extensao    = (document.getElementById(ctr).value.substring(document.getElementById(ctr).value.lastIndexOf("."))).toLowerCase();
		
	permitida = false;

    for (var i = 0; i < extensoes_permitidas.length; i++) {
    	if (extensoes_permitidas[i] == extensao) {
        	permitida = true;
	        break;
    	}
   	}
	if (!permitida) {
		alert("O arquivo não possui uma extensão válida" );
    	return false;
	}
	
  	return true;
	
	
	
	
}

/*Retira espaços INICIAIS e FINAIS desnecessarios de uma STRING*/
function Trim(str){
	return str.replace(/^\s+|\s+$/g,"");
}


/*Valida Email*/
function checkMail(mail){
	var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	
    if(typeof(mail) == "string"){
    	if(er.test(Trim(mail))){
			return true;
		}else{
			alert('Digite SOMENTE 01 Email INVÁLIDO!');
			return false;
		}
		
   	}else if(typeof(mail) == "object"){
   		if(er.test(Trim(mail.value))){
			document.getElementById(mail.id).style.backgroundColor = '#FFFFFF';
			document.getElementById(mail.id).value = Trim(document.getElementById(mail.id).value);
			return false;
		}else{
			document.getElementById(mail.id).style.backgroundColor = '#FF5B5B';
			document.getElementById(mail.id).value = Trim(document.getElementById(mail.id).value);
			alert('Digite SOMENTE 01 Email INVÁLIDO!');
			document.getElementById(mail.id).focus();
			return false;
		}
    }
}


/*Remove formatação HTML das Variaveis*/
function removeHTMLTags(text){
	var strInputCode = text;
	
	strInputCode = strInputCode.replace(/&(lt|gt);/g, function (strMatch, p1) {
		return (p1 == "lt")? "<" : ">";
	});
 
	var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
	return strTagStrippedText;
}


/*Confirma uma determinada OPERAÇÃO*/
function confirmarOPERACAO(Operacao){
	if(confirm('CONFIRMA esta OPERAÇÃO: '+Operacao)){return true;}else{return false;}
}


/*	Emite mensagem de OBRIGATORIEDADE
	Parametros:
		++ msg == Mensagem personalizada a ser emitida, exemplo: msgOBRIGATORIO('Preencha todos os campos!')
*/
function msgOBRIGATORIO(msg){
	if(typeof(msg) == 'undefined' || Trim(msg) == ''){
		alert('PREENCHA os campos marcados em VERMELHO!');
	}else{
		alert(msg);
	}
}


/*	Emite mensagem de sucesso na operação
	Parametros:
		++ msg == Mensagem personalizada a ser emitida, exemplo: msgSUCESSO('Dados enviados com êxito!')
*/
function msgSUCESSO(msg){
	if(typeof(msg) == 'undefined' || Trim(msg) == ''){
		alert('Operação Realizada com SUCESSO!');
	}else{
		alert(msg);
	}
}


/*	Emite mensagem de insucesso na operação
	Parametros:
		++ msg == Mensagem personalizada a ser emitida, exemplo: msgINSUCESSO('Não se pode realizar a operação!')
*/
function msgINSUCESSO(msg){
	if(typeof(msg) == 'undefined' || Trim(msg) == ''){
		alert('Operação NÃO Realizada!');
	}else{
		alert(msg);
	}	
}


/*	Verifica se determinado FCKEditor, controle, é obrigatório.
	Parametros:
		++ varListaControles == Os nomes dos controles deverão ser informados dentro de aspas e da seguinte forma:
									- Mais de um controle a ser validado: "'controle1'+','+'Controle2'+','+'Controle3'+','+'Controle4'"
									- Apenas um controle a ser validado: "'Controle1'"
		++ Operacao == Operação que está sendo efetuada no momento. Exemplo: 'SALVAR Usuário'
		
		++ Confirmar == Valor 1 Exibe MSG de confirmação da Operação e Valor 0 NÃO Exibe MSG de Confirmação da Operação. Exemplo: 0 ou 1
*/
function validarFCKEditor(varListaControles, Operacao, Confirmar){
	var tamanhoVarLista = varListaControles.split(",").length;
	var palavrasVarLista = varListaControles.split(",");
	var var_Contador = -1
	
	for(i=0; i < tamanhoVarLista; i++){
		var oEditor = FCKeditorAPI.GetInstance(palavrasVarLista[i]);
		
		var ENUNCIADO = oEditor.GetHTML();
					
		var TextoSemHTML =  removeHTMLTags(ENUNCIADO);
		var TextoSemTAG = TextoSemHTML.replace(/&nbsp;/gi,'');
		
		if(Trim(TextoSemTAG) == ""){
			if(var_Contador == -1){
				var_Contador = i;
			}
			
			oEditor.EditorDocument.body.style.cssText += 'background-color: #FF5B5B';
			oEditor.EditorDocument.body.innerHTML = "";
		}else{
			oEditor.EditorDocument.body.style.cssText += 'background-color: #FFFFFF';
		}
	}
				
	if(var_Contador != -1){
		var oEditor = FCKeditorAPI.GetInstance(palavrasVarLista[var_Contador]);
		msgOBRIGATORIO();			
		oEditor.Focus();
		return false;
	}else{
		if(Confirmar == 1)
			return confirmarOPERACAO(Operacao);
		else
			return true;
	}
}


/*	Verifica se determinado campo, controle, é obrigatório.
	Parametros:
		++ varListaControles == Os nomes dos controles deverão ser informados dentro de aspas e da seguinte forma:
									- Mais de um controle a ser validado: "'controle'+','+'Controle2'+','+'Controle3'+','+'Controle4'"
									- Apenas um controle a ser validado: "'Controle1'"
		++ Operacao == Operação que está sendo efetuada no momento. Exemplo: 'SALVAR Usuário'
		
		++ Confirmar == Valor 1 Exibe MSG de confirmação da Operação e Valor 0 NÃO Exibe MSG de Confirmação da Operação. Exemplo: 0 ou 1
*/
function validarCamposOBRIGATORIOS(varListaControles, Operacao, Confirmar){
	var tamanhoVarLista = varListaControles.split(",").length;
	var palavrasVarLista = varListaControles.split(",");
	var var_Contador = -1
		
	for(i=0; i < tamanhoVarLista; i++){
		if(document.getElementById(palavrasVarLista[i])){
			if(Trim(document.getElementById(palavrasVarLista[i]).value) == ""){
				if(var_Contador == -1){
					var_Contador = i;
				}
				
				document.getElementById(palavrasVarLista[i]).style.backgroundColor = '#FF5B5B';
				document.getElementById(palavrasVarLista[i]).value = '';
			}else{
				if(document.getElementById(palavrasVarLista[i]).type != 'file'){
					document.getElementById(palavrasVarLista[i]).value = Trim(document.getElementById(palavrasVarLista[i]).value);
					document.getElementById(palavrasVarLista[i]).style.backgroundColor = '#FFFFFF';
				}else{
					document.getElementById(palavrasVarLista[i]).style.backgroundColor = '#FFFFFF';
				}
			}
		}
	}
	
	if(var_Contador != -1){
		msgOBRIGATORIO();
		//document.getElementById(palavrasVarLista[var_Contador]).value = "";
		document.getElementById(palavrasVarLista[var_Contador]).focus();
		return false;
	}else{
		if(Confirmar == 1)
			return confirmarOPERACAO(Operacao);
		else
			return true;
	}
}


/*	Verifica se determinado campo SELECT, controle, é obrigatório.
	Obs.: Para que um campo SELECT seja INVALIDO o se VALUE de ser 0 (zero), ou seja, VALUE="0".
	Parametros:
		++ varListaControles == Os nomes dos controles deverão ser informados dentro de aspas e da seguinte forma:
									- Mais de um controle a ser validado: "'controle'+','+'Controle2'+','+'Controle3'+','+'Controle4'"
									- Apenas um controle a ser validado: "'Controle1'"
		++ Operacao == Operação que está sendo efetuada no momento. Exemplo: 'SALVAR Usuário'
		
		++ Confirmar == Valor 1 Exibe MSG de confirmação da Operação e Valor 0 NÃO Exibe MSG de Confirmação da Operação. Exemplo: 0 ou 1
*/
function validarCamposSelectsOBRIGATORIOS(varListaControles, Operacao, Confirmar){
	var tamanhoVarLista = varListaControles.split(",").length;
	var palavrasVarLista = varListaControles.split(",");
	var var_Contador = -1
	
	for(i=0; i < tamanhoVarLista; i++){
		if(document.getElementById(palavrasVarLista[i])){
			if(document.getElementById(palavrasVarLista[i]).value == 0){
				if(var_Contador == -1){
					var_Contador = i;
				}
				
				document.getElementById(palavrasVarLista[i]).style.backgroundColor = '#FF5B5B';
			}else{
				document.getElementById(palavrasVarLista[i]).value = Trim(document.getElementById(palavrasVarLista[i]).value);
				document.getElementById(palavrasVarLista[i]).style.backgroundColor = '#FFFFFF';
			}
		}
	}
	
	if(var_Contador != -1){
		msgOBRIGATORIO();
		document.getElementById(palavrasVarLista[var_Contador]).value = 0;
		document.getElementById(palavrasVarLista[var_Contador]).focus();
		return false;
	}else{
		if(Confirmar == 1)
			return confirmarOPERACAO(Operacao);
		else
			return true;
	}
}

/* validar senha e confirmacao de senha */

function senhaConfirmacao(senha,confirmacao){
	if(senha == confirmacao){
		return true;
	}else{
		alert('Senha está diferente da confirmação da senha.');
		return false;
	}
}

/* Compara os valores entre dois campos */
function camposDadosConfirmar(valor1, valor2, msg){
	if(Trim(valor1) != Trim(valor2)){
		alert(msg);
		return false;	
	}else{
		return true;
	}		
}

