/*
	(c) Análisis, Diseño e Implementación Software, S.L. <adisoftware.com>
	(2005/02/21) Juanfran Calderín.
*/
function MenuAleatorio(objNombre, items, muestraTam, muestraPeriodoMS) {
	var objNombre; // Nombre del objeto (necesario para que el temporizador se llame a sí mismo)
	var items, // Identificadores de los ítems de menú a tratar
		itemsTot; // Número de ítems (tamaño del vector)
	var muestraIdxs, // Índices de los ítems de menú seleccionados para mostrar
		muestraTam, // Tamaño de la muestra
		muestraPeriodoMS; // Periodo del temporizador (en milisegundos)
	//
	// Oculta los ítems seleccionados de la vez anterior
	this.ocultar = function() {
		for (var i = 0; i < this.muestraTam; i++) {
			id2Obj(this.items[this.muestraIdxs[i]]).style.display = "none";
		} // for
	} // ocultar
	//
	// Selecciona 'muestraTam' ítems de menú, guardándolos en 'muestraIdxs[]'
	this.muestrear = function() {
		var elegidos = new Array(this.itemsTot), idx;
		for (var i = 0; i < this.muestraTam; i++) {
			do {
				idx = randomInt(0, this.itemsTot - 1);
			} while (elegidos[idx] == true);
			elegidos[idx] = true;
			this.muestraIdxs[i] = idx;
		} // for
	} // muestrear
	//
	// Muestra en pantalla los ítems seleccionados
	this.mostrar = function() {
		for (var i = 0; i < this.muestraTam; i++) {
			id2Obj(this.items[this.muestraIdxs[i]]).style.display = "";
		} // for
	} // mostrar
	//
	this.manejadorDelTemporizador = function() {
		this.ocultar();
		this.muestrear();
		this.mostrar();
		if (this.muestraPeriodoMS) {
			window.setTimeout(this.objNombre + ".manejadorDelTemporizador()", this.muestraPeriodoMS);
		}
	} // manejadorDelTemporizador
	//
	// Constructor
	//
	this.objNombre = objNombre;
	//
	this.items = items;
	this.itemsTot = this.items.length;
	if (!this.itemsTot) {
		return null;
	}
	//
	this.muestraTam = (muestraTam <= this.itemsTot) ? muestraTam : this.itemsTot;
	if (this.muestraTam <= 0) {
		return null;
	}
	this.muestraIdxs = new Array(this.muestraTam);
	this.muestraPeriodoMS = (muestraPeriodoMS >= 0) ? muestraPeriodoMS : 0;
	// Inicialmente, ocultar todos los ítems
	for (var i = 0; i < this.itemsTot; i++) {
		id2Obj(this.items[i]).style.display = "none";
	} // for
	//
	this.muestrear();
	this.mostrar();
	if (this.muestraPeriodoMS) {
		window.setTimeout(this.objNombre + ".manejadorDelTemporizador()", this.muestraPeriodoMS);
	}
} // MenuAleatorio
