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.build = CollapseMenuBuild
	this.activate = CollapseMenuActivate
	this.toggle = CollapseMenuToggle
	this.open = CollapseMenuOpen
	this.close = CollapseMenuClose
	this.finish = CollapseMenuFinish
	this.onToggle = CollapseMenuOnToggle
	this.getNodoId = CollapseMenuGetNodoId
	this.getNumBlocks = CollapseMenuGetNumBlocks
}

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 CollapseMenuOnToggle() {
        j=this.activeBlock
        for (i=0;i<this.numBlocks;i++) {
                if (i==j) {
                        if (this.blocks[i].lastOp == 0)
						{
							if (this.blocks[i].itemimg)
								this.blocks[i].itemimg.src = this.imgClose
							this.blocks[i].contentlyr.style.display = 'none'
						}
                        else
						{
							if (this.blocks[i].itemimg)
								this.blocks[i].itemimg.src = this.imgOpen
							this.blocks[i].contentlyr.style.display = 'block'
						}
                }
                else
				{
						this.blocks[i].open = false
			if (this.blocks[i].itemimg)
                        	this.blocks[i].itemimg.src = this.imgClose
                        this.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
        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()
}

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()
}

function CollapseMenuFinish() {
	this.active = false
	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
