var erros;


function mask(_mask, val) {
	var i, mki;
	var aux="";
	
	for(i=mki=0; i<val.length; i++, mki++) {
		if(_mask.charAt(mki)=='' || _mask.charAt(mki)=='#' || _mask.charAt(i)==val.charAt(i)) {
			aux+=val.charAt(i);
		} else {
			aux+=_mask.charAt(mki)+val.charAt(i);
			mki++;
		}
	}
	return aux;
}

/**
 * function maskEvent(field, _mask, event)
 *
 * field = Objeto que esta enviando o evendo onKeyPress()
 * _mask = Mascara Exemplo: ##/##/#### ou ###.###.###-##
 * event = Evento a ser observado.
 *
 * Formata um valor para a mascara definida conforma o valor vai sendo digitado.
 *
 * pedro.leao@ig.com.br 2003;08/16
 */
function maskEvent(field, _mask, event) {
	var key ='';
	var aux='';
	var len=0;
	var i=0;
	var strCheck = '0123456789';
	var rcode = (window.Event) ? event.which : event.keyCode;
	
	if(rcode == 13) {
		//Enter
		return true;
	}
	
	//Get key value from key code
	key=String.fromCharCode(rcode);
	
	if(strCheck.indexOf(key)==-1) {
		//Not a valid key
		return false;
	}
	
	aux=field.value+key;
	//window.alert(aux);
	aux=mask(_mask,aux);
	//window.alert(aux);
	field.value=aux;	
	return false;
}

/**
 *
 * function currencyFormat(fld, milSep, decSep, e)
 *
 * fld    = Objeto a ser verficado.
 * milSep = Separador para milhar.
 * decSep = Separador para decimal.
 * e      = Evento.
 *
 * Formata um valor decimal conforme for digitado no box.
 * Criação: Anonima (coletada em http://http://www.scriptbrasil.com/?class=2&secao=javascript&categoria=Formulários&menu=javascript&ini=1
 * Revisao: pedro.leao@ig.com.br	2003/08/16
 */
function currencyFormat(fld, milSep, decSep, e) {
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;

	if (whichCode == 13) {
		return true;  // Enter
	}
	key = String.fromCharCode(whichCode);  // Get key value from key code
	if (strCheck.indexOf(key) == -1) {
		return false;  // Not a valid key
	}
	len = fld.value.length;
	for(i = 0; i < len; i++) {
		if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)){
			 break;
		}
	}
	
	aux = '';
	for(; i < len; i++) {
		if (strCheck.indexOf(fld.value.charAt(i))!=-1){
			aux += fld.value.charAt(i);
		}
	}
	aux += key;
			
	len = aux.length;
	if (len == 0) {
		fld.value = '';
	} else if (len == 1) {
		fld.value = '0'+ decSep + '0' + aux;
	} else if (len == 2) {
		fld.value = '0'+ decSep + aux;
	} else if (len > 2) {
		aux2 = '';

		for (j = 0, i = len - 3; i >= 0; i--) {
			if (j == 3) {
				aux2 += milSep;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}
		fld.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--) {
			fld.value += aux2.charAt(i);
		}
		
		fld.value += decSep + aux.substr(len - 2, len);
	}
	return false;
}

function SomenteNumeros(input)
	{
	if ((event.keyCode<48)||(event.keyCode>57))
		event.returnValue = false;
	}
//-------------------------------
function FormataCNPJ(campo,tammax,teclapres) {

	var tecla = teclapres.keyCode;
	var vr = campo.value;
	vr = vr.replace( "-", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	tam = vr.length;

	if (tam < tammax && tecla != 13){ tam = vr.length + 1 ; }

	if (tecla == 13 ){	tam = tam - 1 ; }
		
	if ( tecla == 13 || (tecla >= 48 && tecla <= 57) || (tecla >= 96 && tecla <= 105) ){
		if ( tam <= 2 ){ 
	 		campo.value = vr ; }
	 	tam = tam - 1;
	 	if ( (tam > 2) && (tam <= 5) ){
	 		campo.value = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 6) && (tam <= 8) ){
	 		campo.value = vr.substr( 0, tam - 6 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 9) && (tam <= 11) ){
	 		campo.value = vr.substr( 0, tam - 9 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 12) && (tam <= 14) ){
	 		campo.value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	
	}
}

function BoxFormat(objForm, strField, strfull, sMask) {
	  var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	  sValue = strfull;

	  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) == "/"))
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

		if (bolMask) {
		  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;
	  }
}
	


function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
	  var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	  if(document.all) {
		nTecla = evtKeyPress.keyCode; }
	  else if(document.layers) {
		nTecla = evtKeyPress.which;
	  }

	  sValue = objForm[strField].value;

	  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) == "/"))
		bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

		if (bolMask) {
		  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;
	  }
}


function add_error2(msg, campo) {
	alert(msg);
	campo.focus();
}

function add_error(msg) {
	erros = erros + "\n" + "- " + msg
}

function tem_erros() {
	return false;
	//return (erros.length != 0)
}

function mostra_erros() {
	alert("Erros no formulário: \n" + erros);
}

function vazio(texto) {
	var formato_correto = "([ ])*[a-zA-Z0-9\\-\\.]+([ ])*";
	var correto = new RegExp(formato_correto);
	var vazio
	vazio = false
	if (texto.length == 0) {
		vazio = true
	}
	return ((!correto.test(texto)) || vazio)
}

function email_valido(email) {
	var formato_errado = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
	var formato_certo = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
	var errado = new RegExp(formato_errado);
	var certo = new RegExp(formato_certo);
	return (!errado.test(email) && certo.test(email))
}

function n_parcelas(data_compra, data_viagem) {
	var dia1 = data_compra.substring(0,2);
	var mes1 = data_compra.substring(3,5);
	var ano1 = data_compra.substring(6,10);
	var dia2 = data_viagem.substring(0,2);
	var mes2 = data_viagem.substring(3,5);
	var ano2 = data_viagem.substring(6,10);
	var data1 = new Date(ano1, mes1 - 1, dia1);
	var data2 = new Date(ano2, mes2 - 1, dia2);
	var meses = data2.getMonth() - data1.getMonth()
	meses = meses + 3
	if (meses >= 12) {
		return 12
	}
	else return meses
}

function data_br_valida(data) {
	var formato = "[0-3][0-9]/[0-1][0-9]/[0-9][0-9][0-9][0-9]";
	var reg = new RegExp(formato);
	var formato_ok = reg.test(data);
	var dia = data.substring(0,2);
	var mes = data.substring(3,5);
	var ano = data.substring(6,10);
	var nova_data = new Date(ano, mes - 1, dia);
	var dia_ok = (nova_data.getDate() == dia);
	var mes_ok = (nova_data.getMonth() + 1 == mes);
	return (formato_ok && dia_ok && mes_ok)
}

function data_br_valida_mes_ano(data) {
	var formato = "[0-1][0-9]/[0-9][0-9][0-9][0-9]";
	var reg = new RegExp(formato);
	var formato_ok = reg.test(data);
	var mes = data.substring(0,2);
	var ano = data.substring(3,7);
	var nova_data = new Date(ano, mes - 1);
	var mes_ok = (nova_data.getMonth() + 1 == mes);
	return (formato_ok && mes_ok)
}

function inteiro_valido(numero) {
	var validos = "0123456789";
	if (numero.length == 0)
		 return (false);
	for (j = 0; j < numero.length; j++)  {
		if (validos.indexOf(numero.charAt(j)) == -1)
			return (false)
	}
	return (true)
}

function menor_4000(texto) {
	if (texto.length > 4000)
		return false
	else
		return true
}

function menor_96(texto) {
	if (texto.length > 95)
		return false
	else
		return true
}

function menor_255(texto) {
	if (texto.length >= 255)
		return false
	else
		return true
}

function menor_500(texto) {
	if (texto.length >= 500)
		return false
	else
		return true
}


function extrai_numeros(texto) {
	var novo = ""
	for (var i = 0; i < texto.length; i++) {
		caracter = texto.charAt(i)
		if (inteiro_valido(caracter))
			novo = novo + caracter
	}
	return (novo)
}

function verificacao_cnpj(cgc) {
	var n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14
	var d1,d2
	var digitado, calculado
	cgc = extrai_numeros(cgc)
	if(cgc.length < 14) return false
	n1 = cgc.substring(0,1)
	n2 = cgc.substring(1,2)
	n3 = cgc.substring(2,3)
	n4 = cgc.substring(3,4)
	n5 = cgc.substring(4,5)
	n6 = cgc.substring(5,6)
	n7 = cgc.substring(6,7)
	n8 = cgc.substring(7,8)
	n9 = cgc.substring(8,9)
	n10 = cgc.substring(9,10)
	n11 = cgc.substring(10,11)
	n12 = cgc.substring(11,12)
	n13 = cgc.substring(12,13)
	n14 = cgc.substring(13,14)
	d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5
	d1= 11-(d1 % 11)
	if (d1 >= 10) d1=0
	d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6
	d2 = 11-(d2 % 11)
	if (d2 >= 10) d2=0
	calculado = d1 + d2
	digitado = n13*1 + n14*1
	if (calculado == digitado)
		return true
	else
		return false 
	//return (calculado == digitado)
	
}

function cpf_valido(cpf) {
	cpf = extrai_numeros(cpf)
	if (cpf.length < 11) return (false)
	var d1,d4,xx,nCount,resto,digito1,digito2,check;
	d1 = 0;	d4 = 0;	xx = 1;
	for (nCount = 0; nCount < (cpf.length - 1); nCount++) {
		d1 = d1 + (11 - xx) * cpf.substring(nCount, nCount + 1)
		d4 = d4 + (12 - xx) * cpf.substring(nCount, nCount + 1)
		xx++
	}
	resto = (d1 % 11)
	if (resto < 2)
		digito1 = 0
	else
		digito1 = 11 - resto
	d4 = d4 + 2 * digito1
	resto = (d4 % 11)
	if (resto < 2)
		digito2 = 0 
	else
		digito2 = 11 - resto
	check = digito1 + digito2
	return (check == cpf.substring(cpf, cpf.length - 1, cpf.length + 1))
}

function decimal_valido(numero) {
	var validos = "0123456789.,";
	if (numero.length == 0)
		 return (false);
	for (i = 0; i < numero.length; i++)  {
		if (validos.indexOf(numero.charAt(i)) == -1)
			return (false)
	}

	if (numero.indexOf(".") == -1)
		return (true);
		
	if (numero.indexOf(",") != numero.lastIndexOf(","))
		return (false);
		
	return (true)
}

function hora_valida(hora) {
	var formato = "[0-2][0-9]:[0-5][0-9]";
	var reg = new RegExp(formato);
	var formato_ok = reg.test(hora);
	var h = hora.substring(0,2);
	var m = hora.substring(3,5);
	var nova_hora = new Date(2000, 1, 1, h, m);
	var h_ok = (nova_hora.getHours() == h);
	var m_ok = (nova_hora.getMinutes() == m);
	return (formato_ok && h_ok && m_ok)
}

function DataMaior(parametro1,parametro2){
		
	dia1 = parametro1.slice(0,2)
	mes1 = parametro1.slice(3,5)
	ano1 = parametro1.slice(6,10)
		
	dia2 = parametro2.slice(0,2)
	mes2 = parametro2.slice(3,5)
	ano2 = parametro2.slice(6,10)
		
	data1 = new Date(ano1,mes1,dia1)
	data2 = new Date(ano2,mes2,dia2)
		
	if (data2 <= data1)
		return false
	else
		return true
}

function DataMaiorIgual(parametro1,parametro2){
		
	dia1 = parametro1.slice(0,2)
	mes1 = parametro1.slice(3,5)
	ano1 = parametro1.slice(6,10)
		
	dia2 = parametro2.slice(0,2)
	mes2 = parametro2.slice(3,5)
	ano2 = parametro2.slice(6,10)
		
	data1 = new Date(ano1,mes1 -1,dia1)
	data2 = new Date(ano2,mes2 -1,dia2)
	if (data2 > data1){
		return false
	}
	else {
		return true
	}
}


function Passado(parametro1){
		
	dia = parametro1.slice(0,2)
	mes = parametro1.slice(3,5)
	ano = parametro1.slice(6,10)
		
	data1 = new Date(ano,mes,dia)
	data2 = new Date()	
	if (data1 < data2)
		return true
	else
		return false
}


function DataMaiorCompleta(parametro1,parametro2){
		
	dia1 = parametro1.slice(0,2)
	mes1 = parametro1.slice(3,5)
	ano1 = parametro1.slice(6,10)
	hora1 = parametro1.slice(10,12)
	minuto1 = parametro1.slice(13,15)
		
	dia2 = parametro2.slice(0,2)
	mes2 = parametro2.slice(3,5)
	ano2 = parametro2.slice(6,10)
	hora2 = parametro2.slice(10,12)
	minuto2 = parametro2.slice(13,15)

	data1 = new Date(ano1,mes1,dia1,hora1,minuto1)
	data2 = new Date(ano2,mes2,dia2,hora2,minuto2)
		
	if (data2 <= data1)
		return false
	else
		return true
}
	
