function PutData(pControl)
    {
	//
	// OnKeyPress="JavaScript:PutData(this)"
	// <script type="text/javascript" src=".\AGFdata.js"></script>


	var DigValidos="1234567890,";
        var Caracteres="-48-49-50-51-52-53-54-55-56-57-96-97-98-99-100-101-102-103-104-105-8-37-38-39-40-9-8-46";
        var Keyascii = event.keyCode;
        var Control = pControl;
        var Value = pControl.value;
        
	if (String(DigValidos).indexOf(String.fromCharCode(event.keyCode)) == -1){
		event.keyCode = 0
		return false
	}

        if (Caracteres.indexOf("-" + Keyascii) > -1){
			switch(Keyascii){
				case 9:{
					event.returnValue = true;
					break;
				}
				case 8:{
					event.returnValue = true;
					break;
				}
				case 46:{
					event.returnValue = true;
					break;
				}
				default:{
	                switch (Value.length){
	                    case 2:{ 
	                    	//dia
						    var RetornoValor2 = true;	
                            //Verifica se o dia não é superior a 31
                            //window.alert(Value.substring(0,2));
                            if (Value.substring(0,2) > 31){
                            	RetornoValor2 = false;
                            }

                            //Verifica se o dia não é 0
                            //window.alert(Value.substring(0,2));
                            if (Value.substring(0,2) < 1){
								RetornoValor2 = false;
							}

                            if(RetornoValor2 == true){
								Control.value = Value + "/";
							}
							event.returnValue = RetornoValor2;

                            break;
                        }
                    case 5:{
						//Verifica se o mes não é superior a 12 e se
                        //aceita mes com 29, 30, ou 31 dias
                        //window.alert(Value.substring(3,5));
                                    
                        var ValorRetorno = true;
                        //se o mes for maior que 12
                        if (Value.substring(3,5) > 12){
							ValorRetorno = false;
						}
                                    
                        //se o mes for menor que 1
						if (Value.substring(3,5) <1){
							ValorRetorno = false;
						}

            			//fevereiro
                        if (Value.substring(3,5) =="02" && Value.substring(0,2) > 29){
							ValorRetorno = false;
						}
                                                                            
                        //abril
                        if (Value.substring(3,5) == "04" && Value.substring(0,2) == "31"){
							ValorRetorno = false;
						}


                        //junho
                        if (Value.substring(3,5) == "06" && Value.substring(0,2) == "31"){
							ValorRetorno = false;
						}

                        //setembro
                        if (Value.substring(3,5) == "09" && Value.substring(0,2) == "31"){
							ValorRetorno = false;
						}

						//novembro
                        if (Value.substring(3,5) == "11" && Value.substring(0,2) == "31"){
							ValorRetorno = false;
						}
						switch (event.keyCode){
							case 48:{
								ValorRetorno = false;
								break;
							}
							case 96:{
								ValorRetorno = false;
								break;
							}
						}
            
						//window.alert("ValorRetorno = " + ValorRetorno);
                        if (ValorRetorno == true){
							Control.value = Value + "/";
							event.returnValue = ValorRetorno;
						}
                        else{
							event.returnValue = ValorRetorno;
						}
						break;
                    }
					case 6:{
						switch (event.keyCode){
							case 48:{
								event.returnValue = false;
								break;
							}
							case 96:{
								event.returnValue = false;
								break;
							}
						}
					}
                    case 9:{
						//window.alert(Value.substring(6,10));
						var bissexto = Value.substring(6,9) + String.fromCharCode(event.keyCode);
						var bissextodiv = bissexto / 4;
						var bissextochar = bissextodiv + "";
						if (bissextochar.indexOf(".") > -1){
							if(Value.substring(0,2) == "29" && Value.substring(3,5) == "02"){
								event.returnValue = false;
							}
						}
						if (bissextochar.indexOf(",") > -1) {
							if(Value.substring(0,2) == "29" && Value.substring(3,5) == "02"){
								event.returnValue = false;
							}
						}
						break;
					}
                    case 10:{
                    	//event.returnValue = false
                    }
                }
			}
		}
	}
	else{
		event.returnValue = false;
	}
}

//Rotina de validação de Data
//Entrada = DD/MM/YYYY
function IsDate(psData)
{
	if (psData.length == 0){
		return true
	}
	var laDiasMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var laData    = SplitString(psData, '/');
	/*
	** Se não houver três partes a data é considerada inválida
	*/
	if (laData.length != 3)
		return false
	
	/*
	** A string é dividida em três partes :
	**
	** laData[0] - Dia
	** laData[1] - Mês
	** laData[2] - Ano
	*/

	/*
	** Verifica se o mes está no intervalo [1,12]
	*/
	if (!(laData[1] >= 1 && laData[1] <= 12))
		return false

	/*
	** Se o ano não tiver 4 digitos, é invalida
	*/
	if (laData[2].length != 4) 
		return false

	/*
	** Se for ano bissexto, o Limite p/ o mes de Fevereiro é 29 dias
	*/
	if (Math.floor(laData[2] / 4) * 4 == laData[2]) 
		laDiasMes[1] = 29;

	/*
	** Verifica se cada parte eh um numero POSITIVO
	*/
	for(var i = 0; i < laData.length; i++)
	{
		if (IsEmpty(laData[i]))
			return false
		if (!IsNumber(laData[i]))
			return false
		else if (parseFloat(laData[i]) < 0)
			return false
	}

	/*
	** Se o dia estiver fora do limite para o mes dado, é invalida
	*/
	if (!((laData[0] >= 1) && (laData[0] <= laDiasMes[laData[1] - 1])))
		//alert('Data inválida.');
		return false

	/*
	** Finalmente, se chegou até aqui, é uma data válida
	*/
	return true;
}

function SplitString(psString, psDivider)
{
	/*
	** Conta o número de ocorrências do separador para saber quantos elementos terá o Array.
	*/
	var liOccurs = 0;
	
	for (var liCount = 0; liCount < (psString.length - psDivider.length); liCount++)	
		if (psString.substr(liCount, psDivider.length) == psDivider)
			liOccurs++;
			
	/*
	** Cria o array
	*/
	var laRet = new Array(liOccurs);
	var lsAux = '';
	
	liCount  = 0;
	liOccurs = 0;
	do
	{
		if (psString.substr(liCount, psDivider.length) == psDivider)
		{
			liCount += psDivider.length;
			laRet[liOccurs++] = lsAux;
			lsAux = '';
		}
		
		lsAux += psString.charAt(liCount++);
	}
	while (liCount < psString.length);
	
	laRet[liOccurs++] = lsAux;
	
	return (laRet);
}

function IsEmpty(psString)
{
	/*
	** Caracteres Inválidos
	*/
	var lsTab   = '\t', // Tab Char
		lsSpace = ' ' , // Space
        lsCRLF  = '\n', // CR LF
		lsCR    = '\r'; // CR
	
	/*
	** Procura por caracteres válidos
	*/
	for (var liPos = 0; liPos < psString.length; liPos++)
	{
		var lsChar = psString.charAt(liPos);
		if (lsChar != lsTab   &&
			lsChar != lsSpace && 
			lsChar != lsCRLF  && 
			lsChar != lsCR )
			return (false);
	}
	
	return (true);
}

function IsNumber(psNumber)
{
	var InvalidChar = IsEmpty(psNumber);
	
	for (var i = 0; i < psNumber.length; i++)
	{
		var Char = psNumber.charAt(i);
		if (Char != "." && Char != "," && Char != "-")
			if (isNaN(parseInt(Char)))
				InvalidChar = true  || InvalidChar
			else
				InvalidChar = false || InvalidChar;
	}
	
	return (!InvalidChar);
}
