//
// comandos.js - Script para dar interactividad a la página.
//
// Copyright (c) 2005 Alejandro Fernández Fernández.
//

//
// Imprimir un mensaje (para depuración del script).
//
function print(str)
{
	var console = document.getElementById('console');
	if (! console) {
		alert("Console not created!");
	}
	var txt = document.createTextNode(str);
	var div = document.createElement('div');
	div.appendChild(txt);
	console.appendChild(div);
}

//
// Función basada en el artículo "Crossbrowser DOM Scripting: Event Handlers"
// por Scott Andrew LePera.
//
function addEvent(obj, evType, fn, useCapture)
{
	if (obj.addEventListener) {
		obj.addEventListener(evType, fn, useCapture);
		return true;
//      El sistema este de eventos del IE es una mierda ya que en la función
//      que maneja el evento 'this' apunta hacia la ventana del explorer, en
//      lugar de indicar el objeto que produjo el evento.
//	} else if (obj.attachEvent) {
//		return obj.attachEvent('on' + evType, fn);
	} else {
		obj['on' + evType] = fn;
		return true;
	}
}

//
// Colapsar las descripciones de los comandos, y asignar los eventos
// necesarios para poder expandirlos con el ratón.
//
function init()
{
	// Sólo tengo interes en que esto funcione en navegadores que
	// implementen el estandar DOM Level 2.
	if (! document.getElementById) {
		return;
	}

	var list = document.getElementById('contenido');
	var cmd_list = list.getElementsByTagName('div');
	for (var i = 0; i < cmd_list.length; i++) {
		var div = cmd_list.item(i);
		if ((div == null) || div.className != 'comando') {
			continue;
		}

		// Ocultar todos los nodos hijo exceptuando el nombre
		// del comando.
		var item = div.firstChild;
		while (item) {
			if (item.className == 'ncomando') {
				addEvent(item, 'click', toggle_visible, true);
			} else if (item.className == 'cmddesc') {
				item.className = 'hidden';
			}
			item = item.nextSibling;
		}
	}
}

//
// Colapsar/Expandir la descripción de un comando.
//
function toggle_visible()
{
	if (! this) {
		return false;
	}

	var item = this.nextSibling;
	while (item) {
		if (item.className == 'hidden') {
			item.className = 'cmddesc';
		} else {
			item.className = 'hidden';
		}
		item = item.nextSibling;
	}
	

	return true;
}

addEvent(window, 'load', init, true);

