//Trata caracteres especais para não ter problema com
//o cadastramento na base de dados

function fn_TrataCaracterEspecial(Obj)
{
 		Obj.value = Obj.value.replace(/\'/gi,"");
		Obj.value = Obj.value.replace(/\"/gi,"");
}

function fn_ValidaCampos(Obj)
{
	for(i=0; i < Obj.length; i++)
	{
		if(Obj.elements[i].type == "text" || Obj.elements[i].type =="textarea")
		{
				Obj.elements[i].value = Obj.elements[i].value.replace(/\'/gi,"");
				Obj.elements[i].value = Obj.elements[i].value.replace(/\"/gi,"");
		}
	}
	return true;
}

//Verifica se o campo esta prenchido 
//Se é prenchido so com espaço

function isEmpty(s)
{   if ((s == null) || (s.length == 0))
	{
		return true;
	}
	else
	{
	    for (var i = 0 ; i < s.length ; i++) 
	    {
	        if (s.charAt(i) != ' ') 
		    {
			    return false;
			}
		}
    }
    return true;
}

//Função que define se o campo é apenas número

function isInteger(field)
{
	if(isNaN(field.value))
	{
		alert("Campo numérico!")
		field.value = '';
		field.focus();
		return false
	}
	return true
}

function isWhitespace(s)
{   
    var i;
    var whitespace = " \t\n\r";

    if (isEmpty(s)) 
		return true;

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) 
			return false;
    }

    return true;
}

function isEmail(s)
{   
	if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) 
		  return defaultEmptyOK;
       else 
	   	  return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) 
		return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    
	var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { 
		i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) 
		return false;
    else 
		i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { 
		i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) 
		return false;
    else 
		return true;
}

//Converte data formato brasileiro para formato javascript
//É para fazer comparação entre duas datas 

function CnvDataJS(cData)
{
	var aDtAux
	var oDtAux;
	
	cData = new String (cData);
	aDtAux = cData.split("/");
	
	if (aDtAux.length != 3)
	{
		return false;
	}
	
	oDtAux = new Date (aDtAux[2],(parseInt(aDtAux[1], 10) - 1), aDtAux[0]);
	return oDtAux;
}  

//Valida o Formato do CEP 

function fn_ValidaCEP(field)
{
	if(field.value != '')
	{
		var valid = "0123456789";
		
		for(var i=0; i < field.value.length; i++)
		{
			temp = "" + field.value.substring(i, i+1);
			
			if (valid.indexOf(temp) == "-1")
			{
				alert("Caracter inválido digite novamente!");
				field.value = field.value.substr(0,i);
				field.focus();
				return false;
			}

			if((field.value.length==9) && (""+field.value.charAt(5)!="-"))
			{
				alert("Digite o CEP no formato correto 99999999. Sem utilizar o ifen");
				field.value = '';
				return false;
			}
		}
		return true;
	}
}

//Valida o Formato do CPF 

function fn_ValidaCPF(field)
{
	if(field.value != '')
	{
		if(!isInteger(field))
		{
			return false;
		}		
		
		if(field.value.length != 11)
		{
			alert ("CPF deve ter 11 digitos!");
			return (false);
		}
		if((field.value == "11111111111") || (field.value == "22222222222") || (field.value == "33333333333") || (field.value == "44444444444") || (field.value == "55555555555") || (field.value == "66666666666") || (field.value == "77777777777") || (field.value == "88888888888") || (field.value == "99999999999"))
		{
			alert ("CPF inválido!");
			field.value = ''
			return (false);
		}
		
		var nValidaCPF = false;
		var nResto;
		var nDig1;
		var nDig2;
		var nIndice = 0;
		var nMultiplo = 11;
		var nCalculo = 0;
	
		while(nIndice < 9)
		{
			nMultiplo--;
			nCalculo = nCalculo + parseInt(field.value.substr(nIndice, 1), 10) * (nMultiplo);
			nIndice++;
		}
		nResto = nCalculo - (parseInt(nCalculo / 11,10) * 11);

		if(nResto == 0 || nResto == 1)
		{
			nDig1 = 0;
		}
		else
		{
			nDig1 = 11 - nResto;
		}

		nIndice = 0;
		nMultiplo = 12;
		nCalculo = 0;

		while(nIndice < 10)
		{
			nMultiplo--;
			nCalculo = nCalculo + parseInt(field.value.substr(nIndice, 1),10) * (nMultiplo);
			nIndice++;
		}
		nResto = nCalculo - (parseInt(nCalculo / 11,10) * 11);

		if(nResto == 0 || nResto == 1)
		{
			nDig2 = 0;
		}
		else
		{
			nDig2 = 11 - nResto;
		}

		if ( (parseInt(field.value.substr(nIndice - 1, 1),10) != nDig1) || (parseInt(field.value.substr(nIndice, 1),10) != nDig2) )
		{
			alert("CPF inválido")
			field.focus();
			field.value = '';
			nValidaCPF = false;
		}
		else
		{
			nValidaCPF = true;
		}
	
		return nValidaCPF;
	}
}

//Retorna true ou false na data informada

function ValidaData(vData)
{
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
	var dateStr = new String(vData);

	if(dateStr.length == 1) 
	{
		dateStr = '0' + dateStr;
	}
	
	if(dateStr.length == 2) 
	{
		var cDtAtual = new Date();
		dateStr += Preenche ((cDtAtual.getMonth() + 1), '0', 'E', 2);
		dateStr += cDtAtual.getFullYear();
	}
	
	if(dateStr.length == 4) 
	{
		var cDtAtual = new Date();
		dateStr += cDtAtual.getFullYear();
	}
	else
	{
		if(dateStr.length == 5 && dateStr.substr(2,1) == '/')
		{
			var cDtAtual = new Date();
			dateStr += '/' + cDtAtual.getFullYear();
		}
	}
	
	if(dateStr.indexOf("/") == -1 && (dateStr.length == 6 || dateStr.length == 8))
	{
		dateStr = dateStr.substr(0, 2) + "/" + dateStr.substr(2, 2) + "/" + dateStr.substr(4, 4);
	}

	var matchArray = dateStr.match(datePat); 
	
	if(matchArray == null)
	{
		event.returnValue = false;
		alert("Formato de data inválida! (deve ser dia/mes/ano ou ddmmaaaa)");
		return false;
	}
	
	nMes = matchArray[3]; 
	nDia = matchArray[1];   
	nAno = matchArray[4];

	if(nAno.length == 2) 
	{
		if(parseInt(nAno, 10) < 40) 
			nAno = "20" + nAno;
		else 
			nAno = "19" + nAno;
	}
	else	
	{
		if(nAno < 1900 || nAno > 2100) 
		{
			alert("Ano inválido.(deve ser de 1900 a 2100).");
			return false;
		}
	}

	if(nMes < 1 || nMes > 12) 
	{
		alert("Mês inválido.(deve ser de 1 a 12).");
		return false;
	}
	
	if(nDia < 1 || nDia > 31) 
	{
		alert("Dia inválido. (deve ser de 1 a 31).");
		return false;
	}

	if((nMes==4 || nMes==6 || nMes==9 || nMes==11) && nDia == 31) 
	{
		alert("O mês " + nMes + " não tem 31 dias!")
		return false;
	}

	if(nMes == 2) 
	{
		var isleap = (nAno % 4 == 0 && (nAno % 100 != 0 || nAno % 400 == 0));
	
		if(nDia>29 || (nDia==29 && !isleap))
		{
			alert("Fevereiro " + nAno + " não tem " + nDia + " dias!");
			return false;
		}
	}
	return true;
}

//Função complementar de preenchimento do campo
//Ex: '1/1/2003' para '01/01/2003'

function Preenche(cString, cChar, cEsqDir, nTam)
{
	var cAux=new String(cString);
	var nMax=(parseInt(nTam, 10) - cAux.length);
	var nCont;

	cChar=cChar.substr(0,1)
	cEsqDir=cEsqDir.substr(0,1);
	cEsqDir=cEsqDir.toUpperCase();

	for(nCont = 1; nCont <= nMax; nCont++)
	{
		if (cEsqDir == "E")
		{
			cAux=cChar + cAux;
		}
		else
		{
			cAux+=cChar;
		}
	}
	return(cAux);
}

function FormataData(field)
{
  if(field.value != '')
	{
  	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
  	var dateStr = new String(field.value);
  
  	if(dateStr.length == 1) 
  	{
  		dateStr = '0' + dateStr;
  	}
  
  	if(dateStr.length == 2) 
  	{
  		var cDtAtual = new Date();
  		dateStr += Preenche ((cDtAtual.getMonth() + 1), '0', 'E', 2);
  		dateStr += cDtAtual.getFullYear();
  	}
  	
  	if(dateStr.length == 4) 
  	{
  		var cDtAtual = new Date();
  		dateStr += cDtAtual.getFullYear();
  	}
  	else
  	{
  		if(dateStr.length == 5 && dateStr.substr(2,1) == '/')
  		{
  			var cDtAtual = new Date();
  			dateStr += '/' + cDtAtual.getFullYear();
  		}
  	}
  
  	if(dateStr.indexOf("/") == -1 && (dateStr.length == 6 || dateStr.length == 8 ))
  	{
  		dateStr = dateStr.substr(0, 2) + "/" + dateStr.substr(2, 2) + "/" + dateStr.substr(4, 4);
  	}
  
  	var matchArray = dateStr.match(datePat); 
  	
  	if(matchArray == null)
  	{
  		event.returnValue = false;
  		alert("Formato de data inválida! (deve ser dia/mes/ano ou ddmmaaaa)");
  		field.value='';
  		field.focus ();
  		return false;
  	}
  
  	nMes = matchArray [ 3 ]; 
  	nDia = matchArray [ 1 ];   
  	nAno = matchArray [ 4 ];
  
  	if(nAno.length == 2) 
  	{
  		if(parseInt(nAno, 10) < 40)
  			nAno = "20" + nAno;
  		else 
  			nAno = "19" + nAno;
  	}
  	else
  	{
  		if(nAno < 1900 || nAno > 2100) 
  		{
  			alert("Ano inválido.(deve ser de 1900 a 2100).");
  			field.value='';
  			field.focus ();
  			return false;
  		}
  	}
  	
  	if(nMes < 1 || nMes > 12) 
  	{
  		alert("Mês inválido.(deve ser de 1 a 12).");
  		field.value='';
  		field.focus ();
  		return false;
  	}
  	
  	if(nDia < 1 || nDia > 31) 
  	{
  		alert("Dia inválido. (deve ser de 1 a 31).");
  		field.value='';
  		field.focus ();
  		return false;
  	}
  	
  	if((nMes==4 || nMes==6 || nMes==9 || nMes==11) && nDia == 31) 
  	{
  		alert("O mês " + nMes + " não tem 31 dias!");
  		field.value='';
  		field.focus ();
  		return false;
  	}
  	
  	if(nMes == 2)
  	{
  		var isleap = (nAno % 4 == 0 && (nAno % 100 != 0 || nAno % 400 == 0));
  		
  		if(nDia>29 || (nDia==29 && !isleap))
  		{
  			alert("Fevereiro " + nAno + " não tem " + nDia + " dias!");
  			field.value='';
  			field.focus ();
  			return false;
  		}
  	}
  
  	dateStr=Preenche(nDia,"0","E",2) + "/" + Preenche(nMes,"0","E",2) + "/" + nAno; 
  	
  	if (field.value != dateStr) 
  	{
  		field.value = dateStr;
  	}
	}
	return true;

}

function fn_ValidaAno(field)
{
	if(field.value.length == 4)
	{
		if(parseInt(field.value) < 1900 || parseInt(field.value) > 2100) 
		{
			alert("Ano inválido.(deve ser de 1900 a 2100).");
			field.value = '';
			return false;
		}
	}
	return true
}	

function fn_PeriodoData(cData)
{
	var aDtAux
	var oDtAux;
	
	cData = new String (cData);
	aDtAux = cData.split("/");
	
	if (aDtAux.length != 3)
	{
		return false;
	}
	
	oDtAux = new Date (aDtAux[2],(parseInt(aDtAux[1], 10)), aDtAux[0]);
	return oDtAux;
}  