<?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>BrianUR &#187; javascript</title>
	<atom:link href="http://www.brianur.info/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brianur.info</link>
	<description></description>
	<lastBuildDate>Wed, 01 Feb 2012 16:50:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Crear un reloj analógico con Javascript</title>
		<link>http://www.brianur.info/crear-un-reloj-analogico-con-javascript/</link>
		<comments>http://www.brianur.info/crear-un-reloj-analogico-con-javascript/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 18:43:08 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Codiguillos]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[reloj]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=1047</guid>
		<description><![CDATA[El siguiente reloj puede ser creado sin necesidad de usar imágenes ni CSS, gracias a una librería en Javascript llamada Raphaël que nos permite crear gráficos de una manera sencilla. Visto en el blog de Emanuele Feronato]]></description>
			<content:encoded><![CDATA[<p>El siguiente reloj puede ser creado sin necesidad de usar imágenes ni CSS, gracias a una librería en Javascript llamada <a href="http://raphaeljs.com/">Raphaël</a> que nos permite crear gráficos de una manera sencilla.</p>
<p style="text-align:center;"><iframe src ="http://www.brianur.info/ejemplos/reloj.htm" width="220" height="220"></iframe></p>
<p><span id="more-1047"></span></p>
<pre class="brush: jscript; title: ; notranslate">&lt;script type=&quot;text/javascript&quot; src=&quot;https://github.com/DmitryBaranovskiy/raphael/raw/master/raphael-min.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;

 function draw_clock(){
 canvas = Raphael(&quot;clock_id&quot;,200, 200);
 var clock = canvas.circle(100,100,95);
 clock.attr({&quot;fill&quot;:&quot;#f5f5f5&quot;,&quot;stroke&quot;:&quot;#444444&quot;,&quot;stroke-width&quot;:&quot;5&quot;})
 var hour_sign;
 for(i=0;i&lt;12;i++){
 var start_x = 100+Math.round(80*Math.cos(30*i*Math.PI/180));
 var start_y = 100+Math.round(80*Math.sin(30*i*Math.PI/180));
 var end_x = 100+Math.round(90*Math.cos(30*i*Math.PI/180));
 var end_y = 100+Math.round(90*Math.sin(30*i*Math.PI/180));
 hour_sign = canvas.path(&quot;M&quot;+start_x+&quot; &quot;+start_y+&quot;L&quot;+end_x+&quot; &quot;+end_y);
 }
 hour_hand = canvas.path(&quot;M100 100L100 50&quot;);
 hour_hand.attr({stroke: &quot;#444444&quot;, &quot;stroke-width&quot;: 6});
 minute_hand = canvas.path(&quot;M100 100L100 40&quot;);
 minute_hand.attr({stroke: &quot;#444444&quot;, &quot;stroke-width&quot;: 4});
 second_hand = canvas.path(&quot;M100 110L100 25&quot;);
 second_hand.attr({stroke: &quot;#444444&quot;, &quot;stroke-width&quot;: 2});
 var pin = canvas.circle(100, 100, 5);
 pin.attr(&quot;fill&quot;, &quot;#000000&quot;);
 update_clock()
 setInterval(&quot;update_clock()&quot;,1000);
 }

 function update_clock(){
 var now = new Date();
 var hours = now.getHours();
 var minutes = now.getMinutes();
 var seconds = now.getSeconds();
 hour_hand.rotate(30*hours+(minutes/2.5), 100, 100);
 minute_hand.rotate(6*minutes, 100, 100);
 second_hand.rotate(6*seconds, 100, 100);

 }

 &lt;/script&gt;
 &lt;body&gt;
 &lt;div id=&quot;clock_id&quot;&gt;&lt;/div&gt;
 &lt;script&gt;draw_clock()&lt;/script&gt;
 &lt;/body&gt; </pre>
<p>Visto en el blog de <a href="http://www.emanueleferonato.com/2010/12/11/javascript-analog-clock-with-no-images-and-no-css/">Emanuele Feronato</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/crear-un-reloj-analogico-con-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Charla: Introducción a AJAX y JavaScript</title>
		<link>http://www.brianur.info/charla-introduccion-a-ajax-y-javascript/</link>
		<comments>http://www.brianur.info/charla-introduccion-a-ajax-y-javascript/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 21:37:38 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=793</guid>
		<description><![CDATA[Charla por Ángel ‘Java’ López. En total 1:45 hs hablando de AJAX y varias tecnologías webs: 00:00 Introducción 05:30 AJAX 07:30 JavaScript y JSON 16:00 Objetos en JavaScript 19:00 Prototipos 23:50 Funciones 26:00 Clases 28:00 HTTP / HTML / XHTML / XML / CSS 32:20 DOM / DHTML 34:20 XMLHttpRequest 43:00 Ejemplos reales de AJAX [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Charla por <a href="http://www.exactas.uba.ar/uti/?p=63">Ángel ‘Java’ López</a>. En total 1:45 hs hablando de AJAX y varias tecnologías webs:</p>
<p style="text-align: left;">00:00 Introducción<br />
05:30 AJAX<br />
07:30 JavaScript y JSON<br />
16:00 Objetos en JavaScript<br />
19:00 Prototipos<br />
23:50 Funciones<span id="more-793"></span><br />
26:00 Clases<br />
28:00 HTTP / HTML / XHTML / XML / CSS<br />
32:20 DOM / DHTML<br />
34:20 XMLHttpRequest<br />
43:00 Ejemplos reales de AJAX<br />
48:40 Asincónico<br />
53:00 Lado del servidor<br />
1:05:30 jQuery<br />
1:10:00 Plugin: JQueryUI<br />
1:21:00 JSON usado con AJAX<br />
1:28:00 Plugin: JQuery Autocomplete<br />
1:32:00 Plugin: Grilla<br />
1:40:00 Resumen y por que usar JavaScript / AJAX</p>
<p style="text-align: center;"><div class="wpjp-embed-code">
		<div id="wpjp-player-b1d09a6d8ad932b526d69610a7f35a57"><a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=shockwaveFlash" rel="nofollow">Get The Latest Flash Player</a></div>
		<script type="text/javascript">
		var so = new SWFObject('http://www.brianur.info/wp-content/plugins/wp-jw-player/swf/player.swf','wpjp_player','450','350','9');
		so.addParam('allowfullscreen','true');
		so.addParam('allowscriptaccess','always');
		so.addParam('wmode','transparent');
		so.addParam('flashvars','file=http://www.exactas.uba.ar/uti/videos/lopez.flv&playlist=none&autostart=');
		so.write('wpjp-player-b1d09a6d8ad932b526d69610a7f35a57');
		</script><div class="wpjp-attribution-text"><p style="font-size:8px;text-align:center;"><a href="http://www.tubepress.net/wp-jw-player" target="_blank">WP JW Player Plugin</a> Powered by <a href="http://www.tubepress.net/es" target="_blank">TubePress.NET</a></p></div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/charla-introduccion-a-ajax-y-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.exactas.uba.ar/uti/videos/lopez.flv" length="250522346" type="video/x-flv" />
		</item>
		<item>
		<title>JSValidate: Validar formularios con Javascript</title>
		<link>http://www.brianur.info/jsvalidate-validar-formularios-con-javascript/</link>
		<comments>http://www.brianur.info/jsvalidate-validar-formularios-con-javascript/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 18:41:25 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsvalidate]]></category>
		<category><![CDATA[validar formularios]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=300</guid>
		<description><![CDATA[JSValidate es un script que nos permite validar formularios de una manera muy sencilla, lo único que debemos hacer es llamar al archivo .JS y seleccionar el tipo de validación que queremos: Este script requiere otras dos bibliotecas para funcionar, las cuales debemos incluir antes de jsvalidate.js Luego en el formulario, indicamos el tipo de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://img62.imageshack.us/img62/9352/logoyw.jpg"><img class="aligncenter" title="JSValidate" src="http://img62.imageshack.us/img62/9352/logoyw.jpg" alt="" width="222" height="94" /></a></p>
<p><a href="http://www.jsvalidate.com/">JSValidate</a> es un script que nos permite validar formularios de una manera muy sencilla, lo único que debemos hacer es llamar al archivo .JS y seleccionar el tipo de validación que queremos:</p>
<p>Este script requiere otras dos bibliotecas para funcionar, las cuales debemos incluir antes de <strong>jsvalidate.js</strong></p>
<pre class="brush: xml; title: ; notranslate">&lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot; src=&quot;scriptaculous/lib/prototype.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot; src=&quot;scriptaculous/src/scriptaculous.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot; src=&quot;jsvalidate.js&quot;&gt;&lt;/script&gt;</pre>
<p>Luego en el formulario, indicamos el tipo de validación en el atributo class:</p>
<pre class="brush: xml; title: ; notranslate">Buscar: &lt;input type=&quot;text&quot; name=&quot;buscar&quot; class=&quot;jsrequired&quot; /&gt;&lt;br /&gt;  &lt;input type=&quot;submit&quot; value=&quot;Ir&quot; /&gt;</pre>
<p><strong>JSValidate</strong> nos permite varios tipos de validación:<br />
<strong>jsrequired</strong> &#8211; El campo debe tener algún tipo de valor.<br />
<strong>jsvalidate_number</strong> &#8211; Cualquier número entero, decimal y negativo.<br />
<strong>jsvalidate_digits</strong> &#8211; Solo números.<br />
<strong>jsvalidate_alpha</strong> &#8211; Solo letras.<br />
<strong>jsvalidate_alphanum</strong> &#8211; Solo letras, números y guiones.<br />
<strong>jsvalidate_email</strong> &#8211; Correo electrónico.<br />
<strong>jsvalidate_uscanzip</strong> &#8211; Códigos postales (Estados Unidos y Canadá).<br />
<strong>jsvalidate_usstate</strong> &#8211; Dos letras en mayusculas de estados de USA.<br />
<strong>jsvalidate_usphone</strong> &#8211; Telefonos.<br />
<strong>jsvalidate_creditcard</strong> &#8211; Valida tarjetas de credito como VISA, MasterCard, American Express.<br />
<strong>jsvalidate_ssn</strong> &#8211; Número de seguro social de USA en el formato: XXXXXXXXX, XXX XX XXXX, o XXX-XX-XXXXX</p>
<p>Puedes encontrar más información y documentación <a href="http://www.jsvalidate.com/docs/">aquí</a>. No olvides que este script esta en ingles, pero traducirlo es muy sencillo. Pueden ver un ejemplo que hice usando JSValidate: <a href="http://www.brianur.info/calcular-imc/">Calcular IMC</a>.</p>
<p><a href="http://www.jsvalidate.com/download/">Descargar JSValidate</a></p>
<p>Vía <a href="http://programandoideas.com/2010/02/jsvalidate-framework-para-validar-formularios-en-javascript/">ProgramandoIdeas</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/jsvalidate-validar-formularios-con-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Base64 en Javascript</title>
		<link>http://www.brianur.info/base64-en-javascript/</link>
		<comments>http://www.brianur.info/base64-en-javascript/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 03:07:18 +0000</pubDate>
		<dc:creator>Brian Urban</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.brianur.info/?p=115</guid>
		<description><![CDATA[Encontré un código muy interesante para codificar/descodificar Base64 usando Javascript. Aquí se los comparto y adicionalmente dejo un ejemplo de como usarlo. /** * * Base64 encode / decode * http://www.webtoolkit.info/ * **/ var Base64 = { // private property _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", // public method for encoding encode : function (input) { var output [...]]]></description>
			<content:encoded><![CDATA[<p>Encontré un <a href="http://www.webtoolkit.info/javascript-base64.html">código</a> muy interesante para codificar/descodificar <a href="http://es.wikipedia.org/wiki/Base64">Base64</a> usando Javascript. Aquí se los comparto y adicionalmente dejo un ejemplo de como usarlo.</p>
<p><span id="more-115"></span></p>
<pre lang="javascript">
/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// public method for encoding
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;

		input = Base64._utf8_encode(input);

		while (i < input.length) {

			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);

			enc1 = chr1 >> 2;
			enc2 = ((chr1 &#038; 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 &#038; 15) << 2) | (chr3 >> 6);
			enc4 = chr3 &#038; 63;

			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}

			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

		}

		return output;
	},

	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 &#038; 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 &#038; 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) &#038;&#038; (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c &#038; 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) &#038; 63) | 128);
				utftext += String.fromCharCode((c &#038; 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) &#038;&#038; (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c &#038; 31) << 6) | (c2 &#038; 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c &#038; 15) << 12) | ((c2 &#038; 63) << 6) | (c3 &#038; 63));
				i += 3;
			}

		}

		return string;
	}

}
</pre>
<p>Pueden ver el demo <a href="http://www.webtoolkit.info/demo/javascript/base64/demo.html">aquí</a>. Yo e creado un formulario y pueden verlo funcionando <a href="http://www.brianur.info/conversor-base64/">aquí</a>.</p>
<pre lang="HTML">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <!--aquí deben especificar el nombre del archivo que contiene el Javascript, en este caso b64.js-->
    <script type="text/javascript" src="b64.js"></script>
</head>
<body>
<form action="">

      <textarea name="convert" cols="50" rows="7" id="convert"></textarea>
    
<input type="button" value="Encode" onclick="this.form.convert.value=(Base64.encode(this.form.convert.value))" />
<input type="button" value="Decode" onclick="this.form.convert.value=(Base64.decode(this.form.convert.value))" />
    <label>
<input type="reset" name="Reset" id="Reset" value="Reset" />
    </label>
    
</form>

</body>
</html>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.brianur.info/base64-en-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 2/21 queries in 0.012 seconds using disk: basic
Object Caching 791/832 objects using disk: basic

Served from: www.brianur.info @ 2012-02-05 05:06:42 -->
