/********************  VALIDAÇÃO ******************************/

Date.prototype.Dtos = function() {
  var dd = this.getDate();
  var mm = this.getMonth() + 1;
  var yy = this.getFullYear();
	
  return( [ yy , ( mm < 10 ? '0' : '' ) + mm , ( dd < 10 ? '0' : '' ) + dd ].join( '' ) );
}

Array.prototype.hasEmptyElements = function() {
  for( var i = 0 ; i < this.length ; i++ )
   if( ( this[ i ] == '' ) || ( this[ i ] == null ) || ( this[ i ] == undefined ) )
	  return( true );
			
   return( false );
}

String.prototype.isNumber = function() {
  return( !isNaN( this.split( '.' ).join( '' ).split( ',' ).join( '' ).split( '-' ).join( '' ) ) );
}

String.prototype.isDate = function() {
  if( this.split( '/' ).length != 3 ) return( false );

   var dd = Number( this.split( '/' )[ 0 ] );
   var mm = Number( this.split( '/' )[ 1 ] );
   var yy = Number( this.split( '/' )[ 2 ] );
   var dt = new Date( yy , mm -1 , dd  );
	
  return( [ yy , ( mm < 10 ? '0' : '' ) + mm , ( dd < 10 ? '0' : '' ) + dd ].join( '' ) == dt.Dtos() );
}

String.prototype.isMail = function() {
 var test;
 var pt1    = this.split( '@' );
 var valid  = '.-_@';
		
	if( ( pt1.length != 2 ) || ( pt1[ 0 ].length == 0 ) || ( pt1[ 1 ].length == 0 ) ) 
		return( false );
	else {
	  for( var i = 0 ; i < valid.length - 1 ; i++ ) {
		if( pt1[ 0 ].split( valid.charAt( i ) ).hasEmptyElements() ) return( false );
		if( pt1[ 1 ].split( valid.charAt( i ) ).hasEmptyElements() ) return( false );
	   }			
	}
	for( var i = 0 ; i < this.length ; i++ ) {
	  var charac = this.toUpperCase().charCodeAt( i );
	  
		if( valid.indexOf( String.fromCharCode( charac ) ) == -1 )
		if(!( ( ( charac >= 65 ) && ( charac <= 90 ) ) || ( ( charac >= 48 ) && ( charac <= 57 ) ) ) ) 
		   return( false );
	}	
	
  return( true );
}

String.prototype.isCNPJ = function() {
 var b = [6,5,4,3,2,9,8,7,6,5,4,3,2], c = this;

  if((c = c.replace(/[^\d]/g,"").split("")).length != 14) return ( false );
  for(var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
  if(c[12] != (((n %= 11) < 2) ? 0 : 11 - n)) return ( false );
  for(var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
  if(c[13] != (((n %= 11) < 2) ? 0 : 11 - n)) return ( false );

  return ( true );
}


function fnc_verifica_form( form ) {
 var showMessage = function(p_msg, p_campo ){ alert( p_msg ); p_campo.focus();  return false; }
 var temSecao    = ( fnc_verifica_form.arguments.length == 2 )?true:false;
 var secao	     = ( temSecao )?fnc_verifica_form.arguments[ 1 ]:'';
 var mensagem    = '';

 for( var i = 0; i < form.length; i++ ) {
  	  var campo 	= form.elements[ i ];	  
  	  var tipo  	= campo.getAttribute('tipo');
  	  var requerido = campo.getAttribute('obrigatorio');	  
  	  var display	= campo.getAttribute('display');
	  if ( requerido )
		  var valor 	= campo.value.replace(/^\s*|\s*$/g,"");
  	  var erro	    = false ;
  
	  // verificação se existe seção ou não 
	  if ( ( temSecao && secao == campo.getAttribute('secao') ) || !temSecao )  { 
		  // se o campo for requerido
		  if ( requerido == 1 ) { 
		  	 // validação simples
    			if ( !valor ) {
				   mensagem =  'O campo ' + display + ' ' + String.fromCharCode( 233 ) + ' requerido.';
				   if (tipo == 'pelo_menos_um'){
						mensagem = mensagem + ' Inclua pelo menos um';
				   }
				   return( showMessage( mensagem , campo  ) );		
				} 
			    // validação dos tipos
			    if( tipo && valor ) { 
				   mensagem = 'O valor do campo ' + display + ' deve ser ';
					if( tipo == 'numerico' && !valor.isNumber() ){
					    erro = true;
					    mensagem += ' num' + String.fromCharCode( 233 ) + 'rico.';
					} else if ( tipo == 'data' && !valor.isDate() ) {
						erro = true;
						mensagem = 'O campo ' + display + ' deve conter ';
						mensagem += ' uma data v' + String.fromCharCode( 225 ) + 'lida.';
					} else if( tipo == 'email' && !valor.isMail() ){ 
						erro = true;
					 	mensagem += ' um e-mail v'+ String.fromCharCode( 225 )+'lido.';
					} else if ( tipo == 'cpf' && !valida_cpf(valor) ) { 
						erro = true;
						mensagem += ' um cpf v' + String.fromCharCode( 225 ) + 'lido.';
				    } else if( tipo == 'cnpj' && !valor.isCNPJ()) {
					 	erro = true;
					 	mensagem += 'um CNPJ v' + String.fromCharCode( 225 ) + 'lido.';
				    } 
				   // mostra erro
				   if( erro ) return( showMessage( mensagem , campo  ) );
			   } 	 			
		  }
	  }
 }

 return ( true );
}

/********************  MÁSCARA ******************************/

function Mascara(objeto, evt, mask) {
 
var LetrasU = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÇ';
var LetrasL = 'abcdefghijklmnopqrstuvwxyzç';
var Letras  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÇabcdefghijklmnopqrstuvwxyzç';
var Numeros = '0123456789';
var Fixos  = '().-:/ '; 
var Charset = " !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_/`abcdefghijklmnopqrstuvwxyz{|}~";

evt = (evt) ? evt : (window.event) ? window.event : "";
var value = objeto.value;
if (evt) {
 var ntecla = (evt.which) ? evt.which : evt.keyCode;
 
 tecla = Charset.substr(ntecla - 32, 1);
 
 if (ntecla < 32) return true;
 
 if (tecla == '') return false;

 var tamanho = value.length;
 if (tamanho >= mask.length) return false;

 var pos = mask.substr(tamanho,1); 
 while (Fixos.indexOf(pos) != -1) {
  value += pos;
  tamanho = value.length;
  if (tamanho >= mask.length) return false;
  pos = mask.substr(tamanho,1);
 }

 switch (pos) {
   case '#' : if (Numeros.indexOf(tecla) == -1) return false; break;
   case 'A' : if (LetrasU.indexOf(tecla) == -1) return false; break;
   case 'a' : if (LetrasL.indexOf(tecla) == -1) return false; break;
   case 'Z' : if (Letras.indexOf(tecla) == -1) return false; break;
   case '*' : objeto.value = value; return true; break;
   default : return false; break;
 }
}
objeto.value = value; 
return true;
}

function MaskCEP(objeto, evt) { 
return Mascara(objeto, evt, '##.###-###');
}

function MaskCODIGO(objeto, evt) { 
return Mascara(objeto, evt, '####');
}

function MaskCODIGO6(objeto, evt) { 
return Mascara(objeto, evt, '######');
}

function MaskDATA(objeto, evt) { 
return Mascara(objeto, evt, '##/##/####');
}

function MaskTelefone(objeto, evt) { 
return Mascara(objeto, evt, '(##) ####-####');
}

function MaskCPF(objeto, evt) { 
return Mascara(objeto, evt, '###.###.###-##');
}

function MaskCNPJ(objeto, evt) { 
return Mascara(objeto, evt, '##.###.###/####-##');
}

function MaskPlacaCarro(objeto, evt) { 
return Mascara(objeto, evt, 'AAA-####');
}
function apenasNumero(objeto, evt) { 
return Mascara(objeto, evt, '##################');
}
/*****************   GERAIS   ************************/
function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

function Contar(Campo,id,qtd_caracteres){

	if((qtd_caracteres-Campo.value.length) <= 0){
	   alert('Atenção! Você atingiu o limite máximo de '+qtd_caracteres+' caracteres!');
	   Campo.value = Campo.value.substr(0,qtd_caracteres);
	}
	//alert(document.getElementById(id))
	document.getElementById(id).innerHTML = qtd_caracteres-Campo.value.length
}

function swapBG( el, BG1, BG2 ){
  el.style.backgroundColor = ( el.style.backgroundColor == BG1 ) ? BG2 : BG1;
}

function expande_objeto(id, ponteiro){
	
	if ( ponteiro ){
		/*alert(document.getElementById(ponteiro).className);*/
		document.getElementById(ponteiro).className=='visivel' || document.getElementById(ponteiro).className=='' ? document.getElementById(ponteiro).className='invisivel' : document.getElementById(ponteiro).className='visivel';
	}
	
	document.getElementById(id).className=='visivel' ? parent.document.getElementById(id).className='invisivel' : parent.document.getElementById(id).className='visivel';
}

function listAdd(list, value, separator) {
	separator 		 = separator || ",";
	if(list.length == 0)
		list	= value;
	else
		list	= list+separator+value;
	return list;
}

function listDelete(list, value, separator) {
  separator = separator || ",";
  var values = list.split(",");
  for(var i = 0 ; i < values.length ; i++) {
	if(values[i] == value) {
	  values.splice(i, 1);
	  return values.join(",");
	}
  }
  return list;
}

function Left(str, n){
	if (n <= 0)
		return "";
	else if (n > String(str).length)
		return str;
	else
		return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}


function criaInput(tipo,id,classe,valor){
	var newInput = $("<input>", { type: tipo, val: valor });
	newInput.attr('id',id);
	newInput.attr('name',id);
	newInput.attr('value',valor);
	newInput.addClass(classe);
	return newInput;
}

/********* AJAX ***********/
function carregaPagina(caminho,param,div){
	parent.$("#"+div+'Loading').show();
	$.ajax({
	   contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
	   type: "POST",
	   url: caminho,
	   data: param,
	   success: function(html){
		 $("#"+div).html(html);
		 parent.$("#"+div+'Loading').hide();
	   }
	});
	
}

//função para limpar a entidade
function limpaEntidade(){
	$.ajax({
	   contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
	   type: "POST",
	   url: '_modulos/gestao/_acoes/defineGestao.cfm',
	   data: 'operacao=limpar_gestao',
	   success: function(html){
		 top.location='index.cfm';
	   }
	});
}

function pegaHora(){
	var today=new Date();
	var h=today.getHours();
	var m=today.getMinutes();
	var s=today.getSeconds();
	
	if (s < 58 )
		s=s+1;
		
	if(h<10){h='0'+h}
	if(m<10){m='0'+m}
	if(s<10){s='0'+s}

	return h+":"+m+":"+s;
}

function pegaData(){
	var hoje = new Date();
	var dd = hoje.getDate();
	var mm = hoje.getMonth()+1;
	var yyyy = hoje.getFullYear();
	
	if(dd<10){dd='0'+dd}
	if(mm<10){mm='0'+mm}
	
	return dd+'/'+mm+'/'+yyyy;
}
