KTK_PANELS_MAX_CHILDRENS_OPEN = 4;

function ktkAddPanelToGroup(objId, groupName) {
	if(!window.panelGroups) panelGroups = new Array();
	if(!panelGroups[groupName]) panelGroups[groupName] = new Array();
	panelGroups[groupName].push(objId);
	var obj = document.getElementById(objId);
	obj.groupName = groupName;
}

function ktkExpandCollapse(objId, show, setCookie, activatedByUser) {
	var obj = document.getElementById(objId);
	if(!obj) return;
	var img = document.getElementById(objId + '_img');
	var ajax = obj.getAttribute("ktkAjax");
	
	var wasExpanded = !obj.style.display;
	
	// style.display es "" (visible) o "none" (invisible)

	var expanded;
	if (typeof(show) == "undefined") {
		// Hacer visible = !visible
		expanded = !wasExpanded;
	} else {
		// Hacer visible = show
		expanded = show;
		if(expanded == wasExpanded) return;
	}
	
	var activatedByUser = activatedByUser || (typeof(show) == "undefined");

	if(expanded && ajax && !obj.ktkLoadedAjax) {
		var url = ROOT_URL + "?a=ajax&panel=" + obj.id + "&t" + new Date().getTime();
		ktkRPC(url);
	}
	obj.style.display = (expanded ? "" : "none");
	img.src = IMAGES_URL + (expanded ? "/panel_expand.gif" : "/panel_collapse.gif");
	
	if (activatedByUser || setCookie) {
		// Activado por usuario
		// ktkSetVar('global', "KTK_EXPANDED_COLLAPSED_STATE_" + obj.id, (expanded ? '0' : '1') );
		ktkSetVar("KTK_PANEL_STATE", obj.id, (expanded ? '0' : '1') );
	}
	
	if(activatedByUser && obj.groupName && expanded) {
		// Esconder otros tabs (arr = arreglo de sieblings)
		var arr = window.panelGroups[obj.groupName];

		if(ktkPanel_GetTotalChildrens(obj.groupName) >= KTK_PANELS_MAX_CHILDRENS_OPEN) {
			for(i in arr) {
				var otherObjId = arr[i];
				if(otherObjId != objId) {
					ktkExpandCollapse(otherObjId, false, true);
				}
			}
		}
		
		var children = window.panelGroups[ktkPanel_GetLevel(objId)];
		if(children) {
			if(children.length == 1 || ktkPanel_GetTotalChildrens(ktkPanel_GetLevel(objId)) <= KTK_PANELS_MAX_CHILDRENS_OPEN) {
				for(var c in children) {
					ktkExpandCollapse(children[c], true, true, true);
				}
			}
		}
	}
	
	if(wasExpanded != expanded) {
		ktkWindowResized();
	}
}

function ktkInitPanel(name) {
	// var show = (ktkGetVar('global', 'KTK_EXPANDED_COLLAPSED_STATE_' + name) == '0' ? true : false);
	var show = (ktkGetVar('KTK_PANEL_STATE', name) == '0' ? true : false);
	ktkExpandCollapse(name, show)
}

// Extrae el nivel (1_2_3) de un ID (procXXX_1_2_3).
function ktkPanel_GetLevel(id) {
	var i = id.indexOf("_");
	return id.substr(i + 1);
}

// Retorna el número total de paneles hijos (contando recursivamente)
function ktkPanel_GetTotalChildrens(level) {
	var childrens = window.panelGroups[level];
	var count = 0;
	if(childrens) {
		for(var c in childrens) {
			count++;
			var childId = childrens[c];
			count += ktkPanel_GetTotalChildrens(ktkPanel_GetLevel(childId));
		}
	}
	return count;
}
