                //<!-- ---------------------------------------- -->
                //<!-- SCRIPTS PARA CÀLCULO DOS FERIADOS DO ANO -->
                //<!-- ---------------------------------------- -->
                
                //1: Ano novo (01/01/XXXX)
                //2: Tiradentes (21/04/XXXX)
                //3: Dia do trabalho (01/05/XXXX)
                //4: Independencia do Brasil (07/09/XXXX)
                //5: Nossa Senhora da Aparecida (12/10/XXXX)
                //6: Finados (02/11/XXXX)
                //7: Proclamacao da Republica (15/11/XXXX)
                //8: Natal (25/12/XXXX)
                diaFeriadosFixos = new Array       (         1,            21,                 1,                         7,                           12,         2,                         15,      25);
                mesFeriadosFixos = new Array       (         1,             4,                 5,                         9,                           10,        11,                         11,      12);
                //descricaoFeriadosFixos = new Array ('Ano novo',  'Tiradentes', 'Dia do Trabalho', 'Independencia do Brasil', 'Nossa Senhora da Aparecida', 'Finados', 'Proclamacao da Republica', 'Natal');
                
                // Permite que uma página possa adicionar feriados fixos além dos já previstos.
                
                function adicionarFeriadoFixo (dia, mes)
                {
                    diaFeriadosFixos[diaFeriadosFixos.length] = dia;
                    mesFeriadosFixos[mesFeriadosFixos.length] = mes;
                    //descricaoFeriadosFixos.push (descricao);
                }
                
                // Sempre que muda-se de ano no calendário todos os feriados sao recalculados para o novo ano.
		// Esta variável global tem função de detectar sempre que mudamos de ano.
		var anoCalculadoParaFeriados = 0;
                
		var diaPascoa = 0;
		var mesPascoa = 0;
		
		var diaSegundaCarnaval = 0;
		var mesSegundaCarnaval = 0;
		
		var diaTercaCarnaval = 0;
		var mesTercaCarnaval = 0;
		
		var diaSextaFeiraSanta = 0;
		var mesSextaFeiraSanta = 0;
		
		var diaCorpusChristi = 0;
		var mesCorpusChristi = 0;
                
		/**
		 * Esta função reconhece os seguintes feriados:
		 * 
		 *		Páscoa (algoritmo é de J.-M. Oudin - base de cálculo dos outros feriados móveis)
		 *
		 *		1	: Ano novo                   (01/01/XXXX)
		 *		2	: Tiradentes                 (21/04/XXXX)
		 *		3	: dia do trabalho            (01/05/XXXX)
		 *		4	: independencia do Brasil    (07/09/XXXX)
		 *		5	: Nossa Senhora da Aparecida (12/10/XXXX)
		 *		6	: Finados                    (02/11/XXXX)
		 *		7	: Proclamacao da Republica   (15/11/XXXX)
		 *		8	: Natal                      (25/12/XXXX)
		 *		9	: Segunda Carnaval           (48 dias antes da Páscoa)
		 *		10	: Terca Carnaval             (47 dias antes da Páscoa)
		 *		11	: Sexta Feira Santa          (02 dias antes da Páscoa)
		 *		12	: Corpus Christi             (60 dias apos a Páscoa)
		 */
		function isFeriado(dia, mes, ano)
		{
		    // Data da pácoa. Esta é data base para cácluculo dos outros feriados móveis.
		    
		    // Contador para fazer as somas e subtrações das datas para cálculo dos feriados
		    // móveis a partir da páscoa.
		    
		    var contador;
		    
		    /*
		    Cálculo da páscoa é base para cálculo de todos os outros feriados móveis do ano.
		    Para cálculo da data da páscoa é utilizado o algorítmo:
		    
		    c = a/100
		    n = a - [19×(a/19)]
		    k = (c - 17)/25
		    i = c - c/4 - [(c-k)/3] +(19×n) + 15
		    i = i - [30×(i/30)]
		    i = i - {(i/28)×[1-(i/28)]×[29/(i+1)]×[(21-n)/11]}
		    j = a + a/4 + i + 2 -c + c/4
		    j = j - [7×(j/7)]
		    l = i - j
		    m = 3 + [(l+40)/44]
		    d = l + 28 - [31×(m/4)]
		    
		    Por exemplo, para o ano de 2000, 
		    
		    a=2000
		    c=2000/100=20 
		    n=2000-19×(2000/19)=2000-19×105=5
		    k=(20-17)/25=0
		    i=20-(20/4)-[(20-0)/3]+(19×5)+15=20-5-6+95+15=119
		    i=119-30×(119/30)=119-(30×3)=29
		    i=29-{(29/28)×[1-(29/28)]×(29/30)×[(21-5)/11]}=29-{1×0×0×1}=29
		    j=2000+500+29+2-20+5=2516
		    j=2516-[7×(2516/7)]=2516-[7×359]=3
		    l=29-3=26
		    m=3+[(26+40)/44]=3+1=4
		    d=26+28-(31×1)=23
		    
		    Este algoritmo é de J.-M. Oudin (1940) e impresso no Explanatory
		    Supplement to the Astronomical Almanac, ed. P.K. Seidelmann (1992).
		    */
		    
		    // Calcula a data da pácoa segundo o algorítimo de "J.-M. Oudin"
                    
		    var c, n, m, k, c, i, j, l, d;
		    
		    // Verificamos se ja foi calculado os feriados para o ano vigente.
		    
		    if (anoCalculadoParaFeriados != ano)
		    {
		        c = ano/100;
		        c = ano/100;
		        n = ano - Math.floor(19 * Math.floor(ano/19));
		        k = Math.floor((c - 17)/25);
		        i = Math.floor(c) - Math.floor(c/4) - Math.floor((c-k)/3) +Math.floor(19 * n) + 15;
		        i = Math.floor(i) - Math.floor(30 * Math.floor(i/30));
		        i = Math.floor(i) - Math.floor( Math.floor(i/28) * Math.floor(1 - Math.floor(i/28)) * Math.floor(29 / Math.floor(i+1)) * Math.floor(Math.floor(21-n)/11));
		        j = Math.floor(ano) + Math.floor(ano/4) + Math.floor(i) + 2 - Math.floor(c) + Math.floor(c/4);
		        j = Math.floor(j) - Math.floor(7 * Math.floor(j/7));
		        l = Math.floor(i) - Math.floor(j);
		        m = 3 + Math.floor(Math.floor(l+40)/44);
		        d = l + 28 - (31 * Math.floor(m/4));

                        // Atualizamos o ano calculado. Para este ano ainda temos que recalcular todos os feriados móveis.
		        anoCalculadoParaFeriados = ano;
			
                        // Atualizamos as datas da páscoa
                        diaPascoa = d;
		        mesPascoa = m;

		        // Criamos um calendário auxiliar para o recáclculo das datas dos feriados móveis.
		        var calendarioAuxiliar = new Date ();
                        
                        //9	: Segunda Carnaval           (48 dias antes da Páscoa)
                        calendarioAuxiliar.setDate(anoCalculadoParaFeriados);
		        calendarioAuxiliar.setMonth(mesPascoa-1);
		        calendarioAuxiliar.setDate(diaPascoa - 48);
		        if (anoCalculadoParaFeriados%4 == 0) {
                            calendarioAuxiliar.setDate(calendarioAuxiliar.getDate() + 1);
		        }
		        diaSegundaCarnaval = calendarioAuxiliar.getDate();
		        mesSegundaCarnaval = calendarioAuxiliar.getMonth()+1;
			
			//10	: Terca Carnaval             (47 dias antes da Páscoa ou 1 dia apos segunda de carnaval)
		        calendarioAuxiliar.setDate(calendarioAuxiliar.getDate() + 1);
		        diaTercaCarnaval = calendarioAuxiliar.getDate();
		        mesTercaCarnaval = calendarioAuxiliar.getMonth()+1;
			
			//11	: Sexta Feira Santa          (02 dias antes da Páscoa)
		        calendarioAuxiliar.setMonth(mesPascoa-1);
		        calendarioAuxiliar.setYear(anoCalculadoParaFeriados);
		        calendarioAuxiliar.setDate(diaPascoa - 2);
		        diaSextaFeiraSanta = calendarioAuxiliar.getDate();
		        mesSextaFeiraSanta = calendarioAuxiliar.getMonth()+1;
			
			//12	: Corpus Christi             (60 dias apos a Páscoa)
		        calendarioAuxiliar.setMonth(mesPascoa-1);
		        calendarioAuxiliar.setYear(anoCalculadoParaFeriados);
		        calendarioAuxiliar.setDate(diaPascoa+60);
		        diaCorpusChristi = calendarioAuxiliar.getDate();
		        mesCorpusChristi = calendarioAuxiliar.getMonth()+1;
		    }
                    
                    // Verifica se data pertence ao grupo de feriados fixos.
                    
                    for (var varreDatas = 0 ; varreDatas < diaFeriadosFixos.length ; varreDatas++)
                    {
                        if (comparaDatas(diaFeriadosFixos[varreDatas], mesFeriadosFixos[varreDatas], ano, dia, mes, ano) == 1)
                        {
                            return (1); // Feriado
                        }
                    }
                    
                    // Verifica se data pertence ao grupo de feriados móveis.
		    
		    //9	: Segunda Carnaval           (48 dias antes da Páscoa)
		    if (comparaDatas(dia, mes, ano, diaSegundaCarnaval, mesSegundaCarnaval, ano) == 1)
		    {
		        return (1); // Feriado
		    }
		    
		    //10	: Terca Carnaval             (47 dias antes da Páscoa ou 1 dia apos segunda de carnaval)
		    if (comparaDatas(dia, mes, ano, diaTercaCarnaval, mesTercaCarnaval, ano) == 1)
		    {
		        return (1); // Feriado
		    }
		    
		    //11	: Sexta Feira Santa          (02 dias antes da Páscoa)
		    if (comparaDatas(dia, mes, ano, diaSextaFeiraSanta, mesSextaFeiraSanta, ano) == 1)
		    {
		        return (1); // Feriado
		    }
		    
		    //12	: Corpus Christi             (60 dias apos a Páscoa)
		    if (comparaDatas(dia, mes, ano, diaCorpusChristi, mesCorpusChristi, ano) == 1)
		    {
		        return (1); // Feriado
		    }
		    
		}
		
		function comparaDatas(dia_1, mes_1, ano_1, dia_2, mes_2, ano_2)
		{
			if (dia_1 == dia_2 && mes_1 == mes_2 && ano_1 == ano_2)
			{
				return (1);
			}
			return (0);
		}
		
                
                //<!-- --------------------------------- -->
                //<!-- SCRIPTS DE EXIBIÇÂO DO COMAPO DIV -->
                //<!-- --------------------------------- -->
                
                // Salva o nome dos calendarios criados.
                // Este campo é utilizado para recuperar o índice deste calendáro salvo.
                var calendario = new Array(false,false,false,false,false,false,false,false,false,false);
                // Este campo é utilizado para recuperar o índice deste calendáro salvo.
                var calendario_ids = new Array('0','0','0','0','0','0','0','0','0','0');
                // Indica se esta visível ou não o calendário.
                var calendario_visivel = new Array(false,false,false,false,false,false,false,false,false,false);
                // Posiçao X do calendário dentro da tela.
                var calendario_posicao_x = new Array(0,0,0,0,0,0,0,0,0,0);
                // Posiçao Y do calendário dentro da tela.
                var calendario_posicao_y = new Array(0,0,0,0,0,0,0,0,0,0);
                // Posiçao X do mouse dentro do calendário (utilizado quando usuário deseja mover a janela).
                var calendario_pontoDeApoio_x = new Array(0,0,0,0,0,0,0,0,0,0);
                // Posiçao Y do mouse dentro do calendário (utilizado quando usuário deseja mover a janela).
                var calendario_pontoDeApoio_y = new Array(0,0,0,0,0,0,0,0,0,0);
                // Indica se o usuário está movendo ou não o calendário pela página.
                var calendario_presoAoMouse = new Array(false,false,false,false,false,false,false,false,false,false);
                // Armazena qual o mês vigente para os calendários.
                var calendario_mesVigente = new Array(0,0,0,0,0,0,0,0,0,0);
                // Armazena qual o mês vigente para os calendários.
                var calendario_anoVigente = new Array(0,0,0,0,0,0,0,0,0,0);
                
                // 'fixa' OU outro qualquer.
                var posicaoAparicaoFixaRelativa = new Array ('relativa', 'relativa', 'relativa', 'relativa', 'relativa', 'relativa', 'relativa', 'relativa', 'relativa', 'relativa');
                // X relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                var posicaoAparicaoX = new Array (0,0,0,0,0,0,0,0,0,0);
                // Y relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                var posicaoAparicaoY = new Array (0,0,0,0,0,0,0,0,0,0);
                // Indica se usuário quer que calendário preencha sempre o input de saída.
                var preencherInputSaida = new Array(true,true,true,true,true,true,true,true,true,true);
                // não pinta de vermelhos os feriados fixos bancários.
                var destacaFeriadosFixos = new Array(true,true,true,true,true,true,true,true,true,true);
                // não pinta de vermelho os finais de semana.
                var destacaFinaisDeSemana = new Array(true,true,true,true,true,true,true,true,true,true);
                
                // Posição mouse x.
                var posicao_mouse_x;
                // Posição mouse y.
                var posicao_mouse_y;
                // Numero máximo de calendários permitidos em uma página
                var calendario_numeroMaximoDeObjetos = 10;
                
                
                // Recupera o índice de uma calendário a partir de seu id.
                // - O id de um calendário é uma String.
                // - Um calendário novo é sempre criado numa posição X do array "idCalendario".
                //   Exemplo: idCalendario[3] = "calendario_1"
                // - Quando um calendário ocupa uma posição X do array "idCalendario" então todos os
                //   parâmetros deste calendário estarão na posição X dos arrays de propiedades:
                //   calendario_visivel, calendario_posicao_x, calendario_posicao_y, calendario_pontoDeApoio_x,
                //   calendario_pontoDeApoio_y, calendario_presoAoMouse
                //   Exemplo: idCalendario[3] = "calendario_1"
                //   A) calendario_visivel [3] = true
                //   B) calendario_posicao_x [3] = 125
                //   C) calendario_posicao_y [3] = 10
                //   D) calendario_pontoDeApoio_x [3] = 123
                //   E) calendario_pontoDeApoio_y [3] = 8
                //   F) calendario_presoAoMouse [3] = true
                
		//Exibe o campo DIV
                
                function exibeCalendario(idCalendario)
                {
                    var indiceCalendario = recuperaIndiceCalendario(idCalendario);
                    
                    if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                    {
                        window.document.getElementById(idCalendario).style.top = calendario_posicao_y[indiceCalendario];
                        window.document.getElementById(idCalendario).style.left = calendario_posicao_x[indiceCalendario];
                        window.document.getElementById(idCalendario).style.visibility = "visible";
                    }
		}
                
		//Esconde o campo DIV
		
                function escondeCalendario(idCalendario)
                {
                    window.document.getElementById(idCalendario).style.visibility = "hidden";
		}

                // Exibe calendário caso este estja escondido e esconde calendário caso este esteja visível.
                
                function exibirEsconderCalendario(idCalendario)
                {
                    var indiceCalendario = recuperaIndiceCalendario(idCalendario);
                    
                    if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                    {
                        // darci 080806
						if (posicaoAparicaoFixaRelativa[indiceCalendario] == 'fixa' ||
							posicaoAparicaoFixaRelativa[indiceCalendario] == 'fixo')
						{
							calendario_posicao_x[indiceCalendario] = posicaoAparicaoX[indiceCalendario];
							calendario_posicao_y[indiceCalendario] = posicaoAparicaoY[indiceCalendario];
						}
						else
						{
							calendario_posicao_x[indiceCalendario] = posicao_mouse_x + posicaoAparicaoX[indiceCalendario];
							calendario_posicao_y[indiceCalendario] = posicao_mouse_y + posicaoAparicaoY[indiceCalendario];
						}
					
                        //Se campo visível, escondemos o campo
                        if(calendario_visivel[indiceCalendario] == true)
                        {
                            //dontShowDivCalendario();
                            escondeCalendario(idCalendario);
                            calendario_visivel[indiceCalendario] = false;
                        }
                        //Se campo escondido, mostramos o campo
                        else
                        {
                            //showDivCalendario();
                            exibeCalendario(idCalendario);
                            calendario_visivel[indiceCalendario] = true;
                        }
                    }
		}



                function segurarCalendario (idCalendario)
                {
                    var indiceCalendario = recuperaIndiceCalendario(idCalendario);
                    
                    if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                    {
                        calendario_presoAoMouse[indiceCalendario] = true;
                        
                        // Posição (-1,-1) indica que acabamos de clicar sobre o calendário.
                        // Uma vez clicado no calendário é necessário fazer o correto tratamento
                        // dentro da função moverCaendario ().
                        
                        calendario_pontoDeApoio_x[indiceCalendario] = -1;
                        calendario_pontoDeApoio_y[indiceCalendario] = -1;
                    }
                }
                
                // Chamado quando usuário solta o calendário após uma operação de arrasto.
                
                function soltarCalendario (idCalendario)
                {
                    var indiceCalendario = recuperaIndiceCalendarioPresoAoMouse();
                    
                    if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                    {
                        calendario_presoAoMouse[indiceCalendario] = false;
                        
                        if (calendario_posicao_x[indiceCalendario] < 0 || calendario_posicao_y[indiceCalendario] < 0)
                        {
                            if (calendario_posicao_x[indiceCalendario] < 0)
                            {
                                calendario_posicao_x[indiceCalendario] = 0;
                            }
                        
                            if (calendario_posicao_y[indiceCalendario] < 0)
                            {
                                calendario_posicao_y[indiceCalendario] = 0;
                            }
                            
                            exibeCalendario(calendario_ids[indiceCalendario]);
                        }
                    }
                }
                
                function moverCalendario (eventoMozilla)
                {
                    var indiceCalendario = recuperaIndiceCalendarioPresoAoMouse();
                    
                    if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                    {
                        if (calendario_presoAoMouse[indiceCalendario] == true)
                        {
                            if(document.all)
                            {
                                //"Internet Explorer"
                                 
                                // Atualizamos a posição da janela fazendo a diferenca da nova posição
                                // do mouse com a posição antiga.
                                
                                if (calendario_pontoDeApoio_x[indiceCalendario] == -1 && calendario_pontoDeApoio_y[indiceCalendario] == -1)
                                {
                                    calendario_pontoDeApoio_x[indiceCalendario] = event.x;
                                    calendario_pontoDeApoio_y[indiceCalendario] = event.y;
                                }
                                else
                                {
                                    calendario_posicao_x[indiceCalendario] =  calendario_posicao_x[indiceCalendario] + (event.x - calendario_pontoDeApoio_x[indiceCalendario]);
                                    calendario_posicao_y[indiceCalendario] =  calendario_posicao_y[indiceCalendario] + (event.y - calendario_pontoDeApoio_y[indiceCalendario]);
                                
                                    // Atualizamos a posição antiga do mouse com as novas coordenadas.
                                
                                    calendario_pontoDeApoio_x[indiceCalendario] = event.x;
                                    calendario_pontoDeApoio_y[indiceCalendario] = event.y;
                                }
                            }
                            else
                            {
                                // "Netscape 6", "Mozilla", etc
                                
                                // Atualizamos a posição da janela fazendo a diferenca da nova posição
                                // do mouse com a posição antiga.
                                
                                if (calendario_pontoDeApoio_x[indiceCalendario] == -1 && calendario_pontoDeApoio_y[indiceCalendario] == -1)
                                {
                                    calendario_pontoDeApoio_x[indiceCalendario] = eventoMozilla.clientX;
                                    calendario_pontoDeApoio_y[indiceCalendario] = eventoMozilla.clientY;
                                }
                                else
                                {
                                    calendario_posicao_x[indiceCalendario] =  calendario_posicao_x[indiceCalendario] + eventoMozilla.clientX - calendario_pontoDeApoio_x[indiceCalendario];
                                    calendario_posicao_y[indiceCalendario] =  calendario_posicao_y[indiceCalendario] + eventoMozilla.clientY - calendario_pontoDeApoio_y[indiceCalendario];
                                    calendario_pontoDeApoio_x[indiceCalendario] = eventoMozilla.clientX;
                                    calendario_pontoDeApoio_y[indiceCalendario] = eventoMozilla.clientY;
                                }
                            }
                            
                            // Atualizamos a janela na tela.
                            
                            exibeCalendario(calendario_ids [indiceCalendario]);
                        }
                    }
                }
                
                // Inicializa o calendário a ser exibido ao usuário.
                
                function inicializaComponenteCalendarioAvancado (
                    idCalendario,
                    idInputPreenchimento,
                    idCor, imgSetaEsquerda,
                    imgSetaDireita,
                    posAparicaoFixaRelativa, // false = fixa, true = relativa.
                    posAparicaoX, // X relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    posAparicaoY, // Y relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    preencherInputSaidaSempre, // Indica se usuário quer que calendário preencha sempre o input de saída.
                    destacaFeriFixos, // não pinta de vermelhos os feriados fixos bancários.
                    destacaFinDeSemana, dia, mes, ano) // não pinta de vermelho os finais de semana.
                {
                    inicializaComponenteCalendario (
                        idCalendario,
                        idInputPreenchimento,
                        idCor, imgSetaEsquerda,
                        imgSetaDireita, dia, mes, ano);

					inicializaComponenteCalendarioAvancadoContinuacao (	idCalendario, idCor, imgSetaEsquerda,
																		imgSetaDireita, posAparicaoFixaRelativa,
																		posAparicaoX, posAparicaoY, 
																		preencherInputSaidaSempre,
																		destacaFeriFixos, destacaFinDeSemana, dia, mes, ano);
                        
                }


                function inicializaComponenteCalendarioAvancadoEx (
                    idCalendario,
                    idInputPreenchimentoDia,idInputPreenchimentoMes, idInputPreenchimentoAno,
                    idCor, imgSetaEsquerda,
                    imgSetaDireita,
                    posAparicaoFixaRelativa, // false = fixa, true = relativa.
                    posAparicaoX, // X relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    posAparicaoY, // Y relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    preencherInputSaidaSempre, // Indica se usuário quer que calendário preencha sempre o input de saída.
                    destacaFeriFixos, // não pinta de vermelhos os feriados fixos bancários.
                    destacaFinDeSemana, dia, mes, ano) // não pinta de vermelho os finais de semana.
                {
                    inicializaComponenteCalendarioEx (  idCalendario,
														idInputPreenchimentoDia,idInputPreenchimentoMes, idInputPreenchimentoAno,
														idCor, imgSetaEsquerda,
														imgSetaDireita, dia, mes, ano);

					inicializaComponenteCalendarioAvancadoContinuacao (	idCalendario, idCor, imgSetaEsquerda,
																		imgSetaDireita, posAparicaoFixaRelativa,
																		posAparicaoX, posAparicaoY, 
																		preencherInputSaidaSempre,
																		destacaFeriFixos, destacaFinDeSemana, dia, mes, ano);
                        
                }

                function inicializaComponenteCalendarioAvancadoContinuacao (
                    idCalendario,
                    idCor, imgSetaEsquerda,
                    imgSetaDireita,
                    posAparicaoFixaRelativa, // false = fixa, true = relativa.
                    posAparicaoX, // X relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    posAparicaoY, // Y relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    preencherInputSaidaSempre, // Indica se usuário quer que calendário preencha sempre o input de saída.
                    destacaFeriFixos, // não pinta de vermelhos os feriados fixos bancários.
                    destacaFinDeSemana, dia, mes, ano) // não pinta de vermelho os finais de semana.
                {

                    // Uma vez inicializado o calendário podemos recuperar o seu índice.
                    var indice = recuperaIndiceCalendario (idCalendario)
                    calendario_ids[indice];
                    
                    // 'fixa' OU outro qualquer.
                    posicaoAparicaoFixaRelativa [indice] = posAparicaoFixaRelativa;
                    // X relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    posicaoAparicaoX [indice] = posAparicaoX;
                    // Y relativo a borda da janela para AparicaoFixa e relativo ao mouse para AparicaoRelativa.
                    posicaoAparicaoY [indice] = posAparicaoY;
                    // Indica se usuário quer que calendário preencha sempre o input de saída.
                    preencherInputSaida [indice] = preencherInputSaidaSempre;
                    // não pinta de vermelhos os feriados fixos bancários.
                    destacaFeriadosFixos [indice] = destacaFeriFixos;
                    // não pinta de vermelho os finais de semana.
                    destacaFinaisDeSemana [indice] = destacaFinDeSemana;
                    
                    
                    // Atualizamos o calendário para exibir os finais de semana e feriados destacados caso
                    // o calendário tenha sido configurado para isto.
                    atualizaCalendario (idCalendario, dia, mes, ano);

				}
                
                // Inicializa o calendário a ser exibido ao usuário.
                
                function inicializaComponenteCalendario (
                    idCalendario,
                    idInputPreenchimento,
                    idCor, imgSetaEsquerda,
                    imgSetaDireita, dia, mes, ano) // não pinta de vermelho os finais de semana.
                {

					criaHtmlCalendario (idCalendario, idInputPreenchimento, 'null', 'null', idCor, imgSetaEsquerda, imgSetaDireita, dia, mes, ano);

					inicializaComponenteCalendarioContinuacao (idCalendario,idCor, imgSetaEsquerda,imgSetaDireita, dia, mes, ano);
					
				}
				
                function inicializaComponenteCalendarioEx (
                    idCalendario,
                    idInputPreenchimentoDia,idInputPreenchimentoMes, idInputPreenchimentoAno,
                    idCor, imgSetaEsquerda,
                    imgSetaDireita, dia, mes, ano) // não pinta de vermelho os finais de semana.
                {
					criaHtmlCalendario(idCalendario, idInputPreenchimentoDia, idInputPreenchimentoMes, idInputPreenchimentoAno, idCor, imgSetaEsquerda, imgSetaDireita, dia, mes, ano);

					inicializaComponenteCalendarioContinuacao (idCalendario,idCor, imgSetaEsquerda,imgSetaDireita, dia, mes, ano);
					
				}
				
				function inicializaComponenteCalendarioContinuacao (
                    idCalendario,
                    idCor, imgSetaEsquerda,
                    imgSetaDireita, dia, mes, ano) // não pinta de vermelho os finais de semana.
                {
                    //posicaoAparicaoFixaRelativa []= posAparicaoFixaRelativa;
                    //posicaoAparicaoX = posAparicaoX;
                    //posicaoAparicaoY = posAparicaoY;
                    
                    
                    
                    var i;
                    
                    // Varremos a string de calendários existentes indicando
                    for (i = 0 ; i < calendario_numeroMaximoDeObjetos && calendario[i] != false; i++);
                    
                    if (i < calendario_numeroMaximoDeObjetos)
                    {
                        // Indicamos a existência do novo calendário
                        calendario[i] = true;
                        
                        // Indicamos para o novo calendário qual o seu id.
                        // O id de um calendário é representado por uma String.
                        calendario_ids[i] = idCalendario;
                        
                        // Salvamos a data inicial do calendário como sendo a data atual
                        // segundo a máquina do usuário.
                        var dataAtual = new Date (ano,mes,dia);
                        if(document.all)
                        {
			    //"Internet Explorer".
                            calendario_anoVigente[i] = dataAtual.getFullYear();
			}
			else
                        {
			    //"Netscape 6", "Mozilla", etc.
			    //var anoCorrigido = dataAtual.getFullYear();
			    calendario_anoVigente[i] = dataAtual.getFullYear();
			}
                        calendario_mesVigente[i] = dataAtual.getMonth();
                        
                        // Inicializamos as demais variáveis.
                        calendario_visivel[i] = false;
                        calendario_posicao_x[i] = 0;
                        calendario_posicao_y[i] = 0;
                        calendario_pontoDeApoio_x[i] = 0;
                        calendario_pontoDeApoio_y[i] = 0;
                        calendario_presoAoMouse[i] = false;
                        
                        // Esconde um calendário específico.
                        escondeCalendario(idCalendario);
                    }
                    
                    // Atualiza em que campos da matriz do calendário aparecem quais datas.
                    atualizaCalendario(idCalendario, dia, mes, ano);
                }
                
                function criaHtmlCalendario (idCalendario, idInputPreenchimento, idInputPreenchimentoMes, idInputPreenchimentoAno, idCor, imgSetaEsquerda, imgSetaDireita, dia, mes, ano)
                {
                        var estiloCor;
                        
                        if (idCor == 0)      estiloCor = 'calendario_titulo_cinza';
                        else if (idCor == 1) estiloCor = 'calendario_titulo_bege';
                        else if (idCor == 2) estiloCor = 'calendario_titulo_vermelho';
                        else if (idCor == 3) estiloCor = 'calendario_titulo_verde';
                        else if (idCor == 4) estiloCor = 'calendario_titulo_azul';
                        else                 estiloCor = 'calendario_titulo_cinza';
                        
                        var divCalendario = document.getElementById(idCalendario);
						var html = "";
                        var larguraDivCalendario = '150px';
                        var alturaDivCalendario = '135px';
                        
                        divCalendario.style.width = larguraDivCalendario;
                        
						divCalendario.style.height = alturaDivCalendario;
                        
                        //<!-- TABELA DO CALENDARIO -->
                        
                        html = html + "<TABLE onMouseUp=\"javascript:soltarCalendario();\">";
			html = html + "    <TR>";
			html = html + "        <TD bgcolor=\"#FFFFFF\" align=\"center\">";
                        html = html + "            <TABLE class=\"calendario\" style=\"cursor:default\">";
                        html = html + "                 <TR>";
                        //html = html + "                     <TD bgcolor=\"#FFFFFF\" width=\"" + larguraDivCalendario + "\">";
                        html = html + "                     <TD bgcolor=\"#FFFFFF\" height=\"" + alturaDivCalendario + "\" width=\"" + larguraDivCalendario + "\">";
                        
                        //<!-- CABEÇALHO DO CALENDARIO -->
                        
                        if (document.all)
                        {
                            // Internet Explorer
                            html = html + "                         <TABLE width=\"100%\" class=\""+estiloCor+"\">";
                            html = html + "                             <TR>";
                            html = html + "                                 <TD width=\"10\" style=\"cursor:hand;\" onclick=\"javascript:mesAnterior('"+idCalendario+"',"+dia+","+mes+","+ano+");\"><CENTER><A><IMG src=\""+imgSetaEsquerda+"\"></IMG></A></CENTER></TD>";
                            html = html + "                                 <TD colspan=\"5\" align=\"center\" style=\"cursor:move;\" onMouseDown=\"javascript:segurarCalendario('"+idCalendario+"');\"><SPAN id=\""+idCalendario+"_titulo\"></SPAN></TD>";
                            html = html + "                                 <TD width=\"10\" style=\"cursor:hand;\" onclick=\"javascript:proximoMes('"+idCalendario+"',"+dia+","+mes+","+ano+");\"><CENTER><A><IMG src=\""+imgSetaDireita+"\"></IMG></A></CENTER></TD>";
                            html = html + "				    </TR>";
                            html = html + "                         </TABLE>";
                        }
                        else
                        {
                            // Mozilla e outros
                            html = html + "                         <TABLE width=\"100%\" class=\""+estiloCor+"\">";
                            html = html + "                             <TR>";
                            html = html + "                                 <TD width=\"10\" style=\"cursor:pointer;\" onclick=\"javascript:mesAnterior('"+idCalendario+"',"+dia+","+mes+","+ano+");\"><CENTER><A><IMG src=\""+imgSetaEsquerda+"\"></IMG></A></CENTER></TD>";
                            html = html + "                                 <TD colspan=\"5\" align=\"center\" style=\"cursor:move;\" onMouseDown=\"javascript:segurarCalendario('"+idCalendario+"');\"><SPAN id=\""+idCalendario+"_titulo\"></SPAN></TD>";
                            html = html + "                                 <TD width=\"10\" style=\"cursor:pointer;\" onclick=\"javascript:proximoMes('"+idCalendario+"',"+dia+","+mes+","+ano+");\"><CENTER><A><IMG src=\""+imgSetaDireita+"\"></IMG></A></CENTER></TD>";
                            html = html + "				    </TR>";
                            html = html + "                         </TABLE>";
                        }
                        
                        //<!-- CORPO DO CALENDARIO -->
                        
                        html = html + "                         <TABLE width=\"100%\" class=\"calendario_texto\">";
                        
                        //<!-- TÍTULOS DA SEMANA (SEGUNDA, TERCA, QUARTOA, ETC) -->
                        
			html = html + "                             <TR style=\"cursor:move;\"  onMouseDown=\"javascript:segurarCalendario('"+idCalendario+"');\">";
                        html = html + "                                 <TD bgcolor=\"#FFFFFF\" align=\"center\">D</TD>";
                        html = html + "                                 <TD bgcolor=\"#FFFFFF\" align=\"center\">S</TD>";
                        html = html + "                                 <TD bgcolor=\"#FFFFFF\" align=\"center\">T</TD>";
                        html = html + "                                 <TD bgcolor=\"#FFFFFF\" align=\"center\">Q</TD>";
                        html = html + "                                 <TD bgcolor=\"#FFFFFF\" align=\"center\">Q</TD>";
                        html = html + "                                 <TD bgcolor=\"#FFFFFF\" align=\"center\">S</TD>";
                        html = html + "                                 <TD bgcolor=\"#FFFFFF\" align=\"center\">S</TD>";
                        html = html + "                             </TR>";
                        
                        //<!-- OS DIAS SERAO PREENCHIDOS DINAMICAMENTE ATRAVÉS E COMANDOS JAVASCRIPT -->
                        
			html = html + "                             <TR>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',0,0,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_0_0\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',1,0,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_1_0\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',2,0,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_2_0\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',3,0,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_3_0\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',4,0,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_4_0\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',5,0,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_5_0\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',6,0,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_6_0\"></SPAN> </TD>";
			html = html + "                             </TR>";
			html = html + "                             <TR>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',0,1,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_0_1\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',1,1,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_1_1\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',2,1,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_2_1\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',3,1,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_3_1\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',4,1,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_4_1\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',5,1,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_5_1\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',6,1,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_6_1\"></SPAN> </TD>";
			html = html + "                             </TR>";
			html = html + "                                  <TR>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',0,2,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_0_2\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',1,2,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_1_2\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',2,2,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_2_2\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',3,2,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_3_2\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',4,2,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_4_2\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',5,2,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_5_2\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',6,2,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_6_2\"></SPAN> </TD>";
			html = html + "                             </TR>";
			html = html + "                             <TR>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',0,3,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_0_3\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',1,3,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_1_3\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',2,3,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_2_3\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',3,3,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_3_3\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',4,3,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_4_3\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',5,3,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_5_3\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',6,3,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_6_3\"></SPAN> </TD>";
			html = html + "                             </TR>";
			html = html + "                             <TR>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',0,4,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_0_4\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',1,4,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_1_4\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',2,4,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_2_4\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',3,4,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_3_4\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',4,4,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_4_4\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',5,4,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_5_4\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',6,4,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_6_4\"></SPAN> </TD>";
			html = html + "                             </TR>";
			html = html + "                             <TR>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',0,5,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_0_5\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',1,5,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_1_5\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',2,5,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_2_5\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',3,5,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_3_5\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',4,5,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_4_5\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',5,5,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_5_5\"></SPAN> </TD>";
			html = html + "                                  <TD bgcolor=\"#FFFFFF\" align=\"center\" onclick=\"javascript:selecionaDataCalendario('"+idCalendario+"',6,5,"+idInputPreenchimento+","+idInputPreenchimentoMes+","+idInputPreenchimentoAno+");\">  <SPAN id=\""+idCalendario+"_6_5\"></SPAN> </TD>";
			html = html + "                             </TR>";
			html = html + "                        </TABLE>";
                        html = html + "                    </TD>";
			html = html + "                </TR>";
			html = html + "            </TABLE>";
			html = html + "        </TD>";
			html = html + "    </TR>";
			html = html + "</TABLE>";
                        
			divCalendario.innerHTML = html;
                }
                
                // Este método recupera em qual índice se encontra os dados de um calendário
                
                function recuperaIndiceCalendario (idCalendario)
                {
                    var i;
                    // Varremos a string de calendários existentes procurando calendario com id desejado.
                    for (i = 0 ; i < calendario_numeroMaximoDeObjetos && calendario_ids[i] != idCalendario ; i++);
                    return i;
                }
                
                // Este método recupera qual o índice do um calendário que está sendo movido pela tela.
                
                function recuperaIndiceCalendarioPresoAoMouse ()
                {
                    var i;
                    // Varremos a string de calendários existentes procurando calendario com id desejado.
                    for (i = 0 ; i < calendario_numeroMaximoDeObjetos && calendario_presoAoMouse [i] != true ; i++);
                    return i;
                }
                
                //<!-- -------------------------------------- -->
                //<!-- SCRIPTS PARA ATUALIZAÇÃO DO CALENDÁRIO -->
                //<!-- -------------------------------------- -->
                
		
		// Variáveis globais visam salvar características do dia atual.
		// Devemos salvar estas características pois iremos mexer nas variáveis do objeto
		// calendario
		
		var Calendar = new Date();
		var meses_array_de_para = new Array('Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro');
		
		/**
		 * Funcao seta o título do cabecalho
		 * O título do cabecalho é definido por um campo SPAN com id = "calendario_titulo".
		 */
		function setTituloCalendario(idCalendario, value)
		{
			// Recupera a regiao do calendário que representa a região (x,y) da nossa matriz de datas
			
			var tituloCalendario = document.getElementById(idCalendario+'_titulo');
			
			// Atualizamos a região recuperada com o valor desejado
			
			tituloCalendario.innerHTML = value;
		}
		
		/**
		 * Funcao seta um dos campos da matriz do calendário
		 * A matriz do calendário deve ser coposto de 7 colunas e 6 linhas.
		 * Cada campo da matriz é definido por um campo SPAN com id no fomrmato "x_y" onde x e y
		 * são numeros de 0 (zero) até N.
		 *
		 * @param x - posicao x da nossa matriz de datas de (7 x 6)
		 * @param y - posicao y da nossa matriz de datas de (7 x 6)
		 * @param value - valor a ser inserido na matriz do calendário
		 * @param statusDia -
		 *     - 0 - dia útil
		 *     - 1 - feriado
		 *     - 2 - dia atual
		 *     - 3 - fim de semana
		 */
		function setMatrizCalendario(idCalendario, x, y, value, statusDia)
		{
			// Recupera a regiao do calendário que representa a região (x,y) da nossa matriz de datas
			
			var dataCalendario = document.getElementById(idCalendario + '_' + x + '_' + y);
                        var indice = recuperaIndiceCalendario(idCalendario);
			
			// Atualizamos a região recuperada com o valor desejado
			
			if (statusDia == 0 || statusDia == 10)
			{
				dataCalendario.innerHTML = value;
			}
			else if (statusDia == 1 || statusDia == 11)
			{
                            if (destacaFeriadosFixos [indice] == true)
                            {
				dataCalendario.innerHTML = '<FONT class=\"calendario_campo_feriado\">' + value + '</FONT>';
                            }
                            else
                            {
                                dataCalendario.innerHTML = '<FONT class=\"calendario_campo_dia_util\">' + value + '</FONT>';
                            }
			}
                        else if (statusDia == 2)
			{
                            dataCalendario.innerHTML = '<FONT class=\"calendario_campo_dia_util\">' + value + '</FONT>';
			}
			else if (statusDia == 3 || statusDia == 13)
			{
                            if (destacaFinaisDeSemana [indice] == true)
                            {
				dataCalendario.innerHTML = '<FONT class=\"calendario_campo_fim_de_semana\">' + value + '</FONT>';
                            }
                            else
                            {
                                dataCalendario.innerHTML = '<FONT class=\"calendario_campo_dia_util\">' + value + '</FONT>';
                            }
			}
                        
                        if (statusDia >= 10)
			{
                            dataCalendario.innerHTML = '<B>' + dataCalendario.innerHTML + '</B>';
			}
		}
		
		/**
		 * Função chamada quando usuário clicar na seta a esquerda do título do cabeçalho.
		 * Função decrementa o mês vigente (inclui virada de ano).
		 */
		function mesAnterior (idCalendario, dia, mes, ano)
		{
                    var indiceCalendario = recuperaIndiceCalendario(idCalendario);
                    
                    if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                    {
                        if (calendario_mesVigente[indiceCalendario] <= 0)
                        {
                            calendario_mesVigente[indiceCalendario] = 11;
                            calendario_anoVigente[indiceCalendario] = calendario_anoVigente[indiceCalendario] - 1;
                        }
                        else
                        {
                            calendario_mesVigente[indiceCalendario] = calendario_mesVigente[indiceCalendario] - 1;
                        }
                        
                        atualizaCalendario(idCalendario, dia, mes, ano);
                    }
		}
		
		/**
		 * Função chamada quando usuário clicar na seta a direita do título do cabeçalho.
		 * Função incrmenta o mês vigente (inclui virada de ano).
		 */
		function proximoMes (idCalendario, dia, mes, ano)
		{
                    var indiceCalendario = recuperaIndiceCalendario(idCalendario);
                    
                    if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                    {
                        if (calendario_mesVigente[indiceCalendario] < 11)
                        {
                            calendario_mesVigente[indiceCalendario] = calendario_mesVigente[indiceCalendario] + 1;
                        }
                        else
                        {
                            calendario_mesVigente[indiceCalendario] = 0;
                            calendario_anoVigente[indiceCalendario] = calendario_anoVigente[indiceCalendario] + 1;
                        }
                        
                        atualizaCalendario(idCalendario, dia, mes, ano);
                    }
		}
		
		/**
		 * Imprime vazaio em todo o calendário.
		 */
		function limpaCalendario (idCalendario)
		{
			// Varremos as 7 colunas e 6 linhas da matriz do calendário limpando cada um dos campos
			
			for(var xis = 0 ; xis < 7 ; xis++)
			{
				for(var yps = 0 ; yps < 6 ; yps++)
				{
					setMatrizCalendario (idCalendario, xis, yps, '&nbsp;', 0)
				}
			}
		}
		
		/**
		 * Função atualiza o calendário na tela do usuário.
                 * Função tem objetivo de preencher as datas nos campos corretos da matriz do calendário.
		 */
		function atualizaCalendario (idCalendario, dia, mes, ano)
		{
                        var indiceCalendario = recuperaIndiceCalendario(idCalendario);
                        
                        if (indiceCalendario < calendario_numeroMaximoDeObjetos)
                        {
                            // Recupera a data corrente para o calendário desjeado
                            
                            Calendar.setDate(1);
                            Calendar.setMonth(calendario_mesVigente[indiceCalendario]);
                            Calendar.setYear(calendario_anoVigente[indiceCalendario]);
                            
                            // Atualizamos a matriz do calendário desejado.
                            
                            var DIAS_DA_SEMANA = 7;
                            var DIAS_DO_MES = 31;
                            
                            var varreDias = 1;
                            var varreLinhas = 0;
                            
                            // Criando um novo objeto date estamos recuperando a data atual do sistema do usuário
                            var dataAtual = new Date(ano, mes, dia);
                            
                            // Salvamos a data atual para negritar
                            var data_atual_ano = dataAtual.getFullYear();
                            var data_atual_mes = dataAtual.getMonth();
                            var data_atual_dia = dataAtual.getDate();
                            
                            // Quando incrementamos um dia do objeto mes, automaticamente o objeto incrementa o mês
                            // quando necessário.
                            // Para sabermos se chegamos na data final do mês temos que analisar se o mês mudou
                            // quando incrementamos a data.
                            
                            var mesEmExibicao = Calendar.getMonth();
                            
                            // Antes de comecarmos a varrer e imprimir as datas, incialmente imprimimos
                            // o título do calendário com o mes e ano vigente.
                            var tituloCalendario = meses_array_de_para [Calendar.getMonth()];
                            if(document.all)
                            {
                                 //"Internet Explorer".
                                  tituloCalendario = tituloCalendario + ' ' + Calendar.getFullYear();
                            }
                            else
                            {
                                 //"Netscape 6", "Mozilla", etc.
                                 var anoCorrigido = Calendar.getFullYear();
                                 tituloCalendario = tituloCalendario + ' ' + anoCorrigido;
                            }
                            setTituloCalendario (idCalendario, tituloCalendario);
                            
                            // Setamos nosso objeto calendario pertencente a esta pagina com o dia primeiro.
                            // Uma vez setada a data, o sitema irá automaticamente calcular o dia da semana
                            // correto para este dia, assim facilitando a criação do nosso calendário dinamico.
                            
                            Calendar.setDate(1);
                            
                            limpaCalendario(idCalendario);
                            
                            // Para cada dia do mes (comecando pelo dia 1)
                            for(varreDias = 1 ; varreDias <= DIAS_DO_MES ; varreDias++)
                            {       
                                    // Se estivermos na data atual (incluindo ano e mes)
                                    if (data_atual_dia == Calendar.getDate() && data_atual_mes == Calendar.getMonth() && data_atual_ano == Calendar.getFullYear())
                                    {
                                            // Corrige o ano para os browsers Mozilla e Netscape
                                            var correcaoDoAnoVigente;
                                            if(document.all)
                                            {
                                                 //"Internet Explorer";
                                                  correcaoDoAnoVigente = Calendar.getFullYear();
                                            }
                                            else
                                            {
                                                 //"Netscape 6";
                                                 correcaoDoAnoVigente = Calendar.getFullYear();
                                            }
                                            
                                            // Marca as datas especiais.
                                            if (Calendar.getDay() == 0 || Calendar.getDay() == 6) // final de semana
                                            {
                                                    setMatrizCalendario (idCalendario, Calendar.getDay(), varreLinhas, varreDias, 13);
                                            }
                                            else if (isFeriado (varreDias, Calendar.getMonth()+1, correcaoDoAnoVigente)== 1) // feriado
                                            {
                                                    setMatrizCalendario (idCalendario, Calendar.getDay(), varreLinhas, varreDias, 11);
                                            }
                                            else // dia util
                                            {
                                                    setMatrizCalendario (idCalendario, Calendar.getDay(), varreLinhas, varreDias, 10);
                                            }
                                    }
                                    else
                                    {
                                            // Corrige o ano para os browsers Mozilla e Netscape
                                            var correcaoDoAnoVigente;
                                            if(document.all)
                                            {
                                                 //"Internet Explorer";
                                                  correcaoDoAnoVigente = Calendar.getFullYear();
                                            }
                                            else
                                            {
                                                 //"Netscape 6";
                                                 correcaoDoAnoVigente = Calendar.getFullYear();
                                            }
                                            
                                            // Marca as datas especiais.
                                            if (Calendar.getDay() == 0 || Calendar.getDay() == 6) // final de semana
                                            {
                                                    setMatrizCalendario (idCalendario, Calendar.getDay(), varreLinhas, varreDias, 3);
                                            }
                                            else if (isFeriado (varreDias, Calendar.getMonth()+1, correcaoDoAnoVigente)== 1) // feriado
                                            {
                                                    setMatrizCalendario (idCalendario, Calendar.getDay(), varreLinhas, varreDias, 1);
                                            }
                                            else // dia util
                                            {
                                                    setMatrizCalendario (idCalendario, Calendar.getDay(), varreLinhas, varreDias, 0);
                                            }
                                    }
                                    
                                    if(Calendar.getDay() == 6)
                                    {
                                            varreLinhas++;
                                    }
                                    
                                    // Incrementa data do objeto calendario
                                    Calendar.setDate(Calendar.getDate() + 1);
                                    
                                    if (mesEmExibicao != Calendar.getMonth())
                                    {
                                            Calendar.setDate(Calendar.getDate() - 1);
                                            return;
                                    }
                            }
                        }
		}
                
                /**
                 * Preenche o input de saida com a data selecionada
                 */
				function preencheInputSaida (textFieldValidadeOrdemDia, textFieldValidadeOrdemMes, textFieldValidadeOrdemAno)
                {
                    var data;
					var dia;
                    var mes = Calendar.getMonth() + 1;
                    var ano;
            
			
                    if(document.all)
                    {
                        //"Internet Explorer";
                        ano = Calendar.getFullYear();
                    }
                    else
                    {
                        //"Netscape 6" e Mozilla;
                        var anoCorrigido = Calendar.getFullYear();
                        ano = anoCorrigido;
                    }
            
                    // Preenche campo data
            
                    if (Calendar.getDate() > 0 && Calendar.getDate() < 10)
                    {
                            dia = '0' + Calendar.getDate();
                    }
                    else
                    {
                            dia = Calendar.getDate();
                    }
            
                    // Preenche campo mes
            
                    if (mes <= 9)
                    {
                            mes = '0' + mes;
                    }
            
                    // Preenche campo ano
            	    //if(bDataSeparada)
					if((textFieldValidadeOrdemMes!=null) && (textFieldValidadeOrdemAno!=null))
					{
						//var textFieldValidadeOrdemDia = document.getElementById(idInputPreenchimentoDia);
						//var textFieldValidadeOrdemMes = document.getElementById(idInputPreenchimentoMes);
		    			//var textFieldValidadeOrdemAno = document.getElementById(idInputPreenchimentoAno);

			   // Atualiza o campo input do tipo texto com a data selecionada.

                           textFieldValidadeOrdemDia.value = dia;
                           textFieldValidadeOrdemMes.value = mes;
                           textFieldValidadeOrdemAno.value = ano;
					}
				    else
				    {
                           data = dia + '/' + mes + '/' + ano;

						 // Atualiza o campo input do tipo texto com a data selecionada.
                    
	                   textFieldValidadeOrdemDia.value = data;
					}

                }
                
		/**
		 * Função atualiza no imput do tipo texto a data selecionada no calendário.
		 */
		function selecionaDataCalendario(idCalendario, x, y, idInputPreenchimento, idInputPreenchimentoMes, idInputPreenchimentoAno)
		{
                        var indiceCalendario = recuperaIndiceCalendario(idCalendario);
                        
                        if (indiceCalendario < calendario_numeroMaximoDeObjetos)
			{
                                
								//var textFieldValidadeOrdem = document.getElementById(idInputPreenchimento);
								
								Calendar.setDate (1);
                                Calendar.setMonth (calendario_mesVigente[indiceCalendario]);
                                Calendar.setYear (calendario_anoVigente[indiceCalendario]);
                                
                                // Calculamos a data a partir do x e y passado para o método
                                Calendar.setDate ((x+7*y+1)-Calendar.getDay());
                                
                                // Corrige o ano para os browsers Mozilla e Netscape
                                var correcaoDoAnoVigente;
                                if(document.all)
                                {
                                     //"Internet Explorer";
                                      correcaoDoAnoVigente = Calendar.getFullYear();
                                }
                                else
                                {
                                     //"Netscape 6";
                                     correcaoDoAnoVigente = Calendar.getFullYear();
                                }
                                
                                // Caso tenhamos acessado uma data fora do calendário (Exemplo: dia 32)
                                // o objeto calendário irá automaticamente mudar o mês. Então saberemos
                                // que  a data não existe neste mês.
                                if (Calendar.getMonth() != calendario_mesVigente[indiceCalendario])
                                {
                                        idInputPreenchimento.value = '';
										if(idInputPreenchimentoMes!=null)
											idInputPreenchimentoMes.value = '';
										if(idInputPreenchimentoAno!=null)
											idInputPreenchimentoAno.value = '';
                                }
                                else
								{
									preencheInputSaida (idInputPreenchimento,idInputPreenchimentoMes,idInputPreenchimentoAno);

									// Fecha o calendário
                                        
									exibirEsconderCalendario (idCalendario);
								}
			}
		}

                //<!-- --------------------------------------- -->
                //<!-- SCRIPTS DE EXIBIÇÂO ALTERACAO DE CURSOR -->
                //<!-- --------------------------------------- -->
                
                // Altera ponteiro do mouse para indicar área que usuário pode clicar para mover calendário.
                
		function setPointer()
		{
                        if(document.all)
                        {
                            //"Internet Explorer
                            document.body.style.cursor = 'hand';
                        }
                        else
                        {
                            //"Netscape 6" e Mozilla;
                            document.body.style.cursor = 'pointer';
                        }
		}
		
                // Mostra o ponteiro normal do mouse.
                
		function resetPointer()
		{
                        document.body.style.cursor = 'default';
		}
                
                // Função utilizada para recuperar posição de um clique no browser Mozilla.
                // Esta posição é necessária para definir onde um calendário irá aparecer.
                
                function gravaPosicaoMouse (eventoMozilla)
                {
                    var i;
                    var cliqueSobreAlbumCalendario = 0;
                    var idCalendario = '0';
                                        
                    if (eventoMozilla != null)
                    {
                        // mozilla
                        posicao_mouse_x = eventoMozilla.pageX;
                        posicao_mouse_y = eventoMozilla.pageY;
                    }
                    else
                    {
                        // ie
                        posicao_mouse_x = event.x + document.body.scrollLeft;
                        posicao_mouse_y = event.y + document.body.scrollTop;
                    }
                    
                    
                    // Veremos se o usuário clicou sobre algum dos calendários.
                    for (i = 0 ; i < calendario_numeroMaximoDeObjetos ; i++)
                    {
                    
                        // Fazemos a análise apenas se o calendário estiver visível.
                        if (calendario_visivel[i] == true)
                        {
                            // Recuperamos o id do calendário.
                            // Apenas através do id podemos recuperar o objeto div do calendário.
                            idCalendario = calendario_ids [i];
                            
                            // Verificamos se o mouse está sobre o div.
                            
                            if (posicao_mouse_x < parseInt(window.document.getElementById(idCalendario).style.left))
                            {
                                exibirEsconderCalendario(idCalendario);
                            }
                            
                            else if (posicao_mouse_x > parseInt(window.document.getElementById(idCalendario).style.left) +
                                          parseInt(window.document.getElementById(idCalendario).style.width))
                            {
                                exibirEsconderCalendario(idCalendario);
                            }
                            
                            else if (posicao_mouse_y < parseInt(window.document.getElementById(idCalendario).style.top))
                            {
                                exibirEsconderCalendario(idCalendario);
                            }
                            
                            else if (posicao_mouse_y > parseInt(window.document.getElementById(idCalendario).style.top) +
                                          parseInt(window.document.getElementById(idCalendario).style.height))
                            {
                                exibirEsconderCalendario(idCalendario);
                            }
                        }
                    }
                }
                
                // Sempre que ocorrer um evento de mouse de movimento será chamada a função "moverCalendario"
                document.onmousemove = moverCalendario;
                
                // Sempre que soltarem o botão do mouse será chamada a função "soltarCalendario"
                document.onmouseup = soltarCalendario;
                
                // Sempre que soltarem o botão do mouse será chamada a função "soltarCalendario"
                document.onmousedown = gravaPosicaoMouse;

                
