var popUpWin=0;
var reFloatPt = /^[+-]?((\d+|\d{1,3}(\.\d{3})+)(\,\d*)?|\,\d+)$/;
var reFloatEn = /^[+-]?((\d+|\d{1,3}(\,\d{3})+)(\.\d*)?|\.\d+)$/;
var reFloat = reFloatPt;
var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
var reDate = reDate4;
var reEmail1 = /^[\w!#$%&'*+/=?^`{|}~-]+(\.[\w!#$%&'*+/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
var reEmail2 = /^[\w-]+(\.[\w-]+)*@(([\w-]{1,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
var reEmail3 = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
var reEmail = reEmail3;

function popUpWindow(URLStr, width, height, nPag){
	if(popUpWin){
    	if(!popUpWin.closed) popUpWin.close();
	}
	if(nPag=='') nPag = 'popUpWin'
  	popUpWin = open(URLStr, nPag, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height);
}

function popUpScroll(URLStr, width, height, nPag){
	if(nPag=='') nPag = 'popUpScroll'
  	popUpScr = window.open(URLStr, nPag, 'toolbar=no,resizable=yes,scrollbars=yes,location=no,menubar=no,width='+width+',height='+height);
}

//Formatar campo
function formatar(src, mask){
	var i = src.value.length;
	var saida = mask.substring(i,i+1);
	var ascii = event.keyCode;
	if (saida == "A") {
		if ((ascii >=97) && (ascii <= 122)) { event.keyCode -= 32; }
		else { event.keyCode = 0; }
	} else if (saida == "0") {
		if ((ascii >= 48) && (ascii <= 57)) { return }
		else { event.keyCode = 0 }
	} else if (saida == "#") {
		return;
	} else {
		src.value += saida;
		i += 1
		saida = mask.substring(i,i+1);
		if (saida == "A") {
			if ((ascii >=97) && (ascii <= 122)) { event.keyCode -= 32; }
			else { event.keyCode = 0; }
		} else if (saida == "0") {
			if ((ascii >= 48) && (ascii <= 57)) { return }
			else { event.keyCode = 0 }
		} else { return; }
	}
}
//Como funciona
//onKeyPress="formatar(this,'00000-000')"
//Formatar campo

//Somente números
function isNumbers(obj,event)
{
    var str = obj.value;
    var Tecla = event.which;
    if(Tecla == null)
        Tecla = event.keyCode;

    //se nao for número nem parentesis ou espaço
    if ( Tecla < 48 || Tecla > 59 ){
        event.returnValue = false;
        return false;
    }
    event.returnValue = true;
    return true;
}
//Como funciona
//onKeyPress="isNumbers(this, event)"
//Somente números

// auto tab
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length >= len && !containsElement(filter,keyCode)) {
	input.value = input.value.slice(0, len);
	input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
	var found = false, index = 0;
	while(!found && index < arr.length)
	if(arr[index] == ele)
	found = true;
	else
	index++;
	return found;
}
function getIndex(input) {
	var index = -1, i = 0, found = false;
	while (i < input.form.length && index == -1)
	if (input.form[i] == input)index = i;
	else i++;
	return index;
	}
	return true;
}
// Como funciona
//onKeyUp="return autoTab(this, 3, event);" MaxLenght="3"
// fim auto tab

//function isDate(data){
//  var tdate, ad, rd, dm, tmpstr;
//   dm = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
//   data = replace(data, "-", "/");
//   ad = splitstr(data, '/');
//
//   if (ad.length != 3) return false;
//   if((ad[1]>=1 && ad[1]<=12)==false) return false;	
//   if(Math.floor(ad[2]/4)*4==ad[2]) dm[1] = 29;
//   if(ad[2].toString().length != 4) return false;
//   if((ad[0]>=1 && ad[0]<=dm[ad[1]-1])==false) return false;
//   for(i=0; i<ad.length; i++)
//      if ((isEmpty(ad[i])) || (!isNumber(ad[i])) || ((ad[i]<0))) return false;
//   return true;
//}

function isEmail(email){
	var s = new String(email);
	// { } ( ) < > [ ] | \ /
	if ((s.indexOf("{")>=0) || (s.indexOf("}")>=0) || (s.indexOf("(")>=0) || (s.indexOf(")")>=0) || (s.indexOf("<")>=0) || (s.indexOf(">")>=0) || (s.indexOf("[")>=0) || (s.indexOf("]")>=0) || (s.indexOf("|")>=0) || (s.indexOf("\"")>=0) || (s.indexOf("/")>=0) )
		return false;
	// & * $ % ? ! ^ ~ ` ' "
	if ((s.indexOf("&")>=0) || (s.indexOf("*")>=0) || (s.indexOf("$")>=0) || (s.indexOf("%")>=0) || (s.indexOf("?")>=0) || (s.indexOf("!")>=0) || (s.indexOf("^")>=0) || (s.indexOf("~")>=0) || (s.indexOf("`")>=0) || (s.indexOf("'")>=0) )
		return false;
	// , ; : = #
	if ((s.indexOf(",")>=0) || (s.indexOf(";")>=0) || (s.indexOf(":")>=0) || (s.indexOf("=")>=0) || (s.indexOf("#")>=0) )
		return false;
	// procura se existe apenas um @
	if ( (s.indexOf("@") < 0) || (s.indexOf("@") != s.lastIndexOf("@")) )
		return false;
	// verifica se tem pelo menos um ponto após o @
	if (s.lastIndexOf(".") < s.indexOf("@"))
		return false;
	return true;
}

function isEmpty(text){
	var enter1 = "\n",
		enter2 = "\r",
		espaco = " ",
		tab = "\t";
	if (text =="") return true;
	//A verifica se o caracter selecionado possui valor válido
	for (var indice = 0; indice < text.length; indice++){
		if (text.charAt(indice) != espaco && 
			text.charAt(indice) != tab &&
			text.charAt(indice) != enter1 && 
			text.charAt(indice) != enter2 )
		return false;
	}
	return true;
}

function isNumber(numero){
   var CaractereInvalido = false;
   for (i=0; i < numero.length; i++){
      var Caractere = numero.charAt(i);
      if (isNaN(parseInt(Caractere))) CaractereInvalido = true;
   }
   return !CaractereInvalido;
}

function isPhone(text){
   var phone;
   phone = replace(text, "-", "")
   if (!isNumber(phone)) return false;
   if (phone.toString().length != 7 && phone.toString().length != 8 ) return false;
   return true;
}

function replace( texto, procurar, novo ){
   len = procurar.length;
   pos = texto.indexOf(procurar);
   while (pos > -1){
      parte1 = texto.substring(0, pos);
      parte2 = texto.substring(pos + len , texto.length);
      texto = parte1 + novo + parte2;
      pos = texto.indexOf(procurar);
   }
   return texto;
}

function splitstr( str, strdiv ){
   var vetret, vetpos, ocorr, i, i2, ini, fim;
   ocorr = 0;
   for (i=0; i < str.length; i++) 
      if ( str.charAt(i) == strdiv) ocorr++;
   vetret = new Array(ocorr);
   vetpos = new Array(ocorr);
   i2=0;
   for (i=0; i < str.length; i++)
      if( str.charAt(i) == strdiv){
         vetpos[i2]=i;
         i2++;
   }
   i2=0; ini=0; fim=0;
   for (i=0; i<ocorr+1; i++){
      if(i == vetpos.length)
         fim = str.length;
      else
         fim = vetpos[i];
      vetret[i]=str.substring(ini, fim);
      ini = vetpos[i]+1;
   }
   return vetret;
}

function isCep(text){
   var cep;
   cep = replace(text, "-", "")
   if (!isNumber(cep)) return false;
   if (cep.length != 8) return false;
   return true;
}

function isFloat(pStr, pLang)
{
  charDec = ( pLang != "En"? ",": "." );
  eval("reFloat = reFloat" + pLang);
  if (reFloat.test(pStr)) {
    pos = pStr.indexOf(charDec);
    decs = pos == -1? 0: pStr.length - pos - 1;
    alert(pStr + " é um float válido (" + pLang + ") com " + decs + " decimais.");
  } else if (pStr != null && pStr != "") {
    alert(pStr + " NÃO é um float válido.");
  }
} // isFloat

function isDate(pStr, pFmt)
{
  eval("reDate = reDate" + pFmt);
  if (reDate.test(pStr)) {
    return false;
  } else if (pStr != null && pStr != "") {
    return true;
  }
} // isDate

function isEmailComp(pStr, pFmt)
{
  eval("reEmail = reEmail" + pFmt);
  if (reEmail.test(pStr)) {
    //alert(pStr + " é um endereço de e-mail válido.");
	return false;
  } else if (pStr != null && pStr != "") {
    //alert(pStr + " NÃO é um endereço de e-mail válido.");
	return true;
  }
} // isEmail

function validaCPF(cpf) {
cpf = replace(cpf, '.', '');
cpf = replace(cpf, '-', '');
valor = true;
erro = new String;
if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n"; 
var nonNumbers = /\D/;
if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";	
if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
	  erro += "Numero de CPF invalido!"
}
var a = [];
var b = new Number;
var c = 11;
for (i=0; i<11; i++){
	a[i] = cpf.charAt(i);
	if (i < 9) b += (a[i] *  --c);
}
if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
b = 0;
c = 11;
for (y=0; y<10; y++) b += (a[y] *  c--); 
if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
	erro +="Digito verificador com problema!";
}
if (erro.length > 0){
	//alert(erro);
	return true;
}
return false;
}

function validaCNPJ(CNPJ) {
erro = new String;
if (CNPJ.length < 18) erro += "E' necessarios preencher corretamente o numero do CNPJ! \n\n";
if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
	if (erro.length == 0) erro += "E' necessarios preencher corretamente o numero do CNPJ! \n\n";
}
//substituir os caracteres que nao sao numeros
if(document.layers && parseInt(navigator.appVersion) == 4){
	x = CNPJ.substring(0,2);
	x += CNPJ.substring(3,6);
	x += CNPJ.substring(7,10);
	x += CNPJ.substring(11,15);
	x += CNPJ.substring(16,18);
	CNPJ = x;	
} else {
	CNPJ = CNPJ.replace(".","");
	CNPJ = CNPJ.replace(".","");
	CNPJ = CNPJ.replace("-","");
	CNPJ = CNPJ.replace("/","");
}
var nonNumbers = /\D/;
if (nonNumbers.test(CNPJ)) erro += "A verificacao de CNPJ suporta apenas numeros! \n\n";	
var a = [];
var b = new Number;
var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
for (i=0; i<12; i++){
	a[i] = CNPJ.charAt(i);
	b += a[i] * c[i+1];
}
if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
b = 0;
for (y=0; y<13; y++) {
	b += (a[y] * c[y]); 
}
if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
	erro +="Digito verificador com problema!";
}
if (erro.length > 0){
	//alert(erro);
	return true;
} else {
	//alert("CNPJ valido!");
}
return false;
}
