PageSourceSearch

https://eliteexpress.com.br/js/jquery.click-calendario-1.0.js

js eliteexpress.com.br collected 2026-10-02 01:18:15 UTC 8,144 bytes, 239 lines download raw bytes

1function ultimo_dia(mes,ano){
2	if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12) return 31;
3	if(mes==4||mes==6||mes==9||mes==11) return 30;
4	if(mes==2) if(ano%400==0) return 29;
5	if(mes==2) if(ano%100==0) return 28;	
6	if(mes==2) if(ano%4==0) return 29;	else return 28; 
7}
8var nomeMes = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");		
9var hoje = new Date();
10var diaAtual = hoje.getDate();
11var mesAtual = hoje.getMonth()+1;
12var anoAtual = hoje.getFullYear();
13var dataAtual = diaAtual+'/'+mesAtual+'/'+anoAtual;
14var contCalendario = 0;
15
16jQuery.fn.calendario = function(options){
17	
18	
19	var settings = {
20		target:'',
21		targetDay:'',
22		targetMonth:'',
23		targetYear:'',
24		minDate:'',
25		maxDate:'',
26		dateDefault: dataAtual,
27		left:'0',
28		top:'30',
29		referencePosition: this,
30		closeClick: true
31	};
32	options = jQuery.extend(settings, options);
33	
34	arrData = options.dateDefault.split('/');
35	
36	diaOriginal = parseInt(arrData[0],10);
37	mesOriginal = parseInt(arrData[1],10)-1;
38	anoOriginal = parseInt(arrData[2],10);
39	
40	
41	
42	// VERIFICANDO RANGE
43	var diaMinimo = 0; var mesMinimo = 0;var anoMinimo = 0;
44	if(options.minDate!=''){
45		arrData = options.minDate.split('/');	
46		diaMinimo = parseInt(arrData[0],10);
47		mesMinimo = parseInt(arrData[1],10)-1;
48		anoMinimo = parseInt(arrData[2],10);	
49	}
50	var diaMaximo = 9999; var mesMaximo = 9999;	var anoMaximo = 9999;
51	if(options.maxDate!=''){
52		arrData = options.maxDate.split('/');	
53		diaMaximo = parseInt(arrData[0],10);
54		mesMaximo = parseInt(arrData[1],10)-1;
55		anoMaximo = parseInt(arrData[2],10);	
56	}	
57	
58	
59	
60	this.each(function(){
61	
62		
63		// Verificando se o botao tem id, senão tem, vai atribuir um id pro botão, para evitar de gerar 2 calendarios
64		if(jQuery(this).attr('id')==''){
65			contCalendario++;
66			jQuery(this).attr('id','chamada_cal_'+contCalendario)
67		}
68		idChamada = jQuery(this).attr('id');
69		
70		
71		var mes = mesOriginal;
72		var ano = anoOriginal;	
73	
74		// determinando id pro calendário
75		idCalendario = 'cal_'+idChamada;
76		idCalendario = idCalendario.replace('_dia','').replace('_mes','').replace('_ano','');
77		
78		if($('#'+idCalendario).size()>0) return false;
79		
80		
81		
82		//criando div
83		jQuery('body').append('<div class="calendario" id="'+idCalendario+'"><a href="#" class="fechar" title="Fechar">X</a><a href="#" class="bt_controle_mes bt_voltar_mes">&laquo;</a><p class="nome_mes">mês ano</p><a href="#" class="bt_controle_mes bt_avancar_mes">&raquo;</a><ul class="lista_dia"><li class="semana">D</li><li class="semana">S</li><li class="semana">T</li><li class="semana">Q</li><li class="semana">Q</li><li class="semana">S</li><li class="semana">S</li></ul></div>');
84		$('#'+idCalendario).append('<input type="hidden" name="calendarioMes" value="'+mes+'"/>');
85		$('#'+idCalendario).append('<input type="hidden" name="calendarioAno" value="'+ano+'"/>');		
86		
87	
88
89		function preencher_calendario(idCalendario){
90		
91			// colocando ou alterando título do calendário
92			var titulo = nomeMes[mes]+" "+ano;
93			$('#'+idCalendario+' p.nome_mes').html(titulo);
94			
95			// Apagando dias do calendário (caso o usuario esteja avancando / voltando o mes)
96			$('#'+idCalendario+' ul.lista_dia li.dia_vazio').remove();							
97			$('#'+idCalendario+' ul.lista_dia li.dia').remove();
98			
99			// Obtendo o dia da semana do primeiro dia do mês
100			var primeiro = new Date();
101			primeiro.setFullYear(ano,mes,1);
102			var inicioSemana = primeiro.getDay();
103			
104			// Preenchendo dias vazios no calendário
105			for(i=0;i<inicioSemana;i++){ 
106				$('#'+idCalendario+' ul.lista_dia').append("<li class='dia_vazio'>&nbsp;<\/li>"); 
107			}
108			
109			// preenchendo dias do mes
110			var fimMes = ultimo_dia(mes+1,ano);
111			for(i=1;i<=fimMes;i++){ 
112				if( (ano == anoMinimo && mes == mesMinimo && i < diaMinimo ) || (ano == anoMaximo && mes == mesMaximo && i > diaMaximo )  ){
113					$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'>"+i+"<\/li>");			
114				} else {
115					if(options.target!='' || options.targetDay != '' || options.targetMonth != '' || options.targetYear != ''){
116						$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'><a href='#'>"+i+"<\/a><\/li>");		
117					} else {
118						$('#'+idCalendario+' ul.lista_dia').append("<li class='dia dia_n"+i+"'>
118"+i+"<\/li>");						
119					}
120				}
121			}
122			// verificando se a data preenchida é hoje
123			if(mes == mesOriginal && ano == anoOriginal){
124				$('#'+idCalendario+' ul.lista_dia li.dia_n'+diaOriginal).addClass('default');
125			} 			
126			
127			$('#'+idCalendario+' ul.lista_dia li a').click(function(){
128				var dia = $.trim($(this).html());
129				if(dia.length==1)dia = '0'+dia;
130				var mes = (1 + parseInt($.trim($(this.parentNode.parentNode.parentNode).find('input[name="calendarioMes"]').val()),10)).toString();
131				if(mes.length==1)mes = '0'+mes;
132				var ano = parseInt($.trim($(this.parentNode.parentNode.parentNode).find('input[name="calendarioAno"]').val()),10);					
133				
134				if(options.target!='' && $(options.target).size()>0){
135					var tag = $(options.target).get(0).tagName.toLowerCase();
136					if(tag=='input'){
137						$(options.target).val(dia+'/'+mes+'/'+ano);
138					} else {
139						$(options.target).html(dia+'/'+mes+'/'+ano);
140					}
141				}				
142				if(options.targetDay!='' && $(options.targetDay).size()>0){
143					var tag = $(options.targetDay).get(0).tagName.toLowerCase();
144					if(tag=='input'){
145						$(options.targetDay).val(dia);
146					} else {
147						$(options.targetDay).html(dia);
148					}
149				}	
150				if(options.targetMonth!='' && $(options.targetMonth).size()>0){
151					var tag = $(options.targetMonth).get(0).tagName.toLowerCase();
152					if(tag=='input'){
153						$(options.targetMonth).val(mes);
154					} else {
155						$(options.targetMonth).html(mes);
156					}
157				}	
158				if(options.targetYear!='' && $(options.targetYear).size()>0){
159					var tag = $(options.targetYear).get(0).tagName.toLowerCase();
160					if(tag=='input'){
161						$(options.targetYear).val(ano);
162					} else {
163						$(options.targetYear).html(ano);
164					}
165				}	
166
167				if(options.closeClick)$('#'+idCalendario).remove();
168				return false;
169			});
170			navegacaoCalendario(idCalendario);
171		}	
172		
173		function navegacaoCalendario(idCalendario){
174
175			$('#'+idCalendario+' a.fechar').unbind();
176			$('#'+idCalendario+' a.fechar').click(function(){
177				$('#'+idCalendario).remove();
178				return false;
179			});
180			
181			//alert('ano = '+ano+' / mes = '+mes+'\nanoMinimo = '+anoMinimo+' e mesMinimo '+mesMinimo);
182			if(ano == anoMinimo && mes == mesMinimo){
183				$('#'+idCalendario+' a.bt_voltar_mes').hide();
184			} else {
185				$('#'+idCalendario+' a.bt_voltar_mes').show();
186				$('#'+idCalendario+' a.bt_voltar_mes').unbind();
187				$('#'+idCalendario+' a.bt_voltar_mes').click(function(){			
188					mes = parseInt($('input[name="calendarioMes"]').val(),10);
189					ano = parseInt($('input[name="calendarioAno"]').val(),10);
190					mes--;
191					if(mes < 0){
192						mes = 11;
193						ano--;
194					}
195					$('input[name="calendarioMes"]').val(mes);
196					$('input[name="calendarioAno"]').val(ano);
197					preencher_calendario(idCalendario);
198					return false;
199				});				
200			}
201
202			if(ano == anoMaximo && mes == mesMaximo){
203				$('#'+idCalendario+' a.bt_avancar_mes').hide();
204			} else {
205				$('#'+idCalendario+' a.bt_avancar_mes').show();
206				$('#'+idCalendario+' a.bt_avancar_mes').unbind();
207				$('#'+idCalendario+' a.bt_avancar_mes').click(function(){		
208					mes = parseInt($('input[name="calendarioMes"]').val(),10);
209					ano = parseInt($('input[name="calendarioAno"]').val(),10);
210					mes++;
211					if(mes == 12){
212						mes = 0;
213						ano++;
214					}
215					$('input[name="calendarioMes"]').val(mes);
216					$('input[name="calendarioAno"]').val(ano);				
217					preencher_calendario(idCalendario);
218					return false;
219				});	
220			}
221		}	
222		
223		
224		preencher_calendario(idCalendario);
225		
226		var posicoes = $(options.referencePosition).offset();
227		var leftPosition = posicoes.left + parseInt(options.left,10);
228		var topPosition = posicoes.top + parseInt(options.top,10);
229		
230		$('#'+idCalendario).css({
231			'left':leftPosition,
232			'top':topPosition,
233            'z-index': '9999'
234		});
235		$('#'+idCalendario).show();
236		
237	});
238};
239

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.