
var msg;

function evento(e)
{
	if(typeof(e)=='undefined')var e=window.event;
    var source=e.target?e.target:e.srcElement;
    if(source.nodeType==3)source=source.parentNode;
	return source;
}
function trim(string){
	while(""+string.charAt(string.length-1)==" ") string=string.substring(0,string.length-1);
	return string;
}
function verifica(e)
{
	var form 	= evento(e)
	var tag		= form.getElementsByTagName("*")
	var tmTag	= tag.length
	var retorno = true
	msg = "  Ocorreo o(s) seguinte(s) erro(s): \n"
	msg +="--------------------------------------------------------\n"

	for(i=0;i<tmTag;i++)
	{
		if(tag[i].title != 'undefined' && tag[i].title != null && tag[i].title != "")
		{
			switch(tag[i].tagName.toLowerCase())
			{
				case "textarea": case "select":
				
					if(trim(tag[i].value).length == 0)
					{
						msg += " * ' " + tag[i].title.toUpperCase() + " ' não preenchido.\n";
						retorno = false;
					}
					break;
					
				case "input": 
					switch(tag[i].type.toLowerCase())
					{	
						case "radio":
						
							if(msg.indexOf(" * ' " + tag[i].title.toUpperCase() + " ' não preenchido.\n") < 0)
							{
								var ret_radio = true;
								for(f=0 ; f < tmTag ; f++)
								{
									if(tag[i].type.toLowerCase() == "radio")
									{
										if(tag[f].name == tag[i].name && tag[f].checked)
										{
											ret_radio = false;
											continue;
										}	
									}
								}
								if(ret_radio)
								{
									msg += " * ' " + tag[i].title.toUpperCase() + " ' não preenchido.\n";
									retorno = false;	
								}
								break;
							}
							
						case "checkbox":
						
							if(!tag[i].checked)
							{
								msg += " * ' " + tag[i].title.toUpperCase() + " ' não preenchido.\n";
								retorno = false;	
							}	
							break;
							
						default:
						
							if(trim(tag[i].value).length == 0)
							{
								msg += " * ' " + tag[i].title.toUpperCase() + " ' não preenchido.\n";
								retorno = false;
							}
							else
							{
								switch(tag[i].title.toLowerCase())
								{
									case "e-mail":
										ret = validaEmail(tag[i].value);
										if(!ret) retorno = false;
										break
									case "cnpj":
										ret = validaCNPJ(tag[i].value);
										if(!ret) retorno = false;
										break
									case "data":
										ret = vdata(tag[i].value);
										if(!ret) retorno = false;

								}
							}
							break;
					}
				break;
			}
		}
	}
	msg +="--------------------------------------------------------\n";
	msg +=" Corrija e tente novamente. Obrigado. "
	
	if(!retorno) alert(msg)
	
	return retorno
}

function validaEmail(email)
{
	emailRE = new RegExp("^([a-zA-Z0-9(.)(_)]{3,})+@+([a-zA-Z0-9(.)(_)])+.")
  	if(emailRE.test(email)) return true
	else{ 
		msg += " * E-Mail '" + email + "' invalido. \n";
		return false
	}
}

function validaCNPJ(CNPJ) {
	
   	erro = new String;
    if (CNPJ.length < 18) erro += " * É necessario preencher corretamente o número do CNPJ! \n";
    if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-"))
	{
    	if (erro.length == 0) erro += " * É necessário preencher corretamente o número do CNPJ. \n";
    }
    //substituir os caracteres que não são números
    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 verificação de CNPJ suporta apenas números. \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 +=" * Dígito verificador com problema.\n";
	}
	if (erro.length > 0)
	{
		 msg += erro;
		 return false;
	} 
	else 
	{
		return true;
	}
	
}

function vdata(data){
	var ret = true;
	
	if(data.length == 10)
	{
		var dt  = data.split("/")
		var dia = dt[0];
		var mes = dt[1];
		var ano = dt[2];
		
		//verifica dia
		if( ( dia < 1 ) || ( dia < 1 || dia > 30) && ( mes == 4 || mes == 6 || mes == 9 || mes == 11) || ( dia > 31 ) ) 
			ret = false;
		//verfica o mes
		if( mes < 1 || mes > 12 )
			ret = false;
		//verfica o ano
		if( mes == 2 && ( dia < 1 || dia > 29 || ( dia > 28 && ( parseInt( ano / 4 ) != ano / 4 ) ) ) )
			ret = false;
																			
		if(!ret) msg += " * '"+data+"' Data Invalida.\n"; 
	}
	else
	{ 
		ret = false;
		msg += " * Data incompleta.\n";
	
	}
	return ret;
}