Advertisement
Guest User

Untitled

a guest
Feb 26th, 2011
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.05 KB | None | 0 0
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd"
  3. >
  4. <html lang="en">
  5. <head>
  6. <title>Calendario jQuery</title>
  7.  
  8. <style type="text/css">
  9. body{
  10. font-family: tahoma, verdana, sans-serif;
  11. }
  12. #contenedor {
  13. margin: 0 auto;
  14. background-color: #096;
  15. height: 500px;
  16. width: 500px;
  17. }
  18. #titulo-busqueda
  19. {
  20. margin: 0 auto;
  21. background-color: #999;
  22. height: 400px;
  23. width: 400px;
  24. position: relative;
  25. top: 50px;
  26. }
  27. .capacalendario{
  28. width: 219px;
  29. position: relative;
  30. display: block;
  31. top: 0px;
  32. margin: 0 auto;
  33. }
  34. .capacalendarioborde{
  35. padding: 3px;
  36. border: 1px solid #ddd;
  37. display: block;
  38. }
  39. .diassemana{
  40. overflow: hidden;
  41. background: #339;
  42. margin: 3px 0;
  43. }
  44. .diasmes{
  45. overflow: hidden;
  46. }
  47. .diassemana span, .diasmes span{
  48. margin: 3px;
  49. width: 25px;
  50. display: block;
  51. float: left;
  52. text-align: center;
  53. height: 1.5em;
  54. line-height: 1.5em;
  55. font-size: 0.875em;
  56. }
  57. .diassemana span{
  58. text-transform: uppercase;
  59. color: #fff;
  60. font-weight: bold;
  61. height: 1.8em;
  62. line-height: 1.8em;
  63. }
  64. .diasmes span{
  65. background: #ddd;
  66. }
  67. .diasmes span.diainvalido{
  68. background: #aaa;
  69. }
  70. .diasmes span.domingo{
  71. color: #c00;
  72. }
  73. .capacalendario span.primero{
  74. margin-left:0 !important;
  75. }
  76. .capacalendario span.ultimo{
  77. margin-right:0 !important;
  78. }
  79.  
  80. a.botoncal{
  81. margin-left: 5px;
  82. background: transparent url(calendario.png) no-repeat;
  83. }
  84. a.botoncal span{
  85. display: inline-table;
  86. width: 16px;
  87. height: 16px;
  88.  
  89. }
  90. </style>
  91. <script type="text/javascript" src="js/jquery-1.4.3.min.js"></script>
  92. <script language="javascript" type="text/javascript">
  93.  
  94.  
  95. jQuery.fn.calendarioDW = function() {
  96. this.each(function(){
  97.  
  98.  
  99. //Muestro el Calendario
  100. mostrarCalendario();
  101.  
  102.  
  103. //función para mostrar el calendario
  104. function mostrarCalendario(){
  105.  
  106. //es que hay que mostrar el calendario
  107. //dias de la semana
  108. var capaDiasSemana = $('<div class="diassemana"></div>');
  109. var dias = ["l", "m", "x", "j", "v", "s", "d"];
  110. $(dias).each(function(indice, valor){
  111. var codigoInsertar = '<span';
  112. if (indice==0){
  113. codigoInsertar += ' class="primero"';
  114. }
  115. if (indice==6){
  116. codigoInsertar += ' class="domingo ultimo"';
  117. }
  118. codigoInsertar += ">" + valor + '</span>';
  119.  
  120. capaDiasSemana.append(codigoInsertar);
  121. });
  122.  
  123. //muestro los días del mes
  124. var contadorDias = 1;
  125. var capaDiasMes = $('<div class="diasmes"></div>')
  126. //un objeto de la clase date para calculo de fechas
  127. var objFecha = new Date()
  128. //mes y año actuales
  129. var mes = objFecha.getMonth();
  130. var ano = objFecha.getFullYear();
  131. //calculo la fecha del primer día de este mes
  132. var primerDia = calculaNumeroDiaSemana(1, mes, ano);
  133. //calculo el último día del mes
  134. var ultimoDiaMes = ultimoDia(mes,ano);
  135.  
  136. //escribo la primera fila de la semana
  137. for (var i=0; i<7; i++){
  138. if (i < primerDia){
  139. //si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
  140. var codigoDia = '<span class="diainvalido';
  141. if (i == 0)
  142. codigoDia += " primero";
  143. codigoDia += '"></span>';
  144. } else {
  145. var codigoDia = '<span';
  146. if (i == 0)
  147. codigoDia += ' class="primero"';
  148. if (i == 6)
  149. codigoDia += ' class="ultimo"';
  150. codigoDia += '>' + contadorDias + '</span>';
  151. contadorDias++;
  152. }
  153. var diaActual = $(codigoDia);
  154. capaDiasMes.append(diaActual);
  155. }
  156.  
  157. //recorro todos los demás días hasta el final del mes
  158. var diaActualSemana = 1;
  159. while (contadorDias <= ultimoDiaMes){
  160. var codigoDia = '<span';
  161. //si estamos a principio de la semana escribo la clase primero
  162. if (diaActualSemana % 7 == 1)
  163. codigoDia += ' class="primero"';
  164. //si estamos al final de la semana es domingo y ultimo dia
  165. if (diaActualSemana % 7 == 0)
  166. codigoDia += ' class="domingo ultimo"';
  167. codigoDia += '>' + contadorDias + '</span>';
  168. contadorDias++;
  169. diaActualSemana++;
  170. var diaActual = $(codigoDia);
  171. capaDiasMes.append(diaActual);
  172. }
  173.  
  174. //compruebo que celdas me faltan por escribir vacias de la última semana del mes
  175. for (var i=(diaActualSemana%7); i<=7; i++){
  176. var codigoDia = '<span class="diainvalido';
  177. if (i==7)
  178. codigoDia += ' ultimo'
  179. codigoDia += '"></span>';
  180. var diaActual = $(codigoDia);
  181. capaDiasMes.append(diaActual);
  182. }
  183.  
  184. //calendario
  185. calendario = $('<div class="capacalendario"></div>');
  186. var calendarioBorde = $('<div class="capacalendarioborde"></div>');
  187. calendario.append(calendarioBorde);
  188. calendarioBorde.append(capaDiasSemana);
  189. calendarioBorde.append(capaDiasMes);
  190.  
  191. //inserto el calendario en el documento
  192. $(document.body).append(calendario);
  193. //lo posiciono con respecto al boton
  194.  
  195. //muestro el calendario
  196. calendario.show();
  197.  
  198. }
  199.  
  200. //función para calcular el número de un día de la semana
  201. function calculaNumeroDiaSemana(dia,mes,ano){
  202. var objFecha = new Date(ano, mes, dia);
  203. var numDia = objFecha.getDay();
  204. if (numDia == 0)
  205. numDia = 6;
  206. else
  207. numDia--;
  208. return numDia;
  209. }
  210.  
  211. //función para ver si una fecha es correcta
  212. function checkdate ( m, d, y ) {
  213. // función por http://kevin.vanzonneveld.net
  214. // extraida de las librerías phpjs.org manual en http://www.desarrolloweb.com/manuales/manual-librerias-phpjs.html
  215. return m > 0 && m < 13 && y > 0 && y < 32768 && d > 0 && d <= (new Date(y, m, 0)).getDate();
  216. }
  217.  
  218. //funcion que devuelve el último día de un mes y año dados
  219. function ultimoDia(mes,ano){
  220. var ultimo_dia=28;
  221. while (checkdate(mes+1,ultimo_dia + 1,ano)){
  222. ultimo_dia++;
  223. }
  224. return ultimo_dia;
  225. }
  226.  
  227. });
  228. return this;
  229. };
  230.  
  231. $(document).ready(function(){
  232. $("#titulo-busqueda").calendarioDW();
  233. })
  234.  
  235. </script>
  236. </head>
  237.  
  238.  
  239. <body>
  240.  
  241. <div id="contenedor">
  242. <div id="titulo-busqueda">
  243. </div>
  244. </div>
  245.  
  246. </body>
  247. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement