function CollapseMenu(name) {
	this.name = (name!=null)? name : "CollapseMenu"+(CollapseMenu.count++)
	this.numBlocks = 0
	this.contentIndent = 0
	this.active = false
	this.obj = this.name + "Object"
	eval(this.obj + "=this")
	this.imgOpen = 'open.gif'
	this.imgClose = 'close.gif'
	this.varNodoIni = name
	this.closeOthers = true
	this.action = '';
	this.build = CollapseMenuBuild
	this.activate = CollapseMenuActivate
	this.toggle = CollapseMenuToggle
	this.open = CollapseMenuOpen
	this.close = CollapseMenuClose
	this.finish = CollapseMenuFinish
	this.getNodoId = CollapseMenuGetNodoId
	this.getNumBlocks = CollapseMenuGetNumBlocks
	this.addOnToggle = CollapseMenuAddOnToggle
	this.onToggleFunctions = new Array;
	this.onToggle = CollapseMenuOnToggle
	this.addOnToggle(CollapseMenuCloseOthers)
}

function CollapseMenuAddOnToggle(funcion) {
	this.onToggleFunctions[this.onToggleFunctions.length]=funcion
}

function CollapseMenuOnToggle() {
	for (i=0;i<this.onToggleFunctions.length;i++) {
		this.onToggleFunctions[i](this);
	}
}

function CollapseMenuBuild() {

	this.lyr = document.getElementById(this.name)
	this.numBlocks = this.getNumBlocks()
//alert(this.numBlocks);
	this.blocks = new Array()
	this.itemTotal = 0
	this.contentTotal = 0
	for (var i=0;i<this.numBlocks;i++) {
		this.blocks[i] = new Object()
		this.blocks[i].open = false
		this.blocks[i].lyr = document.getElementById(this.name+'Block'+i)
		this.blocks[i].itemlyr = document.getElementById(this.name+'Block'+i+'Item')
		this.blocks[i].itemimg = document.getElementById(this.name+'Block'+i+'ItemImg')
		this.blocks[i].contentlyr = document.getElementById(this.name+'Block'+i+'Content')
	}
	
	try
	{
		nodoIni = eval(this.name+'NodoIni')
	}
	catch (e)
	{
		nodoIni = -1
	}

	function analizaUrl()
	{
    	var pares=unescape(location.search.substring(1).replace(/\+/g," ")).split('&')
    	for (var i=0;i<pares.length;i++)
    	{
        	var par = pares[i].split('=')
        	this[par[0]]=par[1]
    	}
	}
	var variables = new analizaUrl() 

	if (variables[this.varNodoIni] && variables[this.varNodoIni] != '')
	{
		this.iniciaDesplegado = this.getNodoId(variables[this.varNodoIni])
	}
        else if (variables[this.name] && variables[this.name] > 0)
        {
                this.iniciaDesplegado = variables[this.name] - 1
        }
	else if (nodoIni && nodoIni > 0)
	{
		this.iniciaDesplegado = nodoIni
	}
}

function CollapseMenuActivate() {
	this.build()

	if (this.iniciaDesplegado >= 0 && this.iniciaDesplegado < this.numBlocks)
	{
		this.toggle(this.iniciaDesplegado)
	}
}

function CollapseMenuCloseOthers(menu) {
	var i
	var j=menu.activeBlock

	for (i=0;i<menu.numBlocks;i++) {
		if (i==j) {
			if (menu.blocks[i].lastOp == 0) {
				if (menu.blocks[i].itemimg)
					menu.blocks[i].itemimg.src = menu.imgClose
				menu.blocks[i].contentlyr.style.display = 'none'
			} else {
				if (menu.blocks[i].itemimg)
					menu.blocks[i].itemimg.src = menu.imgOpen
				menu.blocks[i].contentlyr.style.display = 'block'
			}
		} else if (menu.closeOthers) {
			menu.blocks[i].open = false
			if (menu.blocks[i].itemimg)
				menu.blocks[i].itemimg.src = menu.imgClose
			menu.blocks[i].contentlyr.style.display = 'none'
		}
	}
}

function CollapseMenuToggle(i) {
		if ((i < 0) || (i >= this.numBlocks))
		{
			//alert('Imposible desplegar el item '+i+' del menú '+this.name+'.\nComprueba que el valor del item está entre 0 y '+(this.numBlocks-1))
			return false;
		}
        if (this.active)
	{
		return false;
	}
        this.active = true
        this.activeBlock = i
        if (!this.blocks[i].open)
                this.open(i)
        else
                this.close(i)
	return false;
}

function CollapseMenuOpen(i) {
	if (!this.blocks[i].open) {
		this.blocks[i].open = true
		if (this.blocks[i].itemimg)
			this.blocks[i].itemimg.src = this.imgOpen
		this.blocks[i].contentlyr.style.visibility = 'visible'
		this.blocks[i].contentlyr.style.display = 'block'
	}
	this.blocks[i].lastOp = 1
	this.finish('open')
}

function CollapseMenuClose(i) {
	if (this.blocks[i].open) {
		this.blocks[i].open = false
		if (this.blocks[i].itemimg)
			this.blocks[i].itemimg.src = this.imgClose
		this.blocks[i].contentlyr.style.visibility = 'hidden'
		this.blocks[i].contentlyr.style.display = 'none'
	}
	this.blocks[i].lastOp = 0
	this.finish('close')
}

function CollapseMenuFinish(action) {
	this.active = false
	this.lastAction = action;
	this.onToggle()
}

// Buscamos aquel nodo que tiene el atributo this.varNodoIni igual al
// valor pasado por parámetro (el atributo puede ser p.ej. un idseccion)
// Si no hay ningun bloque con ese valor para el atributo devuelve -1
function CollapseMenuGetNodoId(valueNodoIni) {
	for (i=0;i<this.numBlocks;i++) {
		tmp = this.blocks[i].lyr.getAttribute(this.varNodoIni)
		if (tmp == valueNodoIni) {
			return this.blocks[i].lyr.getAttribute('nodo')
		}
	}
	return -1
}

// Devuelve el numero de bloques (nodos) del menu
function CollapseMenuGetNumBlocks() {
	if (!is.ie) {
		return document.getElementsByName(this.name+'Block').length
	} else {
		// La chapuza de turno para el Explorer...
		// http://groups.google.com/groups?hl=es&lr=&ie=UTF-8&threadm=amahd6%24476i2%241%40ID-101984.news.dfncis.de&rnum=6&prev=/groups%3Fq%3DgetElementsByName%2520explorer%26hl%3Des%26lr%3D%26ie%3DUTF-8%26sa%3DN%26tab%3Dwg
		divs=document.getElementsByTagName('DIV')
		num=0
		for (i=0;i<divs.length;i++) {
			if (divs.item(i).name==this.name+'Block') {
				num++
			}
		}
		return num
	}
}

function BrowserCheck() {
        var b = navigator.appName
        if (b=="Netscape") this.b = "ns"
        else if (b=="Microsoft Internet Explorer"||b=="Opera") this.b = "ie"
        else this.b = b
        this.version = navigator.appVersion
        this.v = parseInt(this.version)
        this.ns = (this.b=="ns" && this.v>=4)
        this.ns4 = (this.b=="ns" && this.v==4)
        this.ns5 = (this.b=="ns" && this.v==5)
        this.ie = (this.b=="ie" && this.v>=4)
        this.ie4 = (this.version.indexOf('MSIE 4')>0)
        this.ie5 = (this.version.indexOf('MSIE 5')>0)
        this.min = (this.ns||this.ie)
}
is = new BrowserCheck()


CollapseMenu.count = 0
