<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El Blog de Albert Mata &#187; Páginas web</title>
	<atom:link href="http://www.albertmata.net/category/paginas-web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.albertmata.net</link>
	<description>// anotaciones de análisis y programación en mi día a día como consultor de software</description>
	<lastBuildDate>Mon, 03 Aug 2009 19:22:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Todo lo que quisiste hacer con un PDF pero no supiste cómo.</title>
		<link>http://www.albertmata.net/2009/01/todo-lo-que-quisiste-hacer-con-un-pdf-pero-no-supiste-como/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=todo-lo-que-quisiste-hacer-con-un-pdf-pero-no-supiste-como</link>
		<comments>http://www.albertmata.net/2009/01/todo-lo-que-quisiste-hacer-con-un-pdf-pero-no-supiste-como/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 07:55:30 +0000</pubDate>
		<dc:creator>Albert Mata</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Páginas web]]></category>
		<category><![CDATA[blogoff]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.albertmata.net/?p=199</guid>
		<description><![CDATA[A través de Menéame descubro este genial artículo de Blogoff en el que explican cómo trastear y manipular a nuestro antojo documentos PDF sin necesidad de tener el programa Adobe Acrobat versión completa (es decir, no el Reader que es gratuíto sino el completo, el de pago). Decido incorporarlo a mi propio blog para tenerlo [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.albertmata.net/public/uploads/2009/01/pdf.png" alt="" title="pdf" width="284" height="286" class="alignleft size-full wp-image-200" />A través de <a href="http://meneame.net" target="_blank">Menéame</a> descubro este genial artículo de <a href="http://www.blogoff.es/" target="_blank">Blogoff</a> en el que explican cómo trastear y manipular a nuestro antojo documentos PDF sin necesidad de tener el programa Adobe Acrobat versión completa (es decir, no el Reader que es gratuíto sino el completo, el de pago). Decido incorporarlo a mi propio blog para tenerlo más mano cuando lo necesite y para de paso hacerlo llegar a más gente. El artículo de Blogoff se puede encontrar <a href="http://www.blogoff.es/2009/01/09/todo-lo-que-quisiste-hacer-con-un-pdf-pero-no-supiste-como/" target="_blank">aquí</a> y a su vez está basado en el artículo en inglés original que se puede leer <a href="http://www.labnol.org/software/adobe-pdf-guide-tutorial/6296/" target="_blank">aquí</a>.</p>
<p>Todo lo que sigue a continuación no está escrito por mí sino que es el contenido íntegro de la entrada en el blog Blogoff... </p>
<p><strong>1. ¿Cómo creo documentos PDF en mi ordenador sin necesidad de Adobe Acrobat?</strong></p>
<p>Hazte con una copia del programa gratuito <a href="http://dopdf.com/" target="_blank">DoPDF</a> [<a href="http://www.blogoff.es/2007/09/05/otra-forma-de-crear-archivos-pdf/" target="_blank">Ver tutorial</a>]</p>
<p><strong>2. Pero no quiero instalar un programa cuando lo único que voy a convertir son unos pocos documentos.</strong></p>
<p>Sube tus documentos a <a href="http://docs.google.com/" target="_blank">Google Docs</a> a través del explorador y luego expórtalos como PDF. Así de simple</p>
<p><strong>3. Un cliente me ha mandado una presentación PowerPoint por e-mail y aquí no tengo nada para abrirlo ¿qué puedo hacer? </strong></p>
<p>Reenvía el correo (con el powerpoint adjunto) a pdf@koolwire.com. Ellos convertirán la presentación a PDF y te la mandarán de vuelta para que la puedas ver en la mayoría de los dispositivos portátiles.</p>
<p><strong>4. ¿Cómo guardo una página web como PDF sin guardarla como HTML primero?</strong></p>
<p>Sólo tienes que ir a <a href="https://online.primopdf.com/Default.aspx" target="_blank"><strong>PrimoPDF</strong></a>, escribir la dirección de la página y recibirás una copia de la misma en PDF en el correo que les hayas proporcionado.</p>
<p><strong>5. ¿Cómo puedo transformar un PDF a otros formatos como documento de Word, imagen, HTML, etc…?</strong></p>
<p>A través de una web como <a href="http://www.zamzar.com/" target="_blank">Zamzar </a>[<a href="http://www.blogoff.es/2006/11/10/cambiar-de-un-formato-a-otro-via-web/" target="_blank">ver tutorial</a>]</p>
<p><strong>6. ¿Cómo puedo juntar dos archivos PDF en uno? ¿Y cambiar el orden de las páginas?</strong></p>
<p><a href="http://www.download.com/PDFill-PDF-Tools-Free/3000-2075_4-10435051.html" target="_blank">PDFill</a> es una utilidad muy versátil que te permitirá combinar varios documentos PDF en uno, reordenar las páginas e incluso rotarlas desde dentro del PDF.</p>
<p><strong>7. Quiero extraer el texto de un PDF para usarlo en mi documento de Word ¿cuál es la mejor opción?</strong></p>
<p>Abre <a href="http://pdftextonline.com/" target="_blank">PDF Text Extraction</a> y sube tu PDF. Extraerá las 10 primeras páginas de tu documento en formato texto.</p>
<p><strong>8. No puedo usar el truco de arriba porque el documento PDF no se hizo desde Word sino que fue escaneado.</strong></p>
<p>Hay un modo de <a href="http://www.labnol.org/software/convert-scanned-pdf-images-to-text-with-google-ocr/5158/" target="_blank">extraer el texto de estos documentos a través del OCR de Google</a>. Quizás no la forma más rápida pero posiblemente la mejor solución gratuita.</p>
<p><strong>9. Tengo documentos PDF en mi ordenador en el sentido de que no se pueden imprimir o seleccionar texto en ellos con el ratón.</strong></p>
<p><a href="http://www.freewarefiles.com/Freeware-PDF-Unlocker-V_program_27137.html" target="_blank">PDF Unlocker</a> es una utilidad gratuita que borra las restricciones más habituales sobre un PDF sin pedir ningún tipo de password.</p>
<p><strong>10. Algunos PDF de mi empresa están protegidos con contraseñas que nadie recuerda después de la cena de empresa de ayer ¿qué puedo hacer?</strong></p>
<p>Échale un vistazo a <a href="http://labnol.blogspot.com/2007/01/how-to-open-password-protected-pdf.html" target="_blank">How to Open Password Protected PDF</a></p>
<p><strong>11. Busco un servicio que permita a mis visitantes bajarse los artículos como PDF.</strong></p>
<p>Añade el botón <a href="http://www.pdfonline.com/web2pdf/index.asp" target="_blank">Web2PDF</a> en algún sitio de tu página web. Convertirá la página a PDF de forma instantánea y además te permitirá mantener un registro de las conversiones.</p>
<p><strong>12. Alguien me ha enviado un documento PDF en un idioma que no entiendo.</strong></p>
<p>Puedes traducirlo con <a href="http://www.labnol.org/internet/tools/translate-pdf-word-documents-online-google-translate/3553/" target="_blank">Google Translate</a> y <a href="http://viewer.zoho.com/" target="_blank">Zoho Viewer</a>.</p>
<p><strong>13. ¿Cómo puedo añadir anotaciones o notas de texto a mis documentos PDF?</strong></p>
<p>Descarga <a href="http://www.pdfxviewer.com/home/prod_user/PDF-XChange_Tools/pdfx_viewer/" target="_blank">PDF-X Viewer</a> que es como Adobe Reader pero con algunas funciones adicionales. Puedes añadir las anotaciones que quieras e incluso pegar imágenes. Otra opción parecida es <a href="http://www.pdfescape.com/" target="_blank">PDF Escape</a>.</p>
<p><strong>14. ¿Cómo puedo abrir un documento PDF online sin tener el software de Adobe?</strong></p>
<p>Una alternativa fácil para abrir PDF en el navegador es el <a href="http://www.pdfmenot.com/" target="_blank">Free Online PDF Viewer</a>, aunque hay <a href="http://www.labnol.org/internet/tools/read-adobe-pdf-files-online-without-acrobat/1923/" target="_blank">otras muchas</a>.</p>
<p><strong>15. ¿Puedo rellenar formularios PDF online sin Acrobat Reader?</strong></p>
<p>Sólo tienes que ir a <a href="http://www.pdffiller.com/" target="_blank">PDF Filler</a>, subir el archivo y empezar a escribir.</p>
<p><strong>16. ¿Cómo puedo añadir una marca de agua o mi propia firma a un PDF?</strong></p>
<p>Lo primero que tienes que hacer es crear tu marca de agua o firma con Paint o cualquier otro programa de dibujo y luego guardarla como imagen. Asegúrate de haber recortado bien la firma y abre el documento PDF en el <a href="http://www.pdfxviewer.com/home/prod_user/PDF-XChange_Tools/pdfx_viewer/" target="_blank">PDF-X Viewer</a> que ya hemos mencionado. Una vez allí sólo tienes que pegarla dentro del documento.</p>
<p><strong>17. Tengo un libro en PDF que llega a las 200 páginas ¿hay algún modo de extraer algunas páginas en concreto y salvarlas como otro PDF?</strong></p>
<p>Puedes usar tanto <a href="http://pdfmerge.sourceforge.net/" target="_blank">PDF Merge </a>como <a href="http://www.pdfsam.org/" target="_blank">PDF SAM</a> para hacer esta operación.</p>
<p><strong>18. ¿Cómo puedo proteger mi documento PDF con una contraseña?</strong></p>
<p>En <a href="http://www.pdfhammer.com/" target="_blank">PDF Hammer</a> subes tu documento y le asignas la contraseña que quieras.</p>
<p><strong>19. Un PDF tiene muchos enlaces pero no puedo hacer click en ellos porque están en texto plano. ¿Cómo puedo convertilos en enlaces estándar?</strong></p>
<p>Una vez más, acude a <a href="http://www.pdfescape.com/" target="_blank">PDF Escape</a>, sube el PDF y coloca los hipervínculos donde consideres oportuno.</p>
<p><strong>20. ¿Qué servicios me rec0mendarías para subir archivos PDF a internet?</strong></p>
<p>En el artículo original recomiendan <a href="http://issuu.com/" target="_blank">Issuu</a> que aún no he probado. De los que he visto me quedo con <a href="http://scribd.com/" target="_blank">Scribd</a>.</p>
<p><strong>21 [Blogoff Bonus Track]. ¿Cómo puedo abrir un PDF más rápido con Adobe Reader?</strong></p>
<p><a href="http://www.genbeta.com/2005/11/26-adobe-acrobat-a-la-velocidad-de-la-luz" target="_blank">Desactivando los plugins</a> o usando <a href="http://www.blogoff.es/2006/04/16/adobe-reader-o-como-ahogar-tu-viejo-pc-foxitreader-al-rescate/" target="_blank">Foxit PDF</a> como lector de escritorio.</p>
<p><strong>21 [Blogoff Bonus Track]. ¿Cómo crear un PDF de un documento de Word?</strong></p>
<p><a href="http://www.blogoff.es/2006/09/10/como-crear-un-pdf-de-un-documento-word/" target="_blank">Con Express PDF</a><strong> </strong>(mi herramienta favorita)</p>
<p><strong>22. </strong><strong>[Blogoff Bonus Track]. ¿Cómo puedo manejar archivos PDF en OpenOffice?</strong></p>
<p><a href="http://www.blogoff.es/2008/11/05/editar-archivos-pdf-sin-adobe-acrobat-con-openoffice/" target="_blank">Plugin para editar archivos PDF en Open Office sin Adobe Reader</a><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.albertmata.net/2009/01/todo-lo-que-quisiste-hacer-con-un-pdf-pero-no-supiste-como/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Calendario en JavaScript traído del baúl de los recuerdos.</title>
		<link>http://www.albertmata.net/2008/07/calendario-en-javascript-traido-del-baul-de-los-recuerdos/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=calendario-en-javascript-traido-del-baul-de-los-recuerdos</link>
		<comments>http://www.albertmata.net/2008/07/calendario-en-javascript-traido-del-baul-de-los-recuerdos/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 12:08:25 +0000</pubDate>
		<dc:creator>Albert Mata</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Páginas web]]></category>
		<category><![CDATA[calendario]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.albertmata.net/?p=57</guid>
		<description><![CDATA[Ordenando estos días viejos archivos que tenía en discos duros varios, he topado con algunas cosas que había desarrollado hace ya tiempo y que en algunos casos ni recordaba. Una de las que me ha parecido más interesante es este calendario para página web creado con JavaScript que presento hoy. Recuerdo que lo creé para [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-58" title="javascript" src="http://www.albertmata.net/public/uploads/2008/07/javascript.jpg" alt="" width="216" height="261" />Ordenando estos días viejos archivos que tenía en discos duros varios, he topado con algunas cosas que había desarrollado hace ya tiempo y que en algunos casos ni recordaba. Una de las que me ha parecido más interesante es este calendario para página web creado con <strong>JavaScript </strong>que presento hoy. Recuerdo que lo creé para recoger una fecha con la que acotar una consulta. Quería evitar problemas con los formatos de entrada de fechas (día/mes/año, mes/día/año, etc) y además me apetecía crear algo más estético que un simple cuadro de texto. Por eso surgió este calendario. De modo que todo el código es de hace unos cuantos años, cuando era un programador 100% amateur, así que no se aceptan críticas despiadadas sobre su corrección... <img src='http://www.albertmata.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Ahora simplemente le he echado un vistazo por encima y le he puesto algún comentario y alguna tabulación, nada más.</p>
<p>No tiene mucho misterio explicar cómo funciona, solo hay que crear el calendario en el punto de la página web que se desee con una llamada así:</p>
<div class="code">&#60;script&#62;drawCalendar&#40;&#39;date01&#39;&#41;&#59;&#60;&#47;script&#62;</div>
<p>Y después tener algún cuadro de texto que recoja la fecha que se selecciona en el calendario. Este cuadro lo podemos hacer visible o invisible a nuestro antojo, pero tenemos que tener la precaución de asignarle un identificador igual al parámetro que hemos pasado como argumento a la función <strong>drawCalendar</strong>:</p>
<div class="code">&#60;input&#160;type&#61;&#34;textbox&#34;&#160;id&#61;&#34;date01&#34;&#160;value&#61;&#34;&#160;&#34;&#47;&#62;</div>
<p>Con esto el calendario queda ya plenamente operativo. Aquí va un ejemplo:<br />
<script type='text/JavaScript' src='http://www.albertmata.net/public/uploads/2008/07/calendar.js'></script><br />
<center><script>drawCalendar('date01');</script></p>
<input type="textbox" style="width: 100px; background-color: #CCCCFF; border: 1px #000000 dotted; font-size: 10px; text-align: center; font-family: Arial, Helvetica, sans-serif;" id="date01" value=" "/>
</center></p>
<p>Y aquí os dejo el código <strong>JavaScript </strong>completo del archivo <strong>calendar.js</strong>:</p>
<div class="code">&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Author&#58;&#160;&#160;&#160;&#160;&#160;&#160;Albert&#160;Mata&#160;&#40;www&#46;albertmata&#46;net&#41;<br />
&#160;Date&#58;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;20080718<br />
&#160;Description&#58;&#160;Old&#160;JavaScript&#160;calendar&#160;I&#160;programmed&#160;a&#160;long&#160;time&#160;ago&#46;&#160;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Attributes&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;</p>
<p>var&#160;monthShown&#59;<br />
var&#160;yearShown&#59;<br />
var&#160;textboxId&#59;<br />
var&#160;firstMonthWeekDay&#59;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Draws&#160;calendar&#160;giving&#160;identifiers&#160;to&#160;each&#160;button&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;<br />
function&#160;drawCalendar&#40;txtId&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;var&#160;currentDate&#59;</p>
<p>&#160;&#160;&#160;&#160;textboxId&#160;&#61;&#160;txtId&#59;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Getting&#160;current&#160;month&#160;and&#160;year&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;currentDate&#160;&#61;&#160;new&#160;Date&#40;&#41;&#59;<br />
&#160;&#160;&#160;&#160;monthShown&#160;&#61;&#160;currentDate&#46;getMonth&#40;&#41;&#59;<br />
&#160;&#160;&#160;&#160;yearShown&#160;&#61;&#160;currentDate&#46;getFullYear&#40;&#41;&#59;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Opening&#160;HTML&#160;table&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;document&#46;write&#40;&#39;&#60;table&#160;width&#61;&#34;126&#34;&#160;bgcolor&#61;&#34;&#35;FFFFFF&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;align&#61;&#34;center&#34;&#160;cellspacing&#61;&#34;0&#34;&#160;cellpadding&#61;&#34;0&#34;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;border&#61;&#34;0&#34;&#62;&#39;&#41;&#59;<br />
&#160;&#160;&#160;&#160;document&#46;write&#40;&#39;&#60;tr&#62;&#60;td&#160;width&#61;&#34;6&#34;&#62;&#60;img&#160;src&#61;&#34;left&#46;gif&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;style&#61;&#34;cursor&#58;&#160;hand&#59;&#34;&#160;onClick&#61;&#34;SafeRefill&#40;1&#41;&#59;&#34;&#47;&#62;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;&#60;&#47;td&#62;&#60;td&#160;width&#61;&#34;60&#34;&#62;&#60;input&#160;type&#61;&#34;button&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;style&#61;&#34;width&#58;&#160;60px&#59;&#160;background&#45;color&#58;&#160;&#35;FFFFFF&#59;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;font&#45;size&#58;&#160;10px&#59;&#160;text&#45;align&#58;&#160;center&#59;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;font&#45;family&#58;&#160;Arial&#44;&#160;Helvetica&#44;&#160;sans&#45;serif&#59;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;border&#58;&#160;0px&#59;&#34;&#160;id&#61;&#34;mth&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;value&#61;&#34;&#39;&#43;monthName&#40;monthShown&#41;&#43;&#39;&#34;&#47;&#62;&#60;&#47;td&#62;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;&#60;td&#160;width&#61;&#34;6&#34;&#62;&#60;img&#160;src&#61;&#34;right&#46;gif&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;style&#61;&#34;cursor&#58;&#160;hand&#59;&#34;&#160;onClick&#61;&#34;SafeRefill&#40;2&#41;&#59;&#34;&#47;&#62;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;&#60;&#47;td&#62;&#60;td&#160;width&#61;&#34;10&#34;&#62;&#60;&#47;td&#62;&#60;td&#160;width&#61;&#34;6&#34;&#62;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;&#60;img&#160;src&#61;&#34;left&#46;gif&#34;&#160;style&#61;&#34;cursor&#58;&#160;hand&#59;&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;onClick&#61;&#34;SafeRefill&#40;3&#41;&#59;&#34;&#47;&#62;&#60;&#47;td&#62;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;&#60;td&#160;width&#61;&#34;32&#34;&#62;&#60;input&#160;type&#61;&#34;button&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;style&#61;&#34;width&#58;&#160;32px&#59;&#160;background&#45;color&#58;&#160;&#35;FFFFFF&#59;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;font&#45;size&#58;&#160;10px&#59;&#160;text&#45;align&#58;&#160;center&#59;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;font&#45;family&#58;&#160;Arial&#44;&#160;Helvetica&#44;&#160;sans&#45;serif&#59;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;border&#58;&#160;0px&#59;&#34;&#160;id&#61;&#34;yea&#34;&#160;value&#61;&#34;&#39;&#43;yearShown&#43;&#39;&#34;&#47;&#62;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;&#60;&#47;td&#62;&#60;td&#160;width&#61;&#34;6&#34;&#62;&#60;img&#160;src&#61;&#34;right&#46;gif&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;style&#61;&#34;cursor&#58;&#160;hand&#59;&#34;&#160;onClick&#61;&#34;SafeRefill&#40;4&#41;&#59;&#34;&#47;&#62;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;&#60;&#47;td&#62;&#60;&#47;tr&#62;&#39;&#41;&#59;<br />
&#160;&#160;&#160;&#160;document&#46;write&#40;&#39;&#60;tr&#62;&#60;td&#160;width&#61;&#34;126&#34;&#160;colspan&#61;&#34;7&#34;&#62;&#39;&#41;&#59;<br />
&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;&#47;&#42;&#160;Adding&#160;buttons&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;for&#160;&#40;i&#160;&#61;&#160;0&#59;&#160;i&#160;&#60;&#160;42&#59;&#160;i&#43;&#43;&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;write&#40;&#39;&#60;input&#160;type&#61;&#34;button&#34;&#160;style&#61;&#34;width&#58;&#160;18px&#59;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;background&#45;color&#58;&#160;&#35;FFFFFF&#59;&#160;font&#45;size&#58;&#160;10px&#59;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;text&#45;align&#58;&#160;center&#59;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;font&#45;family&#58;&#160;Arial&#44;&#160;Helvetica&#44;&#160;sans&#45;serif&#59;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;border&#58;&#160;0px&#59;&#34;&#160;id&#61;&#34;day&#39;&#160;&#43;&#160;i&#160;&#43;&#160;&#39;&#34;&#160;value&#61;&#34;&#160;&#34;&#39;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;onMouseOver&#61;&#34;Hover&#40;&#39;&#43;i&#43;&#39;&#44;1&#41;&#59;&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;onMouseOut&#61;&#34;Hover&#40;&#39;&#43;i&#43;&#39;&#44;0&#41;&#59;&#34;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;&#39;onClick&#61;&#34;ShowDate&#40;&#39;&#160;&#43;&#160;i&#160;&#43;&#160;&#39;&#41;&#59;&#34;&#47;&#62;&#39;&#41;&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;&#40;&#40;&#40;i&#43;1&#41;&#160;&#37;&#160;7&#41;&#160;&#61;&#61;&#160;0&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;write&#40;&#39;&#60;br&#47;&#62;&#39;&#41;&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#125;<br />
&#160;&#160;&#160;&#160;&#125;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Closing&#160;HTML&#160;table&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;document&#46;write&#40;&#39;&#60;&#47;td&#62;&#60;&#47;tr&#62;&#39;&#41;&#59;<br />
&#160;&#160;&#160;&#160;document&#46;write&#40;&#39;&#60;&#47;table&#62;&#39;&#41;&#59;</p>
<p>&#160;&#160;&#160;&#160;Refill&#40;&#41;&#59;<br />
&#125;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Prevents&#160;possible&#160;wrong&#160;values&#160;for&#160;month&#160;and&#160;refills&#160;calendar&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;<br />
function&#160;SafeRefill&#40;action&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#47;&#42;&#160;Increasing&#160;or&#160;decreasing&#160;month&#160;and&#160;year&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;action&#160;&#61;&#61;&#160;1&#41;&#160;&#123;&#160;monthShown&#45;&#45;&#160;&#125;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;action&#160;&#61;&#61;&#160;2&#41;&#160;&#123;&#160;monthShown&#43;&#43;&#160;&#125;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;action&#160;&#61;&#61;&#160;3&#41;&#160;&#123;&#160;yearShown&#45;&#45;&#160;&#125;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;action&#160;&#61;&#61;&#160;4&#41;&#160;&#123;&#160;yearShown&#43;&#43;&#160;&#125;<br />
&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;&#47;&#42;&#160;Moving&#160;from&#160;January&#160;to&#160;December&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;monthShown&#160;&#61;&#61;&#160;&#45;1&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;monthShown&#160;&#61;&#160;11&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;yearShown&#45;&#45;&#59;<br />
&#160;&#160;&#160;&#160;&#125;<br />
&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;&#47;&#42;&#160;Moving&#160;from&#160;December&#160;to&#160;January&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;monthShown&#160;&#61;&#61;&#160;12&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;monthShown&#160;&#61;&#160;0&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;yearShown&#43;&#43;&#59;<br />
&#160;&#160;&#160;&#160;&#125;<br />
&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;Refill&#40;&#41;&#59;<br />
&#125;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Redraws&#160;calendar&#160;when&#160;month&#160;or&#160;year&#160;has&#160;changed&#44;&#160;using&#160;identifiers<br />
&#160;previously&#160;given&#160;to&#160;all&#160;buttons&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;<br />
function&#160;Refill&#40;&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;var&#160;firstMonthDay&#59;<br />
&#160;&#160;&#160;&#160;var&#160;lastMonthDay&#59;<br />
&#160;&#160;&#160;&#160;var&#160;lastMonthWeekDay&#59;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Getting&#160;first&#160;month&#160;day&#160;and&#160;weekday&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;firstMonthDay&#160;&#61;&#160;new&#160;Date&#40;yearShown&#44;monthShown&#44;1&#41;&#59;<br />
&#160;&#160;&#160;&#160;firstMonthWeekDay&#160;&#61;&#160;firstMonthDay&#46;getDay&#40;&#41;&#59;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;firstMonthWeekDay&#160;&#61;&#61;&#160;0&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;firstMonthWeekDay&#160;&#61;&#160;7&#59;<br />
&#160;&#160;&#160;&#160;&#125;&#160;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Getting&#160;last&#160;month&#160;day&#160;and&#160;weekday&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;lastMonthDay&#160;&#61;&#160;new&#160;Date&#40;yearShown&#44;monthShown&#44;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;monthDays&#40;monthShown&#44;yearShown&#41;&#41;&#59;<br />
&#160;&#160;&#160;&#160;lastMonthWeekDay&#160;&#61;&#160;lastMonthDay&#46;getDay&#40;&#41;&#59;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;lastMonthWeekDay&#160;&#61;&#61;&#160;0&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;lastMonthWeekDay&#160;&#61;&#160;7&#59;<br />
&#160;&#160;&#160;&#160;&#125;&#160;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Clearing&#160;all&#160;buttons&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;for&#160;&#40;i&#160;&#61;&#160;0&#59;&#160;i&#160;&#60;&#160;42&#59;&#160;i&#43;&#43;&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;day&#39;&#43;i&#41;&#46;value&#160;&#61;&#160;&#34;&#160;&#34;&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;day&#39;&#43;i&#41;&#46;style&#46;cursor&#160;&#61;&#160;&#39;default&#39;&#59;<br />
&#160;&#160;&#160;&#160;&#125;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Giving&#160;new&#160;values&#160;to&#160;buttons&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;for&#160;&#40;i&#160;&#61;&#160;1&#59;&#160;i&#160;&#60;&#61;&#160;monthDays&#40;monthShown&#44;yearShown&#41;&#59;&#160;i&#43;&#43;&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;day&#39;&#43;&#40;i&#43;firstMonthWeekDay&#45;2&#41;&#41;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#46;value&#160;&#61;&#160;i&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;day&#39;&#43;&#40;i&#43;firstMonthWeekDay&#45;2&#41;&#41;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#46;style&#46;cursor&#160;&#61;&#160;&#39;hand&#39;&#59;<br />
&#160;&#160;&#160;&#160;&#125;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Giving&#160;new&#160;values&#160;to&#160;month&#160;and&#160;year&#160;buttons&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;mth&#39;&#41;&#46;value&#160;&#61;&#160;monthName&#40;monthShown&#41;&#59;<br />
&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;yea&#39;&#41;&#46;value&#160;&#61;&#160;yearShown&#59;<br />
&#125;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Function&#160;to&#160;calculate&#160;a&#160;month&#39;s&#160;number&#160;of&#160;days&#160;depending&#160;on&#160;it&#39;s&#160;a&#160;<br />
&#160;leap&#160;year&#160;or&#160;not&#46;&#160;It&#39;s&#160;a&#160;leap&#160;year&#160;when&#160;it&#160;can&#160;be&#160;divided&#160;by&#160;4&#44;&#160;but<br />
&#160;it&#39;s&#160;not&#160;when&#160;it&#160;can&#160;be&#160;divided&#160;by&#160;100&#160;as&#160;well&#46;&#160;And&#160;it&#39;s&#160;a&#160;leap<br />
&#160;year&#160;again&#160;when&#160;it&#160;can&#160;be&#160;divided&#160;by&#160;100&#160;and&#160;by&#160;400&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;<br />
function&#160;monthDays&#160;&#40;mm&#44;&#160;yyyy&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;var&#160;februaryDays&#59;<br />
&#160;&#160;&#160;&#160;var&#160;daysNumber&#59;</p>
<p>&#160;&#160;&#160;&#160;februaryDays&#160;&#61;&#160;28&#59;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Deciding&#160;number&#160;of&#160;days&#160;for&#160;February&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;&#40;yyyy&#160;&#37;&#160;4&#41;&#160;&#61;&#61;&#160;0&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;&#40;&#40;yyyy&#160;&#37;&#160;100&#41;&#160;&#61;&#61;&#160;0&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;&#40;&#40;yyyy&#160;&#37;&#160;400&#41;&#160;&#61;&#61;&#160;0&#41;&#160;&#123;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;februaryDays&#160;&#61;&#160;29&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#125;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#125;&#160;else&#160;&#123;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;februaryDays&#160;&#61;&#160;29&#59;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#125;<br />
&#160;&#160;&#160;&#160;&#125;&#160;</p>
<p>&#160;&#160;&#160;&#160;daysNumber&#160;&#61;&#160;new&#160;Array&#160;&#40;31&#44;&#160;februaryDays&#44;&#160;31&#44;&#160;30&#44;&#160;31&#44;&#160;30&#44;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;31&#44;&#160;31&#44;&#160;30&#44;&#160;31&#44;&#160;30&#44;&#160;31&#41;&#59;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Returning&#160;number&#160;of&#160;days&#160;for&#160;selected&#160;month&#160;and&#160;year&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;return&#160;daysNumber&#91;mm&#93;&#59;<br />
&#125;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Returns&#160;month&#160;name&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;<br />
function&#160;monthName&#160;&#40;mm&#41;&#160;&#123;<br />
&#160;&#160;&#160;var&#160;monthNames&#59;</p>
<p>&#160;&#160;&#160;monthNames&#160;&#61;&#160;new&#160;Array&#40;&#39;enero&#39;&#44;&#39;febrero&#39;&#44;&#39;marzo&#39;&#44;&#39;abril&#39;&#44;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;mayo&#39;&#44;&#39;junio&#39;&#44;&#39;julio&#39;&#44;&#39;agosto&#39;&#44;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;septiembre&#39;&#44;&#39;octubre&#39;&#44;&#39;noviembre&#39;&#44;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;diciembre&#39;&#41;&#59;</p>
<p>&#160;&#160;&#160;return&#160;monthNames&#91;mm&#93;&#59;<br />
&#125;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Customizes&#160;mouseOver&#160;effects&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;<br />
function&#160;Hover&#40;dd&#44;x&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;document&#46;getElementById&#40;&#39;day&#39;&#43;dd&#41;&#46;value&#160;&#33;&#61;&#160;&#34;&#160;&#34;&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;&#40;x&#160;&#61;&#61;&#160;1&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;day&#39;&#43;dd&#41;&#46;style&#46;background&#160;&#61;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;&#35;CCCCFF&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#125;&#160;else&#160;&#123;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;getElementById&#40;&#39;day&#39;&#43;dd&#41;&#46;style&#46;background&#160;&#61;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#39;&#35;FFFFFF&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#125;<br />
&#160;&#160;&#160;&#160;&#125;<br />
&#125;</p>
<p>&#47;&#42;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />
&#160;Returns&#160;selected&#160;data&#160;to&#160;textbox&#46;<br />
&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#42;&#47;<br />
function&#160;ShowDate&#40;dd&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;var&#160;selDay&#59;<br />
&#160;&#160;&#160;&#160;var&#160;selMonth&#59;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Formatting&#160;day&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;&#40;dd&#160;&#45;&#160;firstMonthWeekDay&#160;&#43;&#160;2&#41;&#160;&#60;&#160;10&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;selDay&#160;&#61;&#160;&#39;0&#39;&#160;&#43;&#160;&#40;dd&#160;&#45;&#160;firstMonthWeekDay&#160;&#43;&#160;2&#41;&#59;<br />
&#160;&#160;&#160;&#160;&#125;&#160;else&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;selDay&#160;&#61;&#160;&#40;dd&#160;&#45;&#160;firstMonthWeekDay&#160;&#43;&#160;2&#41;&#59;<br />
&#160;&#160;&#160;&#160;&#125;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Formatting&#160;month&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;&#40;1&#43;monthShown&#41;&#160;&#60;&#160;10&#41;&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;selMonth&#160;&#61;&#160;&#39;0&#39;&#160;&#43;&#160;&#40;1&#160;&#43;&#160;monthShown&#41;&#59;<br />
&#160;&#160;&#160;&#160;&#125;&#160;else&#160;&#123;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;selMonth&#160;&#61;&#160;&#40;1&#160;&#43;&#160;monthShown&#41;&#59;<br />
&#160;&#160;&#160;&#160;&#125;</p>
<p>&#160;&#160;&#160;&#160;&#47;&#42;&#160;Returning&#160;date&#160;to&#160;textbox&#46;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;if&#160;&#40;document&#46;getElementById&#40;&#39;day&#39;&#43;dd&#41;&#46;value&#160;&#33;&#61;&#160;&#39;&#160;&#39;&#160;&#41;&#160;&#123;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#47;&#42;&#160;Customize&#160;this&#160;line&#160;to&#160;change&#160;output&#160;format&#33;&#33;&#33;&#160;&#42;&#47;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document&#46;getElementById&#40;textboxId&#41;&#46;value&#160;&#61;&#160;selDay&#160;&#43;&#160;&#39;&#47;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;selMonth&#160;&#43;&#160;&#39;&#47;&#39;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#43;&#160;yearShown&#59;&#160;<br />
&#160;&#160;&#160;&#160;&#125;<br />
&#125;</p></div>
<p>Para que funcione bonito es preciso que en el mismo directorio donde esté ubicado el archivo <strong>calendar.js</strong> se encuentren también las imágenes <strong>left.gif</strong> y <strong>right.gif</strong> que se pueden descargar desde esta misma página haciendo click derecho en las propias imágenes (los triangulitos azules que aparecen en el calendario para desplazarse entre meses y/o años).</p>
<p>Por último, ni que decir tiene que este calendario es muy mejorable y ampliable en funciones... ¡pero no seré yo quien lo haga! Simplemente lo dejo aquí por si a alguien puede servirle o puede aportarle alguna idea. <img src='http://www.albertmata.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.albertmata.net/2008/07/calendario-en-javascript-traido-del-baul-de-los-recuerdos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Servidor de bolsillo con WOS Portable.</title>
		<link>http://www.albertmata.net/2008/05/servidor-de-bolsillo-con-wos-portable/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=servidor-de-bolsillo-con-wos-portable</link>
		<comments>http://www.albertmata.net/2008/05/servidor-de-bolsillo-con-wos-portable/#comments</comments>
		<pubDate>Sun, 25 May 2008 15:54:26 +0000</pubDate>
		<dc:creator>Albert Mata</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Páginas web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bases de datos]]></category>
		<category><![CDATA[gnu-gpl]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[mambo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wos portable]]></category>

		<guid isPermaLink="false">http://www.albertmata.net/?p=12</guid>
		<description><![CDATA[En el proyecto en el que actualmente estoy trabajando, decidimos utilizar una base de datos MySQL por su bajo coste y excelente rendimiento. De hecho fue una recomendación mía que la Dirección aceptó, por lo cual celebro que de momento nos esté dando el resultado tan bueno que nos está dando.
Así pues en mi portátil [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-15" title="wos" src="http://www.albertmata.net/public/uploads/2008/05/wos.jpg" alt="" width="183" height="80" />En el proyecto en el que actualmente estoy trabajando, decidimos utilizar una base de datos MySQL por su bajo coste y excelente rendimiento. De hecho fue una recomendación mía que la Dirección aceptó, por lo cual celebro que de momento nos esté dando el resultado tan bueno que nos está dando.</p>
<p>Así pues en mi portátil de trabajo tengo instalado un servidor MySQL en local. En él hago toda la fase de desarrollo antes de pasar tablas, triggers, procedimientos y demás al servidor MySQL del servidor de la empresa. Pero en ocasiones no tengo mi portátil a mano y me gustaría poder probar algunas cosas en otro PC. Hasta ahora tenía que desestimar la idea porque andar instalando el servidor MySQL en ordenadores ajenos es inviable. Pero hace poco he descubierto <a href="http://www.chsoftware.net/en/useware/wos/wos.htm" target="_blank">WOS Portable</a>. Una maravilla. WOS Portable es un software que se instala en un pendrive cualquiera (bueno, dicen que algunos modelos dan problemas, pero parecen ser los menos y en cualquier caso a mí no me ha ocurrido) y nos permite que al conectar después ese pendrive en cualquier PC con Windows y ejecutar el archivo wos.exe automáticamente dispondremos de un servidor <a href="http://www.apache.org/" target="_blank">Apache</a> + <a href="http://www.php.net/" target="_blank">PHP</a> + <a href="http://www.mysql.com/" target="_blank">MySQL</a> funcionando perfectamente, de tal manera que si en un navegador escribimos:</p>
<div class="code">http://localhost</div>
<p>Obtendremos la página index.php que tenemos alojada en el pendrive (en el directorio www). Y si en una consola escribimos:</p>
<div class="code">mysql -u root</div>
<p>Tendremos un servidor MySQL a nuestra entera disposición. (ver nota 1)</p>
<p>Personalmente este software me ha parecido una maravilla y creo que es muy útil para desarrolladores que solemos trabajar con más de un PC, ya que así nuestros datos pueden estar siempre en el pendrive y no tenemos que andar backupeándolos y restaurándolos constantemente. También se me ha ocurrido que puede resultar extremadamente útil como sistema de seguridad. Me explico: en mi empresa las aplicaciones funcionan como he dicho contra una base de datos MySQL alojada en el servidor. Si éste sufriera un accidente o cualquier imprevisto, la actividad se paralizaría y hasta que se restaurara el correcto funcionamiento del servidor podrían pasar horas o incluso días. En cambio ahora tenemos un pendrive con WOS Portable y cada X días le restauramos una copia de seguridad de la base de datos productiva. Con ello, ante cualquier eventualidad nos basta con conectar este pendrive, hacer un doble clic y ya tenemos de nuevo las aplicaciones funcionando. Realmente genial y recomendable.</p>
<p>Pues bien, WOS Portable se puede descargar libremente (es GNU-GPL) desde su sitio web. Para ello la única peculiaridad es que en lugar de bajarnos un archivo estándar podemos configurar qué aplicaciones extras (<a href="http://www.joomla.org/" target="_blank">Joomla</a>, <a href="http://mambo-foundation.org/" target="_blank">Mambo</a>, <a href="http://wordpress.org/" target="_blank">Wordpress</a>, etc) queremos incorporar al paquete de instalación. Lo básico es Apache + PHP + MySQL, y personalmente no recomiendo añadirle mucha cosa más desde un inicio, puesto que siempre estamos a tiempo de hacer actualizaciones con nuevos paquetes. No obstante, yo sí le añadí el <a href="http://www.phpmyadmin.net/home_page/index.php" target="_blank">phpMyAdmin</a> porque considero que en ocasiones resulta muy útil.</p>
<p>Una vez seleccionados los componentes nos generarán un archivo comprimido personalizado que sólo tendremos que bajarnos, descomprimirlo en el pendrive y ejecutar el fichero wos.exe. Con eso se llevará a cabo un proceso de configuración que tarda un ratito pero que no tiene complicación alguna. <img src='http://www.albertmata.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div class="subtitle">Nota 1.</div>
<p>Para que esta sentencia funcione tenemos que tener un cliente MySQL (un archivo mysql.exe) en el PC y la ruta donde éste se encuentra guardada en la variable del sistema Path. Si no es así, cosa probable si no estamos en nuestro PC, siempre podemos ir primero a buscar el cliente:</p>
<div class="code">F:<br />
cd mysql/bin<br />
mysql -u root</div>
]]></content:encoded>
			<wfw:commentRss>http://www.albertmata.net/2008/05/servidor-de-bolsillo-con-wos-portable/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
