function Validacao(form,lang){
	if (lang=='pt') {
		campos_obrigatorios = 'Os seguintes campos são obrigatórios:';
	}
	if (lang=='en') {
		campos_obrigatorios = 'Follow fields are required:';
	}

	var elementos = $(form).elements;

	var length = elementos.length;

	var i = 0;

	var erro = '';

	var invalidmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;

	var invalidtime = /[012][0-9]:[0-5][0-9]/;

	var invaliddate = /[0123][0-9]\/[01][0-9]\/[012][0-9][0-9][0-9]/;

	var invalidcpf = /[0-9][0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]-[0-9][0-9]/;

	var invalidcnpj = /[0-9][0-9]\.[0-9][0-9][0-9]\.[0-9][0-9][0-9]\/[0-9][0-9][0-9][0-9]-[0-9][0-9]/;

	var invalidlink = /^(http|https|ftp|mailto):\/\//;

	var invalidcep = /[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]/;
	
	var invalidFone = /\([0-9]{2}\)[0-9]{4}\-[0-9]{4}/;

	

	for(i=0;i<length;i++){

		if($j(elementos[i]).attr("required")){

			if($j(elementos[i]).attr("required") == 'email'){

				if(!invalidmail.test($j(elementos[i]).attr("value"))){
					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});					

				} else {

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});

				}		

			} else if($j(elementos[i]).attr("required") == 'cpf'){

				if(invalidcpf.test($j(elementos[i]).attr("value"))){

					var cpf = $j(elementos[i]).attr("value");

					cpf = cpf.replace(".","");

					cpf = cpf.replace(".","");

					cpf = cpf.replace(".","");

					cpf = cpf.replace("-","");

					if(!ValidaCpf(cpf)){

						if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
							erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
						} else {
							erro += '-  '+$j(elementos[i]).attr("name")+'\n';
						}

						var as = $(elementos[i]).ancestors();

						$j(as[1]).css({"color":"#FF0000"});

					} else {

						var as = $(elementos[i]).ancestors();

						$j(as[1]).css({"color":"#000000"});

					}

				} else {

					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});

				}

			} else if($j(elementos[i]).attr("required") == 'cnpj'){

				if(invalidcnpj.test($j(elementos[i]).attr("value"))){

					var cnpj = $j(elementos[i]).attr("value");

					cnpj = cnpj.replace(".","");

					cnpj = cnpj.replace(".","");

					cnpj = cnpj.replace("/","");

					cnpj = cnpj.replace("-","");

					if(!ValidaCnpj(cnpj)){

						if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
							erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
						} else {
							erro += '-  '+$j(elementos[i]).attr("name")+'\n';
						}

						var as = $(elementos[i]).ancestors();

						$j(as[1]).css({"color":"#FF0000"});

					} else {

						var as = $(elementos[i]).ancestors();

						$j(as[1]).css({"color":"#000000"});

					}

				} else {

					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});

				}

			} else if($j(elementos[i]).attr("required") == 'combodata'){

				if($j(elementos[i]).attr("reference")){

					var date1 = $j(elementos[i]).attr("value");

					var date2 = $($j(elementos[i]).attr("reference")).value;

					if(!invaliddate.test(date1) || !invaliddate.test(date2)){

						if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
							erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
						} else {
							erro += '-  '+$j(elementos[i]).attr("name")+'\n';
						}

						var as = $(elementos[i]).ancestors();

						$j(as[1]).css({"color":"#FF0000"});

					} else {

						var date1 = parseInt( date1.split( "/" )[2].toString() + date1.split( "/" )[1].toString() + date1.split( "/" )[0].toString() )	

						var date2 = parseInt( date2.split( "/" )[2].toString() + date2.split( "/" )[1].toString() + date2.split( "/" )[0].toString() )	

						if(date1 >= date2){

							if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
								erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
							} else {
								erro += '-  '+$j(elementos[i]).attr("name")+'\n';
							}

							var as = $(elementos[i]).ancestors();

							$j(as[1]).css({"color":"#FF0000"});

							var as = $($j(elementos[i]).attr("reference")).ancestors();

							$j(as[1]).css({"color":"#FF0000"});

						} else {

							var as = $(elementos[i]).ancestors();

							$j(as[1]).css({"color":"#000000"});

						}

					}

				} else {

					alert('Existe um erro de HTML na validação');	

				}

			} else if($j(elementos[i]).attr("required") == 'data'){

				if(!invaliddate.test($j(elementos[i]).attr("value"))){

					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});

				} else {

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});

				}

			} else if($j(elementos[i]).attr("required") == 'password'){

				if($j(elementos[i]).attr("reference")){

					if($j(elementos[i]).attr("value")){

						if($j(elementos[i]).attr("value") != $($j(elementos[i]).attr("reference")).value){

							erro += '-  '+$j(elementos[i]).attr("mname")+'\n';

							var as = $(elementos[i]).ancestors();

							$j(as[1]).css({"color":"#FF0000"});

							var as = $($j(elementos[i]).attr("reference")).ancestors();

							$j(as[1]).css({"color":"#FF0000"});

						} else {

							var as = $(elementos[i]).ancestors();

							$j(as[1]).css({"color":"#000000"});

						}

					} else {

						if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
							erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
						} else {
							erro += '-  '+$j(elementos[i]).attr("name")+'\n';
						}

						var as = $(elementos[i]).ancestors();

						$j(as[1]).css({"color":"#FF0000"});

					}

				} else {

					alert('Existe um erro de HTML na validação');	

				}

			} else if($j(elementos[i]).attr("required") == 'hora'){

				if(!invalidtime.test($j(elementos[i]).attr("value"))){

					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});

				} else {

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});

				}

			} else if($j(elementos[i]).attr("required") == 'cep'){

				if(!invalidcep.test($j(elementos[i]).attr("value"))){

					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});

				} else {

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});

				}

			} else if($j(elementos[i]).attr("required") == 'link') {

				if(!invalidlink.test($j(elementos[i]).attr("value"))){

					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});

				} else {

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});

				}

			} else if($j(elementos[i]).attr("required") == 'MaxSize'){
				var tamanho = $j(elementos[i]).val();
				tamanho = tamanho.length;
				var maxsize = $j(elementos[i]).attr("maxsize");
				if(tamanho > maxsize){						
					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});
				} else {
					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});	
				}
			} else if($j(elementos[i]).attr("required") == 'fone'){
				if(!invalidFone.test($j(elementos[i]).attr("value"))){
					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});							   
				} else {
					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});	
				}
			} else {

				if(!$j.trim($j(elementos[i]).attr("value"))){

					if(typeof $j(elementos[i]).attr("aname") != 'undefined'){
						erro += '-  '+$j(elementos[i]).attr("aname")+'\n';
					} else {
						erro += '-  '+$j(elementos[i]).attr("name")+'\n';
					}

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#FF0000"});

				} else {

					var as = $(elementos[i]).ancestors();

					$j(as[1]).css({"color":"#000000"});

				}

			}

		}

	}

	if(erro){
		
		alert((campos_obrigatorios)+'\n'+erro);
		
		
		return false;

	} else {

		return true;

	}

}



function ValidaCpf(cpf)

      {

      var numeros, digitos, soma, i, resultado, digitos_iguais;

      digitos_iguais = 1;

      if (cpf.length < 11)

            return false;

      for (i = 0; i < cpf.length - 1; i++)

            if (cpf.charAt(i) != cpf.charAt(i + 1))

                  {

                  digitos_iguais = 0;

                  break;

                  }

      if (!digitos_iguais)

            {

            numeros = cpf.substring(0,9);

            digitos = cpf.substring(9);

            soma = 0;

            for (i = 10; i > 1; i--)

                  soma += numeros.charAt(10 - i) * i;

            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

            if (resultado != digitos.charAt(0))

                  return false;

            numeros = cpf.substring(0,10);

            soma = 0;

            for (i = 11; i > 1; i--)

                  soma += numeros.charAt(11 - i) * i;

            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

            if (resultado != digitos.charAt(1))

                  return false;

            return true;

            }

      else

            return false;

      }

function ValidaCnpj(cnpj){

	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;

	digitos_iguais = 1;

	if (cnpj.length < 14 && cnpj.length < 15)

		return false;

	for (i = 0; i < cnpj.length - 1; i++)

		if (cnpj.charAt(i) != cnpj.charAt(i + 1)){

			digitos_iguais = 0;

			break;

		}

	if (!digitos_iguais){

		tamanho = cnpj.length - 2

		numeros = cnpj.substring(0,tamanho);

		digitos = cnpj.substring(tamanho);

		soma = 0;

		pos = tamanho - 7;

		for (i = tamanho; i >= 1; i--){

			soma += numeros.charAt(tamanho - i) * pos--;

			if (pos < 2)

				pos = 9;

		}

		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

		if (resultado != digitos.charAt(0))

			return false;

		tamanho = tamanho + 1;

		numeros = cnpj.substring(0,tamanho);

		soma = 0;

		pos = tamanho - 7;

		for (i = tamanho; i >= 1; i--){

			soma += numeros.charAt(tamanho - i) * pos--;

			if (pos < 2)

			pos = 9;

		}

		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

		if (resultado != digitos.charAt(1))

			return false;

		return true;

	}	else

		return false;

} 