// CollapseMenu Object
// a slick collapsable navigation menu object
// 19990606

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

function CollapseMenu(x,y,width,numBlocks,name) {
	this.name = (name!=null)? name : "CollapseMenu"+(CollapseMenu.count++)
	this.x = x
	this.y = y
	this.w = width
	this.numBlocks = numBlocks
	this.bgColor = '#ffffff'
	this.openStyle = "slide"  // or 'glide' or 'move'
	this.contentIndent = 0
	this.inc = 20
	this.speed = 20
	this.active = false
	this.obj = this.name + "Object"
	eval(this.obj + "=this")
	this.build = CollapseMenuBuild
	this.activate = CollapseMenuActivate
	if(homepage)
		this.toggle = CollapseMenuToggleHome
	else
		this.toggle = CollapseMenuToggle
	this.open = CollapseMenuOpen
	this.close = CollapseMenuClose
	this.finish = CollapseMenuFinish
	this.onToggle = new Function()
}
function CollapseMenuBuild() {
	this.css = css(this.name,this.x,this.y,this.w,0)
	for (var i=0;i<this.numBlocks;i++) {
		this.css += css(this.name+'Block'+i,0,0,this.w)
		this.css += css(this.name+'Block'+i+'Item',0,0,this.w,null,this.bgColor)
		this.css += css(this.name+'Block'+i+'Content',0,0,this.w,null,this.bgColor,null,null,'margin-left:'+this.contentIndent)
	}
	this.css += css(this.name+'Block'+this.numBlocks,0,0,this.w,0,this.bgColor)
	this.divStart = '<div id="'+this.name+'">'
	this.divEnd = ''
	this.divEnd += '<div id="'+this.name+'Block'+this.numBlocks+'"></div>'
	for (var i=0;i<this.numBlocks;i++) {
		this.divEnd += '</div>'
	}
	this.divEnd += '</div>'
}
function CollapseMenuActivate() {
	this.lyr = new DynLayer(this.name)
	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 = new DynLayer(this.name+'Block'+i)
		this.blocks[i].itemlyr = new DynLayer(this.name+'Block'+i+'Item')
		this.blocks[i].itemHeight = this.blocks[i].itemlyr.getContentHeight()
		this.itemTotal += this.blocks[i].itemHeight
		this.blocks[i].itemlyr.clipTo(0,this.w,this.blocks[i].itemHeight,0)
		
		this.blocks[i].contentlyr = new DynLayer(this.name+'Block'+i+'Content')
		this.blocks[i].contentHeight = this.blocks[i].contentlyr.getContentHeight()
		this.contentTotal += this.blocks[i].contentHeight
		
		this.blocks[i].contentlyr.clipTo(0,this.w,this.blocks[i].contentHeight,0)
		this.blocks[i].contentlyr.moveTo(null,this.blocks[i].itemHeight)
		if (i!=0) this.blocks[i].lyr.moveTo(null,this.blocks[i-1].itemHeight)
		this.blocks[i].h = this.blocks[i].itemHeight + this.blocks[i].contentHeight
	}
	this.h = this.contentTotal + this.itemTotal
	for (var i=this.numBlocks-1;i>=0;i--) {
		this.blocks[i].lyr.clipInit()
		this.blocks[i].lyr.clipTo(0,this.w,this.h-this.blocks[i].lyr.y,0)
	}
	this.blocks[this.numBlocks] = new Object()
	this.blocks[this.numBlocks].lyr = new DynLayer(this.name+'Block'+this.numBlocks)
	this.blocks[this.numBlocks].lyr.clipTo(0,this.w,this.h-this.itemTotal,0)
	this.blocks[this.numBlocks].lyr.css.height = this.h-this.itemTotal
	this.blocks[this.numBlocks].lyr.moveTo(null,this.blocks[this.numBlocks-1].itemHeight)
	this.lyr.clipTo(0,this.w,this.h,0)
}
//function CollapseMenuToggle(i) {
//	if (this.active) return
//	this.active = true
//	if (!this.blocks[i].open) this.open(i)
//	else this.close(i)
//}
function CollapseMenuToggle(i) {
	if (this.active) return
	if (i < mainNavigation && i != 0)
		if(this.blocks[i].open) return
	
	this.active = true

	if (!this.blocks[i].open)
		for(var x=this.numBlocks-1;x>=0;x--)
			this.close(x)
		
	if (!this.blocks[i].open) 
		if(i < mainNavigation)
			for(var y=mainNavigation-1;y>=0;y--)
				this.open(y)			
		else this.open(i)
	else 
		if(i < mainNavigation)
			for(var y=mainNavigation-1;y>=0;y--)
				this.close(y)			
		else if(i >= mainNavigation) this.close(i)
}
function CollapseMenuToggleHome(i) {
	var productsItemsChange = productsItems
	var supportItemsChange = supportItems + productsItems
	var aboutItemsChange = aboutItems + supportItems + productsItems
	
	if (this.active) return
	if (i < productsItemsChange && i != 0)
		if(this.blocks[i].open) return
		
	if (i < supportItemsChange && i > productsItemsChange && i != (productsItemsChange))
		if(this.blocks[i].open) return

	if (i < aboutItemsChange && i > supportItemsChange && i != (supportItemsChange))
		if(this.blocks[i].open) return
		
	
	this.active = true

	if (!this.blocks[i].open)
		for(var x=this.numBlocks-1;x>=0;x--)
			this.close(x)
		
	if (!this.blocks[i].open) 
		if(i < productsItemsChange)
			for(var y=productsItemsChange-1;y>=0;y--)
				this.open(y)			
		else if(i < supportItemsChange && i > productsItemsChange - 1)
			for(var y=supportItemsChange-1;y>=productsItemsChange;y--)
				this.open(y)			
		else if(i < aboutItemsChange && i > supportItemsChange - 1)
			for(var y=aboutItemsChange-1;y>=supportItemsChange;y--)
				this.open(y)			
		else this.open(i)
	else 
		if(i < productsItemsChange)
			for(var y=productsItemsChange-1;y>=0;y--)
				this.close(y)			
		else if(i < supportItemsChange && i > productsItemsChange - 1)
			for(var y=supportItemsChange-1;y>=productsItemsChange;y--)
				this.close(y)			
		else if(i < aboutItemsChange && i > supportItemsChange - 1)
			for(var y=aboutItemsChange-1;y>=supportItemsChange;y--)
				this.close(y)			
		else if(i >= aboutItemsChange) this.close(i)
}
function CollapseMenuOpen(i) {
	if (!this.blocks[i].open) {
		var h = this.blocks[i].contentHeight + this.blocks[i].itemHeight
		this.blocks[i].open = true
		if (this.openStyle == 'slide') this.blocks[i+1].lyr.slideTo(null,h,this.inc,this.speed,this.obj+'.finish()')
		else if (this.openStyle == 'glide') this.blocks[i+1].lyr.glideTo('slow','slow',null,h,this.inc,this.speed,this.obj+'.finish()')
		else if (this.openStyle == 'move') {this.blocks[i+1].lyr.moveTo(null,h); this.finish();}
	}
}
function CollapseMenuClose(i) {
	if (this.blocks[i].open) {
		var h = this.blocks[i].itemHeight
		this.blocks[i].open = false
		if (this.openStyle == 'slide') this.blocks[i+1].lyr.slideTo(null,h,this.inc,this.speed,this.obj+'.finish()')
		else if (this.openStyle == 'glide') this.blocks[i+1].lyr.glideTo('slow','slow',null,h,this.inc,this.speed,this.obj+'.finish()')
		else if (this.openStyle == 'move') {this.blocks[i+1].lyr.moveTo(null,h); this.finish();}
	}
}
function CollapseMenuFinish() {
	this.active = false
	this.onToggle()
}
CollapseMenu.count = 0

//var imagesRoot = "/authored_framework/images";
//var navImagesRoot = imagesRoot + "/navigation/v5";
var imagesRoot = "images";
var navImagesRoot = imagesRoot;


var activeNumber = 0

function subItemOver(object, number, statusName) {
	if (document.getElementById('subItem'+activeNumber)) {
		if (activeNumber != selectedSubitem) {
			document.getElementById('subItem'+activeNumber).style.background = '#6699CC'
			document.getElementById('arrow'+activeNumber).src = imagesRoot + '/empty.gif'
			document.getElementById('line'+activeNumber).className = 'subItemLine'
		}
	}
	window.setTimeout('window.status="' + statusName + '"', 1);
	activeNumber = number
	object.style.background = '#FF9933'
	document.getElementById('arrow'+number).src = navImagesRoot + '/arrow.gif'
	document.getElementById('line'+number).className = 'subItemLineOver'
}

function subItemOut(object) {
	window.setTimeout('window.status=" "', 1);
	object.style.background = '#6699CC'
	document.getElementById('arrow'+activeNumber).src = imagesRoot + '/empty.gif'
	document.getElementById('line'+activeNumber).className = 'subItemLine'
}

function subItemOver2(object, number, statusName, normalbackground) {
	if (document.getElementById('subItem'+activeNumber)) {
		if (activeNumber != selectedSubitem) {
			document.getElementById('subItem'+activeNumber).style.background = document.getElementById('subItem'+activeNumber).style.normalbackground
			document.getElementById('arrow'+activeNumber).src = imagesRoot + '/empty.gif'
			//document.getElementById('line'+activeNumber).className = 'subItemLine'
		}
	}
	window.setTimeout('window.status="' + escapeQuotes(statusName) + '"', 1);
	activeNumber = number
	object.style.normalbackground = normalbackground
	object.style.background = '#FF9933'
	//document.getElementById('arrow'+number).src = navImagesRoot + '/arrow.gif'
	//document.getElementById('line'+number).className = 'subItemLineOver'
}

function subItemOut2(object) {
	window.setTimeout('window.status=" "', 1);
	object.style.background = object.style.normalbackground
	//alert('arrow'+activeNumber);
	document.getElementById('arrow'+activeNumber).src = imagesRoot + '/empty.gif'
	//document.getElementById('line'+activeNumber).className = 'subItemLine'
}

function headerOver(statusName) {
	window.setTimeout('window.status="' + escapeQuotes(statusName) + '"', 1);
}
function headerOut() {
	window.setTimeout('window.status=" "', 1);
}

function escapeQuotes(s) {
	if (s.indexOf('"') == -1) {
		return s
	}
	var r = ''
	for (var i = 0; i < s.length; i++) {
		if (s.charAt(i) == '"') {
			r = r + '\\'
		}
		r = r + s.charAt(i)
	}
	return r
}
