/*#############################################################################
JavaScript Document
Criado por Thiago Costa 
Data: 08/12/2008 20:37

Objetivo: Biblioteca de funções genéricas

Histórico de alterações/inclusões

Data                Responsável                   Descrição da alteração/inclusão
-----------------   --------------------------    ---------------------------------------------------------------------
23/01/09 - 11:17    Thiago Costa 				  criada a função selectValueIndexAll


#############################################################################*/
function buscaDados(){
	fc = "buscaDados";
	q = document.getElementById("req_cep").value;	
	url="getDadosPorCep.asp?sid=" + Math.random() + "&q="+escape(q);	
	if (q.length > 0){
		sendGet("true");			
	}else{
		alert("Por favor, primeiramente preencha o campo CEP.");
//		document.getElementById("req_cep").focus();
		return false;
	}
}

/*
=============================================================================================
FUNÇÃO EXIBE CORTINA 

*/
function callLayerBlock(idObjectCortina,widthValue,leftValue){ //abrir cortina
	if (widthValue == "" || widthValue == null){
		widthValue = "92%";
	}
	if (leftValue == "" || leftValue == null){
		leftValue = "4%";
	}
	$.blockUI({ message: $('#'+idObjectCortina), css: { top:'50px', width: widthValue, left: leftValue } }); 		
} 

/*
=============================================================================================
FUNÇÃO FECHA CORTINA 

*/
function unCallLayerBlock(){ //fechar cortina
	document.getElementById('cortina').innerHTML = "";
	$.unblockUI();
}

/*
Verifica os campos de preenchimento obrigatório de um formulário 
(o bakground dos campos obrigatórios e vazios são destacados após validação)
retorno = S retorna o valor de numAlert (0 campos validados - 1 campos não validados)

*/
function checkRequiredForm(form,corInputRequired,retorno){
	var numAlert = 0; //utilizado para verificar se os campos obrigatórios foram preenchidos
	if(corInputRequired == "" || corInputRequired == null){
		corInputRequired = "#EBC5C5";
	}
	if(retorno == "" || retorno == null){
		retorno = "N";
	}
	var objFocus = ""
	with(form){	
		for (var i = 0; i < elements.length; i++){			
			if(elements[i].name != undefined){
				if (elements[i].name.indexOf("req_hdn") == -1 && elements[i].name.indexOf("req_") == 0){						
					if (elements[i].value == ""){
						if (numAlert != 1) {						
							numAlert = 1;
						}
						cor = corInputRequired;
						elements[i].style.background = cor;
						if(objFocus == ""){
							objFocus = elements[i].name;
						}
					}else{
						cor = "#FFFFFF";
						elements[i].style.background = cor;
					}
				}
			}			
		}
		if(retorno == "N"){
			if (numAlert == 1){
				alert("Os campos assinalados com asterisco são de preenchimento obrigatório!");
				document.getElementById(objFocus).focus();
				return false;	
			}		
		}else{
			return numAlert;	
		}
		//alert(numAlert);
	}
}
/*
=============================================================================================
Verifica os campos de preenchimento obrigatório de um formulário 
*/
function checaForm(form,msg){
	with(form){
		if (msg == "" || msg == null){
			msg = "Não foi possível realizar a operação. Preencha todos os campos assinalados com asterisco (*)";
		}
		var formName = form.name;
		//==Verifica se todos os campos do formulário estão preenchidos
		for(var l=0; l < elements.length; l++){
			if (elements[l].name.indexOf("req_hdn") == -1 && elements[l].name.indexOf("req_") == 0){								
				if (elements[l].value == ""){					
					alert(msg);	
					elements[l].focus();
					return false;
				}
			}
		}				
	}	
}
/*
=============================================================================================
Verifica se o email está no padrão
a função retorna os seguintes valores:
	1 => email válido
	0 => email inválido
*/
function checkEmail(strEmail){
	var reEmail = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	var returnCheckEmail = (!reEmail.test(strEmail) ? 0 : 1);
	return returnCheckEmail;
}
/*
=============================================================================================
Verifica se o email está no padrão
a função muda o background do input exibe um alert e retorna false
*/
function checkEmailBreak(objEmail,msg,cor){
	if (msg == "" || msg == null){
		msg = "O e-mail digitado é inválido!";
	}
	if(cor == "" || cor == null){
		cor = "#EBC5C5";
	}
	var reEmail = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	var returnCheckEmail = (!reEmail.test(objEmail.value) ? 1 : 0);

	if (returnCheckEmail == 1){
		alert(msg);	
		objEmail.style.background = cor;
		objEmail.focus();
		return 0;		
	}else{
		return 1;	
	}
}
/*
=============================================================================================
FUNÇÃO: verifica se um objeto de um 'conjunto de objetos' do tipo radio ou checkbox está setado
Entrada:
	objectName = nomde do objeto
	objectType = tipo do objeto (radio/checkbox)
	form = objeto tipo formulário onde está o conjunto de objetos
*/
function checkConjObject(objectName, objectType, form){
	var checkbox = 0;	
	with(form){		
		for (var i = 0; i < elements.length; i++){				
			if(elements[i].name.replace(" ","") == objectName.replace(" ","")){														
				if(elements[i].type.replace(" ","") == objectType.replace(" ","")){
					if(elements[i].checked){
						checkbox = 1;	
						break;
					}			
				}
			}	
		}			
	}
	return checkbox;	
}

/*
=============================================================================================
FUNÇÃO habilita ou desabilita campo
Entrada: dois objetos (objOrigem do tipo checbox/radio) quando checado, hablita o objeto referenciado pelo argumento objManipula, _
quando não estiver checado desahablita o objeto referenciado pelo argumento objManipula
*/
function enableDisableInput(objOrigem,objManipula){
	if(objOrigem.checked){
		objManipula.disabled = false;		
	}else{
		objManipula.disabled = true;
		objManipula.value 	 = "";
	}
}
/*
=============================================================================================
FUNÇÃO habilita ou desabilita campo(s)
Entrada: um objeto (objOrigem do tipo checbox/radio) quando checado, hablita os objetos referenciados pelo argumento objManipula, _
quando não estiver checado desahablita o objeto referenciado pelo argumento objManipula
*/
function enableDisableInputMore(objOrigem,strObjManipula){
	var acao;
	manipula =strObjManipula.split(",");
	if(objOrigem.checked){
		acao = false;
	}else{
		acao = true;
	}
	for(var i=0;i<manipula.length;i++){// percorre os objetos 
		document.getElementById(manipula[i]).disabled = acao;
		if(document.getElementById(manipula[i]).type == "radio" || document.getElementById(manipula[i]).type == "checkbox"){ //tira o check do objeto
			document.getElementById(manipula[i]).checked = false;
			
		}else if(document.getElementById(manipula[i]).type == "text"){ //limpa o value do objeto
			document.getElementById(manipula[i]).value = "";
		}
		
	}	
}
/*
=============================================================================================
FUNÇÃO habilita ou desabilita campo(s)
Entrada: control =(true/false) para o controle do objeto
strObj = string separada por vírgula com o nome dos objetos a serem controlados
*/

function enableDisableInputs(control, strObj,clear){
	manipula =strObj.split(",");
	for(var i=0;i<manipula.length;i++){// percorre a string controlando os objetos 
		document.getElementById(manipula[i]).disabled = control;
		if(clear == 1){		
			if(document.getElementById(manipula[i]).type == "radio" || document.getElementById(manipula[i]).type == "checkbox"){ //tira o check do objeto
				document.getElementById(manipula[i]).checked = false;
				
			}else if(document.getElementById(manipula[i]).type == "text"){ //limpa o value do objeto
				document.getElementById(manipula[i]).value = "";
			}					
		}			
	}	
}
/*
=============================================================================================
FUNÇÃO habilita ou desabilita campo(s)
Entrada: objControl objeto de controle
condicao =(true/false) para o controle do estado do objeto
acao = (true/false) controle a ser atribuido ao objeto
coAcao = valor inverso do argumento acao
strObj = string separada por vírgula com o nome dos objetos a serem controlados
*/
function enableDisableInputsControl(objControl,condicao,acao,coAcao,strObj,clear,corAcao,corCoAcao){
	manipula =strObj.split(",");
	for(var i=0;i<manipula.length;i++){// percorre a string controlando os objetos 		
		if(objControl.checked == condicao){
			document.getElementById(manipula[i]).style.background = corAcao;
			document.getElementById(manipula[i]).disabled = acao;
		}else{
			document.getElementById(manipula[i]).style.background = corCoAcao;
			document.getElementById(manipula[i]).disabled = coAcao;				
		}	
		if(clear == 1){		
			if(document.getElementById(manipula[i]).type == "radio" || document.getElementById(manipula[i]).type == "checkbox"){ //tira o check do objeto
				document.getElementById(manipula[i]).checked = false;
				
			}else if(document.getElementById(manipula[i]).type == "text"){ //limpa o value do objeto
				document.getElementById(manipula[i]).value = "";
			}					
		}
		
	}	
}

/*
=============================================================================================
FUNÇÃO FORMATA DATA (FORMATA DATA NO MODELO DD/MM/AAAA)  
EXEMPLO DE CAHAMADA|UTILIZAÇÃO: var dataNascimento = formataData(document.getElementById("dia").value +"/"+document.getElementById("mes").value+"/"+document.getElementById("ano").value);
*/
function formataData(data){ 
	var dia = data.split("/")[0]; mes = data.split("/")[1];	ano = data.split("/")[2];		
	if(dia < 10 && dia.length <=1){
		dia = 0 + dia;
	}
	if(mes < 10 && mes.length <=1){
		mes = 0 + mes;
	}
	return dia+"/"+mes+"/"+ano;
}


// formata o input para moeda
function Limpar(valor, validos) {
	// retira caracteres invalidos da string
	var result = "";
	var aux;
	for (var i=0; i < valor.length; i++) {
		aux = validos.indexOf(valor.substring(i, i+1));
		if (aux>=0) {
			result += aux;
		}
	}
	return result;
}

/*
=============================================================================================
Formata número tipo moeda usando o evento onKeyDown
*/
function Formata(campo,tammax,teclapres,decimal) {
	var tecla = teclapres.keyCode;
	vr = Limpar(campo.value,"0123456789");
	tam = vr.length;
	dec=decimal

	if (tam < tammax && tecla != 8){
		tam = vr.length + 1 ; 
	}	
	if (tecla == 8 ){
	 tam = tam - 1 ; 
	}
	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){	
		if ( tam <= dec ){
		 campo.value = vr; 
		}
		if ( (tam > dec) && (tam <= 5) ){
			campo.value = vr.substr( 0, tam - 2 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 6) && (tam <= 8) ){
			campo.value = vr.substr( 0, tam - 5 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 9) && (tam <= 11) ){
			campo.value = vr.substr( 0, tam - 8 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 12) && (tam <= 14) ){
			campo.value = vr.substr( 0, tam - 11 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - dec, tam ) ; 
		}
		if ( (tam >= 15) && (tam <= 17) ){
			campo.value = vr.substr( 0, tam - 14 ) + "." + vr.substr( tam - 14, 3 ) + "." + vr.substr( tam - 11, 3 ) + "." + vr.substr( tam - 8, 3 ) + "." + vr.substr( tam - 5, 3 ) + "," + vr.substr( tam - 2, tam ) ;
		}
	} 
}

/*
=============================================================================================
Exibe objeto com efeito fade
objectType = tipo do objeto ex: div
idObject = id do objeto ex: codInterno
*/
function fadeOver(objectType,idObject){
	 var code = objectType+"#"+idObject;
	 $(code).fadeIn(); // ou slideDown()
}

/*
=============================================================================================
Esconde objeto com efeito fade
objectType = tipo do objeto ex: div
idObject = id do objeto ex: codInterno
*/
function fadeOut(objectType,idObject){
	var code = objectType+"#"+idObject;
    $(code).fadeOut(); // ou slideUp()
}
/*
=============================================================================================
Esconde objeto com efeito fade
objectType = tipo do objeto ex: div
idObject = id do objeto ex: codInterno
*/
function fadeOutTime(objectType,idObject){
	var code = objectType+"#"+idObject;
	setTimeout(function(){$(code).fadeOut();}, 3000);
   // ou slideUp()
}
/*
=============================================================================================
Percorre imagens da página e retorna a soma do width das imagens que estejam na pasta imagens_menu
*/
function getImgsMenu(){
	var soma = 0;
	for(var i=0;i<document.images.length;i++){
		if(document.images[i].src.split("/")[document.images[i].src.split("/").length - 2].toString() == "imagens_menu"){
			//alert(document.images[i].offsetWidth);
			soma = soma + document.images[i].offsetWidth;
			//alert(soma);
		}
	}
	return soma;
}
/*
=============================================================================================
FORMATA O VALOR DE UM INPUT  
COMPATÍVEL COM IE E FIREFOX
EXEMPLO DE CAHAMADA: 
CEP  = onkeypress="formatar_mascara(this, '#####-###')" maxlength="9"
CPF  = onkeypress="formatar_mascara(this, '###.###.###-##')" maxlength="14"
CNPJ = onkeypress="formatar_mascara(this, '##.###.###/####-##')" maxlength="18"
*/
function mask(src, mascara) {
	var campo = src.value.length;
	var saida = mascara.substring(0,1);
	var texto = mascara.substring(campo);
	if(texto.substring(0,1) != saida) {
		src.value += texto.substring(0,1);
	}
}

/*
=============================================================================================
RESTRINGE OS VALORES APENAS PARA NÚMEROS exceto ponto (.) AO DIGITAR   
EXEMPLO DE CAHAMADA: onKeyPress="return percent(event);"
*/
function percent(e){
	var navegador;
	navegador = /msie/i.test(navigator.userAgent);
	if (navegador)
		var tecla = e.keyCode;
	else{
		var tecla = e.which;
		if(tecla == 0)
			return true;//TAB
	}
	if(tecla == 46 || (tecla > 47 && tecla < 58) ) // numeros de 0 a 9
		return true;
	else{
		if (tecla != 8 && tecla !=9) // backspace
			return false;
		else
			return true;
	}
}

/*
=============================================================================================
Exibe mensagem tipo confirm ao usuário e Redireciona usuário 
entrada: url = string (endereço de redirecionamento), msg = string (mensagem apresentada ao usuário)
*/
function redirectConfirm(url,msg){
	if(confirm(msg)){
		document.location = url;	
	}
}

/*
=============================================================================================
FUNÇÃO RETORNA MASK (RETORNA O VALOR PASSADO FORMATADO DE ACORDO COM O PARÂMETRO[cpf OU cnpj)  
EXEMPLO DE CAHAMADA|UTILIZAÇÃO: var cpf = returnMask('31201965896','cpf');
*/
function returnMask(param, type){
	var content = "";
	if(type == "cpf" && param.length == 11){		
		var digitos = 3;
		var separador = ".";
		for(var k = 0; k < param.length; k++){	
			if(k == 9){
				digitos = 2;
				separador = "-";
			}		
			content += (k == 0)? param.substr(k,digitos) : separador+param.substr(k,digitos);	//operador condicional	
			k = k+2;
		}
	}else if(type == "cnpj"){ 	//mascara 99.999.999/9999-99
		content += param.substr(0,2)+"."+param.substr(2,3)+"."+param.substr(5,3)+"/"+param.substr(6,4)+"-"+param.substr(12,2);  
	}
	return content;
}
/*
=============================================================================================
FUNÇÃO QUE RETORNA O VALOR PASSADO SEM A MÁSCARA
var cnpj = returnWithoutMask('05.514.262/0001-98','cnpj');
*/
function returnWithoutMask(param, type){
	var content = "";
	if(type == "cnpj"){ 	//mascara 99.999.999/9999-99
		content += param.substr(0,2)+param.substr(3,3)+param.substr(7,3)+param.substr(11,4)+param.substr(16,2);
	}
	return content;
}
/*
método que atribui aos input hiddens, os valores do checkbox selecionado
*/
function selectItems(input,param,obj){
	if(param == ""){
		alert("Erro - O valor do argumento (param) não é válido!"); //RETIRAR APÓS TÉRMINO DO DESENVOLVIMENTO 
		input.checked = false;
		return false;	
	}
	var hdn = "";
	hdn = obj.value;
	var err = "";
	// se o checkbox estiver tickado...
	if (input.checked){
		// se o input hidden estiver vazio...
		if (hdn == ""){
			hdn = param;
		}else{
			hdn += "," + param;
		}	
	}else{		
		//se estiver na primeira posição...
		if (hdn.indexOf(param) == 0)
			//se for somente uma foto selecionada...
			if ((hdn.indexOf(",")) == -1)
				hdn = hdn.replace(param,"");
			else
				hdn = hdn.replace(param+",","");
		else
			hdn = hdn.replace(","+param,"");
	}
	obj.value = hdn;
}

/*
=============================================================================================
seleciona uma opção do combo box de acordo com o value passado
criada em 13 de abril de 2007 - Yeiki
obj=objeto select -- value=valor a ser selecionado no select
*/
function selectValueIndex(obj, value){
	for(var i = 0;i<obj.options.length;i++){
		if(obj.options[i].value == value){
			obj.selectedIndex = i;
			break;
		}
	}
}

/*
=============================================================================================
seleciona ou tira a sleção de todas os option(s) de um combobox 
Entrada: objOrigem = objeto do tipo select 
		 boolean   = true/false (true - seleciona os options / false - tira a selação dos options)
*/
function selectValueIndexAll(objOrigem,boolean){ //Liberar ou Bloquear todos os recursos para um usuário
	for(var i = 0;i<objOrigem.options.length;i++){
		objOrigem.options[i].selected = boolean;			
	}	
}

/*
=============================================================================================
entrada objeto do tipo select
retorna true caso o select tenha algum option selecionado e false caso contrário
*/
function returnSelected(obj){
	for(var i = 0;i<obj.options.length;i++){
		if(obj.options[i].selected){
			return true;
		}
	}
	return false;
}

/*
=============================================================================================
RESTRINGE OS VALORES APENAS PARA NÚMEROS AO DIGITAR   
EXEMPLO DE CAHAMADA: onKeyPress="return SoNumber(event);"
*/
function SoNumber(e){
	var navegador;
	navegador = /msie/i.test(navigator.userAgent);
	if (navegador)
		var tecla = e.keyCode;
	else{
		var tecla = e.which;
		if(tecla == 0)
			return true;//TAB
	}
	if(tecla > 47 && tecla < 58) // numeros de 0 a 9
		return true;
	else{
		if (tecla != 8 && tecla !=9) // backspace
			return false;
		else
			return true;
	}
		
}

/*
=============================================================================================
FUNÇÃO VALIDA CPF  
EXEMPLO DE CAHAMADA|UTILIZAÇÃO: if(!valida_cpf(document.getElementById("CPFCNPJ").value)){}
*/
function valida_cpf(cpf){ // 	
      var numeros, digitos, soma, i, resultado, digitos_iguais;
      digitos_iguais = 1;
      if (cpf.length < 11)
            return false;
      for (i = 0; i < cpf.length - 1; i++)
            if (cpf.charAt(i) != cpf.charAt(i + 1))
                  {
                  digitos_iguais = 0;
                  break;
                  }
      if (!digitos_iguais)
            {
            numeros = cpf.substring(0,9);
            digitos = cpf.substring(9);
            soma = 0;
            for (i = 10; i > 1; i--)
                  soma += numeros.charAt(10 - i) * i;
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(0))
                  return false;
            numeros = cpf.substring(0,10);
            soma = 0;
            for (i = 11; i > 1; i--)
                  soma += numeros.charAt(11 - i) * i;
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(1))
                  return false;
            return true;
            }
      else
            return false;
}

/*
=============================================================================================
FUNÇÃO VALIDA CNPJ  
EXEMPLO DE CAHAMADA|UTILIZAÇÃO: if(!valida_cnpj(document.getElementById("CPFCNPJ").value)){}
*/
function valida_cnpj(cnpj){  	
  var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
  digitos_iguais = 1;
  if (cnpj.length < 14 && cnpj.length < 15)
		return false;
  for (i = 0; i < cnpj.length - 1; i++)
		if (cnpj.charAt(i) != cnpj.charAt(i + 1))
			  {
			  digitos_iguais = 0;
			  break;
			  }
  if (!digitos_iguais)
		{
		tamanho = cnpj.length - 2
		numeros = cnpj.substring(0,tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--)
			  {
			  soma += numeros.charAt(tamanho - i) * pos--;
			  if (pos < 2)
					pos = 9;
			  }
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0))
			  return false;
		tamanho = tamanho + 1;
		numeros = cnpj.substring(0,tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--)
			  {
			  soma += numeros.charAt(tamanho - i) * pos--;
			  if (pos < 2)
					pos = 9;
			  }
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(1))
			  return false;
		return true;
		}
  else
		return false;
} 


/*
=============================================================================================
FUNÇÃO VALIDA DATA (VERIFICA SE A DATA INFORMADA É VÁLIDA, VALIDA ANO BISSEXTO)  
EXEMPLO DE CAHAMADA|UTILIZAÇÃO: if(!verificaData(dataNascimento)){}
*/
function verificaData(digData){ 
    var bissexto = 0;
    var data = digData;
    var tam = data.length;
    if (tam == 10){
        var dia = data.substr(0,2)
        var mes = data.substr(3,2)
        var ano = data.substr(6,4)
        if ((ano > 1900)||(ano < 2100)){
            switch (mes){
                case '01':
                case '03':
                case '05':
                case '07':
                case '08':
                case '10':
                case '12':
                    if(dia <= 31){
                        return true;
                    }
                    break                
                case '04':        
                case '06':
                case '09':
                case '11':
                    if  (dia <= 30)
                    {
                        return true;
                    }
                    break
                case '02':
                    /* Validando ano Bissexto / fevereiro / dia */
                    if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0)){
                        bissexto = 1;
                    }
                    if ((bissexto == 1) && (dia <= 29)){
                        return true;                
                    }
                    if ((bissexto != 1) && (dia <= 28)){
                        return true;
                    }            
                    break                        
            }
        }
    }    
    return false;
}

//=============================================================================================
//FUNÇÃO MASCARA GENÉRICA - NAO FAZ VALIDACAO  
//EXEMPLO DE CAHAMADA|UTILIZAÇÃO: OnKeyPress="formatar(this, '##/##/####')"
function formatar(src, mask){
  var i = src.value.length;
  var saida = mask.substring(0,1);
  var texto = mask.substring(i)
  if (texto.substring(0,1) != saida)
  {
    src.value += texto.substring(0,1);
  }
}


