/*****************************************************************************************************
'Nome........: mdc_data.js
'Descricao...: Contém diversas funções em JavaScript para manipulação de datas.
'
'Contém......: IsAnoBissexto    - Verifica se o ano dado é bissexto;
'              IsDate           - Verifica se a strData é uma data válida;
'              ComparaDatas     - Compara os inteiros informados.
******************************************************************************************************/
/*
 * Nome:         IsAnoBissexto
 * Autor:        NaBoa Solutions - Marcela Pimenta
 * Data:         06/08/2003
 * Descrição:    Verifica se o ano dado é bissexto
 * Entrada:      Ano a ser verificado no formato  AAAA
 * Saída:        true(é bissexto) ou false(não é bissexto)
 * Funções Uti.: IsNumber()
 */
function IsAnoBissexto(strAno) {
    if (IsNumber(strAno)) {
        if (((strAno % 4) == 0) && ((strAno % 100) != 0) || ((strAno % 400) == 0)) {
            return true;
        }
    }
    return false;
}

/*
 * Nome:         IsDate
 * Autor:        NaBoa Solutions - Marcela Pimenta
 * Data:         06/08/2003
 * Descrição:    Verifica se a strData é uma data válida
 * Entrada:      strData - Data no formato DD/MM/AAAA
 * Saída:        true(data ok) ou false(data nok)
 * Funções Uti.: IsAnoBissexto()
 *               IsNumber()
 */
function IsDate(strData) {
    var arrDiasMes = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
    var strDia, strMes, strAno;
    var blnResultado = false;

    // Pré-analisa o String:
    if (strData != "") {
        if ((strData.length == 10) && (strData.substr(2,1) == "/") && 
                (strData.substr(5,1) == "/")) {
            // Levanta Campos:
            if (IsNumber (strData.substr(0,2))) {
                strDia = strData.substr(0,2);
            }
            if (IsNumber (strData.substr(3,2))) {
                strMes = strData.substr(3,2);
            }
            if (IsNumber (strData.substr(6,4))) {
                strAno = strData.substr(6,4);
            }

            // Analisa strAno e strMes:
            if ((strAno > 0) && (strMes >= 1) && (strMes <= 12)) {
                // Analisa strDia:
                if ((strDia >= 1) && (strDia <= arrDiasMes[strMes - 1])) {
                    // Analisa os casos não-bissextos:
                    if ((strMes == 2) && (!IsAnoBissexto (strAno))) {
                        if (strDia <= 28) {
                            blnResultado = true;
                        }
                    } else {
                        blnResultado = true;
                    }
                }
            }
        }
    }        

    return blnResultado;
}

/* 
 * Nome:        ComparaDatas
 * Autor:       NaBoa Solutions - Marcela Pimenta
 * Data:        06/08/2003
 * Descrição:   Compara os inteiros informados
 * Entrada:     strData1 - Primeira data no formato dd/mm/aaaa
 *              strData2 - Segunda data no formato dd/mm/aaaa
 * Saída:       -1 - Uma das datas é inválida ou com formato inválido
 *               0 - As duas datas são iguais
 *               1 - A 1ª data é a mais recente
 *               2 - A 2ª data é a mais recente
 * Funções Uti: IsDate()
 */
function ComparaDatas (strData1, strData2) {
    // Verifica se os inteiros são inválidos
    if (!IsDate(strData1) || !IsDate(strData2)) {
        return -1;
    }

    // Verifica se os inteiros são iguais
    if (strData1 == strData2) {
        return 0;
    }

    // Colocar as datas no formato aaaammdd para comparação
    strData1 = strData1.substr(6, 4) + strData1.substr(3, 2) + 
            strData1.substr(0, 2)
    strData2 = strData2.substr(6, 4) + strData2.substr(3, 2) + 
            strData2.substr(0, 2)

    // Monta o retorno
    return strData1 > strData2 ? 1 : 2;
}