// JavaScript Document
var Letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ";
var Espacos = " \t\r\n\f";
var Numeros = "0123456789";
var LetrasComAcentos = "ÀÁÂÃÄÅÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÇ"
var LetrasSemAcentos = "AAAAAAEEEEIIIIOOOOOUUUUC"


//verifica tamanho do campo (com maximo e minimo)
function verificaTamanho(Item, Menor, Maior, Nome)
{
  if (Item.value.length < Menor) {
    alert("O campo \"" + Nome + "\" deve ter no mínimo " + Menor + " caracteres.");
    Item.focus();
    return(true);
  }

  if (Item.value.length > Maior) {
    alert("O campo '" + Nome + "' deve ter no máximo " + Maior + " caracteres.");
    Item.focus();
    return(true);
  }
  return false;
} 

//Limpa string
function trim(string) {
	var str = string.replace(/^\s*/, "");
	str = str.replace(/\s*$/, "");
	return str;
}
// Verifica se o campo está vazio
function verificaVazio(Item, Nome)
{
  if (trim(Item.value) == "") {
    alert("O preenchimento do campo '" + Nome + "' é obrigatório.");
    Item.focus();
    return(true);
  }
  else
  	return(false);
} 

//Verifica se o campo contem caracteres invalidos
function verificaTexto(Item, StringOK, Nome)
{
  var CheckStr = Item.value;
  var StrValid = false;
  var i = 0;
  var j = 0;
  	
	  // Testa StringOK
	  for (i = 0;  i < CheckStr.length;  ++i) {
		for (j = 0;  j < StringOK.length;  ++j)
		  if (CheckStr.charAt(i) == StringOK.charAt(j))
			break;
		if (j == StringOK.length) {
		  StrValid = true;
		  break;
		}
	  }
	  
	  if (StrValid) {
		alert("O campo " + Nome + " contém caracteres inválidos.");
		Item.focus();
	  }
	  
	  return StrValid;
} 

function verificaData(Item) {
	var tamanho = Item.value.length;
	
	if (trim(Item.value)=="") {
		alert("Você deve digitar uma data!")
		Item.value = "";
		Item.focus();
		return true;
	}
	
	if (tamanho<10) {
		alert("Data Incompleta!");
		Item.select();
		Item.focus();
		return true;
	}
		
	var dia = parseFloat(Item.value.substr(0,2));
	var mes = parseFloat(Item.value.substr(3,2));
	var ano = parseFloat(Item.value.substr(6,4));
		
	if ((mes>12 || mes<1) || (dia>31 || dia<1)) {
		alert("Data Inválida!");
		Item.select();
		Item.focus();
		return true;
	}
	
	if (ano%4==0)
		dfev = 29;
	else
		dfev = 28;
		
	switch(mes) {
		case 1:
			dias = 31;
			break;
		case 2:
			dias = dfev;
			break;
		case 3:
			dias = 31;
			break;
		case 4:
			dias = 30;
			break;
		case 5:
			dias = 31;
			break;
		case 6:
			dias = 30;
			break;
		case 7:
			dias = 31;
			break;
		case 8:
			dias = 31;
			break;
		case 9:
			dias = 30;
			break;
		case 10:
			dias = 31;
			break;
		case 11:
			dias = 30;
			break;
		case 12:
			dias = 31;
			break;
	}
	
	if (dia>dias) {
		alert("Data Inválida!");
		Item.select();
		Item.focus();
		return true;
	}
	
	return false;
}

function verificaNumero(Item) {
	var tamanho = Item.value.length;
	var Numeros = "0123456789";
	var AchouNumero = false;
	
	if (trim(Item.value)=="") {
		alert("Você deve digitar um valor!")
		Item.value = "";
		Item.focus();
		return false;
	}
	
	for (x=0;x<tamanho;x++) {
		AchouNumero = false;
		for (y=0;y<Numeros.length;y++)
			if (!AchouNumero)
				if ((Item.value.charAt(x)==Numeros.charAt(y))) {
					AchouNumero = true;
					break;
				}
				else
					AchouNumero = false;
		if (!AchouNumero)
			break;
	}
	
	if (!AchouNumero) {
		alert("Você deve digitar somente números!")
		Item.select();
		Item.focus();
		return false;
	}
	
	return true;
}

function verificaValor(Item, Nome) {
	var tamanho = Item.value.length;
	var Numeros = "0123456789,.";
	var AchouNumero = false;
	
	if (trim(Item.value)=="") {
		alert("O preenchimento do campo '"+Nome+"' é obrigatório.")
		Item.value = "";
		Item.focus();
		return true;
	}
	
	for (x=0;x<tamanho;x++) {
		AchouNumero = false;
		for (y=0;y<Numeros.length;y++)
			if (!AchouNumero)
				if ((Item.value.charAt(x)==Numeros.charAt(y))) {
					AchouNumero = true;
					break;
				}
				else
					AchouNumero = false;
		if (!AchouNumero)
			break;
	}
	
	if (!AchouNumero) {
		alert(Nome + " Inválido! Digite somente Números e ','")
		Item.select();
		Item.focus();
		return true;
	}
	
	return false;
}
//******************************************************************************************
//**** FUNCAO QUE VERIFICA SE CPF É VALIDO											    ****
//**** Variáveis: 								                                        ****
//**** Item - campo que contem o valor a ser testado									****
//******************************************************************************************
function verificaCPF(Item) {
	s = Item.value;
	if (s == "") {
		alert("Por favor, forneça o seu cpf.");
		Item.focus();
		return true;
	}

	s = s.replace( /\./, "" );
	s = s.replace( /\./, "" );
	s = s.replace( "-", "" );
	s = s.replace(/\D/,"");


	var varFirstChr = s.charAt(0);
	var vaCharCPF = false;

	for ( var i=0; i<=10; i++ ) { 
		var c = s.charAt(i)
         if (s.charAt(i) < "0" || s.charAt(i) > "9")
		 { 
		alert("CPF inválido! Preencha o CPF utilizando apenas os números." );
		Item.value="";
		Item.focus();
		return true;
	     } 
             if( c!=varFirstChr ) vaCharCPF = true; 
	} 

        if( !vaCharCPF ) { 
		alert("CPF inválido!");
		Item.value="";
		Item.focus();
		return true;
        } 	

	soma=0;
	for ( i=0; i<9; i++ ) { 
		soma += (10-i) * ( eval(s.charAt(i)) );	
	} 
	digito_verificador = 11-(soma % 11);
	if ( (soma % 11) < 2 ) digito_verificador = 0;
	if ( eval(s.charAt(9)) != digito_verificador ) {
		alert("CPF inválido!" );
		Item.value="";
		Item.focus();
		return true;
	} 
	soma=0;
	for ( i=0; i<9; i++ ) {
		soma += (11-i) * ( eval(s.charAt(i)) ); 
	}
	soma += 2 * ( eval(s.charAt(9)) );
	digito_verificador = 11-(soma % 11);
	if ( (soma % 11) < 2 ) digito_verificador = 0;
	if ( eval(s.charAt(10)) != digito_verificador ) { 
		alert("CPF inválido!" ); 
		Item.value="";
		Item.focus();
		return true; 
	} 
	
	return false;
}

//******************************************************************************************
//**** FUNCAO QUE LIMPA OS PONTOS E TRACOS DO CPF/CNPJ								    ****
//**** Variáveis: 								                                        ****
//**** VAL -> qual o CNPJ/CPF a ser verificado											****
//**** TIPOCAD -> qual o tipo a ser verificado											****
//******************************************************************************************
function verificaCPFCNPJ(tipoCad, Item) {
	if (tipoCad=="J") {return verificaCNPJ(Item);}
	else {return verificaCPF(Item);}
}

//******************************************************************************************
//**** FUNCAO QUE VERIFICA SE CNPJ É VALIDO											    ****
//**** Variáveis: 								                                        ****
//**** cnpj -> qual o CNPJ a ser verificado												****
//******************************************************************************************
function verificaCNPJ(Item) {
	pcgc = Item.value;

	pcgc = pcgc.replace( /\./, "" );
	pcgc = pcgc.replace( /\./, "" );
	pcgc = pcgc.replace( "-", "" );
	pcgc = pcgc.replace(/\D/,"");
	
	// verifica o tamanho
	if (pcgc.length != 14) {
		sim=false;
		Item.value="";
		Item.focus();
		alert ("Tamanho Inválido de CNPJ");
	}
	else 
		sim=true;
	
	if (sim) // verifica se e numero
	{
		for (i=0;((i<=(pcgc.length-1))&& sim); i++)
		{
			val = pcgc.charAt(i);
			// alert (val)
			if((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4") && (val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) 
			{
				Item.value="";
				Item.focus();
				alert("CNPJ Inválido");
				sim=false;
			}
		}
	}	
	if (sim) // se for numero continua
	{
		m2 = 2;
		soma1 = 0;
		soma2 = 0;
		for (i=11;i>=0;i--)
		{
			val = eval(pcgc.charAt(i));
			// alert ("Valor do Val: "+val)
			m1 = m2;
			if (m2<9) 
				m2 = m2+1;
			else 
				m2 = 2;
			soma1 = soma1 + (val * m1);
			soma2 = soma2 + (val * m2);
		} // fim do for de soma
	
		soma1 = soma1 % 11;
		if (soma1 < 2) 
			d1 = 0;
		else 
			d1 = 11- soma1;
	
		soma2 = (soma2 + (2 * d1)) % 11;
		if (soma2 < 2) 
			d2 = 0;
		else 
			d2 = 11- soma2;
		// alert (d1)
		// alert (d2)
		if ((d1==pcgc.charAt(12)) && (d2==pcgc.charAt(13)))
			sim=true ;
		else{
			Item.value="";
			Item.focus();
			alert("CNPJ Inválido");
			sim=false;
		}
	}
	
	return !sim;
}

function verificaCombo(Item, Nome) {
	if (Item.selectedIndex==0) {
		alert("Obrigatório preenchimento do Campo \""+Nome+"\"!");
		Item.focus();
		return true;
	}
	else
		return false;	
}

function verificaEmail(Item) {
	if (trim(Item.value)=="" || Item.value.indexOf('@', 0) == -1 || Item.value.indexOf('.', 0) == -1) {
		alert("E-Mail inválido!");
		Item.focus();
		Item.select();
		return true;
	}
	else
		return false;	
}

function isMajorDate(dtStart, dtEnd) {
  ds = dtStart.split("/")
  de = dtEnd.split("/")
  if (parseInt(de[2], 10) < parseInt(ds[2], 10)) { //ano da final menor -> final menor
    return false
  } else if (parseInt(de[2], 10) == parseInt(ds[2], 10)) { // anos iguais
    //anos iguais e mes da final menor que inicial -> final menor
    if (parseInt(de[1], 10) < parseInt(ds[1], 10)) { 
      return false
    } else if (parseInt(de[1], 10) == parseInt(ds[1], 10)) { //anos iguais e meses iguais
      //anos e meses iguais, mas dia da final menor que inicial -> final menor
      if (parseInt(de[0], 10) <= parseInt(ds[0], 10)) {
        return false
      }
    }
  }
  return true // a primeira e maior que a segunda
}

function dateDiff (strDate1,strDate2){
             var datDate1 = Date.parse(strDate1);
             alert(datDate1);
             var datDate2 = Date.parse(strDate2);
             alert(datDate2);
             alert((datDate2-datDate1));
             return ((datDate2-datDate1)/ 3600 / 24 / 1000);
     }
