Calendario dinamico

alguém poderia me disponibilizar o script de criação de calendário dinamico??

    public static final String gerarCalendario(Calendar data, boolean[] flags) {

        boolean limiteEstourado = false;
        StringBuffer str = new StringBuffer (7800);

        str.append("<form name='form_calendario' action='/servlet/compromissos.CompromissosServlet' method='post' >");
        str.append("    <input type='hidden' name='tipo_de_acao' value='exibicao'>");
        str.append("    <input type='hidden' name='acao' value='mudar_dia'>");
        str.append("    <input type='hidden' name='modo_de_exibicao' value='dia'>");
        str.append("    <input type='hidden' name='dia' value='1'>");

        //str.append("    <table width='142' border='0' cellspacing='0' cellpadding='0' background='/imagens/calendario.gif'>
");
        str.append("    <table width='142' border='1' bordercolor='black' cellspacing='0' cellpadding='0'>
");
        str.append("        <tr>
");
        str.append("            <td>");
        str.append("                <table width='100%' border='0' bordercolor='black' cellpadding='0' cellspacing='0'>
");
        /*str.append("                    <tr>
");
        str.append("                        <td> </td>
");
        str.append("                        <td align='left' valign='middle'> </td>
");
        str.append("                        <td colspan='5' align='center'> </td>
");
        str.append("                        <td align='right' valign='middle'> </td>
");
        str.append("                    </tr>
");
         **/
        str.append("                    <tr bgcolor='#003666'>
");
        str.append("                        <td> </td>
");
        str.append("                        <td align='left' valign='middle'>
");
        str.append("                            ");
        str.append(FONTE_CALENDARIO);
        str.append("
                                <a href='' onclick="form_calendario.acao.value='voltar_mes'; form_calendario.submit(); return false;">
");
        str.append("                                     <img src='/imagens/seta_esq_on.gif' name='calendario_seta_esq' width='7' height='7' border='0'>
");
        str.append("                                </a>
");
        str.append("                            </font>
");
        str.append("                        </td>
");
        str.append("                        <td colspan='5' align='center'>
");
        str.append("                            <font color='white' size='2' face='Verdana, Arial, Helvetica, sans-serif'>
");
        str.append("                                <strong>
");
        str.append(MESES[data.get(Calendar.MONTH)]);
        str.append(" ");
        str.append(data.get(Calendar.YEAR));
        str.append("                                </strong>
");
        str.append("                            </font>
");
        str.append("                        </td>
");
        str.append("                        <td align='right' valign='middle'>
");
        str.append("                            ");
        str.append(FONTE_CALENDARIO);
        str.append("
                                <a href='' onclick="form_calendario.acao.value='passar_mes'; form_calendario.submit(); return false;">
");
        str.append("                                    <img src='/imagens/seta_dir_on.gif' name='calendario_set_dir' width='7' height='7' border='0'>
");
        str.append("                                </a> 
");
        str.append("                            </font>
");
        str.append("                        </td>
");
        str.append("                    </tr>
");
        str.append("                    <tr>
");
        str.append("                        <td> </td>
");
        str.append("                        <td align='left'>");
        str.append(FONTE_CALENDARIO);
        str.append("S</td>
");
        str.append("                        <td align='left'>");
        str.append(FONTE_CALENDARIO);
        str.append("T</td>
");
        str.append("                        <td align='left'>");
        str.append(FONTE_CALENDARIO);
        str.append("Q</td>
");
        str.append("                        <td align='left'>");
        str.append(FONTE_CALENDARIO);
        str.append("Q</td>
");
        str.append("                        <td align='left'>");
        str.append(FONTE_CALENDARIO);
        str.append("S</td>
");
        str.append("                        <td align='left'>");
        str.append(FONTE_CALENDARIO);
        str.append("S</td>
");
        str.append("                        <td align='left'>");
        str.append(FONTE_CALENDARIO);
        str.append("D</td>
");
        str.append("                        </font>
");
        str.append("                    </tr>
");
        str.append("                    <tr>
");
        str.append("                        <td colspan='8'><img src='/imagens/black.gif' height='1' width='100%'></td>
");
        str.append("                    </tr>
");

        int limiteMes = data.getActualMaximum(Calendar.DAY_OF_MONTH);
        int[] diasNaSemana = new int[limiteMes + 1];
        int diaCorrente = data.get(Calendar.DAY_OF_MONTH);
        int diaAtual = diaCorrente;

        Calendar data2 = (Calendar)data.clone();

        data2.set(Calendar.DAY_OF_MONTH, 1);
        diasNaSemana[1] = data2.get(Calendar.DAY_OF_WEEK);

        // Os dias começam a ser exibidos a partir do primeiro
        diaCorrente = 1;

	for (int j = 2; j <= limiteMes; j++) {
            diasNaSemana[j] = (diasNaSemana[j - 1] % 7) + 1;
        }

        for (int i = 0; (diaCorrente <= limiteMes) || i < 6; i++) {

            str.append("                    <tr>
");
            str.append("                        <td> </td>
");

            for (int k = 0; k < 7; k++) {

                str.append("                        <td>
");
                str.append("                            <font size='2' face='Verdana, Arial, Helvetica, sans-serif'>
");

                // Testa se o dia da semana e o da coluna k
                if (!limiteEstourado && diasNaSemana[diaCorrente] == DIAS_SEMANA[k]) {

                    // Testa se existe compromisso no dia
                     if (flags[diaCorrente-1]) {
                        // Se houver então o dia fica em negrito
                        str.append("                        <b>");
                        str.append("<a href='' onclick="form_calendario.dia.value='");
                        str.append(diaCorrente);
                        str.append("'; form_calendario.submit(); return false;"");
                        str.append("" target='_self' class='Acalendario'>");

                        // Se esse dia for o dia atual entao a fonte do dia fica vermelha
                        str.append((diaCorrente == diaAtual)?"<font color='red'>":"");
                        str.append(diaCorrente);
                        str.append((diaCorrente == diaAtual)?"</font>":"");
                        str.append("</a>");
                        str.append("</b>
");

                    }
                    else {
                        str.append("                        <a href='' onclick="form_calendario.dia.value='");
                        str.append(diaCorrente);
                        str.append("'; form_calendario.submit(); return false;"");
                        str.append("" target='_self' class='Acalendario'>");
                        str.append((diaCorrente == diaAtual)?"<font color='red'>":"");
                        str.append(diaCorrente);
                        str.append((diaCorrente == diaAtual)?"</font>":"");
                        str.append("</a>
");
                    }

                    // Teste se o limite de dias no mês já estourou
                    if (diaCorrente == limiteMes)
                        limiteEstourado = true;

                    diaCorrente++;
                }
                // Se não for não escreve o dia
                else
                    str.append("--
");

                str.append("                            </font>
");
                str.append("                        </td>
");
            }
            str.append("                    </tr>");
        }

        str.append("                </table>
");
        str.append("            </td>
");
        str.append("        </tr>
");
        str.append("    </table>
");
        str.append("</form>
");

        return str.toString();
    }

Esse eu tô usando em um projeto para gestão de compromissos, é só mudar um pouco… ele gera uma tabela HTML com um calendário.

A variável FONTE_CALENDARIO é “<font size=‘2’ face=‘Arial, Helvetica, sans-serif’>”