// MenuList Object
// a cascading menu widget utilizing the List Object
// 19990326

// Copyright (C) 1999 Dan Steinman
// Distributed under the terms of the GNU Library General Public License
// Available at http://www.dansteinman.com/dynduo/

function MenuList() {
	// main-menu constructor (x,y,width,itemH)
	// sub-menu constructor (parentMenu,parentItemIndex)
	
	this.name = "MenuList"+(MenuList.count++)
	this.obj = this.name + "MenuListObject"
	eval(this.obj + "=this")
	if (arguments.length==4) {
		this.isChild = false
		this.x = arguments[0]
		this.y = arguments[1]
		this.w = arguments[2]
		this.itemH = arguments[3]
		this.subOnSelect = false
		this.offsetX = -1
		this.offsetY = 0
	}
	else {
		this.isChild = true
		this.parent = arguments[0]
		var index = arguments[1]
		this.parent.list.items[index].hasImage = true
		this.parent.list.items[index].hasChild = true
		this.parent.list.items[index].child = this
		this.x = this.parent.w
		this.y = this.parent.list.items[index].y
		this.w = (arguments.length==3)? arguments[2] : this.parent.w
		this.itemH = this.parent.itemH
		this.childShown = null
		this.subOnSelect = this.parent.subOnSelect
		this.offsetX = this.parent.offsetX
		this.offsetY = this.parent.offsetY
	}
	
	this.visibility = 'inherit'
	this.zIndex = null

	this.list = new List(1,1,this.w-2,this.itemH)
	this.list.visibility = 'inherit'
	this.list.allowDeselect = true
	if (this.isChild) {
		this.list.image = this.parent.list.image
		this.list.color = this.parent.list.color
		this.list.itemSpacing = this.parent.list.itemSpacing
		this.list.fontname = this.parent.list.fontname
		this.list.fontsize = this.parent.list.fontsize
	}
	this.cssChildren = ''
	this.divChildren = ''
	
	this.build = MenuListBuild
	this.activate = MenuListActivate
	this.showMenu = MenuListShowMenu
	this.hideMenu = MenuListHideMenu
	this.show = MenuListShow
	this.hide = MenuListHide
	this.toggle = MenuListToggle
	this.select = MenuListSelect
	if (this.isChild) this.onSelect = this.parent.onSelect
	else this.onSelect = new Function()
}
function MenuListBuild(write) {
	for (var i=0;i<this.list.items.length;i++) {
		if (this.list.items[i].hasChild) this.list.items[i].child.build()
	}
	this.list.build()
	this.css = css(this.name,this.x+this.offsetX,this.y+this.offsetY,null,null,null,(this.isChild)?'hidden':this.visibility,this.zIndex)+
	css(this.name+'ListW',0,0,this.w,this.list.h+2,'black')+
	this.list.css+
	this.cssChildren
	
	this.div = '<div id="'+this.name+'">\n'+
	'<div id="'+this.name+'ListW">\n'+
	this.list.div+
	'</div>\n'+
	this.divChildren+
	'</div>\n'
	
	if (this.isChild) {
		this.parent.cssChildren += this.css
		this.parent.divChildren += this.div
	}
}
function MenuListActivate() {
	this.list.activate()
	this.lyr = new DynLayer(this.name)
	this.h = this.list.h+2
	if (is.ns && !this.isChild) {
		this.lyr.clipInit()
		this.lyr.clipTo(0,this.w,this.h,0)
	}
	this.list.onSelect = new Function(this.obj+'.select(); return false;')
	for (var i=0;i<this.list.items.length;i++) {
		if (this.list.items[i].hasChild) this.list.items[i].child.activate()
	}
}
function MenuListSelect() {
	var i = this.list.selectedIndex
	if (this.childShown==i) {
		this.hideMenu(this.childShown)
	}
	else {
		if (this.childShown!=null) this.hideMenu(this.childShown)
		if (this.list.items[i].hasChild) this.showMenu(i)
		if (!this.list.items[i].hasChild || this.subOnSelect) this.onSelect()
	}
}
function MenuListHideMenu() {
	var i = this.childShown
	if (i!=null && this.list.items[i]!=null) {
		this.childShown = null
		this.list.items[i].child.lyr.hide()
		this.list.items[i].child.hideMenu()
		if (this.list.items[i].child.list.selectedIndex!=null) {
			this.list.items[i].child.list.deselect(this.list.items[i].child.list.selectedIndex)
		}
		if (is.ns && !this.isChild) this.lyr.clipTo(0,this.w,this.h,0)
	}
}
function MenuListShowMenu(i) {
	if (is.ns && !this.isChild) this.lyr.clipTo(0,this.lyr.w,this.lyr.h,0)
	this.list.items[i].child.lyr.show()
	this.childShown = i
}
function MenuListToggle() {
	if (!this.visible) this.show()
	else this.hide()
}
function MenuListHide() {
	this.hideMenu()
	this.list.deselect(this.list.selectedIndex)
	this.lyr.hide()
	this.visible = false
}
function MenuListShow() {
	this.lyr.css.visibility = 'inherit'
	this.visible = true
}

function HideAll( unMenu )
{
  if (unMenu.isChild) HideAll( unMenu.parent )
  else unMenu.hide()
}

function MenuListRedirect() {
      cadena = "" + this.list.value
      if (cadena.charAt(0) == '*')
      {
        yfst = cadena.indexOf('*',1)
        yend = cadena.indexOf('*',yfst+1)
        ancho = parseInt( cadena.substring(1,yfst) )
        alto  = parseInt( cadena.substring(yfst+1,yend) )
        if (ancho == 0)
          eval('window.open("'+cadena.substr(yend+1)+'","ventana","toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes")')
        else{
          eval( 'window.open("'+cadena.substr(yend+1)+'","ventana","HEIGHT='+alto+',WIDTH='+ancho+'")')
        }
      } else
	  location.href = cadena
      HideAll(this);
}
MenuList.count = 0

function numCarta()
{
  fecha = new Date()
  dia = fecha.getDate()
  mes = fecha.getMonth()
  agno = fecha.getYear()

  esBisiesto =  (((agno % 4 == 0) && (agno % 100 != 0)) || (agno % 400 == 0)) ? true : false;

  var ar = new Array(12)
  ar[0] = 31
  ar[1] = (esBisiesto) ? 29 : 28 // Febrero
  ar[2] = 31
  ar[3] = 30
  ar[4] = 31
  ar[5] = 30
  ar[6] = 31
  ar[7] = 31
  ar[8] = 30
  ar[9] = 31
  ar[10] = 30
  ar[11] = 31

  acc_dias = 0
  if (mes !=0)  for (n=0;n<mes;n++) acc_dias = acc_dias + ar[n];
  return(1 + ((acc_dias + dia) % 22))
}

function cartaDia() {
  eval('window.open("cartaDia.asp?nDia=' + numCarta() +'","cDia","width=660,height=450")')
 }
