// FUNÇÃO QUE VALIDA DATA
function valida_data(n,id_control,id_label) {
    var expReg = /^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$/;
    var x = 0;
    var i = 0;
    var campo_data;
    var campo_label;
    
    for(i=0; i<n; i++) {
            campo_data = document.getElementById(id_control.toString() + '_' + i.toString());
            campo_label = document.getElementById(id_label.toString());
            if (campo_data.value.match(expReg) || (campo_data.value == '')) {
            }
            else {
                x = 1;
            }
    }
    
    if (x == 1) {
        campo_label.className = 'errorPlace errorPlaceShow';
        return false;
    }
    else {
        campo_label.className = 'errorPlace';
        return true;
    }
}

//MÁSCARA DE VALORES
 
/*
Descrição.: formata um campo do formulário de
acordo com a máscara informada...
Parâmetros: - objForm (o Objeto Form)
- strField (string contendo o nome do textbox)

* - sMask (mascara que define o
* formato que o dado será apresentado,
* usando o algarismo "9" para
* definir números e o símbolo "!" para
* qualquer caracter...
* - evtKeyPress (evento)
* Uso.......: <input type="textbox"
* name="xxx".....
* onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);">
* Observação: As máscaras podem ser representadas como os exemplos abaixo:
* CEP -> 99.999-999
* CPF -> 999.999.999-99
* CNPJ -> 99.999.999/9999-99
* Data -> 99/99/9999
* Tel Resid -> (99) 999-9999
* Tel Cel -> (99) 9999-9999
* Processo -> 99.999999999/999-99
* C/C -> 999999-!
* E por aí vai...
***/

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 {
    nTecla = evtKeyPress.which;
    if (nTecla == 8) {
        return true;
    }
}

sValue = objForm[strField].value;
// Limpa todos os caracteres de formatação que
// já estiverem no campo.
// toString().replace [transforma em sring e troca elementos por ""]
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) == " ") || (sMask.charAt(i) == "."))

//Se for true utiliza elementos especiais aumenta a máscara
if (bolMask) {
    sCod += sMask.charAt(i);
    mskLen++;
//Caso false mostra o sValue(o q foi digitado)
} 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;
}
}

// FUNÇÃO QUE VALIDA CAMPOS com 1 e-mail
function campos_obrigatorios_2cemail(controles,labels) {
    var controles_separados = controles.split(",");
    var labels_separados = labels.split(",");
    var n_controles = controles_separados.length;
    var x = 0;
    
    var campo;
    var label;
    
    for (i=0;i<n_controles;i++) {
        campo = document.getElementById(controles_separados[i].toString());
        label = document.getElementById(labels_separados[i].toString());
        if (campo.value == '') {
            label.className = 'name cssInvalido';
            x = 1;
        }
        else {
            label.className = 'name cssValido';
        }
    }

    var er = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (document.getElementById(controles_separados[0].toString()).value != '') {
        if ((document.getElementById(controles_separados[0].toString()).value.length != 0) && (!document.getElementById(controles_separados[0].toString()).value.match(er))) {
            document.getElementById(labels_separados[0].toString()).className = 'name cssInvalido';
            x = 1;
        }
        else {
            document.getElementById(labels_separados[0].toString()).className = 'name cssValido';
        }
    }
    
    if (x == 1) {
        return false;
    }
    else {
        return true;
    }
}

// FUNÇÃO QUE VALIDA CAMPOS sem data
function campos_obrigatorios_2(controles,labels) {
    var controles_separados = controles.split(",");
    var labels_separados = labels.split(",");
    var n_controles = controles_separados.length;
    var x = 0;
    
    var campo;
    var label;
    
    for (i=0;i<n_controles;i++) {
        campo = document.getElementById(controles_separados[i].toString());
        label = document.getElementById(labels_separados[i].toString());
        if (campo.value == '') {
            label.className = 'name cssInvalido';
            x = 1;
        }
        else {
            label.className = 'name cssValido';
        }
    }
    
    if (x == 1) {
        return false;
    }
    else {
        return true;
    }
}

function valida(form, cssValido, cssInvalido)
{
	var retorno, retornoTemp, tipoValidacao, valor, obrigatorio, label;
	retorno = true;
	retornoTemp = false;
	
	for(var i=0; i < parseInt(form.length); i++)
	{
		if(form[i].getAttribute("id") != null)
		{
			if(form[i].getAttribute("tipoValidacao") != null)
				tipoValidacao = form[i].getAttribute("tipoValidacao");
				
			if(form[i].getAttribute("value") != "")
				valor = form[i].value;
				
			if(form[i].getAttribute("obrigatorio") != "")
				obrigatorio = form[i].getAttribute("obrigatorio");
				
			if(form[i].getAttribute("label") != "")
				label = form[i].getAttribute("label");
				
			if(tipoValidacao != null)
			{
				if((valor != "") && (valor != null))
				{
					retornoTemp = eval(ConverteTipoValidacao(tipoValidacao, valor));
				}
			}
			
			if((obrigatorio == "true") && (retornoTemp == false))
			{
				if(form[i].type == "select-one")
				{
					retornoTemp = validaSelect(form[i]);
				}
				else if((form[i].type == "text") || (form[i].type == "textarea"))
				{
					if(valor == null || valor == "")
						retornoTemp = true;
				}
				else if(form[i].type == "checkbox")
					retornoTemp = validateRadio(form[i]);
			}

			if(retornoTemp == true && retorno == true)
				retorno = false;
			
			if(retornoTemp == true)
			{
				if(label != null)
					document.getElementById(label).className = cssInvalido;
			}
			else
			{
				if(label != null)
					document.getElementById(label).className = cssValido;
			}			
		}
		
		label = null;
		obrigatorio = null;
		valor = null;
		tipoValidacao = null;
		retornoTemp = false;
	}

	return retorno;
}

function ConverteTipoValidacao(alias, obj)
{
	
	if(alias == "email")
		return validaEmail(obj);
	else if(alias == "numero")
		return validaNumerico;
		else if(alias == "select")
		return validaSelect;	
}

/**********************************************************************/
function validaEmail(formObj)
{			
	parte1 = formObj.indexOf("@");
    parte2 = formObj.indexOf(".");
    parte3 = formObj.length;
	
    if (!(parte1 >= 3 && parte2 >= 6 && parte3 >= 9))
	{
          return true;
    }
	else
	{
		return false;
	}
	
	/*var emailStr = formObj.value;
	var emailReg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var emailReg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/; // valid
	if (!(!emailReg1.test(emailStr) && emailReg2.test(emailStr)))
	{		
		return true;
	}
	return false;*/
}

/**********************************************************************/
function validaNumerico(formObj, len)
{
	if (len == '*')
	{
		var regex = /^\d+$/;
		if (!regex.test(formObj.value))
		{
			return true;
		}
	}
	else
	{
		numReg = "^\\d{"+parseInt(len)+",}$"
		var regex = new RegExp(numReg);
		if (!regex.test(formObj.value))
		{
			return true;
		}
	}
	return false;
}

/**********************************************************************/
function validaSelect(formObj)
{
	if (formObj.selectedIndex == 0)
	{
		return true;
	}
	return false;
}

/**********************************************************************/

