/** 
 *Testa se o CPF � v�lido.
 */				  	
function cpf_valido( cpf ) {
	if (cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" ||
		cpf == "22222222222" ||	cpf == "33333333333" || cpf == "44444444444" ||
		cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" ||
		cpf == "88888888888" || cpf == "99999999999")
		return false;
	else {
		soma = 0;
		for (i=0; i < 9; i ++)
			soma += parseInt(cpf.charAt(i)) * (10 - i);
		resto = 11 - (soma % 11);
		if (resto == 10 || resto == 11)
			resto = 0;
		if (resto != parseInt(cpf.charAt(9)))
			return false;
		soma = 0;
		for (i = 0; i < 10; i ++)
			soma += parseInt(cpf.charAt(i)) * (11 - i);
		resto = 11 - (soma % 11);
		if (resto == 10 || resto == 11)
			resto = 0;
		if (resto != parseInt(cpf.charAt(10)))
			return false;
		return true;
	}
 }

/**
 *Testa se o campo est� vazio.
 */
function campo_vazio( campo ) {
	if ( campo==null || campo.length==0 )
		return true;
	else 
		return false;
}

/**
 * Fun��o que verifica datas inv�lidas, como 30 de fevereiro, por exemplo.
 */
function data_valida( dia, mes ) {
	if ( dia < 1 )
 		return false; 
	if ( (dia < 32  && (mes==1 ||
 						mes==3 ||
	 					mes==5 ||
 						mes==7 ||
 						mes==8 ||
 						mes==10 ||
 						mes==12)) ||
		 (dia < 31 && (mes==4 ||
 					   mes==6 ||
 					   mes==9 ||
 					   mes==11)) ||
		 (dia < 30  && mes == 2) )
		return true;
	else
		return false;
}


/**
 * Valida Data no formato dd/mm/aaaa.
 * DEPRECATED (n�o � usado data como um campo �nico, e sim 3 campos separados dia, m�s e ano).
 */
function data_completa_valida( str ) {
	var filter  = /^\d{1,2}\/\d{1,2}\/\d{4}$/g;
	return filter.test(str);
}
 
 
/**
 * Retira espa�os em branco � esquerda.
 */
function ltrim ( s ) {
	return s.replace( /^\s*/, "" );  }
	
/**
 * Retira espa�os em branco � direita.
 */
function rtrim ( s ) {
	return s.replace( /\s*$/, "" ); }

/**
* Retira espa�os em branco � esquerda e � direita.
*/
function trim ( s ) {
	return rtrim(ltrim(s));  }


/**
 * Retira todos os n�meros da String
 * DEPRECATED.
function tira_numeros(s) {
	return s.replace(/^\d+/g, '').replace(/\d+$/g, ''); 
}
 */
 
 
/**
 * Retira todas as letras da String
 */
function tira_letras(s) {
	return s.replace(/[a-zA-Z������������������������������������������������]/g, '');
}

/**
 * Retira todos os espa�os da String
 */
function tira_espacos(s) {
	return s.replace(/^\s+/g, "").replace(/\s+$/g, "");
}

/**
 * Verifica se o campo possui apenas letras.
 */	
function letras( str ) {
	var filter  = /^[a-zA-Z]+$/g;
	return filter.test(str);
}

/**
 * Verifica se o campo possui apenas n�meros.
 */
function somente_numeros( str ) {
	var filter  = /^\d+$/g;
	return filter.test(str);
}


/**
 * Valida Placa no formato AAA-1234.
 */
function placa_valida( str ) {
	var filter  = /^[A-Z]{3}-\d{4}$/g;
	return filter.test(str);
}


/**
 * Valida Telefone no formato ( 22 222 2222 ) ou ( 22 2222 2222 )
 * ou ( 121231234 ) ou ( 1212341234 ) ou ( 22-222-2222 ) ou ( 22-2222-2222 ).
 */
function telefone_valido( str ) {
	var filter  = /^([\(]{0,1}(\d{2}([)]{0,1})[\s|-]*\d{3,4}[\s|-]*\d{4}))$/g;
	return filter.test(str);
}


/**
 * Valida Celular no formato ( 22 2222 2222 ) ou ( 22-2222-2222 ) ou ( 2222222222 ).
 */
function celular_valido( str ) {
	var filter  = /^([\(]{0,1}(\d{2}([)]{0,1})[\s|-]*\d{4}[\s|-]*\d{4}))$/g;
	return filter.test(str);
}


/**
 * Valida Telefone sem DDD no formato ( 222 2222 ) ou ( 2222 2222 )
 * ou ( 1231234 ) ou ( 12341234 ) ou ( 222-2222 ) ou ( 2222-2222 ).
 */
function telefone_valido_sem_ddd( str ) {
	var filter  = /^\d{3,4}[\s|-]*\d{4}$/g;
	return filter.test(str);
}


/**
  * Valida Celular sem o DDD no formato ( 2222 2222 ) ou ( 2222-2222 ) ou ( 22222222 ).
  */
function celular_valido_sem_ddd( str ) {
	var filter  = /^\d{4}[\s|-]*\d{4}$/g
	return filter.test(str);
}


/**
 *Valida o DDD.
 */
function ddd_valido( str ) {
	var filter  = /^\d{2}$/g
	return filter.test(str);
}

/**
 * Valida CEP no formato ( 12345 123) ou ( 12345-123 ) ou ( 12345123 ).
 */
function cep_valido( str ) {
	var filter  = /^((\d{5}[\s|-]{0,1}\d{3}))$/g;
	return filter.test(str);
}

/**
 * Valida Pre�o no formato 999000,00 ou 999.000,00 (ponto opcional).
 */
function preco_valido( str ) {
	var filter  = /^\d{1,3}((\.){0,1}\d{1,3})*([,]\d{1,2}){0,1}$/g;
	return filter.test(str);
}
	
/**
 * Verifica se o caminho � uma imagem  *.jpg, *.gif.
 */	
function imagem_valida( str ) {
	var filter  = /^.+(((\.gif)|(\.jpg)|(\.swf))|(\.GIF)|(\.JPG)|(\.SWF))$/g;
	return filter.test(str);
}

	
/**
 * Testa se o e-mail � v�lido.
 */
function email_valido( email ) {
	var filter  = /^(([^\-\. ]([\w_\.\-])*[^-\.])|(\w))\@(([\w_\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return  filter.test(email);
}


/**
 * Substitui o caractere ' (aspas simples) por ` (crase) em TODOS os campos
 * do formul�rio.
 */
function substitui_aspas_simples_em_todos_campos( formulario ) {
	for ( var i=0 ; i<formulario.elements.length ; i++ )
		formulario.elements[i].value = formulario.elements[i].value.replace( /[']/g, "`" );
}

function alertFocus( msg, campo ) {
	alert( msg );
	campo.focus();
}


