function check_date(DATA, error) {
	$("#id_"+DATA.name).attr("class","field_valid");
	if(DATA.value == ''){
		return true;
	}else{
		if(DATA.value == '__/__/____'){
			return true;
		}
	}
        var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
        var msgErro = 'Formato inválido de data.';
        var vdt = new Date();
        var vdia = vdt.getDay();
        var vmes = vdt.getMonth();
        var vano = vdt.getYear();
        if ((DATA.value.match(expReg)) && (DATA.value!='')){
                var dia = DATA.value.substring(0,2);
                var mes = DATA.value.substring(3,5);
                var ano = DATA.value.substring(6,10);
                if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){

                        outErrorDT("Dia incorreto! O mês especificado contém no máximo 30 dias.", DATA.name, error);
                        return false;
                } else{ //1error
                                if(ano%4!=0 && mes==2 && dia>28){

                                        outErrorDT("Data incorreta! O mês especificado contém no máximo 28 dias.", DATA.name, error);
                                        return false;
                                } else{ //2
                                                if(ano%4==0 && mes==2 && dia>29){

                                                		outErrorDT("Data incorreta! O mês especificado contém no máximo 29 dias.", DATA.name, error);
                                                                return false;
                                                } 
                                }//2-else
                }//1-else                       
        } else { //5

			outErrorDT(msgErro, DATA.name, error);
                        return false;
        } //5-else
        return true;
}

function outErrorDT(msg, nm_campo, error){
	$("#id_"+nm_campo).attr("class","error_validate");
	if(error == "alert"){
		alert(msg);
		$("#id_"+nm_campo).focus();
	}else{
		$('#error_'+nm_campo).html("<br>"+msg);
	}	
}

function outError(msg, nm_campo, error){
	try{
		 $("#id_valida_status_"+nm_campo).val('True');
	}catch(excpt){}
	if(error == "alert"){
		alert(msg);
		$("#id_"+nm_campo).focus();
	}else{
		//$('#error_'+nm_campo).html(msg);		
		//field_valid
		//$("#id_"+nm_campo).val("Campo obrigatório!");
		
		//$('#error_'+nm_campo).html("<br>"+msg);
		//$("#id_"+nm_campo).focus();
		
		//$("#id_"+nm_campo).css("field_valid");
		//set_msg_erro_focus(nm_campo);
		set_msg_erro_blur(nm_campo);


	}	
}

function set_msg_erro_focus(nm_campo){
	var req = $("#id_"+nm_campo).attr('req') == 'true';
	if(req && form_validado){
		var wrong  = $("#id_valida_status_"+nm_campo).val();
		if(wrong == 'True'){
			$("#id_"+nm_campo).val("");
			$("#id_"+nm_campo).attr("class","error_validate");
		}	
	}
}



function set_msg_erro_blur(nm_campo){	
	var req = $("#id_"+nm_campo).attr('req') == 'true';
	if(req && form_validado){
		if($("#id_"+nm_campo).val()!=''){
			$("#id_valida_status_"+nm_campo).val('False');
			$("#id_"+nm_campo).attr("class","field_valid");
		}else{
			$("#id_"+nm_campo).attr("class","error_validate");
		}
	}

	/*if($("#id_"+nm_campo).val()!=''){
		$("#id_valida_status_"+nm_campo).val('False');
		$("#id_"+nm_campo).css("field_valid");
		return;
	}else{
		//alert(nm_campo+'-->'+$("#id_"+nm_campo).val());
		$("#id_"+nm_campo).val('!!!!');
		try{
			$("#id_valida_status_"+nm_campo).val('True');		
		}catch(dd){}
		$("#id_"+nm_campo).attr("class","error_validate");
		return;
	}
	var wrong = $("#id_valida_status_"+nm_campo).val();
	if(wrong=='True'){
		//$("#id_"+nm_campo).val("Campo obrigatório!");
		$("#id_"+nm_campo).attr("class","error_validate");
		return;
	}*/	
}

function validateRequired(fieldName, error){
	if($("#id_"+fieldName).val() == ''){			
			outError("Campo obrigatório.", fieldName, error);
			return false;
 	}
 	return true;
}

function validateSubmit(formId){
		if(validate(formId)){
			$("#"+formId).submit();			
		}
}

function validate(formId){
	form_validado= true;
	var ret = true;
	var error = $("#"+formId).attr('error');
	var validate = $("#"+formId).attr('validate');
	if(validate == "false"){
		return true;//nao valida, nao faz nada
	}
	
	$('[cp]',$("#"+formId)).each(function() {
		try{
			$('#error_'+$(this).attr('name')).html("");
		}catch(e){}
		var cp = $(this).attr('cp');
		var req = $(this).attr('req') == 'true';
		
		try{
			$("#id_valida_status_"+nm_campo).val('True');
		}catch(erro_ex){}
	

		if(ret || error != 'alert'){
			if( cp == 'date'){
				if(req){
					if(validateRequired($(this).attr('name'), error)){
						if( !check_date( this , error) ){						
							ret = false;
						}
					}else{
						ret = false;
					}
				}else{
					if( !check_date( this , error) ){
						ret = false;
					}			
				}
			}else{
				if(req){
					ret = validateRequired($(this).attr('name'), error) && ret;
				}
			}
		}
		
	});
	return ret;
}

form_validado = false;
