﻿/**********************************************************************
Funcionalidade: Formatar durante a digitação uma data no formato 'dd/MM/yyyy'
Autor: Ronaldo Lourenço dos Santos
Data: 18/09/2006
**********************************************************************/

function mascararData(evento, objeto)
{

	var intKey = new Number();
	var strNumero = new String('');
	var strData = new String(objeto.value);
	
	if (document.all)
	{
	
	    var intKey = evento.keyCode;
	
	}
	else
	{
	
	    var intKey = evento.which;
	
	}

    for (var intIndice = 0; intIndice < strData.length; intIndice++)
    {
	
        if (!isNaN(strData.substr(intIndice, 1)))
        {

	        strNumero += strData.substr(intIndice, 1);
			
        }
	
    }

    if (
        intKey != 8
        && intKey != 9
        && intKey != 13
        && intKey != 16
        && intKey != 27
        && intKey != 37
        && intKey != 38
        && intKey != 39
        && intKey != 40
        && intKey != 46
        )
    {
    
        switch (strNumero.length)
        {
        
            case 0:

                strNumero = '';
            
                break;

            case 1:
            
                strNumero = strNumero.substr(0, 1);
            
                break;

            case 2:
            
                strNumero = strNumero.substr(0, 2) + '/';
            
                break;

            case 3:
            
                strNumero = strNumero.substr(0, 2) + '/' + strNumero.substr(2, 1);
            
                break;

            case 4:
            
                strNumero = strNumero.substr(0, 2) + '/' + strNumero.substr(2, 2) + '/';
            
                break;
                
            default:
        
                strNumero = strNumero.substr(0, 2) + '/' + strNumero.substr(2, 2) + '/' + strNumero.substr(4);
            
        }

        objeto.value = strNumero;
    
    }

}

/**********************************************************************
Funcionalidade: Formatar durante a digitação uma hora no formato 'HH:mm'
Autor: Ronaldo Lourenço dos Santos
Data: 18/09/2006
**********************************************************************/
function mascararHora(evento, objeto)
{

	var intKey = new Number();
	var strNumero = new String('');
	var strHora = new String(objeto.value);
	
	if (document.all)
	{
	
	    var intKey = evento.keyCode;
	
	}
	else
	{
	
	    var intKey = evento.which;
	
	}

    for (var intIndice = 0; intIndice < strHora.length; intIndice++)
    {
	
        if (!isNaN(strHora.substr(intIndice, 1)))
        {

	        strNumero += strHora.substr(intIndice, 1);
			
        }
	
    }

    if (
        intKey != 8
        && intKey != 9
        && intKey != 13
        && intKey != 16
        && intKey != 27
        && intKey != 37
        && intKey != 38
        && intKey != 39
        && intKey != 40
        && intKey != 46
        )
    {
    
        switch (strNumero.length)
        {
        
            case 0:
            
                strNumero = '';
            
                break;

            case 1:
            
                strNumero = strNumero.substr(0, 1);
            
                break;

            case 2:
            
                strNumero = strNumero.substr(0, 2) + ':';
            
                break;

            default:
        
                strNumero = strNumero.substr(0, 2) + ':' + strNumero.substr(2);
            
        }

        objeto.value = strNumero;
    
    }

}

/**********************************************************************
Funcionalidade: Retorna o nome do mês referente ao índice
Autor: Ronaldo Lourenço dos Santos
Data: 03/01/2006
**********************************************************************/
function getMes(indice)
{

	switch (indice.toString())
	{
	
		case '0':
			return 'Jan';
	
		case '1':
			return 'Feb';
	
		case '2':
			return 'Mar';
	
		case '3':
			return 'Apr';
	
		case '4':
			return 'May';
	
		case '5':
			return 'Jun';
	
		case '6':
			return 'Jul';
	
		case '7':
			return 'Aug';
	
		case '8':
			return 'Sep';
	
		case '9':
			return 'Oct';
	
		case '10':
			return 'Nov';
	
		case '11':
			return 'Dec';
	
		default:
			return '';
		
	}

}

/**********************************************************************
Funcionalidade: Retorna uma data formatada em SQL para outra formatada em JS
Autor: Ronaldo Lourenço dos Santos
Data: 23/03/2006
**********************************************************************/
function converterDataSQLToJS(dataSQL)
{

    var intMes = new Number(dataSQL.substr(5, 2));
    var strDia = new String(dataSQL.substr(8, 2));
    var strMes = new String(getMes(intMes - 1));
    var strAno = new String(dataSQL.substr(0, 4));
    var strHora = new String(dataSQL.substr(11, 8));
    var datRetorno = new Date(strAno + ' ' + strMes + ' ' + strDia + ' ' + strHora);
    
    return datRetorno;

}

/**********************************************************************
Funcionalidade: Formata uma data SQL para dd/MM/yyyy HH:mm:ss
Autor: Ronaldo Lourenço dos Santos
Data: 24/03/2006
**********************************************************************/
function converterDataSQLToBr(dataSQL)
{

    var strDia = new String(dataSQL.substr(8, 2));
    var strMes = new String(dataSQL.substr(5, 2));
    var strAno = new String(dataSQL.substr(0, 4));
    var strHora = new String(dataSQL.substr(11, 8));
    var strRetorno = new String(strDia + '/' + strMes + '/' + strAno + ' ' + strHora);
    
    return strRetorno;

}

/**********************************************************************
Funcionalidade: Retorna uma data formatada em JS para outra formatada em SQL
Autor: Ronaldo Lourenço dos Santos
Data: 23/03/2006
**********************************************************************/
function converterDataJSToSQL(dataJS)
{

    var strAno = new String(rightStr('20' + dataJS.getFullYear().toString(), 4));
    var strMes = new String(rightStr('0' + (dataJS.getMonth() + 1).toString(), 2));
    var strDia = new String(rightStr('0' + dataJS.getDate().toString(), 2));
    var strHora = new String(rightStr('0' + dataJS.getHours().toString(), 2));
    var strMinuto = new String(rightStr('0' + dataJS.getMinutes().toString(), 2));
    var strSegundo = new String(rightStr('0' + dataJS.getSeconds().toString(), 2));
    var strRetorno = new String(strAno + '-' + strMes + '-' + strDia + ' ' + strHora + ':' + strMinuto + ':' + strSegundo);

    return strRetorno;

}

/**********************************************************************
Funcionalidade: Verifica se o ano é bissexto
Autor: Ronaldo Lourenço dos Santos
Data: 24/03/2006
**********************************************************************/
function isAnoBissexto(ano)
{

    var intAno = new Number(ano);
    var strAno = new String(ano);
    
    if (intAno % 4 == 0 && intAno % 100 != 0 && intAno > 100)
    {
    
        return true;
    
    }
    else
    {
    
        return false;
    
    }

}

/**********************************************************************
Funcionalidade: Adiciona um segundo na data
Autor: Ronaldo Lourenço dos Santos
Data: 24/03/2006
**********************************************************************/
function addUmSegundo(dataJS)
{
    
    var intSegundo = new Number(dataJS.getSeconds() + 1);
    var intMinuto = new Number(dataJS.getMinutes());
    var intHora = new Number(dataJS.getHours());
    var intDia = new Number(dataJS.getDate());
    var intMes = new Number(dataJS.getMonth());
    var intAno = new Number(new String(rightStr('20' + dataJS.getFullYear().toString(), 4)));

    if (intSegundo >= 60)
    {
    
        intSegundo = 0;
        intMinuto += 1;
    
    }
    
    if (intMinuto >= 60)
    {
    
        intMinuto = 0;
        intHora += 1;
    
    }
    
    if (intHora >= 24)
    {
    
        intHora = 0;
        intDia += 1;
        
    
    }
    
    switch (intMes.toString())
    {
    
        case '0':
        case '2':
        case '4':
        case '6':
        case '7':
        case '9':
        case '11':
        
            if (intDia >= 32)
            {
            
                intDia = 1;
                intMes += 1;
            
            }
        
            break;
            
        case '3':
        case '5':
        case '8':
        case '10':
        
            if (intDia >= 31)
            {
            
                intDia = 1;
                intMes += 1;
            
            }

            break;
                    
        case '1':

            if (isAnoBissexto(intAno))
            {
            
                if (intDia >= 30)
                {
                
                    intDia = 1;
                    intMes += 1;
                
                }
            
            }
            else
            {
            
                if (intDia >= 29)
                {
                
                    intDia = 1;
                    intMes += 1;
                
                }
            
            }
    
    }
    
    if (intMes >= 12)
    {
    
        intMes = 0;
        intAno += 1;
        
    
    }

    var datRetorno = new Date(intAno.toString() + ' ' + getMes(intMes) + ' ' + intDia.toString() + ' ' + intHora + ':' + intMinuto + ':' + intSegundo);

    return datRetorno;

}
