<?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>Craftyman Blog &#187; Prototype</title>
	<atom:link href="http://craftyman.net/category/desarrollo-web/prototype/feed/" rel="self" type="application/rss+xml" />
	<link>http://craftyman.net</link>
	<description>Redes Sociales, WordPress, Desarrollo Web, SEO</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:57:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Anatips: tooltip para Prototype</title>
		<link>http://craftyman.net/anatips-tooltip-para-prototype/</link>
		<comments>http://craftyman.net/anatips-tooltip-para-prototype/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 14:04:46 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=162</guid>
		<description><![CDATA[<div style="text-align:center">
<img src="http://craftyman.net/wp-content/uploads/2008/11/Picture_1.png" title="Anatips" />
</div>
<p><a href="http://www.anaema.com/the_smallest_unbloated_tooltips_library.html">Anatips</a> es una librer&iacute;a para hacer tooltips y es muy sencillo de utilizar.
Ha sido probado con Firefox 2+, IE 6+, Opera 9+, y Safari 3.1</p>
<p>Ahora explicaremos como implementarlo en una imagen, para este ejemplo utilizaremos <a href="http://www.prototypejs.org/">Prototype 1.6.0.</a> Para ello descargaremos Anatips desde aqui, que nos vendr&aacute; con Prototype.</p>
<p>Crearemos un archivo <em>.html</em> en incluiremos en el <em>head</em> los javascript y CSS</p>
<pre class="html" name="code">
&lt;script src="builder.js type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="prototype.js type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="anatips.js type="text/javascript"&gt;&lt;/script&gt;
&lt;link href="anatips.css" media="screen" type="text/css" /&gt;
</pre>

<p>Dentro del body incluiremos una imagen con <em>class="anatips"</em> y con <em>title="Descripci&oacute;n Tooltip"</em>, el <em>class</em> sera para
identificar que el <em>title</em> debe mostrase como el estilo <strong>tooltip</strong> de <strong>Anatips</strong>.</p>
<pre class="html" name="code">
&lt;img src="foo.jpg" class="anatips" title=""/&gt;
</pre>
Eso es todo, muy simple verdad?
<p><strong>Recursos</strong></p>
<ul>
<li><a href="http://craftyman.net/demos/anatips/index.html">Ver Demo</a></li>
<li><a href="http://www.anaema.com/anatips.zip">Descargar Anatips</a></li>
</ul><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/top-10-librerias-graficos-php/" title="Top 10 librerías para gráficos en php">Top 10 librerías para gráficos en php</a></li><li class="rltpost"><a href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/" title="5 librerías para generar PDF con PHP">5 librerías para generar PDF con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/mvc-en-php/" title="Tutorial MVC con PHP">Tutorial MVC con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/tabs-css-simples-con-jquery/" title="Tabs CSS simples con jQuery">Tabs CSS simples con jQuery</a></li><li class="rltpost"><a href="http://craftyman.net/mostrar-archivos-ocultos-en-mac/" title="Mostrar archivos ocultos en Mac">Mostrar archivos ocultos en Mac</a></li><li class="rltpost"><a href="http://craftyman.net/20-plantillas-css-gratuitas/" title="20 Plantillas CSS Gratuitas">20 Plantillas CSS Gratuitas</a></li><li class="rltpost"><a href="http://craftyman.net/el-mejor-ide-para-php/" title="El mejor IDE para PHP">El mejor IDE para PHP</a></li><li class="rltpost"><a href="http://craftyman.net/10-excelentes-plugins-jquery-para-formularios/" title="10 Excelentes plugins jQuery para formularios">10 Excelentes plugins jQuery para formularios</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/anatips-tooltip-para-prototype/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Multidropdown: menus relacionales con Prototype</title>
		<link>http://craftyman.net/multidropdown-menus-relacionales-con-prototype/</link>
		<comments>http://craftyman.net/multidropdown-menus-relacionales-con-prototype/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 14:29:33 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JSON]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=160</guid>
		<description><![CDATA[<div style="text-align:center">
<img src="http://javascript.crockford.com/json160.gif" />
</div>
<p><strong>MultiDropDown</strong> es un script  para realizar la tarea de convertir una respuesta json en 
elementos de un dropdown, y poder construir dropdowns relacionales. Este script esta probado en distintos navegadores<em>(Firefox 2+, IE 6+, Safari 9+)</em>.</p>
<p><strong>Caracter&iacute;sticas</strong></p>

<ul>
<li>Su implementaci&oacute;n es muy sencilla.</li>
<li>El dropdown puede ser totalmente modificable.</li>
<li>Soporta dropdowns dependientes.</li>
</ul>
<p><strong>Implementaci&oacute;n</strong></p>
<p>Para este ejemplo utilizaremos <strong>PHP</strong> y <strong>MySQL</strong>, primero entramos a un administrador para <strong>MySQL</strong>, sea <strong>PHPMyAdmin</strong> u otro y ejecutamos este script.</p>
<pre class="sql" name="code">
CREATE DATABASE `librerias` ;

CREATE TABLE `librerias`.`lista` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nombre` VARCHAR( 50 ) NOT NULL
) 

CREATE TABLE `librerias`.`detalle` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`lista_id` INT NOT NULL ,
`nombre` VARCHAR( 50 ) NOT NULL
) 

INSERT INTO lista(id ,nombre)
VALUES 
('1', 'Javascript'), 
('2', 'CSS'), 
('3', 'PHP'),

INSERT INTO detalle(`id` ,`lista_id` ,`nombre`)
VALUES 
('1', '1', 'Prototype'),
('2', '1', 'Mootools'),
('3', '1', 'jQuery'),
('4', '1', 'YUI'),
('5', '1', 'Dojo'),
('6', '2', 'BluePrint'),
('7', '2', 'DockMenu'),
('8', '2', 'Multibox'),
('9', '3', 'CSS dropdown Menu'),
('10', '3', 'FPDF'),
('11', '3', 'JPGraph'),
('12', '3', 'PHPLinq'),
('13', '3', 'PHPMailer');
</pre>
<p>Este script creara una DB<em>(librerias)</em>, dos tablas <em>(lista y detalle)</em> y llenara con algunos registros las tablas. La tabla detalle es dependiente de lista  por en campo <em>lista_id</em>.</p>
<p>Ahora construiremos dos archivos <strong>.php</strong> <em>(json_lista.php y json_detalle.php)</em>, en los cuales incluiremos este c&oacute;digo respectivamente.</p>
<pre class="php" name="code">
// json_lista.php
//incluimos la conexion
require 'cn.php'; 
//guardamos la consulta
$query = "SELECT *FROM lista";
//ejecutamos la consulta
$rs = mysql_query($query);
$rows=array();
//recorremos los registros retornados
while($row=mysql_fetch_assoc($rs))
{
	$rows[]=$row;
}
//devolvemos en formato json la data
echo json_encode($rows);
</pre>
<pre class="php" name="code">
// json_detalle.php
//incluimos la conexion
require 'cn.php';
//recibimos el par&aacute;metro (lista_id)
$param = (int)$_REQUEST['id'];
$rows=array();
//verificamos el parametro
if ($param!=0)
{
	//guardamos la consulta
	$query = "SELECT *FROM detalle WHERE lista_id='$param'";
	//ejecutamos la consulta
	$rs = mysql_query($query);
	//recorremos los registros retornados	
	while($row=mysql_fetch_assoc($rs)){
		$rows[]=$row;
	}	
}
//devolvemos en formato json la data
echo json_encode($rows);
</pre>
<p>Eso es todo del lado del servidor, este es un ejemplo claro en el &aacute;mbito del trabajo.
Ahora pasemos a la vista del usuario con el <em>html</em>.</p>
<p>Primero debemos incluir la librer&iacute;a <strong><a href="http://craftyman.net/demos/multidropdown/prototype.js">Prototype.js</a></strong> y <strong><a href="http://craftyman.net/demos/multidropdown/multidropdown.js">multidropdown.js</a></strong> en el <em>head</em> de tu pagina web.</p>
<pre class="html" name="code">
&lt;script src=&quot;prototype.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;>
&lt;script src=&quot;multidropdown.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>
<p>Ahora pondremos dos dropdown, uno sera la lista cabecera y la otra sera su detalle la cual se llenara nuevamente en el evento <em>onchange</em> de la cabecera.</p>
<pre class="html" name="code">
Listas 
&lt;select id=&quot;lista&quot; name=&quot;lista&quot;&gt;
&lt;option value=&quot;0&quot;&gt;vacio&lt;/option&gt;
&lt;/select&gt; 
Detalles 
&lt;select id=&quot;deta&quot; name=&quot;deta&quot;&gt;
&lt;option value=&quot;0&quot;&gt;vacio&lt;/option&gt;
&lt;/select&gt;
</pre>
<p>Luego nos queda nada mas que llamar a la funci&oacute;n que generara los dropdown.</p>
<pre class="jscript" name="code">
//parametro url,id_dropdown
getJson('json.php','lista');
//carga de lista dependiente
$('lista').observe('change',
	function(el){ 
		getJson('json2.php','deta',$F('lista')) 
	});
</pre>

<p><strong>Recursos</strong></p>
<ul>
<li><a href="http://craftyman.net/demos/multidropdown/">Ver Demo</a></li>
<li><a href="http://craftyman.net/demos/multidropdown/multidropdown.zip">Descarga Script</a></li>
</ul>
<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/textboxlist-con-autocompleter/" title="TextboxList con Autocompleter">TextboxList con Autocompleter</a></li><li class="rltpost"><a href="http://craftyman.net/obtener-el-numero-de-retweets-de-tweetmeme/" title="Obtener el número de retweets de Tweetmeme">Obtener el número de retweets de Tweetmeme</a></li><li class="rltpost"><a href="http://craftyman.net/detectar-peticiones-ajax-con-php/" title="Detectar peticiones Ajax con PHP">Detectar peticiones Ajax con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/introduccion-a-json/" title="Introduccion a JSON">Introduccion a JSON</a></li><li class="rltpost"><a href="http://craftyman.net/generar-captura-pantalla/" title="Generar Captura de pantalla con Ajax">Generar Captura de pantalla con Ajax</a></li><li class="rltpost"><a href="http://craftyman.net/twittergitter-plugin/" title="TwitterGitter: lista tus tweets con ajax">TwitterGitter: lista tus tweets con ajax</a></li><li class="rltpost"><a href="http://craftyman.net/actualizar-twitter-remotamente-con-php/" title="Actualizar Twitter remotamente con PHP">Actualizar Twitter remotamente con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/mysql-to-json/" title="MySQL to JSON">MySQL to JSON</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/multidropdown-menus-relacionales-con-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype Funciones para Elementos HTML</title>
		<link>http://craftyman.net/prototype-funciones-para-elementos-html/</link>
		<comments>http://craftyman.net/prototype-funciones-para-elementos-html/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 01:35:00 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://craftyman.wordpress.com/2008/07/04/prototype-funciones-utiles/</guid>
		<description><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-67 aligncenter" title="PrototypeJS" src="http://craftyman.net/wp-content/uploads/2008/09/image-2313-2717-prototype_js.gif" alt="" width="200" height="86" /></p>

<strong>Prototype Capitulo 04 - Funciones $A(), $H(), $R(), $w()</strong>

Siguiendo con las funciones útiles: que trae prototype, en este capitulo concluyo con tales,
les dare una explicacion breve y algunos ejemplos con cada funcion.

<strong><span style="text-decoration: underline;">1) Utilizando la funcion $A()</span></strong>

La funcion $A() convierte el argumento pasado por parametro en un objeto array
esta funcion combinada con las extensiones que trae prototype hacen mas facil la conversion
de listas enumerables en objetos Array.
una sugerencia para convertir las listas de nodos DOM (DOM nodeList)en array es que puede
ser trabajado mas eficientemente.

<strong>Html:</strong>
<pre class="html" name="code">&lt;select id="listaEmp" &gt;
&lt;option value="0001"&gt;  Buchanan, Steven    &lt;/option&gt;
&lt;option value="0002"&gt;  Callahan, Laura     &lt;/option&gt;
&lt;option value="0003"&gt;  Davolio, Nancy      &lt;/option&gt;
&lt;/select&gt;
&lt;a onclick="showOptions()"&gt; Show &lt;/a&gt;</pre>
<strong>Javavascript:</strong>
<pre class="jscript" name="code">showOptions =   function()
{
  var opList  =   $('listaEmp').getElementsByTagName('option');
  var ops     =   $A(opList);
  var emps    =   'Lista de Empleados:\n';
  ops.each(
  function(op)
  {
    emps+= op.value+': '+op.innerHTML+'\n';
  }
  );
  alert(emps);
}</pre>
<strong><span style="text-decoration: underline;">2) Utilizando la funcion $H()</span></strong>

Esta funcion convierte un array objeto en un hash enumerable
para usarse por ejemplo en una llamada ajax y pasarsela por parametro

<strong>Javascript:</strong>
<pre class="jscript" name="code">testHash    =   function ()
{
  // Primero creamos el objeto
  var params  =   {
  nombre:     'Cesar',
  apellido:   'Mancilla',
  edad    :   '20'
  };
  // Lo transformamos en un Hash
  var hash    =   $H(params);
  alert(hash.toQueryString());
  // -&gt; nombre=Cesar&amp;apellido=Mancilla&amp;edad=20
}
testHash();</pre>
<strong><span style="text-decoration: underline;">3) Utilizando la funcion $R()</span></strong>

Es el alias para crear un objeto objectrange. Este objeto presenta un rango consecutivo de valores que puede ser numerico,
texto, o otro tipo de valores que semanticamente soporte un rango de valores consecutivos. Veamos algunas de sus
funcionalidades:

<strong>Javascript:</strong>
<pre class="jscript" name="code">// Se muestran una iteracion de alertas con el valor actual.
$R(0,10,false).each(function(valor){alert(valor)})
// el recorrido es de 13 veces
$R(0,10,true).each(function(valor){alert(valor)})
// el recorrido es de 12 veces
// Devuelve un booleano si 10 esta incluido en el rango
var bol = $R(0,10).include(10);
alert(bol);
// La funcion $A()
// convierte el objetrange en un array object
// luego inserta la coma ', '
$A($R(0,10)).join(', ');
//-&gt; '0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10'</pre>
<strong><span style="text-decoration: underline;">4) Utilizando la funcion $w()</span></strong>

Con esta funcion podemos crear un array desde una cadena de texto, por cada palabra agregara un campo mas al array.

<strong>Javascript:</strong>
<pre class="jscript" name="code">labels=$w('blogs css javascript tutoriales')
//-&gt; ['blogs', 'css', 'javascript', 'tutoriales']
// muy util por ejemplo para guardar una pagina
// con varias etiquetas separas por un espacio
// ejm:(delicious)
// y despues grabar cada etiqueta para un link
labels.each(function(element){ // guardarLabels(); })</pre><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/top-10-librerias-graficos-php/" title="Top 10 librerías para gráficos en php">Top 10 librerías para gráficos en php</a></li><li class="rltpost"><a href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/" title="5 librerías para generar PDF con PHP">5 librerías para generar PDF con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/mvc-en-php/" title="Tutorial MVC con PHP">Tutorial MVC con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/tabs-css-simples-con-jquery/" title="Tabs CSS simples con jQuery">Tabs CSS simples con jQuery</a></li><li class="rltpost"><a href="http://craftyman.net/mostrar-archivos-ocultos-en-mac/" title="Mostrar archivos ocultos en Mac">Mostrar archivos ocultos en Mac</a></li><li class="rltpost"><a href="http://craftyman.net/20-plantillas-css-gratuitas/" title="20 Plantillas CSS Gratuitas">20 Plantillas CSS Gratuitas</a></li><li class="rltpost"><a href="http://craftyman.net/el-mejor-ide-para-php/" title="El mejor IDE para PHP">El mejor IDE para PHP</a></li><li class="rltpost"><a href="http://craftyman.net/10-excelentes-plugins-jquery-para-formularios/" title="10 Excelentes plugins jQuery para formularios">10 Excelentes plugins jQuery para formularios</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/prototype-funciones-para-elementos-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype : Funciones DOM</title>
		<link>http://craftyman.net/prototype-funciones-dom/</link>
		<comments>http://craftyman.net/prototype-funciones-dom/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 22:16:00 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://craftyman.wordpress.com/2008/06/10/prototype-funciones-dom/</guid>
		<description><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-67 aligncenter" title="PrototypeJS" src="http://craftyman.net/wp-content/uploads/2008/09/image-2313-2717-prototype_js.gif" alt="" width="200" height="86" /></p>

<h3>Prototype Capitulo 03 - Utilizando la funcion $$()</h3>
A veces las usuales herramientas del artesanal DOM
<ul>
	<li>document.getElementById()</li>
	<li>document.getElementsByTagName()</li>
	<li>document.getelementsByClassName()</li>
</ul>
no son suficientes para encontrar rapidamente nuestros elementos o colecciones de elementos. Si conoces la la estructura de arbol de DOM sencillamente puedes recurrir a las CSS selectores para realizar un determinado trabajo.
<pre class="jscript" name="code">$$('div');
// retorna todos los divs en el documento

$$('#contents');
// es lo mismo que $('contents'),
// solo que devuelve siempre un array

$$('li.faux');
// retorna todos los elementos li
// que tengan clase faux</pre>
veamos algo mas complejo en un formulario de Login:
<pre class="html" name="code">&lt;div id='frmLogin'&gt;
&lt;div class='campo'&gt;
&lt;span class='NombreCampo'&gt;
Nombre Usuario:
&lt;/span&gt;
&lt;input type='text' id='txtNombre' value='cesar' /&gt;
&lt;/div&gt;
&lt;div class='campo'&gt;
&lt;span class='NombreCampo'&gt;
Password:
&lt;/span&gt;
&lt;input type='password' id='txtPassword' value='123' /&gt;
&lt;/div&gt;
&lt;input type='submit' value='Login' /&gt;
&lt;/div&gt;
&lt;input type='button' onClick='test()' value='Funcion $$()' /&gt;</pre>
<pre class="jscript" name="code">function test()
{
  var s=$$('div#frmLogin .campo input');
  var inputs='';
  for(var i=0; i&lt;s.length; i++)
  {
    inputs+= s[i].value+' // ';
  }

  alert(inputs); //muestra cesar // 123
}</pre><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/detectar-peticiones-ajax-con-php/" title="Detectar peticiones Ajax con PHP">Detectar peticiones Ajax con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/generar-captura-pantalla/" title="Generar Captura de pantalla con Ajax">Generar Captura de pantalla con Ajax</a></li><li class="rltpost"><a href="http://craftyman.net/multidropdown-menus-relacionales-con-prototype/" title="Multidropdown: menus relacionales con Prototype">Multidropdown: menus relacionales con Prototype</a></li><li class="rltpost"><a href="http://craftyman.net/convertir-tu-web-a-ajax/" title="Convertir tu web estatica a Ajax">Convertir tu web estatica a Ajax</a></li><li class="rltpost"><a href="http://craftyman.net/textboxlist-con-autocompleter/" title="TextboxList con Autocompleter">TextboxList con Autocompleter</a></li><li class="rltpost"><a href="http://craftyman.net/prototype-introduccion/" title="Prototype Introduccion">Prototype Introduccion</a></li><li class="rltpost"><a href="http://craftyman.net/introduccion-ajax/" title="Ajax : Introducción y Ejemplos">Ajax : Introducción y Ejemplos</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/prototype-funciones-dom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype Introduccion</title>
		<link>http://craftyman.net/prototype-introduccion/</link>
		<comments>http://craftyman.net/prototype-introduccion/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 22:39:00 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://craftyman.wordpress.com/2008/04/22/prototype-introduccion/</guid>
		<description><![CDATA[<div><div align="center"><u><b><big><img src="http://lh4.ggpht.com/craftyman.dw/SA9cWj-Ch2I/AAAAAAAAA8g/Ec8sG6HmB5I/%5BUNSET%5D.png" style="max-width:800px;" /></big></b></u><br /></div><b><big>Prototype Capitulo 02 - Introduccion a Prototype</big></b><br /><br />Prototype es una libreria Javascript que esta Orientada a Objetos,<br />fue escrita por Sam Stephenson. Este bien pensado y excrito trozo de codigo<br />es compatible con los estandares web, muy enriquesida para la creacion de paginas web interactivas<br />lo que caracterizan a las Web 2.0.<br /><br />Si han echado un vistazo al framework Ruby On Rails, se daran cuenta que ya lo tiene incorporado<br />la razon es sencilla, Prototype esta influenciado directamente<br />bajo las exigencias de Ruby On Rails.<br /><br /><b>Prototype soporta multiples navegadores como :</b><br />- Mozilla Firefox 1.5+<br />- Internet Explorer 6.0+ (en extincion)<br />- Apple Safari 1.0+<br />- Opera 9+<br /><br />En esta introduccion ya vamos entrando un poco en la practica, porque yo se que la teoria<br />a veces aburre un poco, pero siempre es buena para solucionar inquietudes y poder entender<br />con que fin estamos haciendo algo.<br /><br /><b>Funciones de Utilidad</b><br /><br /><span style="color:rgb(153, 0, 0);"><b>Usando la Funcion $()</b></span><br /><br />Una funcion de mucha utilidad y que siempre vas a usar es la Funcion $()<br />esta funcion es un atajo si se podria decir para el frecuentemente utilizado<br /><br /><pre class="jscript"><br /><br />document.getElementById('id')<br /><br /></pre><br /><br />esto es una funcion DOM(Document Object Model) mas adelante explicare que es esto.<br />Pero el <b>$() </b>va mas halla de la funcion DOM. El Objeto devuelto por este tendra un incremento<br />de metodos extra para simplificar muchas tareas,como por ejemplo saber su tamaño, mostrar y ocultar el elemento<br />desplazarlo, etc.<br /><br />Por otra parte usted podra acceder a los metodos del Objeto de acuerdo al tipo de Elemento que es:<br /><br /><span style="color:rgb(153, 0, 0);">- Element.Methods<br />- Form.Methods<br />- Form.Element.Methods</span><br /><br />Voy a escribir un ejemplo de los metodos mas usados por mi:<br /><br /><b>Etiquetas :</b><br /><br /><pre class="jscript"><br /><br />&lt;etiqueta id="id"&gt; <br />  Contenido... <br />&lt;/etiqueta&gt;<br /><br />$('id').innerHTML<br />//-$gt;  Contenido...<br /><br />$('id').hide()  <br />//Oculta el contenido de la etiqueta<br /><br />//tambien lo puedes hacer en la forma<br />//multiple, con mas etiquetas<br /><br />$('id1', 'id2', 'id3').invoke('hide');<br /><br />//tambien puedes hacer mas optimo el codigo<br />//al llamar a varios metodos en una sola linea<br /><br />$('id').update('Cambiando Contenido')<br />       .addClassName('clase')<br />       .show();<br /><br />//Primero Actualizamos el Contenido del Div.<br />//Agregamos una clase CSS.<br />//Lo Mostramos<br /><br /></pre><br /><br /><b>Formulario</b><br /><br /><pre class="jscript"><br /><br />$('frm').serialize()<br />//hace la serializacion de Elementos del formulario<br />//para pasarlo como parametros<br /><br /></pre><br /><br /><b>Elementos de Formulario</b><br /><br /><pre class="jscript"><br /><br />$('TextBox').value<br />//return texto<br /><br />$('TextBox').focus()<br />// se enfoca en el elemento del formulario<br /><br /></pre><br /><br /></div><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/detectar-peticiones-ajax-con-php/" title="Detectar peticiones Ajax con PHP">Detectar peticiones Ajax con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/generar-captura-pantalla/" title="Generar Captura de pantalla con Ajax">Generar Captura de pantalla con Ajax</a></li><li class="rltpost"><a href="http://craftyman.net/multidropdown-menus-relacionales-con-prototype/" title="Multidropdown: menus relacionales con Prototype">Multidropdown: menus relacionales con Prototype</a></li><li class="rltpost"><a href="http://craftyman.net/convertir-tu-web-a-ajax/" title="Convertir tu web estatica a Ajax">Convertir tu web estatica a Ajax</a></li><li class="rltpost"><a href="http://craftyman.net/textboxlist-con-autocompleter/" title="TextboxList con Autocompleter">TextboxList con Autocompleter</a></li><li class="rltpost"><a href="http://craftyman.net/prototype-funciones-dom/" title="Prototype : Funciones DOM">Prototype : Funciones DOM</a></li><li class="rltpost"><a href="http://craftyman.net/introduccion-ajax/" title="Ajax : Introducción y Ejemplos">Ajax : Introducción y Ejemplos</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/prototype-introduccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax : Introducción y Ejemplos</title>
		<link>http://craftyman.net/introduccion-ajax/</link>
		<comments>http://craftyman.net/introduccion-ajax/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 00:21:00 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://craftyman.wordpress.com/2008/04/13/prototype-js/</guid>
		<description><![CDATA[<p><strong>Prototype Capitulo 01 - Introducción a Ajax</strong></p>

Hola a todos, estoy realizando un primer curso en mi blog, y creí que seria un buen tema la del framework prototype (Javascript, Ajax).

En esta intro les escribiré sobre una introducción a Ajax.

<a target="_blank" href="http://www.miempresaenlinea.com/crear-pagina-web.aspx">página web</a>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/prototypejp5.jpg" /></div>

<p><strong>Ajax ¿Para que sirve?</strong></p>

Ajax en una propuesta para paginas web que quieran mejorar su interfaz y su usabilidad.
Ocultando interacciones que el usuario final realiza con el servidor (consultas a BD, inserts, updates, etc) para solamente<br />mostrar las actualizaciones en una parte especifica de la pagina y así agilizar la pagina web ( no esperar largas demoras al actualizarse una pagina ).

<p><strong>Ajax y las Aplicaciones de Escritorio</strong></p>

Si bien una aplicación de escritorio es mucho mas veloz que una en web por su rápida respuesta.
Ajax le da la solución a las aplicaciones Web, ya que con esto agilizaran su respuesta y tendrán las mismas ventajas que tienen las aplicaciones Windows, podrán hacer las mismas acciones y eventos , con una interfaz mucho mas amigable.

<p><strong>Significado</strong></p>

Ajax es simplemente Javascript y XML asincronos (Asynchronous Javascript And XML)

<p><strong>Es solamente otra moda pasajera?</strong></p>

Si bien Microsoft, Google, Amazon, Yahoo, entre otros están totalmente en desacuerdo, pienso que tienen que saber usar Ajax en una aplicación Web.

<p><strong>Ejemplo:</strong></p>

En un proyecto de Tienda virtual el frontend no debería tener mucho de Ajax ya que sus usuarios mas comunes no tendrían por que saber de configuracion de su browser , esto implica la habilitacion del Javascript y si soporta Ajax, Un Ejemplo de aprovechamiento del Ajax seria en el backend de la Tienda Virtual ya que sus Empleados de actualizacion de productos y Pedidos, ya que su lugar de operaciones sera un ambiente apropiado y podrá estar previamente configurado para ejecutar Aplicaciones con Ajax.<br />En Resumen no deben usar Ajas para impresionar a sus usuarios finales con efectos maravillosos, validaciones con alertas muy llamativas y cosas así.

<p><strong>Google Maps, un Ejemplo claro</strong></p>

Es un muy buen ejemplo de carga de gráficos asincronamente (lo que se dice detrás de la pantalla)<br />en esta aplicación las imágenes se cargan en un principio y al arrastrar se cargan las del fondo,<br />es por eso que nos da la impresión de ser un mapa<br /><br /><span style="font-weight:bold;">Como se hace ?</span><br /><br />Para simplificar Ajax lo veremos de esta forma<br /><br />-Solicitud y Respuesta<br /><br />Esto es una forma en que interactúa el navegador con el servidor, cuando el usuario esta viendo<br />la pagina web, el navegador utiliza el conocido XMLHttpRequest (XHR), esto hace que diferentes áreas<br />de la pagina web carguen de manera asíncrona, permitiendo navegar tranquilamente al usuario mientras carga<br />la pagina completamente (Las partes que se están cargando tienen Callbacks, lo que permite dar<br />avisos de estados de carga de la pagina)<br /><br /><span style="font-weight:bold;">Como empezar</span><br /><br />Primero:<br /><br />como has echo para implementar Ajax en tus sitios web (si lo has echo)?<br /><br />si les gusta reinventar la rueda pues están sin resolver el problema o creen que seria un mejor trabajo,<br />la mayoría de desarrolladores utilizan librerías ya escritas con un buen performance en producción<br />La elección se basa en el Lenguaje de programación usado del lado del Servidor<br />Los mas populares son:<br /><br />DWR(<span style="font-style:italic;">Java</span>), Prototype (<span style="font-style:italic;">PHP</span>),Ajax.net (<span style="font-style:italic;">.NET</span>),  entre otros.<br /><br />Estas librerías hacen que la implementación de Ajax sea muy divertida al momento de programar, también<br />tienen un buen soporte así como actualizaciones permanentes, estas herramientas nos hacen la vida mas fácil al momento de desarrollar los proyectos.<br /><br />Espero que les aya gustado esta pequeña introducción pero buena en contenido.<br />Los capítulos saldrán una vez por semana, el próximo tratara sobre una introducción al framework prototype.<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/detectar-peticiones-ajax-con-php/" title="Detectar peticiones Ajax con PHP">Detectar peticiones Ajax con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/generar-captura-pantalla/" title="Generar Captura de pantalla con Ajax">Generar Captura de pantalla con Ajax</a></li><li class="rltpost"><a href="http://craftyman.net/multidropdown-menus-relacionales-con-prototype/" title="Multidropdown: menus relacionales con Prototype">Multidropdown: menus relacionales con Prototype</a></li><li class="rltpost"><a href="http://craftyman.net/convertir-tu-web-a-ajax/" title="Convertir tu web estatica a Ajax">Convertir tu web estatica a Ajax</a></li><li class="rltpost"><a href="http://craftyman.net/textboxlist-con-autocompleter/" title="TextboxList con Autocompleter">TextboxList con Autocompleter</a></li><li class="rltpost"><a href="http://craftyman.net/prototype-funciones-dom/" title="Prototype : Funciones DOM">Prototype : Funciones DOM</a></li><li class="rltpost"><a href="http://craftyman.net/prototype-introduccion/" title="Prototype Introduccion">Prototype Introduccion</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/introduccion-ajax/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

