function validaCGC(NUM_CGC) {

var StrCGC = NUM_CGC
var vaCharCGC

var DataPat  = /^(\d{2}).(\d{3}).(\d{3})\/(\d{4})-(\d{2})/;
var DataPat2 = /^(\d{14})/;

var matchArray   = StrCGC.match(DataPat);
var matchArray2  = StrCGC.match(DataPat2);

if (matchArray == null && matchArray2 == null) {
alert('Formato incorreto\nO número do CNPJ deve ser informado incluindo-se os 14 dígitos.\nNão são necessários os separadores ou zeros à esquerda.\n\nExemplo: 99999999999999');
return false;
} 
else if(matchArray != null) {
StrCGC = matchArray[1] + matchArray[2] + matchArray[3] + matchArray[4] + matchArray[5] ;
}
else if(matchArray2 != null) {
StrCGC = matchArray2[1];
}   

      var Ref_String="1234567890";
      for (Count=0; Count < StrCGC.length; Count++)
      {
       TempChar= StrCGC.substring (Count, Count+1);
       if (Ref_String.indexOf (TempChar, 0)==-1)
        {
        alert("Digite somente Números em seu CGC!");
        document.data.cgc.value = "";
        return false ;
        }
      }

      var varFirstChr = StrCGC.charAt(0);
      var vlMult,vlControle,s1, s2 = "";
      var i,j,vlDgito,vlSoma = 0;
      for ( var i=0; i<=13; i++ ) {

        var c = StrCGC.charAt(i);
        if( ! (c>="0")&&(c<="9") )
        {
			alert("Digite seu CNPJ Corretamente!");
			return false; 
		}
        if( c!=varFirstChr ) { vaCharCGC = true; }
      }
      if( ! vaCharCGC ) 
		{
	     alert("Digite seu CNPJ Corretamente!");
		 return false ;
		}


      s1 = StrCGC.substring(0,12);
      s2 = StrCGC.substring(12,15);
      vlMult = "543298765432";
      vlControle = "";
      for ( j=1; j<3; j++ ) 
      {
       vlSoma = 0;
       for ( i=0; i<12; i++ )
        { 
        vlSoma += eval( s1.charAt(i) )* eval( vlMult.charAt(i) );}
        if( j == 2 )
        { 
        vlSoma += (2 * vlDgito); 
        }
        
        vlDgito = ((vlSoma*10) % 11);
        if( vlDgito == 10 )
        { 
        vlDgito = 0; 
        }
        
        vlControle = vlControle + vlDgito;
        vlMult = "654329876543";
      }
      if( vlControle != s2 ) 
      {
      alert("Digite seu CNPJ Corretamente!");
      return false; 
      }
      else 
      {
      return true; 
      }      
}

function mensagem(texto)
{
//
// ENVIA MENSAGEM DE TESTO EM UMA JANELA
//
	alert("Atenção: "+texto);
}

function MaximizaBrowzer()
{
    /***********************************************
    * Maximiza janela
    ***********************************************/
    top.window.moveTo(0,0);
    if (document.all) 
    {
        top.window.resizeTo(screen.availWidth,screen.availHeight);
    }
    else if (document.layers||document.getElementById) 
    {
        if (top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth)
        {
            top.window.outerHeight = screen.availHeight;
            top.window.outerWidth = screen.availWidth;
        }
    }
}

function isCPF(NUM_CPF){
//
// Confere se o CPF dado esta' OK
//
var result = "";
var OK = false;
NUM_CPF = Limpa(NUM_CPF);
    if (NUM_CPF.length=11){
       var work = NUM_CPF.substring(0,(NUM_CPF.length)-2)
       var resto = Resto(work);
       OK = (resto==eval(NUM_CPF.charAt((NUM_CPF.length)-2)));
       if (OK){
          work=work+resto;
          resto= Resto(work);
          OK = (resto==eval(NUM_CPF.charAt((NUM_CPF.length)-1)));
       }
    }
    if (OK){return true}else{return false}
}

function Limpa(S){
//
// Deixa so' os digitos no numero
//
var Digitos = "0123456789";
var temp = "";
var digito = "";
    for (var i=0; i<S.length; i++){
      digito = S.charAt(i);
      if (Digitos.indexOf(digito)>=0){temp=temp+digito}
    }
    return temp
}

function Inverte(S){
//
// Inverte o string S
//
var temp="";
    for (var i=0; i<S.length; i++){
        temp=S.charAt(i)+temp
    }
    return temp
}

function Resto(S){
//
// Retorna o digito verificador (entrar com S "limpo")
//
var invertido = Inverte(Limpa(S));
var soma = 0;
    for (var i=0; i<invertido.length; i++){
        soma=soma+(i+2)*eval(invertido.charAt(i))
    }
    soma*=10;
    return ((soma % 11) % 10)
}

function VInt(Inteiro) {
		var checkOK = "0123456789";
		var checkCh = 0;
		for (var i = 0; i < Inteiro.length; i++) {   
		    checkCh = 0;
			for (var j = 0;  j < checkOK.length;  j++) {  
			   if (Inteiro.charAt(i)==checkOK.charAt(j) && checkCh==0) {
			       checkCh = 1;
			   }
			}
			if (checkCh == 0) {
				return (false)
			}
		}
		return (true)
}

function isNum( e )
{
	var char = String.fromCharCode( window.event.keyCode );
	return "0123456798".indexOf( char ) &gt; -1;
}	
function numerico(p,codsep){
	
	var sep;
	var a;
	
	if ((event.keyCode>=48 && event.keyCode<=57)){
		//numeros
	}
	else
	{	
		if(event.keyCode==codsep){
			//verificar se já existe neste controle o separador decimal
			a=p.value;
			if(a.search('\\'+String.fromCharCode(codsep))>0){
				event.keyCode=0;	
			}
			if(a.length==0){
				p.value	= p.value + '0';
			}
		}
		else
		{
		event.keyCode=0;
		}
	}
}
function Hora(p)
{
    if ((event.keyCode>=48 && event.keyCode<=57)){
        var a;
        a=p.value;
        if (a.length==2 || a.length==5){
            if (event.keyCode==46){
	            event.keyCode=0;
            }
            else
            {
				p.value  = p.value + ':';
            }
        }
    }
    else
    {
         event.keyCode=0;
    }
}

// Horas no formato: 10:15 ou 140:35 por exemplo.
function formataHoras(obj)
{
	if ((event.keyCode >= 48 && event.keyCode <= 57)) 
	{
		obj.value = obj.value.replace(":", "");
		
		if (obj.value.length > 1)
			obj.value = obj.value.substring(0, obj.value.length - 1) + ":" + obj.value.substring(obj.value.length - 1, obj.value.length + 1);
	}
	else 
		event.keyCode = 0;
}

function data(p)
{

            if ((event.keyCode>=48 && event.keyCode<=57)){

                        var a;

                        a=p.value;

                        if (a.length==2 || a.length==5){

                                   if (event.keyCode==46){

                                   event.keyCode=0;

                                   }

                                   else

                                   {

                                   p.value  = p.value + '/';

                                   }

                        }

            }

            else

            {

                        event.keyCode=0;

            }

}

function VData(dma) {
	arr_dma = dma.split('/')
	if (arr_dma.length != 3) {
		return(false);
	}
	dd = arr_dma[0]; 
	mm = arr_dma[1]; 
	aa = arr_dma[2]; 
	if (!VInt(dd) || !VInt(mm) || !VInt(aa)) {
		return(false)
	}
	dd = parseInt(dd,10);
	mm = parseInt(mm,10);
	aa = parseInt(aa,10);

	if ((aa < 1900) || (mm < 1) || (mm > 12) || (dd < 1)) {
		return(false)
	}
	mes31 = new Array(1,3,5,7,8,10,12)
	for (var i=0;i<7;i++) { 
		if (mm == mes31[i]) {
			mes31_ok = true
			break
		}
		mes31_ok = false
	}
	if (mm == 2) {
		if (bisexto(aa)) {
			if (dd > 29) {
				return(false)
			}
		}
		else { 
			if (dd > 28) {
				return(false)
			}
		}
	} 
	else { 
		if ((mes31_ok) && (dd > 31)) {
					return(false)
		} 
		else { 
				if ((!mes31_ok) && (dd > 30)) {
						return(false)
				}
		}
	}
	return(true)
}

function VHora(hms) {
	if (hms.length < 5) {
		return(false);
	}
	arr_hms = hms.split(':')
	if (arr_hms.length < 2 || arr_hms.length > 3) {
		return(false);
	}
	hh = arr_hms[0]; 
	mm = arr_hms[1]; 
	ss = ((arr_hms.length == 3) ? arr_hms[2] : 0) 
	if (!VInt(hh) || !VInt(mm) || !VInt(ss)) {
		return(false)
	}
	if ((parseInt(hh,10) > 23) || (parseInt(hh,10) < 1) || (parseInt(mm,10) < 0) || (parseInt(mm,10) > 59) || (parseInt(ss,10) < 0) || (parseInt(ss,10) > 59)) { 
		return(false);
	}
	return(true)
}

function bisexto(ano) {
	if (ano % 4 == 0) {
		if (ano % 100 == 0) {
			if (ano % 400 == 0) {
				return(true)
			} 
			return(false)
		} 
		return(true)
	} else {return(false) }
}


function CompData(data1,data2) {
	if (!VData(data1) || !VData(data2)) {
		return('invalido')	
	}
	if (FDataAMD(data1) > FDataAMD(data2)) {
		return('maior')
	} 
	if (FDataAMD(data1) < FDataAMD(data2)) {
			return('menor')
	}
	return('igual')
}

function FData(data) {
	if (!VData(data)) {
		return('invalido')	
	}
	arr_dma = data.split('/')
	dd = parseInt(arr_dma[0],10);
	dd = ((dd < 10) ? "0":"")+dd.toString()
	mm = parseInt(arr_dma[1],10); 
	mm = ((mm < 10) ? "0":"")+mm.toString()
	aa = parseInt(arr_dma[2],10);
	aa = ((aa < 10) ? "200":"")+aa.toString()
	aa = ((aa > 9 && aa < 30) ? "20":"")+aa.toString()
	aa = ((aa > 29 && aa < 100) ? "19":"")+aa.toString()
	return(dd+'/'+mm+'/'+aa)
}

function FDataAMD(data) {
	if (!VData(data)) {
		return('invalido')	
	}
	arr_dma = data.split('/')
	dd = parseInt(arr_dma[0],10);
	dd = ((dd < 10) ? "0":"")+dd.toString()
	mm = parseInt(arr_dma[1],10); 
	mm = ((mm < 10) ? "0":"")+mm.toString()
	aa = parseInt(arr_dma[2],10);
	aa = ((aa < 10) ? "200":"")+aa.toString()
	aa = ((aa > 9 && aa < 30) ? "20":"")+aa.toString()
	aa = ((aa > 29 && aa < 100) ? "19":"")+aa.toString()
	return(aa+mm+dd)
}

function FHora(hora) {
	if (!VHora(hora)) {
		return('invalido')	
	}
	arr_hms = hora.split(':')
	hh = parseInt(arr_hms[0],10);
	hh = ((hh < 10) ? "0":"")+hh.toString()
	mm = parseInt(arr_hms[1],10); 
	mm = ((mm < 10) ? "0":"")+mm.toString()
	ss = parseInt(arr_hms[2],10); 
	if (ss == '') { ss = 0} 
	ss = ((ss < 10) ? "0":"")+ss.toString()
	return(hh+':'+mm+':'+ss)
}

function FHoraHMS(hora) {
	if (!VHora(hora)) {
		return('invalido')	
	}
	arr_hms = hora.split(':')
	hh = parseInt(arr_hms[0],10);
	hh = ((hh < 10) ? "0":"")+hh.toString()
	mm = parseInt(arr_hms[1],10); 
	mm = ((mm < 10) ? "0":"")+mm.toString()
	ss = parseInt(arr_hms[2],10); 
	if (ss == '') { ss = 0} 
	ss = ((ss < 10) ? "0":"")+ss.toString()
	return(hh+mm+ss)
}

function CompHora(hora1,hora2) {
	if (!VHora(hora1) || !VHora(hora2)) {
		return('invalido')	
	}
	if (FHoraHMS(hora1) > FHoraHMS(hora2)) {
		return('maior')
	} 
	if (FHoraHMS(hora1) < FHoraHMS(hora2)) {
			return('menor')
	}
	return('igual')
}

function getDia(strData) {
	var dia = 0;
	arr = strData.split('/');
	dia = parseInt(arr[0],10);
	return dia;
}

function getMes(strData) {
	var mes = 0;
	arr = strData.split('/');
	mes = parseInt(arr[1],10);
	return mes;
}

function getAno(strData) {
	var ano = 0;
	arr = strData.split('/');
	ano = parseInt(arr[2],10);
	return ano;
}

function AddDias(strData, dias) {
	var d = getDia(strData);
	var m = getMes(strData);
	var y = getAno(strData);
	var data = new Date(y,m-1,d + dias);
	strData = "";
	strData += ((data.getDate() < 10)?"0":"") + data.getDate() + "/";
	strData += ((data.getMonth() < 9)?"0":"") + (data.getMonth() + 1) + "/";
	strData += ((data.getYear() < 10)?"200":"");
	strData += ((data.getYear() > 9 && data.getYear() < 30)?"20":"");
	strData += ((data.getYear() > 29 && data.getYear() < 100)?"19":"") + data.getYear();
	return strData;
}

function ValidaData(data)
{
	var Barra1   = data.value.indexOf('/')
	var Barra2   = data.value.lastIndexOf('/')
	var Length   = data.value.length
	var dia = data.value.substring(0,2)
	var mes = data.value.substring(3,5)
	var ano = data.value.substring(6,10)
	
  if ((Barra1 != "2") || (Barra2 != "5"))
  {
		alert("A data está no formato errado. O correto é dd/mm/aaaa.")
    data.focus()
    return false
  }
	
  if (dia > "31") {
		alert("Dia inválido.")
    data.focus()
    return false
  }
  
  if (mes > "12") {
		alert("Mês inválido.")
    data.focus()
    return false
  }
  
  if ((ano < "1999") || (ano.length != 4)){
		alert("Ano inválido.")
    data.focus()
    return false
  }
  
  if ((mes == "04")||(mes == "06")||(mes == "09")||(mes == "11") ) 
  {
		if (dia > 30) 
		{
 			alert("Dia inválido. Este mês só tem 30 dias.")
    	data.focus()
   		return false
		}
		
		if (mes == "02") 
		{
			if (dia > 29) 
			{
 				alert("Dia inválido. Fevereiro não tem este dia.")
    		data.focus()
   			return false
   		}
   		
			if (dia == 29) 
			{
				if (!(((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0)))
				{
 					alert("Dia inválido. Este ano não é bissexto.");
					data.focus();
					return false
				}
			} 
		}
	}
	
	return true;
}
//Retorna a diferença de duas datas
function DateDiff(interval, start, end)
{
	var iOut = 0, rounding=true;
  var bufferA = Date.parse(start);
  var bufferB = Date.parse(end);

  // check that the start parameter is a valid Date.
  if(isNaN (bufferA) || isNaN(bufferB))
  {
      return 0;
  }
  // check that an interval parameter was not numeric.
  if(interval.charAt == 'undefined')
  {
    // the user specified an incorrect interval, handle the error.
    return 0;
  }
	  
  var number = bufferB-bufferA;
  
  // what kind of add to do?
  switch(interval.charAt(0))
  {
    case 'd': case 'D':
      iOut = parseInt(number / 86400000) + parseInt((number %	86400000)/43200001);
      break ;
    case 'h': case 'H':
      iOut = parseInt(number / 3600000 ) + parseInt((number %	3600000)/1800001);
      break ;
    case 'm': case 'M':
      iOut = parseInt(number / 60000 ) + parseInt((number % 60000)/30001);
      break ;
    case 's': case 'S':
      iOut = parseInt(number / 1000 ) + parseInt((number % 1000)/501);
      break ;
    default:
    // If we get to here then the interval parameter
    // didn't meet the d,h,m,s criteria.  Handle
    // the error.
    return 0;
  } 
	  
  return iOut ;
}


/* TxtBoxFormat: formata um campo do formulário de acordo com a máscara informada
				formato que o dado será apresentado, usando o algarismo "9" para definir números e o símbolo "!" para qualquer caracter...
				<input type="textbox" name="xxx" onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);"> 
				qualquer tipo de mascara que use os caracteres "/" "-" ":" "."*/

function TxtBoxFormat(objForm, strField, sMask, evtKeyPress) {
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	if(document.all) { // Internet Explorer
		nTecla = evtKeyPress.keyCode;
	} else if(document.layers) { // Nestcape
		nTecla = evtKeyPress.which;
	} else { // Mozilla, FireFox
		nTecla = evtKeyPress.which;
	}

	sValue = objForm[strField].value;

	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( ":", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;
	
	while (i <= mskLen) {
		bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"));
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "));

		if (bolMask) {
			if (nTecla != 8 || i != mskLen) { // backspace
				sCod += sMask.charAt(i);
			}
			mskLen++;
		} else {
			sCod += sValue.charAt(nCount);
			nCount++;
		}

		i++;
	}

	objForm[strField].value = sCod;

	if (nTecla != 8) { // backspace
		if (sMask.charAt(i-1) == "9") { // apenas números...
			return ((nTecla > 47) && (nTecla < 58)); // números de 0 a 9
		} else { // qualquer caracter...
			return true;
		}
	} else {
		return true;
	}
}


// Funcoes para o OSMOBILE
function NumerosInteiros(e)
{
	if (document.all) // Internet Explorer
		var tecla = event.keyCode;
	else if(document.layers) // Nestcape
		var tecla = e.which;
					
	if (tecla > 47 && tecla < 58) // numeros de 0 a 9
		return true;
	else
	{
		if (tecla != 8) // backspace
			event.keyCode = 0;
		else
			return true;
	}
}

function FormataData(objeto, evento) 
{
	var tecla = evento.keyCode;

	var vr = objeto.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );

	var tam = vr.length + 1;

	if (tecla != 9 && tecla != 8){
		if (tam > 2 && tam < 5)
			objeto.value = vr.substr(0, tam - 2) + '/' + vr.substr(tam - 2, tam);
		if (tam >= 5 && tam <= 10)
			objeto.value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 4);
	}
}

function FormataHora(objeto)
{
	objeto.value = objeto.value.replace(":", "");
	var tamanhoTexto = objeto.value.length;
	
	if (tamanhoTexto > 2)
	{
		var horas = objeto.value.substring(0, tamanhoTexto - 2);
		var minutos = objeto.value.slice(tamanhoTexto - 2);
		
		objeto.value = horas + ":" + minutos;
	}
}

function ProximoCampo(objeto)
{
	if (event.keyCode != 16 && event.keyCode != 9)
	{
		if (objeto.value.length == objeto.maxLength)
			objeto.form[(getIndex(objeto) + 1) % objeto.form.length].focus();
	}
	else
		objeto.select();
}

function getIndex(objeto)
{
	var i;
	
	for(i = 0; i < objeto.form.length; i++)
		if (objeto == objeto.form[i])
			return i;
			
	return -1;
}

function textCounter(field,counter,maxlimit,linecounter) 
{
	// text width//
	var fieldWidth =  parseInt(field.offsetWidth);
	var charcnt = field.value.length;        

	// trim the extra text
	if (charcnt > maxlimit) { 
		field.value = field.value.substring(0, maxlimit);
	}

	else { 
	// progress bar percentage
	var percentage = parseInt(100 - (( maxlimit - charcnt) * 100)/maxlimit) ;
	document.getElementById(counter).style.width =  parseInt((fieldWidth*percentage)/100)+"px";
	document.getElementById(counter).innerHTML="Limit: "+percentage+"%"
	// color correction on style from CCFFF -> CC0000
	setcolor(document.getElementById(counter),percentage,"background-color");
	}
}

function ConfirmaExclusao(){
    return confirm('Deseja realmente excluir este registro?');
}

function ismaxlength(obj)
{
    var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
    if (obj.getAttribute && obj.value.length>mlength)
    obj.value=obj.value.substring(0,mlength)
}

function finalizaAplicacao()
{
    window.open("../logoff.aspx"); 
}
