<?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>techniq.mx &#187; Mootools</title>
	<atom:link href="http://techniq.mx/category/mootools/feed/" rel="self" type="application/rss+xml" />
	<link>http://techniq.mx</link>
	<description>Pequeñas dosis de la programación nuestra de cada día  </description>
	<lastBuildDate>Wed, 21 Jul 2010 17:55:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Ocultar/Mostrar</title>
		<link>http://techniq.mx/2007/08/ocultarmostrar/</link>
		<comments>http://techniq.mx/2007/08/ocultarmostrar/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 17:52:00 +0000</pubDate>
		<dc:creator>danielniquet</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://techniq.softr.net/2007/08/21/ocultarmostrar/</guid>
		<description><![CDATA[Esto es algo bien útil a la hora de estar desarrollando una web o un sistema. Normalmente se podría hacer algo cómo esto en javascript: caso 1: Si se requiere ocultar si está visible, y hacer visible si está oculto. function toggle(objID){ document.getElementById(objID).style.display = (document.getElementById(objID).style.display == ''?'none':''); } Se usaría así: toggle('idOcultar'); Caso 2: Si [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="position: absolute; top: 75px; left: 2px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniq.mx%2F2007%2F08%2Focultarmostrar%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniq.mx%2F2007%2F08%2Focultarmostrar%2F&amp;source=techniqmx&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<div style="font-size: 12px">
<pre class="javascript">Esto es algo bien útil a la hora de estar desarrollando una web o un sistema. Normalmente se podría hacer algo cómo esto en javascript:</pre>
<pre class="javascript"></pre>
<ul>
<li>
<pre class="javascript"><strong>caso 1: </strong>Si se requiere ocultar si está visible, y hacer visible si está oculto.</pre>
</li>
</ul>
<pre class="javascript"><strong>function toggle(objID){
	document.getElementById(objID).style.display = (document.getElementById(objID).style.display == ''?'none':'');
}</strong></pre>
<pre class="javascript">Se usaría así:  <strong>toggle('idOcultar');</strong></pre>
<ul>
<li>
<pre class="javascript"><strong>Caso 2:</strong> Si se require ocultar o mostrar en cualquier momento, es algo parecido</pre>
</li>
</ul>
<pre class="javascript"><strong>function show(objID, isShow){
	document.getElementById(objID).style.display = (isShow?'':'none');
}</strong></pre>
<pre class="javascript">Se usaría así:	<strong>show('idOcultar',true)</strong> //Para mostrar
		<strong>show('idOcultar',false)</strong> //Para ocultar</pre>
<ul>
<li>
<pre class="javascript"><strong>Caso 3: </strong>Si se cuenta con mootools, el procedimiento se vuelve más agradable</pre>
</li>
</ul>
<pre class="javascript"></pre>
<pre class="javascript"><strong>Element.<span class="me1">extend</span><span class="br0">(</span><span class="br0">{</span>
	show: <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{ </span><span class="kw1">this</span>.<span class="me1">setStyle</span><span class="br0">(</span>"display", ""<span class="br0">)</span>;<span class="br0">}</span>,
	hide: <span class="kw2">function</span><span class="br0">(</span><span class="br0">)</span><span class="br0">{ </span><span class="kw1">this</span>.<span class="me1">setStyle</span><span class="br0">(</span>"display", "none"<span class="br0">)</span>;<span class="br0">}</span>	<span class="br0"></span>
<span class="br0">}</span><span class="br0">);</span></strong></pre>
<pre class="javascript">Y su uso, que es la parte agradable, sería así:
	<strong>$('idOcultar).show();</strong> //Para mostrar
	<strong>$('idOcultar).hide();</strong> //Para ocultar</pre>
<ul>
<li>
<pre class="javascript">(actualización) caso 4: controlarlo con css</pre>
</li>
</ul>
<p style="font-size: 12px">No sé cómo se me fue esta, ya que es la que utilizo, pero muchas gracias <a href="http://inventa-design.net/blog/">proclamo </a>por  su comentario. La función toggleClass de mootools agrega una clase a un elemento si es que no existe, y si es así, la quita de ahí. de tal forma que no ocuparíamos una función adicional, solamente</p>
<p style="font-size: 12px">&nbsp;</p>
<pre class="javascript">	<strong>$('idOcultar).toggleClass('hidden'); </strong></pre>
<p>//Si ya cuenta con la clase la quita, mostrando así el elemento, y si no cuenta con la clase, la agrega, ocultando el elemento.</p>
<pre class="javascript">	Adicionalmente, necesitamos un estillo css como este</pre>
<pre class="javascript">	<strong>.hidden{ display:none; }</strong></pre>
<pre class="javascript">Esto es para que funcione como el caso 1. Si queremos forzar a mostrar, o a ocultar, como los casos 2 y 3, entonces:</pre>
<pre class="javascript">	<strong>$('idOcultar).addClass('hidden');</strong> //forza a ocultar</pre>
<pre class="javascript">	<strong>$('idOcultar).removeClass('hidden');</strong> //forza a mostrar</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://techniq.mx/2007/08/ocultarmostrar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>hyphenate de MooTools en PHP</title>
		<link>http://techniq.mx/2007/07/hyphenate-de-mootools-en-php/</link>
		<comments>http://techniq.mx/2007/07/hyphenate-de-mootools-en-php/#comments</comments>
		<pubDate>Thu, 19 Jul 2007 16:26:51 +0000</pubDate>
		<dc:creator>danielniquet</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://techniq.softr.net/2007/07/19/hyphenate-de-mootools-en-php/</guid>
		<description><![CDATA[Hace un rato terminaba un sitio, en el que por cuestiones de logística requería convertir una cadena con nomenclatura &#8220;camelCased&#8221; a una cadena del tipo &#8220;hyphen-ated&#8221;. No tengo la menor idea que signifiquen esos términos. Básicamente la necesidad es pasar cadenas del tipo &#8220;yoLeoTechniqCadaDia&#8221; a cadenas del tipo &#8220;Yo leo techniq cada dia&#8221;. En MooTools [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="position: absolute; top: 75px; left: 2px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniq.mx%2F2007%2F07%2Fhyphenate-de-mootools-en-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniq.mx%2F2007%2F07%2Fhyphenate-de-mootools-en-php%2F&amp;source=techniqmx&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hace un rato terminaba un sitio, en el que por cuestiones de logística requería convertir una cadena con nomenclatura &#8220;camelCased&#8221; a una cadena del tipo &#8220;hyphen-ated&#8221;. No tengo la menor idea que signifiquen esos términos. Básicamente la necesidad es pasar cadenas del tipo &#8220;yoLeoTechniqCadaDia&#8221; a cadenas del tipo &#8220;Yo leo techniq cada dia&#8221;. En MooTools es cosa sencilla, haciendo lo siguiente:</p>
<p>[js]&#8220;yoLeoTechniqCadaDia2000&#8243;.hyphenate(); //la salida es: &#8220;Yo-Leo-Techniq-Cada-Dia2000&#8243;[/js]</p>
<p>El problema es que yo lo quería  hacer con php, y además no quería los guiones, ni las mayúsculas, excepto por la primera; y además que si hay una cadena que comience por número, haga lo mismo. Comencé a hacer una función que haga dicho proceso. Pero me dije: &#8211; Tiene que haber una manera sencilla, así que procedí a hacer lo propio. Buscar en <a href="http://www.google.com" title="San Google">San Google</a>. Y efectivamente, encontré la manera exacta de hacer lo que necesitaba. De la siguiente forma:</p>
<p>[php]echo ucfirst(strtolower(ereg_replace(&#8220;([A-Z])|([0-9].+)&#8221;,&#8221; \\0&#8243;,&#8221;yoLeoTechniqCadaDia2000&#8243;)));<br />
// Efectivamente, eso me devuelve lo buscado, &#8220;Yo leo techniq cada dia 2000&#8243;<br />
[/php]</p>
<p>Explicando brevemente la línea, lo que hace es buscar un patrón a partir de una expresión regular, en este caso  busca cualquier letra mayúscula de la A a la Z, ó una cadena que comience con un número, dentro de la cadena de texto que se le pasa como tercer parámetro a la función ereg_replace. Una vez que encuentra el patrón, lo sistutuye por lo mismo que se encontró, pero antecedido por un espacio. Luego, a esto que se obtuvo, se le aplica la función strtolower que se encarga de pasarnos toda la cadena de texto a minúsculas. Y por último, le aplicamos mayúscula sólo a la primer letra de la cadena resultante, con la función de php &#8220;ucfirst&#8221;.</p>
<p>Eso es todo, ese renglón me sacó de un gran apuro.  La instrucción puede ser tremendamente útil, y muy variada, con tan sólo cambiar la expresión regular por otra. Ya depende de lo que se necesite hacer, y utilizando un poco de creatividad.</p>
]]></content:encoded>
			<wfw:commentRss>http://techniq.mx/2007/07/hyphenate-de-mootools-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validador de Calidad de contraseñas</title>
		<link>http://techniq.mx/2007/07/validador-de-calidad-de-contrasenas/</link>
		<comments>http://techniq.mx/2007/07/validador-de-calidad-de-contrasenas/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 21:26:19 +0000</pubDate>
		<dc:creator>danielniquet</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>

		<guid isPermaLink="false">http://techniq.softr.net/2007/07/16/validador-de-calidad-de-contrasenas/</guid>
		<description><![CDATA[Nuevamente Luis Sacristán de Sentido Web al ataque. Ahora con este laboratorio donde nos muestra el código para mostrar la valoración de las contraseñas, para conocer la calidad de las mismas. No por haber escrito antes algo sobre Luis Sacristán quiere decir que soy una clase de fan o algo así. El motivo tan sólo [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="position: absolute; top: 75px; left: 2px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniq.mx%2F2007%2F07%2Fvalidador-de-calidad-de-contrasenas%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniq.mx%2F2007%2F07%2Fvalidador-de-calidad-de-contrasenas%2F&amp;source=techniqmx&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Nuevamente <a href="http://sentidoweb.com/about/" title="Luis Sacristan"><span class="authorpost">Luis Sacristán</span></a> de <a href="http://sentidoweb.com/">Sentido Web</a> al ataque. Ahora con<a href="http://sentidoweb.com/2007/07/16/laboratorio-indicador-de-calidad-de-password.php" title="Indicador de Calidad de Contraseñas"> este laboratorio</a> donde <a href="http://sentidoweb.com/2007/07/16/laboratorio-indicador-de-calidad-de-password.php" title="Indicador de Calidad de Contraseñas">nos muestra el código</a> para mostrar la valoración de las contraseñas, para conocer la calidad de las mismas. No por <a href="http://techniq.softr.net/2007/06/20/contador-de-caracteres-en-un-textarea/">haber escrito  antes</a> algo sobre Luis Sacristán quiere decir que soy una clase de fan o algo así. El motivo tan sólo es que escribe mucho código MooToorizable, como el caso de este indicador de calidad  de contraseñas.</p>
<p>El código original estaba muy bueno, muy limpio&#8230; Aún así, creo que con el querido por todos (los que lo hemos usado) MooTools viene mucho mejor. La mejor parte creo que es cuando se maneja la parte del color.</p>
<p>antes de MooTools:</p>
<p>[js]<br />
 getColor: function(porc) {<br />
    var color = new Array();<br />
    var color1 = porc < 50? __PASSWORD__.colorKO:__PASSWORD__.color50;<br />
    var color2 = porc < 50? __PASSWORD__.color50:__PASSWORD__.colorOK;<br />
    color[0] = parseInt(color1[0]-((color1[0] -color2[0])*porc/100));<br />
    color[1] = parseInt(color1[1]-((color1[1] -color2[1])*porc/100));<br />
    color[2] = parseInt(color1[2]-((color1[2] -color2[2])*porc/100));</p>
<p>    return color;<br />
  }<br />
[/js]</p>
<p>y ya MooToorizado:</p>
<p>[js]<br />
getColor: function(porc) {<br />
	return new Color(__PASSWORD__.colorKO).mix(__PASSWORD__.colorOK,porc);<br />
  },<br />
[/js]</p>
<p>El truco del indicador, es una imagen que funge como máscara para sólo permitir ver parte del background del control Input.</p>
<p><a href="http://techniq.softr.net/samples/password/">El ejemplito completo aquí&#8230;.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://techniq.mx/2007/07/validador-de-calidad-de-contrasenas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bug de Internet Explorer con MooTools</title>
		<link>http://techniq.mx/2007/06/bug-de-internet-explorer-con-mootools/</link>
		<comments>http://techniq.mx/2007/06/bug-de-internet-explorer-con-mootools/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 19:50:05 +0000</pubDate>
		<dc:creator>danielniquet</dc:creator>
				<category><![CDATA[Dimensión desconocida]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>

		<guid isPermaLink="false">http://techniq.softr.net/2007/06/26/bug-de-internet-explorer-con-mootools/</guid>
		<description><![CDATA[Estaba preparando un script hace un rato, y cuando quedó listo en Mozilla Firefoz y lo quise probar en Microsoft Internet Explorer, me sucedió algo rarísimo, no jaló!!!!!! Era una simple instrucción como la siguiente: div2=new Element(&#8216;div&#8217;); Después de un exhaustivo proceso de depuración, me dí cuenta que se corregía al poner var div2=new Element(&#8216;div&#8217;); [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="position: absolute; top: 75px; left: 2px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniq.mx%2F2007%2F06%2Fbug-de-internet-explorer-con-mootools%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniq.mx%2F2007%2F06%2Fbug-de-internet-explorer-con-mootools%2F&amp;source=techniqmx&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Estaba preparando un script hace un rato, y cuando quedó listo en Mozilla Firefoz y lo quise probar en Microsoft Internet Explorer, me sucedió algo rarísimo, no jaló!!!!!!</p>
<p>Era una simple instrucción como la siguiente:</p>
<p><strong>div2=new Element(&#8216;div&#8217;);</strong></p>
<p>Después de un exhaustivo proceso de depuración, me dí cuenta que se corregía al poner</p>
<p><strong>var div2=new Element(&#8216;div&#8217;);</strong></p>
<p>Sólo hacía falta declarar la variable. Sé que es lo correcto, una variable debe inicializarse para definir el alcance, en este caso yo lo tenía dentro de un método de un objeto de Javascript , y pues se me pasó poner la definición <strong>var</strong>, cómo muchas otras cosillas que de repente a los programadores se nos pasan, pero por la flexibilidad de los lenguajes de programación o los navegadores de Internet nos dan. En fin, no indagaré más en el bug, simplemente declararé las variables donde tenga que hacerlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://techniq.mx/2007/06/bug-de-internet-explorer-con-mootools/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Contador de caracteres en un Textarea</title>
		<link>http://techniq.mx/2007/06/contador-de-caracteres-en-un-textarea/</link>
		<comments>http://techniq.mx/2007/06/contador-de-caracteres-en-un-textarea/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 14:47:27 +0000</pubDate>
		<dc:creator>danielniquet</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Recursos Web]]></category>

		<guid isPermaLink="false">http://techniq.softr.net/2007/06/20/contador-de-caracteres-en-un-textarea/</guid>
		<description><![CDATA[En Sentido Web publican esta entrada en la cual muestran el código con el que por medio de Javascript controlan el número de teclas pulsadas, con el fin de limitar el número de caracteres de entrada. Esto es útil sobre todo cuando la información que se está escribiendo se va directo a un campo de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="position: absolute; top: 75px; left: 2px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniq.mx%2F2007%2F06%2Fcontador-de-caracteres-en-un-textarea%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniq.mx%2F2007%2F06%2Fcontador-de-caracteres-en-un-textarea%2F&amp;source=techniqmx&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>En <a href="http://sentidoweb.com/">Sentido Web</a> publican <a href="http://sentidoweb.com/2007/06/15/controlar-el-numero-de-teclas-de-un-textarea.php">esta entrada</a> en la cual muestran el código con el que por medio de <a href="http://es.wikipedia.org/wiki/Javascript">Javascript </a>controlan el número de teclas pulsadas, con el fin de limitar el número de caracteres de entrada. Esto es útil sobre todo cuando la información que se está escribiendo se va directo a un campo de la base de datos, que esté limitado a un tamaño, y así hacer una buena validación de entrada a la base de datos. Bien, pues el ejemplo no impide que se continue escribiendo, pero si te indica con una barra en color rojo cuando te pasaste, y así permitirte reducir el texto deseado a fin e dejarlo en la longitud deseada. <a href="http://sentidoweb.com/2007/06/15/controlar-el-numero-de-teclas-de-un-textarea.php"><span class="authorpost">Luis Sacristán</span> lo explica</a> a detalle.</p>
<p>Lo que procedemos hacer acontinuación tomando como base el ejemplo de Luis Sacristán, y para todos aquellos que como yo ya no saben escribir Javascript sino MooTools, es Mootoorizar el ejemplo de la siguiente manera:</p>
<p>HTML____________________________________</p>
<p>[html]</p>
<div class="contenedor">
	<textarea id="txtArea"></textarea></p>
<div id="progreso">&nbsp;</div>
</div>
<p>[/html]</p>
<p>JAVASCRIPT_______________________________</p>
<p>[js]<br />
var Site={<br />
		max:250,<br />
		w:300,<br />
		start:function(){<br />
			var args=[$('progreso'), textarea=$('txtArea')];<br />
			textarea.addEvent(&#8216;keyup&#8217;,Site.progreso_tecla.pass(args)).fireEvent(&#8220;keyup&#8221;, args);<br />
		},<br />
		progreso_tecla:function(progreso,obj){<br />
			  progreso.setStyles(<br />
				(obj.value.length < Site.max)?<br />
					{backgroundPosition:"-"+(Site.w-((Site.w*obj.value.length.toInt())/Site.max).toInt())+"px 0px", backgroundColor:'#FFF',backgroundImage:'url(textarea.png)',color:'#000'}:<br />
					{backgroundColor:'#C00',backgroundImage:'url()',color:'#fff'}<br />
			  ).setHTML("("+obj.value.length+" / "+Site.max+")");<br />
		}<br />
	}<br />
	window.addEvent('domready',Site.start);<br />
[/js]</p>
<p><a href="http://techniq.softr.net/samples/textArea/" target="_blank">El ejemplo corriendo aqui.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://techniq.mx/2007/06/contador-de-caracteres-en-un-textarea/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Progress Bar con Mootools</title>
		<link>http://techniq.mx/2007/06/progress-bar-con-mootools/</link>
		<comments>http://techniq.mx/2007/06/progress-bar-con-mootools/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 15:34:43 +0000</pubDate>
		<dc:creator>danielniquet</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Recursos Web]]></category>

		<guid isPermaLink="false">http://techniq.softr.net/2007/06/11/progress-bar-con-mootools/</guid>
		<description><![CDATA[Las barras de progreso han sido muy útiles desde que los sistemas de cómputo existen, o por lo menos desde que yo recuerdo que me inicié en este mundo del desarrollo de software mas o menos hace unos 15 años (ouch!!). Sirven básicamente para indicarle al usuario cuanto falta para que cargue lo que desea [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="position: absolute; top: 75px; left: 2px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ftechniq.mx%2F2007%2F06%2Fprogress-bar-con-mootools%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ftechniq.mx%2F2007%2F06%2Fprogress-bar-con-mootools%2F&amp;source=techniqmx&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><script src="http://techniq.softr.net/assets/progressBar.js" type="text/javascript"></script>Las barras de progreso han sido muy útiles desde que los sistemas de cómputo existen, o por lo menos desde que yo recuerdo que me inicié en este mundo del desarrollo de software mas o menos hace unos 15 años (ouch!!). Sirven básicamente para indicarle al usuario cuanto falta para que cargue lo que desea accesar. Bueno, pues ahora explicaré cómo hacer de manera sencilla una barra de progreso con el siempre fiel Mootools.</p>
<p>Comenzaremos escribiendo el html. Tan sólo se requiere de un contenedor para la barra, y un botón que activará la barra de progreso. Quedaría de la siguiente forma:</p>
<p>HTML |___________________<br />
<small>&lt;div id=&#8221;divProgressBar&#8221;&gt; &lt;/div&gt;<br />
barra de progreso<br />
&lt;button id=&#8221;btnBegin&#8221;&gt;Iniciar&lt;/button&gt;</small></p>
<p>Sería todo el html necesario para nuestra barra de progreso. Ahora, lo divertido&#8230; el javascript, o el mootools, ya no recuerdo muy bien cómo se llama <img src='http://techniq.mx/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>JAVASCRIPT|______________</p>
<ul>
<li><strong> Primero, definiriamos la clase</strong></li>
</ul>
<p><small>var progressBar = new Class({<br />
initialize: function(){<br />
}<br />
});</small></p>
<ul>
<li><strong> Luego <small>initialize:</small></strong></li>
</ul>
<p><small>     initialize: function(id,opt){<br />
this.id = $(id);  //El objeto que fungirá como barra de progreso<br />
this.options=new $H({ //Hacemos un objeto &#8216;options&#8217;, con las características que la barra tendrá por default<br />
width:100, //ancho de la barra de progreso<br />
background: &#8216;#eee&#8217;, //color de fondo de la barra de progreso<br />
border:&#8217;1px solid #999&#8242;, //borde de la barra de progreso<br />
barBackground:&#8217;#0f0&#8242;, //color de fondo de la barra de progreso<br />
barInc:1 //incremento de avance en la barra<br />
});</small></p>
<p><small>    this.options.extend(opt); //extendemos las opciones, si es que le enviamos al crear la instancia de la clase<br />
this.options=this.options.obj; //le pasamos el objeto generado a la variable options<br />
this.setBeauty(); //método que utilizaremos para crear y estilizar la barra<br />
this.go(0); //método encargado de la magia<br />
}</small></p>
<ul>
<li><strong>una maquilladita, setBeauty</strong></li>
</ul>
<p><small><br />
setBeauty: function(){<br />
this.divBar=new Element(&#8216;div&#8217;,{ // creamos la barra que mostrará el progreso<br />
&#8216;styles&#8217;:{ //la maquillamos<br />
width:0,<br />
</small><small>                    top:0<br />
</small><small>                    background:this.options.barBackground,<br />
position:&#8217;absolute&#8217;,<br />
}<br />
}).setHTML(&#8216; &#8216;);<br />
this.id.adopt(this.divBar); // La insertamos en el contenedor<br />
this.id.setStyles({ // Maquillamos el contenedor<br />
width: this.options.width,<br />
background: this.options.background,<br />
border: this.options.border,<br />
position:&#8217;relative&#8217;<br />
});<br />
}</small></p>
<ul>
<li><strong> La magia, go()</strong></li>
</ul>
<p><small>        go: function(w){<br />
this.divBar.setStyle(&#8216;width&#8217;,w); // ajustamos el ancho del div que muestra el progreso<br />
if(w&lt;this.options.width)<br />
this.go.pass(w+this.options.barInc,this).delay(10); // si aún no se completa, seguimos llamando al método go. Aquí utilizo delay para fines demostrativos.<br />
else<br />
this.divBar.setHTML(&#8216;Listo!!!&#8217;); // Acción a ejecutar tras completar la barra<br />
}</small></p>
<ul>
<li><strong>Instancear la clase, y crear el evento para llamarla</strong></li>
</ul>
<p><small>Site={<br />
start:function(){<br />
$(&#8216;btnBegin&#8217;).addEvent(&#8216;click&#8217;,function(){ // se añade evento click al botón que iniciará el progreso<br />
new progressBar(&#8216;divProgressBar&#8217;,{width:200, barBackground:&#8217;#00f&#8217;, barInc:5}); //se hace instancia a la clase, pasandole como argumentos el id del div contenedor, y las opciones<br />
});<br />
}<br />
}<br />
window.addEvent(&#8220;domready&#8221;, Site.start); // una vez listo el DOM, llamamos la función que prepara el evento del botón</small></p>
<ul>
<li><strong>Listo, ahora veamos cómo funciona:</strong></li>
</ul>
<p id="divProgressBar">&nbsp;</p>
<p>new progressBar(&#8216;divProgressBar&#8217;); //Default<br />
<button id="btnBegin">Iniciar</button></p>
<p id="divProgressBar1">&nbsp;</p>
<p>new progressBar(&#8216;divProgressBar1&#8242;,{width:400, barBackground:&#8217;#7394B8&#8242;, barInc:10, border:&#8217;2px outset #23405F&#8217;});<br />
<button id="btnBegin1">Iniciar</button></p>
<p id="divProgressBar2">&nbsp;</p>
<p>new progressBar(&#8216;divProgressBar2&#8242;,{width:200, barBackground:&#8217;#ccc url(http://techniq.softr.net/assets/bgProgressBar.png) repeat-x&#8217;, barInc:5}); // con una imagen de fondo<br />
<button id="btnBegin2">Iniciar</button></p>
<ul>
<li><strong>Código completo:</strong></li>
</ul>
<p><small><br />
&lt;head&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=iso-8859-1&#8243; /&gt;<br />
&lt;title&gt;SOFTr ProgressBar&lt;/title&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;mootools11.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
var progressBar = new Class({<br />
initialize: function(id,opt){<br />
this.id = $(id);<br />
this.options=new $H({<br />
width:100,<br />
background: &#8216;#eee&#8217;,<br />
border:&#8217;1px solid #999&#8242;,<br />
barBackground:&#8217;#0f0&#8242;,<br />
barInc:1<br />
});</small></p>
<p><small>this.options.extend(opt);<br />
this.options=this.options.obj;<br />
this.setBeauty();<br />
this.go(0);<br />
},<br />
setBeauty: function(){<br />
this.divBar=new Element(&#8216;div&#8217;,{<br />
&#8216;styles&#8217;:{<br />
width:0,<br />
background:this.options.barBackground,<br />
position:&#8217;absolute&#8217;,<br />
top:0<br />
}<br />
}).setHTML(&#8216; &#8216;)<br />
this.id.adopt(this.divBar);<br />
this.id.setStyles({<br />
width: this.options.width,<br />
background: this.options.background,<br />
border: this.options.border,<br />
position:&#8217;relative&#8217;<br />
});<br />
},<br />
go: function(w){<br />
this.divBar.setStyle(&#8216;width&#8217;,w);<br />
if(w&lt;this.options.width)<br />
this.go.pass(w+this.options.barInc,this).delay(10);<br />
else<br />
this.divBar.setHTML(&#8216;Listo!!!&#8217;);</small></p>
<p><small>}<br />
});<br />
Site={<br />
start:function(){<br />
</small><br />
$(&#8216;btnBegin&#8217;).addEvent(&#8216;click&#8217;,function(){<br />
new progressBar(&#8216;divProgressBar&#8217;);<br />
});<br />
$(&#8216;btnBegin1&#8242;).addEvent(&#8216;click&#8217;,function(){<br />
new progressBar(&#8216;divProgressBar1&#8242;,{width:400, barBackground:&#8217;#7394B8&#8242;, barInc:10, border:&#8217;2px outset #23405F&#8217;});<br />
});<br />
$(&#8216;btnBegin2&#8242;).addEvent(&#8216;click&#8217;,function(){<br />
new progressBar(&#8216;divProgressBar2&#8242;,{width:200, barBackground:&#8217;#ccc url(http://techniq.softr.net/assets/bgProgressBar.png) repeat-x&#8217;, barInc:5});<br />
});<br />
<small><br />
}<br />
}<br />
window.addEvent(&#8220;domready&#8221;, Site.start);<br />
&lt;/script&gt;<br />
&lt;/head&gt;</small></p>
<p><small>&lt;body&gt;<br />
&lt;div id=&#8221;divProgressBar&#8221;&gt; &lt;/div&gt;<br />
barra de progreso<br />
&lt;button id=&#8221;btnBegin&#8221;&gt;Iniciar&lt;/button&gt;<br />
&lt;/body&gt;</small></p>
<ul>
<li> <strong><a href="http://techniq.softr.net/assets/progressBar.zip" target="_blank">Descargar ejemplo</a></strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://techniq.mx/2007/06/progress-bar-con-mootools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
