	var timeout = 50;
//	var collapsed = false;
	var mouseX = 0, mouseY = 0;

function addHandler(obj, ev, ahandler) {
	if (obj.addEventListener)
		obj.addEventListener(ev, ahandler, false);
	else if (obj.attachEvent)
		obj.attachEvent('on' + ev, ahandler);
	else
		throw "Incompatible browser";
}

function getBounds(element) {
	var left = element.offsetLeft;
	var top = element.offsetTop;
	for (var parent = element.offsetParent; parent; parent = parent.offsetParent) {
		left += parent.offsetLeft - parent.scrollLeft;
		top += parent.offsetTop - parent.scrollTop
	}
	return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}

function pointerX(event) {
  return event.pageX || (event.clientX +
    (document.documentElement.scrollLeft || document.body.scrollLeft));
}

function pointerY(event) {
  return event.pageY || (event.clientY +
    (document.documentElement.scrollTop || document.body.scrollTop));
}




function debug() {

	var index = 0;
	var debugstr = "<table><tr>";
	for (var i in Elements) {
		if (index!=0 && index%3 == 0) {
			debugstr+="</tr><tr>"
		}
		debugstr += "<td>";
		debugstr += i+":";
		debugstr += Elements[i].collapsed()+"/";
		debugstr += Elements[i].collapsing+"/";
		debugstr += Elements[i].maxing+"/";
		debugstr += Elements[i].maxed()+"/";
		debugstr += Elements[i].height()+"/";
		debugstr += "</td>";
		index++;
	}
	debugstr += "</tr></table>";
//	document.getElementById("debug").innerHTML = debugstr;

}

function MenuItem(objectid,row, amaxheight) {
	this.id = objectid;
	this.row = row;
	this.object = document.getElementById(objectid);
	this.title = document.getElementById(this.id+"_title");
	this.maxheight = amaxheight; //amaxheight;

	addHandler(this.title, "click", function() { changestate(objectid) } );

//	addHandler(this.title, "mouseover", function() { titleOver(objectid)});


	this.height = function() {
		return parseInt(String(this.object.clientHeight));
	}
	this.setHeight = function( val ) {
		this.object.style.height = val+"px";
	}

	
	this.setHeight(2);
	/*
	if (pagetype == "main") {
		if (this.row > 0) {
			this.setHeight(2);
		} else {
        		this.setHeight(this.maxheight);
		}
	} else {
		this.setHeight(2);
	}
	*/


	this.collapsed = function(){ return ((this.object.clientHeight <= 2) ? true : false )};
	this.collapsing = "false";
	this.maxing = "false";
	this.maxed = function(){ return ((this.object.clientHeight >= this.maxheight) ? true : false)};
	this.action = null;
	this.tobig = function() {
		//document.getElementById("debug4").innerHTML = "tobig "+this.id;
		//debug();

		if (this.collapsing == true) {
			this.collapsing = false;
		} else {
			if (!this.maxed()) {
				this.maxing = true;
				var ch = this.height();
				var mod = ch*2; // ch*2; //parseInt((this.maxheight-ch)/2+1);
				//alert(objectid+" ch:"+ch)
				
				if ((this.maxheight - ch) < 2) {
					mod=1;
				}
				if (ch+mod > this.maxheight) {
					mod=this.maxheight-ch;
				}
				this.setHeight(ch+mod);
				setTimeout("Elements['"+this.id+"'].tobig()", timeout);
			} else {
				this.maxing = false;
			}
		}
		//debug();
	}
	this.tosmall = function() {
		//document.getElementById("debug3").innerHTML = "tosmall "+this.id;
		//debug();
	                        
		//if (pagetype != "main"){
			if (this.maxing == true) {
				this.maxing = false;
			} else {
				if (!this.collapsed()) {
					this.collapsing = true;
					var ch = this.height();
					var mod = parseInt(ch/2);
					if (ch <= mod) {
						this.setHeight( ch + 1 );
					} else {
						this.setHeight( ch - mod );
					}
					setTimeout("Elements['"+this.id+"'].tosmall()", timeout);
				} else {
					this.collapsing = false;
				}
			}
		//}
		//debug();
	}
}

function changestate(menuid) {
	var el = Elements[menuid]
	for (var i in Elements) {
		if (Number(Elements[i].row) == Number(Elements[menuid].row)) {
			Elements[i].tobig();
		} else {
		    if (pagetype != "main"){
				Elements[i].tosmall();
			}
		}
	}
}

function menuClick(wheretogo) {
	var i;
	//if (pagetype != "main"){
		for (i in Elements) {
			Elements[i].tosmall();
		}
	//}

	if (arguments.length > 0) {
		setTimeout("document.location.href = '"+wheretogo+"'", timeout); //20*timeout
		
	}
}

function titleOver(menuid) {
	setTimeout("titleOverCheck('"+menuid+"')", timeout * 10);
}

function titleOut(menuid) {
}

function titleOverCheck(menuid) {
	var el = Elements[menuid].object.parentElement;
	addHandler(el, "click", function(evt) { mouseX = pointerX(evt); mouseY = pointerY(evt); } );
	el.fireEvent("onclick");
	el.onclick = null;
	var bounds = getBounds(el);

//	window.alert("l:"+bounds.left+" / t:"+bounds.top+" / w:"+bounds.width+" / h:"+bounds.height+"\nx:"+mouseX+" / y:"+mouseY  );
	if ((mouseX >= bounds.left && mouseX <= bounds.left+bounds.width &&
		mouseY >= bounds.top && mouseY <= bounds.top+bounds.height)
	) {
		//window.alert(Elements[menuid].collapsed +" / "+ Elements[menuid].maxed)
		if (Elements[menuid].maxed() == false)
			Elements[menuid].title.fireEvent("onclick"); //document.getElementById(menuid+"_title")
			
	}
}


