Para probarlas, debemos seguir el mismo procedimiento que con los efectos; descargar las librerías, alojarlas en un servidor propio y cargarlas en nuestra plantilla. Empecemos con esto ya que es una pregunta repetida y hay varias alternativas.
Si no tenemos nada, debemos de empezar descargando el ZIP
que contiene todos los archivos necesarios y luego alojarlos en un servidor propio. Como mínimo, necesitaremos los siguientes scripts:prototype.js
scriptaculous.js
effects.js
dragdrop.js
el resto son optativos; cada uno de ellos se utiliza para poder implementar funciones especiales (builder.js, controls.js, slider.js, sound.js).
Los agregamos a la plantilla, justo antes de </head>:
<script type="text/javascript" src="URL_prototype.js"></script> <script type="text/javascript" src="URL_scriptaculous.js?load=effects,dragdrop"></script>
<script type="text/javascript" src="URL_scriptaculous.js?load=effects,dragdrop"></script><script src="http://www.google.com/jsapi"></script>
<script>
google.load("prototype", "1.6.0.2");
google.load("scriptaculous", "1.8.1");
</script>Una última posibilidad es usar Protoculous que es una librería comprimida y que en un solo archivo nos permite usar todas las funciones [más información]
Bueno, ahora que ya tenemos los scripts, vamos a ver como funcionan.
new Draggable(elemento);
Suena complicado pero no lo es, bastan dos líneas de código; por ejemplo:
<div id="demo"> [ ... el contenido ... ] </div> <script type="text/javascript"> new Draggable('demo'); </script>

<div style="text-align: center;font-size:17px;">
La palabra
<span id="demo1" style="color:#FF0000;font-weight:bold;cursor:move;">MOVER</span>
se puede arrastrar.
</div>
<script type="text/javascript">new Draggable('demo1');</script>
<img id="demo2" src="URL_imagen"/>
<script type="text/javascript">new Draggable('demo2');</script><script type="text/javascript">
new Draggable(IDelemento, opciones);
</script>new Draggable('demo', {constraint:"horizontal"} );
new Draggable('demo', {constraint:"vertical"} );
new Draggable('demo', {starteffect: unaFuncion('demo')} );
new Draggable('demo', {endeffect: otraFuncion('demo')} );
onStart se ejecuta cuando comenzamos a arrastar el objeto
onDrag se ejecuta mientras arrastamos el objeto
change se ejecuta cuando cambiamos la posición original del objeto
onEnd se ejecuta cuando soltamos el objeto
var unNombre = new Draggable('demo', {revert: true});
.......
unNombre.destroy();
<div style="border:1px solid #444444; height:250px; overflow:hidden; position:relative;
margin:10px auto; width:450px;">
<img style="cursor:move; position:absolute; left:10px; top:10px;"
id="demoIMG1" src="URL_imagen1" />
<img style="cursor:move; position:absolute; left:390px; top:10px;"
id="demoIMG2" src="URL_imagen2" />
<img style="cursor:move; position:absolute; left:10px; top:190px;"
id="demoIMG3" src="URL_imagen3" />
<img style="cursor:move; position:absolute; left:390px; top:190px;"
id="demoIMG4" src="URL_imagen4" />
</div>
<script type="text/javascript">
new Draggable('demoIMG1');
new Draggable('demoIMG2');
new Draggable('demoIMG3');
new Draggable('demoIMG4');
</script>
Alguna vez comenté un 


Es fácil de comprobar; podemos entrar en 




Allí, se nos muestra un directorio más o menos organizado y un buscador si es que estamos necesitando algo especial. Agregarlas es sencillo, se hace como con cualquier otro elemento a través de 





