var boxes;
var boxesAdditional = new Array();
var activeBox;
var boxHeight = 100;
var lastBoxShown = 0;
var dontHideBox = false;

function hideBox() {
	var now = (new Date()).getTime();
	var diff = now - lastBoxShown;
	if(activeBox != null && diff > 50 && !dontHideBox) {
		getById("box_" + activeBox).style.display = "none";
		//hideBoxStep(activeBox);
		activeBox = null;
	} else if(dontHideBox) {
		dontHideBox = false;
	}
}

function showBox(_box, _element, _offsetX, _offsetY, _inLayout) {
	if(activeBox != _box) {
		
		var layoutX = 0;
		
		if(!_inLayout)
			layoutX = posX(getById('layout'));
		
		hideBox();
		activeBox = _box;
		if(_offsetX == null) _offsetX = 0;
		if(_offsetY == null) _offsetY = 0;
		var left = ((posX(_element) - (IE ? 0 : 1) + _offsetX) - layoutX) + "px";
		var top = (posY(_element) + _element.offsetHeight - (IE ? 2 : 1) + _offsetY) + "px";
		getById("box_" + activeBox).style.left = left;
		getById("box_" + activeBox).style.top = top;
		getById("box_" + activeBox).style.display = "block";
		

		//alert(left);
		
		/*
		// get height
		boxHeight = getById("box_" + activeBox).offsetHeight;
		var bHeightSet = false;
		for(i = 0; i < getById("box_" + activeBox).childNodes.length; i++) {
			var element = getById("box_" + activeBox).childNodes[i];
			if(element.nodeName != "DIV") continue;
			if(element.style.display != "none") {
				if(!bHeightSet) {
					boxHeight = element.offsetHeight;
					bHeightSet = true;
				}
				else boxHeight += element.offsetHeight;
			}
		}
		*/
		
		//getById("box_" + activeBox).style.height = "0px";
		lastBoxShown = (new Date()).getTime();
		//showBoxStep(activeBox);
	}
	return false;
}

function switchBox(_box, _element, _offsetX, _offsetY, _inLayout) {

	if(activeBox != null && activeBox != _box) {
		showBox(_box, _element, _offsetX, _offsetY, _inLayout);
	}

}

function showBoxStep(_id) {
	
	var height = getById("box_" + _id).offsetHeight;
	var heightNew = height + 10;
	
	if(heightNew > boxHeight)
		heightNew = boxHeight;
		
	getById("box_" + _id).style.height = heightNew + "px";
	
	if(heightNew < boxHeight)
		setTimeout("showBoxStep('" + _id + "')", 30);
	else 
		setFirstInputFocus(id("box_" + _id).childNodes);
		
}

function setFirstInputFocus(_array) {

	for(var i = 0; i < _array.length; i++) {
		if(_array[i].tagName == "INPUT") {
			if(_array[i].type == "text") {
				_array[i].focus();
				return true;
			}
		} else {
			var result = setFirstInputFocus(_array[i].childNodes);
			if(result)
				return true;
		}
	}

}

function setupBoxes() {
	
	for(i = 0; i < boxes.length; i++) {
		if(getById("box_" + boxes[i]) == null)
			continue;
		getById("box_" + boxes[i]).className = getById("box_" + boxes[i]).className.replace("dropDownDis", "dropDown");
		getById("box_" + boxes[i]).style.display = "none";
	}
	
	for(i = 0; i < boxesAdditional.length; i++) {
		if(getById("box_" + boxesAdditional[i]) == null)
			continue;
		getById("box_" + boxesAdditional[i]).className = getById("box_" + boxesAdditional[i]).className.replace("dropDownDis", "dropDown");
		getById("box_" + boxesAdditional[i]).style.display = "none";
	}
}