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">«</a><p class="nome_mes">mês ano</p><a href="#" class="bt_controle_mes bt_avancar_mes">»</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'> <\/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.