//<FUNCOES GENERICAS>///////////////////////////////////////////////////////////

//EXIBE A MENSAGEM DE ERRO. ACIONADA PELAS OUTRAS FUNCOES
function showWarning(message, whatInput){
  alert(message);
}

//VERIFICA SE UM INPUT ESTA VAZIO.
function checkEmpty(whatForm, whatInput, errorMessage){
  var tmpInput = whatForm.elements[whatInput];

  if(tmpInput.value == ''){
    showWarning(errorMessage, tmpInput);
    tmpInput.focus();
    return false;
  }
  return true;
}

//VERIFICA SE O CAMPO CONTEM A FORMATACAO DE EMAIL
function checkEmail(whatForm, whatInput, errorMessage) {
  var tmpEmail = whatForm.elements[whatInput];
  var tmpStr = tmpEmail.value.replace("'","");
  tmpEmail.value = tmpStr;

	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=tmpStr.match(emailPat)
	if (matchArray==null){
    showWarning(errorMessage, tmpEmail);
    tmpEmail.focus();
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null){
    showWarning(errorMessage, tmpEmail);
    tmpEmail.focus();
		return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		for (var i=1;i<=4;i++){
			if (IPArray[i]>255){
        showWarning(errorMessage, tmpEmail);
        tmpEmail.focus();
				return false
			}
		}
		return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null){
    showWarning(errorMessage, tmpEmail);
    tmpEmail.focus();
		return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3){
    showWarning(errorMessage, tmpEmail);
    tmpEmail.focus();
		return false
	}
	if (len<2) {
    showWarning(errorMessage, tmpEmail);
    tmpEmail.focus();
		return false
	}
	return true;
}


//VERIFICA SE UM CAMPO SELECT ESTA SELECIONADO. PRECISA DE UM OPTION VALUE="-"
function checkSelect(whatForm, whatSelect, errorMessage){
  var tmpSelect = whatForm.elements[whatSelect];

  if(tmpSelect.options[tmpSelect.options.selectedIndex].value == '-'){
    errorMessage ? showWarning(errorMessage, tmpSelect) : eval(0);
    errorMessage ? tmpSelect.focus() : eval(0);
    return false;
  }
  return true;
}

//VERIFICA SE UM CONJUNTO DE RADIO BUTTONS ESTA SELECIONADO
function checkRadio(whatForm, whatRadio, errorMessage){
  var ticado = false;
  
  for (i = 0; i < whatForm.elements[whatRadio].length; i++){
  	if (whatForm.elements[whatRadio][i].checked)
  		{
  		ticado = true;
  		}
  }
  
  if (ticado){
  	return true;
  }else{
    showWarning(errorMessage, whatRadio);
  	return false;
  }
}

//VERIFICA SE CAMPO 02 EH IGUAL AO CAMPO 01
function checkFields(whatForm, whatInput, whatInputCopy, errorMessage){
  var tmpInput = whatForm.elements[whatInput];
  var tmpInputCopy = whatForm.elements[whatInputCopy];

  if(tmpInput.value != tmpInputCopy.value){
    showWarning(errorMessage, tmpInputCopy);
    tmpInputCopy.focus();
    return false;
  }
  else{
    return true;
  }
}

//</FUNCOES GENERICAS>//////////////////////////////////////////////////////////





//</FUNCOES UTILITARIOS PARA DATA>//////////////////////////////////////////////

	function validaCPF(whatForm, whatInput, errorMessage) {
  		var tmpInput = whatForm.elements[whatInput];
		cpf = tmpInput.value;
		valor = true;
		erro = new String;
		if (cpf.length < 11) erro += "Sao necessarios 11 digitos para verificacao do CPF! \n\n"; 
		var nonNumbers = /\D/;
		if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n";	
		if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
			  erro += "Numero de CPF invalido!"
		}
		var a = [];
		var b = new Number;
		var c = 11;
		for (i=0; i<11; i++){
			a[i] = cpf.charAt(i);
			if (i < 9) b += (a[i] *  --c);
		}
		if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
		b = 0;
		c = 11;
		for (y=0; y<10; y++) b += (a[y] *  c--); 
		if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
		if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
			erro +="Digito verificador com problema!";
		}
		if (erro.length > 0){
    		showWarning(errorMessage, tmpInput);
    		tmpInput.focus();
			return false;
		}
		return true;
	}
	
function blockSpecialChars(){
	var isNS4 = (navigator.appName=="Netscape")?1:0;
	if(!isNS4){if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && 	event.keyCode < 97)) event.returnValue = false;
	}else{
		if ((event.which > 32 && event.which < 48) || (event.which > 57 && event.which < 65) || (event.which > 90 && event.which < 97)) return false;
	}
}


function blockChars(){
	if(event.keyCode < 45 || event.keyCode > 57 || event.keyCode > 32 && event.keyCode < 48 || event.keyCode > 57 && event.keyCode < 65 || event.keyCode > 90 && event.keyCode < 97){
			event.returnValue = false;
	}
}


function trim(vString){

	return vString.replace(/^\s+|\s+$/ig, '');
	
}

function clickInText(obj){

	var valorinicial = trim(obj.getAttribute('valorInicial'));
	
	if ( trim(obj.value) == valorinicial ) {
		
		obj.value = '';					
	
	}
								
}

function clickOutText(obj){

	var valorinicial = trim(obj.getAttribute('valorInicial'));
	
	if ( trim(obj.value) == '' ) {
		
		obj.value = valorinicial;					
	
	}
		
}

function clickInPass(obj1, obj2){

	var valorinicial = trim(obj1.getAttribute('valorInicial'));
	
	if ( trim(obj1.value) == valorinicial ) {

		obj1.style.display = 'none';
		obj2.style.display = 'inline';
		obj2.value = '';
		obj2.focus();
	
	}
								
}

function clickOutPass(obj1, obj2){

	var valorinicial = trim(obj1.getAttribute('valorInicial'));
	
	if ( trim(obj2.value) == '' ) {

		obj2.style.display = 'none';
		obj1.value = valorinicial;
		obj1.style.display = 'inline';
						
	}
		
}

function trim(vString){

	return vString.replace(/^\s+|\s+$/ig, '');
	
}

function emailValido(email){

    var re = /^.+@.+\..{2,}$/ig;
    
    return re.test(email);

}
