/**
 * hml_menu.js (2008-oct-28)
 * (c) by Alejandro Gudiel
 * All Rights Reserved
 * License does not permit use by third parties
**/

var globalHMLTabsArray = new Array();
function objHMLTabs(strID, varContainer, intWidth) {
	if (!strID || !varContainer) {
		alert("Falta ID o Container");
		return false;
	}

	if (!intWidth) intWidth = 770;

	this.strID = strID;
	globalHMLTabsArray[strID] = this;

	if (!varContainer.tagName) {
		this.strContainer = varContainer;
		this.objContainer = document.getElementById(varContainer);
	}
	else {
		this.objContainer = varContainer;
		this.strContainer = this.objContainer.id;
	}

	this.intWidth = intWidth;
	this.intTabsHeight = 30;
	this.strTabsAlign = "left";
	this.intMaxLinksTop = 5;
	this.intMaxRowsPico = 15;


	this.strTabsFillColor = "#E6E6E6";
	this.strSelectedTabFillColor = "#B4B4B4";
	this.strOverTabFillColor = "#B4B4B4";

	this.strContentsFillColor = "#F8F8F8";

	this.strStrokeColor = "black";
	this.intStrokeWeight = 1;
	this.intAlpha = 75;
	this.intCurveRadius = 15;

	this.strTrianguloUpFill = "white";
	this.strTriangulosDownFill = "black";
	this.strTrianguloScrollFill = "#B4B4B4";

	this.strSepLineColor = "black";
	this.intSepLineAlpha = 30;

	this.strPicoWindowFillColor = "#F8F8F8";
	this.intPicoAlpha = 75;
	this.intPicoCurveRadius = 15;
	this.boolPicoSquareCorners = false;


    this.strGroupTitleClass = "";
	this.strLinkCatClass = "";
	this.strLinkClass = "";
	this.strLinksBullet = "";
	this.boolLinkAsLI = true;


	this.boolMakeContainerGrow = false;
	this.boolOpenLastTab = false;
	this.boolLoadLinksOnDemand = false;
	this.strEmptyStatsAreaText = "Aquí aparecerán los vínculos que más utilice para el módulo.";

	// Array de Tabs
	this.arrTabs = new Array();
	this.intNextTabID = 1;
	this.intSelectedTab = 0;
	this.objOptionsTab = false;
	this.objLastPicoShown = false;
	this.intScrollPosition = 1;
	this.intDefaultTab = 0;

	this.objMouseOutStuctureTimer = false;
	this.objMouseOutFloatTimer = false;
	this.objMouseOverTabTimer = false;
	this.objMouseOverPicoTimer = false;

	// Funciones
	this.addTab = objHMLTabs_addTab;
	this.addContentsTab = objHMLTabs_addContentsTab;
    this.addOptionsTab = objHMLTabs_addOptionsTab;
	this.addSearchTab = objHLMTabs_addSearchTab;
	this.selectTab = objHMLTabs_selectTab;
	this.hideSelectTab = objHMLTabs_hideSelectTab;
	this.locateTabByID = objHMLTabs_locateTabByID;
	this.draw = objHMLTabs_draw;

	this.mouseOverStructure = objHMLTabs_mouseOverStructure;
	this.mouseOutOfStructure = objHMLTabs_mouseOutOfStructure;

	this.mouseOverFloat = objHMLTabs_mouseOverFloat;
	this.mouseOutOfFloat = objHMLTabs_mouseOutOfFloat;
}

// TabMenu functions
function objHMLTabs_mouseOverStructure() {
	if (this.objMouseOutStuctureTimer > 0) {
		clearTimeout(this.objMouseOutStuctureTimer);
	}
	this.objMouseOutStuctureTimer = false;
}
function objHMLTabs_mouseOutOfStructure(intTime) {
	if (!intTime) intTime = 500;

	if (this.objMouseOutStuctureTimer > 0) clearTimeout(this.objMouseOutStuctureTimer);
	this.objMouseOutStuctureTimer = setTimeout("objHMLTabs_hideAll('"+this.strID+"')", intTime, "JavaScript");
}
function objHMLTabs_mouseOverFloat() {
	if (this.objMouseOutStuctureTimer > 0) clearTimeout(this.objMouseOutStuctureTimer);
	this.objMouseOutStuctureTimer = false;

	if (this.objMouseOutFloatTimer > 0) clearTimeout(this.objMouseOutFloatTimer);
	this.objMouseOutFloatTimer = false;
}
function objHMLTabs_mouseOutOfFloat(intTime) {
	if (!intTime) intTime = 500;

	if (this.objMouseOutFloatTimer > 0) clearTimeout(this.objMouseOutFloatTimer);
	this.objMouseOutFloatTimer = setTimeout("objHMLTabs_hideFloats('"+this.strID+"')", intTime, "JavaScript");

	if (this.objMouseOutStuctureTimer > 0) clearTimeout(this.objMouseOutStuctureTimer);
	this.objMouseOutStuctureTimer = setTimeout("objHMLTabs_hideAll('"+this.strID+"')", intTime + 200, "JavaScript");
}
function objHMLTabs_hideAll(strID) {
	var objTabMenuObject = globalHMLTabsArray[strID];

	if (objTabMenuObject.intSelectedTab) {
		if (objTabMenuObject.arrTabs[objTabMenuObject.intSelectedTab].objQuickScrollBox) {
			objTabMenuObject.arrTabs[objTabMenuObject.intSelectedTab].objQuickScrollBox.fadeout();
		}
		if (!objTabMenuObject.boolMakeContainerGrow) {
			objTabMenuObject.hideSelectTab();
		}
	}

	if (objTabMenuObject.objLastPicoShown) {
		objTabMenuObject.objLastPicoShown.objParent.picohide();
	}
}
function objHMLTabs_hideFloats(strID) {
	var objTabMenuObject = globalHMLTabsArray[strID];

	if (objTabMenuObject.intSelectedTab) {
		if (objTabMenuObject.arrTabs[objTabMenuObject.intSelectedTab].objQuickScrollBox) {
			objTabMenuObject.arrTabs[objTabMenuObject.intSelectedTab].objQuickScrollBox.fadeout();
		}
	}

	if (objTabMenuObject.objLastPicoShown) {
		objTabMenuObject.objLastPicoShown.objParent.picohide();
	}
}
function objHMLTabs_addTab(strID, strTitle, strContents, strToolTip) {
    if (!strID || !strTitle) {
        alert("Necesita un id y un titulo para el tab");
        return false;
    }
    if (!strContents) strContents = "";
    if (!strToolTip) strToolTip = "";

    var strIDTab = this.strID + "_tab_" + this.intNextTabID;
    var strIDBox = this.strID + "_box_" + this.intNextTabID;

    var intDefaultLeft = 100*this.intNextTabID;

    // Definicion del tabObject como tal va implicita
    this.arrTabs[this.intNextTabID] = new Object();

    // tabProperties
    this.arrTabs[this.intNextTabID].intIdInParent = this.intNextTabID;
    this.arrTabs[this.intNextTabID].objParent = this;
    this.arrTabs[this.intNextTabID].strID = strID;
    this.arrTabs[this.intNextTabID].strTabTitle = strTitle;
    this.arrTabs[this.intNextTabID].strTabContents = strContents;
    this.arrTabs[this.intNextTabID].strToolTip = strToolTip;
    this.arrTabs[this.intNextTabID].boolGroupsDrawn = false;
    this.arrTabs[this.intNextTabID].intMaxGroups = 4;
    this.arrTabs[this.intNextTabID].intLineWidth = 1;
    this.arrTabs[this.intNextTabID].intLineMargin = 5;
    this.arrTabs[this.intNextTabID].intNextGroupID = 1;
    this.arrTabs[this.intNextTabID].intScrollGroup = 1;
    this.arrTabs[this.intNextTabID].intInitScroll = 0;
    this.arrTabs[this.intNextTabID].boolDoScrollTo = false;
    this.arrTabs[this.intNextTabID].objQuickScroll = false;
    this.arrTabs[this.intNextTabID].objQuickScrollBox = false;
    this.arrTabs[this.intNextTabID].arrGroups = new Array();

    // tabTitle
    this.arrTabs[this.intNextTabID].objTab = new objHMLShapesTab(strIDTab, this.objContainer, intDefaultLeft, 0, 100, this.intTabsHeight, this.strTabsFillColor, this.strStrokeColor, this.intStrokeWeight, this.intAlpha);
    this.arrTabs[this.intNextTabID].objTab.intIdInParent = this.intNextTabID;
    this.arrTabs[this.intNextTabID].objTab.objParent = this;

    // tabContents
    this.arrTabs[this.intNextTabID].objTabBox = new objHMLShapesTabBox(strIDBox, this.objContainer, 0, this.intTabsHeight, this.intWidth, 5, this.strContentsFillColor, this.strStrokeColor, this.intStrokeWeight, this.intAlpha);
    this.arrTabs[this.intNextTabID].objTabBox.intIdInParent = this.intNextTabID;
    this.arrTabs[this.intNextTabID].objTabBox.objParent = this;

    // tabFunctions
    this.arrTabs[this.intNextTabID].addGroup = objHMLTabsTab_addGroup;
    this.arrTabs[this.intNextTabID].getGroup = objHMLTabsTab_getGroup;
    this.arrTabs[this.intNextTabID].drawContents = objHMLTabsTab_drawContents;
    this.arrTabs[this.intNextTabID].drawGroups = objHMLTabsTab_drawGroups;
    this.arrTabs[this.intNextTabID].updateHeight = objHMLTabsTab_updateHeight;
    this.arrTabs[this.intNextTabID].scrollLeft = objHMLTabsTab_scrollLeft;
    this.arrTabs[this.intNextTabID].scrollLeftDone = objHMLTabsTab_scrollLeftDone;
    this.arrTabs[this.intNextTabID].scrollRight = objHMLTabsTab_scrollRight;
    this.arrTabs[this.intNextTabID].scrollRightDone = objHMLTabsTab_scrollRightDone;
    this.arrTabs[this.intNextTabID].scrollShowHide = objHMLTabsTab_scrollShowHide;
    this.arrTabs[this.intNextTabID].scrollTo = objHMLTabsTab_scrollTo;

    this.intNextTabID++;

    return this.arrTabs[this.intNextTabID - 1];
}
function objHMLTabs_addContentsTab(strID, strTitle, strToolTip) {
	if (!strToolTip) strToolTip = "";

    var objContentsTab = this.addTab(strID, strTitle, "", strToolTip);

	objContentsTab.objTabBox.addContents("&nbsp;");

	objContentsTab.objTabCustomContents = document.createElement("div");

    objContentsTab.objTabBox.objContents.innerHTML = "";
	objContentsTab.objTabBox.objContents.appendChild(objContentsTab.objTabCustomContents);

	objContentsTab.objTabCustomContents.tabObject = objContentsTab;

	return objContentsTab;
}
function objHMLTabs_addOptionsTab(strID, strTitle, strToolTip) {
	if (!strToolTip) strToolTip = "";

	if (!this.objOptionsTab) {
		this.objOptionsTab = this.addContentsTab(strID, strTitle, strToolTip);
	}

	this.objOptionsTab.strOptionsText = "Configuración del menú";
	this.objOptionsTab.strSaveButtonText = "Guardar";
	this.objOptionsTab.strResetButtonText = "Reiniciar";

	this.objOptionsTab.strCatBehaviourText = "Posición";
	this.objOptionsTab.strCatBehaviour_OpenLastTabText = "Menú siempre visible.";
	this.objOptionsTab.strCatBehaviour_MakeContainerGrowText = "Mostrar menú sobre contenido.";

	this.objOptionsTab.strCatStylesText = "Estilo";
	this.objOptionsTab.strCatStyles_intAlphaText = "Transparencia del menú.";
	this.objOptionsTab.strCatStyles_intPicoAlphaText = "Transparencia del sub menú.";

	this.objOptionsTab.strCatPerformanceText = "Desempeño";
	this.objOptionsTab.strCatPerformanceText_preLoadXML = "Pre-cargar vínculos";
	this.objOptionsTab.strCatPerformanceText_useAJAX = "Cargar víinculos conforme los voy usando";
	this.objOptionsTab.strCatPerformanceText_LinksOnTop = "Vínculos en la parte superior";

	this.boolContentsDrawn = false;

	this.objOptionsTab.drawContents = function () {
		if (this.boolContentsDrawn) return true;

		this.boolContentsDrawn = true;

		var objContents = this.objTabCustomContents;
		var objForm = document.createElement("form");
		var objTable = document.createElement("table");
		var objRow = false;
		var objCell = false;
		var objElement = false;

		objContents.innerHTML = "";

		objTable.align = "center";
		objTable.cellSpacing = 2;
		objTable.cellPadding = 2;
		objTable.border = 0;

		objRow = objTable.insertRow(0);
		objCell = objRow.insertCell(0);
		objCell.className = this.objParent.strLinkCatClass;
		objCell.colSpan = 3;
		objCell.innerHTML = this.strCatBehaviourText;

		objRow = objTable.insertRow(1);
		objCell = objRow.insertCell(0);
		objCell.width = "1";
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "checkbox";
		objElement.className = "field_checkbox";
		objElement.value = 1;
		objElement.checked = this.objParent.boolOpenLastTab;
		objElement.defaultChecked = this.objParent.boolOpenLastTab;
		objElement.onclick = function() {
			var strTMP = (this.checked)?"true":"false";
			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&saveOption=boolOpenLastTab&optionValue=" + strTMP);
			objTmpXHR.send();

			objElement.optionsTab.objParent.boolOpenLastTab = this.checked;
		}
		objCell.appendChild(objElement);
		objCell = objRow.insertCell(1);
		objCell.colSpan = 2;
		objCell.className = this.objParent.strLinkClass;
		objCell.innerHTML = this.strCatBehaviour_OpenLastTabText;

		objRow = objTable.insertRow(2);
		objCell = objRow.insertCell(0);
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "checkbox";
		objElement.className = "field_checkbox";
		objElement.value = 1;
		objElement.checked = !this.objParent.boolMakeContainerGrow;
		objElement.defaultChecked = !this.objParent.boolMakeContainerGrow;
		objElement.onclick = function() {
			var strTMP = (this.checked)?"false":"true";
			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&saveOption=boolMakeContainerGrow&optionValue=" + strTMP);
			objTmpXHR.send();

			objElement.optionsTab.objParent.boolMakeContainerGrow = !this.checked;
		}
		objCell.appendChild(objElement);
		objCell = objRow.insertCell(1);
		objCell.colSpan = 2;
		objCell.className = this.objParent.strLinkClass;
		objCell.innerHTML = this.strCatBehaviour_MakeContainerGrowText;

		objRow = objTable.insertRow(3);
		objCell = objRow.insertCell(0);
		objCell.colSpan = 3;
		objCell.innerHTML = "&nbsp;";


		objRow = objTable.rows[0];
		objCell = objRow.insertCell(1);
		objCell.className = this.objParent.strLinkCatClass;
		objCell.colSpan = 3;
		objCell.innerHTML = this.strCatStylesText;

		objRow = objTable.rows[1];
		objCell = objRow.insertCell(2);
		objCell.colSpan = 2;
		objCell.className = this.objParent.strLinkClass;
		objCell.innerHTML = this.strCatStyles_intAlphaText;

		objCell = objRow.insertCell(3);
		objCell.width = "3";
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "text";
		objElement.className = "field_textbox";
		objElement.size = 3;
		objElement.maxLength = 3;
		objElement.value = (100 - this.objParent.intAlpha);
		objElement.onchange = function() {
			this.value = 1*this.value;
			if (this.value < 0) this.value = 0;
			if (this.value > 75) this.value = 75;
			var intAlpha = (100 - this.value);
			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&saveOption=intAlpha&optionValue=" + intAlpha);
			objTmpXHR.send();

			objElement.optionsTab.objParent.intAlpha = intAlpha;
		}
		objCell.appendChild(objElement);

		objRow = objTable.rows[2];
		objCell = objRow.insertCell(2);
		objCell.colSpan = 2;
		objCell.className = this.objParent.strLinkClass;
		objCell.innerHTML = this.strCatStyles_intPicoAlphaText;

		objCell = objRow.insertCell(3);
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "text";
		objElement.className = "field_textbox";
		objElement.size = 3;
		objElement.maxLength = 3;
		objElement.value = (100 - this.objParent.intPicoAlpha);
		objElement.onchange = function() {
			this.value = 1*this.value;
			if (this.value < 0) this.value = 0;
			if (this.value > 75) this.value = 75;
			var intAlpha = (100 - this.value);
			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&saveOption=intPicoAlpha&optionValue=" + intAlpha);
			objTmpXHR.send();

			objElement.optionsTab.objParent.intPicoAlpha = intAlpha;
		}
		objCell.appendChild(objElement);

		objRow = objTable.rows[3];
		objCell = objRow.insertCell(1);
		objCell.colSpan = 3;
		objCell.innerHTML = "&nbsp;";


		objRow = objTable.rows[0];
		objCell = objRow.insertCell(2);
		objCell.className = this.objParent.strLinkCatClass;
		objCell.colSpan = 3;
		objCell.innerHTML = this.strCatPerformanceText;

		objRow = objTable.rows[1];
		objCell = objRow.insertCell(4);
		objCell.width = "1";
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "radio";
		objElement.id = "radPreload";
		objElement.name = "radPreload";
		objElement.className = "field_checkbox";
		objElement.value = "preload";
		if (!objElement.optionsTab.objParent.boolLoadLinksOnDemand) objElement.checked = true;
		objElement.onclick = function() {
			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&saveOption=boolLoadLinksOnDemand&optionValue=false");
			objTmpXHR.onStatusOK = function () {
				document.location.href = "";
			}
			objTmpXHR.send();

			objElement.optionsTab.objParent.boolLoadLinksOnDemand = false;
		}
		objCell.appendChild(objElement);

		objCell = objRow.insertCell(5);
		objCell.colSpan = 2;
		objCell.className = this.objParent.strLinkClass;
		objCell.innerHTML = this.strCatPerformanceText_preLoadXML;


		objRow = objTable.rows[2];
		objCell = objRow.insertCell(4);
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "radio";
		objElement.id = "radPreload";
		objElement.name = "radPreload";
		objElement.className = "field_checkbox";
		objElement.value = "ajax";
		if (objElement.optionsTab.objParent.boolLoadLinksOnDemand) objElement.checked = true;
		objElement.onclick = function() {
			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&saveOption=boolLoadLinksOnDemand&optionValue=true");
			objTmpXHR.send();

			objElement.optionsTab.objParent.boolLoadLinksOnDemand = true;
		}
		objCell.appendChild(objElement);

		objCell = objRow.insertCell(5);
		objCell.colSpan = 2;
		objCell.className = this.objParent.strLinkClass;
		objCell.innerHTML = this.strCatPerformanceText_useAJAX;

		objRow = objTable.rows[3];
		objCell = objRow.insertCell(2);
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "text";
		objElement.className = "field_textbox";
		objElement.size = 2;
		objElement.maxLength = 2;
		objElement.value = objElement.optionsTab.objParent.intMaxLinksTop;
		objElement.onchange = function() {
			this.value = 1*this.value;
			if (this.value < 0) this.value = 0;
			if (this.value > 20) this.value = 20;

			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&saveOption=intMaxLinksTop&optionValue=" + this.value);
			objTmpXHR.send();
		}
		objCell.appendChild(objElement);

		objCell = objRow.insertCell(3);
		objCell.colSpan = 2;
		objCell.className = this.objParent.strLinkClass;
		objCell.innerHTML = this.strCatPerformanceText_LinksOnTop;


		objRow = objTable.insertRow(objTable.rows.length);
		objCell = objRow.insertCell(0);
		objCell.colSpan = 5;
		objCell.align = "center";
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "button";
		objElement.className = "button";
		objElement.value = this.strSaveButtonText;
		objElement.onclick = function() {
			document.location.href = "";
		}
		objCell.appendChild(objElement);

		objCell = objRow.insertCell(1);
		objCell.colSpan = 4;
		objCell.align = "center";
		objElement = document.createElement("input");
		objElement.optionsTab = this;
		objElement.type = "button";
		objElement.className = "button";
		objElement.value = this.strResetButtonText;
		objElement.onclick = function() {
			var objTmpXHR = new hmlXHRObject();
			objTmpXHR.open("hmlMenu.php?ajax=1&reset=1");
			objTmpXHR.onStatusOK = function () {
				document.location.href = "";
			}
			objTmpXHR.send();
		}
		objCell.appendChild(objElement);


		objRow = objTable.insertRow(objTable.rows.length);
		objCell = objRow.insertCell(0);
		objCell.colSpan = 9;
		objCell.className = this.objParent.strGroupTitleClass;
		objCell.innerHTML = this.strOptionsText;

		//*/
		objForm.appendChild(objTable);
		objContents.appendChild(objForm);

		var arrDimentions = getObjDimentions(this.objTabCustomContents);
		this.objTabBox.redefine(false, arrDimentions["height"] + 5, this.objTabBox.intCurveRadius);

		return true;
	}

	return this.objOptionsTab;
}
function objHLMTabs_addSearchTab(strID, strTitle, strToolTip) {
    if (!this.objSearchTab) {
        this.objSearchTab = this.addContentsTab(strID, strTitle, strToolTip);
    }

    this.boolContentsDrawn = false;
    this.objSearchTab.drawContents = function () {
        if (this.boolContentsDrawn) return true;

        this.boolContentsDrawn = true;

        var objContents = this.objTabCustomContents;
        var objForm = document.createElement("form");
        objForm.name = "form1";
        objForm.setAttribute("onsubmit","return false;");
        var objTable = document.createElement("table");
        var objRow = false;
        var objCell = false;
        var objElement = false;


        objContents.innerHTML = "&nbsp;";

        objTable.align = "center";
        objTable.width = "100%";
        objTable.cellSpacing = 2;
        objTable.cellPadding = 2;
        objTable.border = 0;

        objRow = objTable.insertRow(0);
        objCell = objRow.insertCell(0);
        objCell.width = "10%";
        objElement = document.createElement("input");
        objElement.type = "text";
        objElement.name = "txtBusquedaTab";
        objElement.id = "txtBusquedaTab";
        objElement.className = "field_textbox";
        //objElement.style.font-size = "";
        objElement.value = "buscar...";
        objElement.onfocus = function() {
            this.select();
        }
        objElement.tecla = window.event;
        objElement.onkeypress = function() {

            teclas = (document.all) ? event.keyCode : event.which;
            if (teclas == 13) {
                getDocumentLayer("btnBuscar2").click();
            }
        }
        objCell.appendChild(objElement);

        objCell = objRow.insertCell(1);
        objCell.width = "1";
        objElement = document.createElement("input");
        objElement.type = "button";
        objElement.name = "btnBuscar2";
        objElement.id = "btnBuscar2";
        objElement.className = "button";
        objElement.value = "Buscar";
        objCell.colSpan = 5;
        objElement.objTabBox = this.objTabBox;
        objElement.objTabCustomContents = this.objTabCustomContents;

        objElement.onclick = function() {

            var objInterface = getDocumentLayer("contenedorlink");
            objInterface.style.display = "";

            var arrDimentions = getObjDimentions(this.objTabCustomContents);
            this.objTabBox.redefine(false, arrDimentions["height"] + 5, this.objTabBox.intCurveRadius);

            var busqueda = getDocumentLayer("txtBusquedaTab");
            objInterface.innerHTML = "Cargando...";
            var objXHRMain = new hmlXHRObject();
            objXHRMain.open("hmlMenu.php?ajax=1&search="+busqueda.value);
            objXHRMain.onStatusOK = function () {

               drawLinksFromXHR2(objXHRMain, objInterface);

            }
            objXHRMain.onStatusFail = function () {
                this.objInterface.innerHTML = "Fallo conexión";
            }
            objXHRMain.send();
        }
        objCell.appendChild(objElement);

        objRow = objTable.insertRow(1);
        //objRow.height="200px";
        objCell = objRow.insertCell(0);
        //objCell.height = "200px";
        objCell.className = this.objParent.strLinkClass;
        objCell.colSpan = 6;
        objElement = document.createElement("div");
        //objElement.height="200px";
        objElement.id = "contenedorlink1";
        //objElement.style.display="none";
        objElement.innerHTML = "<input type='text' style='display:none'><div id='contenedorlink' style='height:180px;overflow:auto;display:none;'></div>";
        //objElement.innerHTML = "<input type='text' style='display:none'><div id='contenedorlink' style='height:180px;overflow:auto;display:none;scrollbar-3dlight-color:aqua;scrollbar-arrow-color:blue;scrollbar-base-color:magenta;scrollbar-darkshadow-color:darksalmon;scrollbar-face-color:fuchsia;scrollbar-highlight-color:yellow;scrollbar-shadow-color:orange'></div>";
        objCell.appendChild(objElement);

        objRow = objTable.insertRow(objTable.rows.length);
        objCell = objRow.insertCell(0);
        objCell.className = this.objParent.strGroupTitleClass;
        objCell.colSpan = 6;
        objCell.align = "left";
        objCell.innerHTML = "Busqueda de links";

        objForm.appendChild(objTable);
        objContents.appendChild(objForm);
        var arrDimentions = getObjDimentions(this.objTabCustomContents);
        this.objTabBox.redefine(false, arrDimentions["height"] + 5, this.objTabBox.intCurveRadius);
        //alert(this.objTabBox);
        return true;
    }


    return this.objSearchTab;
}

function drawLinksFromXHR2(objXHR, objContainer) {

    var arrLinksArray = new Array();

    var objResponseXML = objXHR.getResponseXMLObject();
    var arrDivisions = objResponseXML.getElementsByTagName("division");

    var intDivs = 0;

    for (intDivs = 0; intDivs < arrDivisions.length; intDivs++) {
        arrLinksArray[intDivs] = new Array();
        arrLinksArray[intDivs]["title"] = arrDivisions[intDivs].getAttribute("title");
        arrLinksArray[intDivs]["link"] = new Array();

        arrLinks = arrDivisions[intDivs].getElementsByTagName("link");
        for (intLinks = 0; intLinks < arrLinks.length; intLinks++) {
            arrLinksArray[intDivs]["link"][intLinks] = new Array();
            arrLinksArray[intDivs]["link"][intLinks]["title"] = arrLinks[intLinks].getAttribute("title");
            arrLinksArray[intDivs]["link"][intLinks]["link"] = arrLinks[intLinks].getAttribute("link");
            arrLinksArray[intDivs]["link"][intLinks]["grupo"] = arrLinks[intLinks].getAttribute("grupo");
            arrLinksArray[intDivs]["link"][intLinks]["modulo"] = arrLinks[intLinks].getAttribute("modulo");
        }
    }

    drawLinksFromArray2(arrLinksArray, objContainer);
}

function drawLinksFromArray2(arrDivisions, objContainer) {
    var arrLinks;
    var intDivs = 0;
    var intLinks = 0;
    var strInnerHTML = "";

    var intTotLinks = 0;
    objContainer.innerHTML = "";
    strInnerHTML1 = "<table width='100%' border='1' cellpadding='0' cellspacing='0'>";
    for (intDivs = 0; intDivs < arrDivisions.length; intDivs++) {

        arrLinks = arrDivisions[intDivs]["link"];
        strText = arrDivisions[intDivs]["title"];

        for (intLinks = 0; intLinks < arrLinks.length; intLinks++) {
            //intCuantos++;
            //if (intDivs <= 8) {
            var strTmpLink = arrLinks[intLinks]["link"];
            var strModulo = arrLinks[intLinks]["modulo"];
            //strText = arrLinks[intLinks]["title"];

            var strGetChar = "?";
            var intTMP = strTmpLink.indexOf("?", 0);
            if (intTMP >= 1) strGetChar = "&";

            if(arrLinks[intLinks]["grupo"] == "ACAD")
                strInnerHTML += "<tr><td>&nbsp;&nbsp;<img src='images/ico20/tab_ACAD.png'></td><td valign='middle'><a href = '"+strTmpLink+strGetChar+"strModulo="+strModulo+"&saveLinkStats="+arrLinks[intLinks]["title"]+"'>"+strText+" / "+arrLinks[intLinks]["title"]+"</a></td></tr>";
            else if(arrLinks[intLinks]["grupo"] == "ADMON")
                strInnerHTML += "<tr><td>&nbsp;&nbsp;<img src='images/ico20/tab_OPTIONS.png'></td><td valign='middle'><a href = '"+strTmpLink+strGetChar+"strModulo="+strModulo+"&saveLinkStats="+arrLinks[intLinks]["title"]+"'>"+strText+" / "+arrLinks[intLinks]["title"]+"</a></td></tr>";
            else if(arrLinks[intLinks]["grupo"] == "COMM")
                strInnerHTML += "<tr><td>&nbsp;&nbsp;<img src='images/ico20/tab_COMM.png'></td><td valign='middle'><a href = '"+strTmpLink+strGetChar+"strModulo="+strModulo+"&saveLinkStats="+arrLinks[intLinks]["title"]+"'>"+strText+" / "+arrLinks[intLinks]["title"]+"</a></td></tr>";
            else if(arrLinks[intLinks]["grupo"] == "WS")
                strInnerHTML += "<tr><td>&nbsp;&nbsp;<img src='images/ico20/tab_WS.png'></td><td valign='middle'><a href = '"+strTmpLink+strGetChar+"strModulo="+strModulo+"&saveLinkStats="+arrLinks[intLinks]["title"]+"'>"+strText+" / "+arrLinks[intLinks]["title"]+"</a></td></tr>";
            else
                strInnerHTML += "<tr><td>&nbsp;&nbsp;<img src='images/menuListIco.png'></td><td valign='middle'><a href = '"+strTmpLink+strGetChar+"strModulo="+strModulo+"&saveLinkStats="+arrLinks[intLinks]["title"]+"'>"+strText+" / "+arrLinks[intLinks]["title"]+"</a></td></tr>";
            //}
        }



    }
    if (strInnerHTML.length > 0) {
        strInnerHTML += strInnerHTML1+"</table>";
    }
    else {
        strInnerHTML = "<table width='100%' border='0' cellpadding='0' cellspacing='0'>";
        strInnerHTML += "<tr><td class='error'>No hay resultados.</td></tr>";
        strInnerHTML += "</table>";
    }
    objContainer.innerHTML = strInnerHTML;

}


function objHMLTabs_draw() {
	var intTMP;
	var arrDim = false;
	var intCR = false;
	var intWidth = false;
	var intHeight = false;
	var intMaxTabHeight = 0;
	var intMaxTotalHeight = 0;
	var intTabSeparation = 1;
	var objTmpSpan = document.createElement("span");
	this.objContainer.appendChild(objTmpSpan);

	var intAccLeft = 0;

	// Cuadrito para esconder el tab visible
	this.objHideBox = new objHMLShapesTab(this.strID + "_HideBox", this.objContainer, 0, 0, 14, 9, this.strTabsFillColor, this.strStrokeColor, this.intStrokeWeight, this.intAlpha, true, "&nbsp;");
	this.objHideBox.objParent = this;
	this.objHideBox.stroke();
	this.objHideBox.hide();

	this.objHideBox.objTriangle = new objHMLShapesAnyShape(this.strID + "_HideBox_Triangle", this.objHideBox.objContents, false,
														   "M5,0 L10,5 L0,5 L5,0 z",
														   0, 0, 10, 5, this.strTrianguloUpFill, "transparent");
	this.objHideBox.objTriangle.stroke();
	if (this.objHideBox.objTriangle.objBackFrame) {
		var strPatron  =/#/ig;
		var strColor = this.strTabsFillColor;
		strColor = strColor.replace(strPatron, "|");
		this.objHideBox.objTriangle.objBackFrame.src = "core/index.php?backColor=" + strColor;
	}

	this.objHideBox.objContents.style.cursor = "pointer";
	this.objHideBox.objContents.onmouseover = hmlTabs_overTab;
	this.objHideBox.objContents.onmouseout = hmlTabs_outTab;
	this.objHideBox.objContents.onclick = function () {
		if (this.shapeObject.objParent.intSelectedTab > 0) {
			this.shapeObject.objParent.hideSelectTab();

			this.shapeObject.objParent.objContainer.style.height = this.shapeObject.objParent.intMaxTabHeight + 1;

			if (this.shapeObject.objParent.boolOpenLastTab) {
				var objTmpXHR = new hmlXHRObject();
				objTmpXHR.open("hmlMenu.php?ajax=1&lastTab=");
				objTmpXHR.send();
			}
		}
	};
	intAccLeft += this.objHideBox.intWidth + intTabSeparation;

	// Tabs
	if (this.strTabsAlign == "left") {
		for (intTMP = 1; intTMP < this.intNextTabID; intTMP++) {
			if (intTMP == this.intSelectedTab) this.arrTabs[intTMP].objTab.strFillColor = this.strSelectedTabFillColor;

			objTmpSpan.innerHTML = this.arrTabs[intTMP].strTabTitle;
			arrDim = getObjDimentions(objTmpSpan);
			intCR = Math.round(this.intCurveRadius/4);
			intWidth = arrDim["width"] + 2*intCR + 4*this.intStrokeWeight;
			intHeight = arrDim["height"] + 2*intCR + 4*this.intStrokeWeight;

			this.arrTabs[intTMP].objTab.moveTo(intAccLeft, 0);
			this.arrTabs[intTMP].objTab.redefine(intWidth, intHeight, this.intCurveRadius);
			this.arrTabs[intTMP].objTab.addContents(this.arrTabs[intTMP].strTabTitle);
			this.arrTabs[intTMP].objTab.objContents.title = this.arrTabs[intTMP].strToolTip;
			this.arrTabs[intTMP].objTab.stroke();

			this.arrTabs[intTMP].objTab.objContents.style.cursor = "pointer";
			this.arrTabs[intTMP].objTab.objContents.onmouseover = hmlTabs_overTab;
			this.arrTabs[intTMP].objTab.objContents.onmouseout = hmlTabs_outTab;
			this.arrTabs[intTMP].objTab.objContents.onclick = hmlTabs_selTab;

			this.arrTabs[intTMP].objTabBox.moveTo(0, intHeight);
			this.arrTabs[intTMP].objTabBox.redefine(0, 0, this.intCurveRadius, intAccLeft, intWidth);
			this.arrTabs[intTMP].objTabBox.addContents(this.arrTabs[intTMP].strTabContents);

			if (intHeight > intMaxTabHeight) intMaxTabHeight = intHeight;
			if ((intHeight + this.arrTabs[intTMP].objTabBox.intHeight) > intMaxTotalHeight) intMaxTotalHeight = (intHeight + this.arrTabs[intTMP].objTabBox.intHeight);

			intAccLeft += this.arrTabs[intTMP].objTab.intWidth + intTabSeparation;
		}
	}
	else {
		intAccLeft = this.intWidth;
		for (intTMP = this.intNextTabID-1; intTMP >= 1; intTMP--) {
			if (intTMP == this.intSelectedTab) this.arrTabs[intTMP].objTab.strFillColor = this.strSelectedTabFillColor;

			objTmpSpan.innerHTML = this.arrTabs[intTMP].strTabTitle;
			arrDim = getObjDimentions(objTmpSpan);
			intCR = Math.round(this.intCurveRadius/4);
			intWidth = arrDim["width"] + 2*intCR + 4*this.intStrokeWeight;
			intHeight = arrDim["height"] + 2*intCR + 4*this.intStrokeWeight;

			intAccLeft -= intWidth + intTabSeparation;

			this.arrTabs[intTMP].objTab.moveTo(intAccLeft, 0);
			this.arrTabs[intTMP].objTab.redefine(intWidth, intHeight, this.intCurveRadius);
			this.arrTabs[intTMP].objTab.addContents(this.arrTabs[intTMP].strTabTitle);
			this.arrTabs[intTMP].objTab.objContents.title = this.arrTabs[intTMP].strToolTip;
			this.arrTabs[intTMP].objTab.stroke();

			this.arrTabs[intTMP].objTab.objContents.style.cursor = "pointer";
			this.arrTabs[intTMP].objTab.objContents.onmouseover = hmlTabs_overTab;
			this.arrTabs[intTMP].objTab.objContents.onmouseout = hmlTabs_outTab;
			this.arrTabs[intTMP].objTab.objContents.onclick = hmlTabs_selTab;

			this.arrTabs[intTMP].objTabBox.moveTo(0, intHeight);
			this.arrTabs[intTMP].objTabBox.redefine(0, 0, this.intCurveRadius, intAccLeft, intWidth);
			this.arrTabs[intTMP].objTabBox.addContents(this.arrTabs[intTMP].strTabContents);

			if (intHeight > intMaxTabHeight) intMaxTabHeight = intHeight;
			if ((intHeight + this.arrTabs[intTMP].objTabBox.intHeight) > intMaxTotalHeight) intMaxTotalHeight = (intHeight + this.arrTabs[intTMP].objTabBox.intHeight);
		}
	}
	objTmpSpan.style.display = "none";

	intTMP = Math.round(intMaxTabHeight/2);
	if (this.strTabsAlign == "left") {
		this.objHideBox.moveTo(0, intMaxTabHeight - 9);
	}
	else {
		this.objHideBox.moveTo(intAccLeft - this.objHideBox.intWidth - intTabSeparation, intMaxTabHeight - 9);
	}
	this.intMaxTabHeight = intMaxTabHeight;

	this.objContainer.style.height = this.intMaxTabHeight + 1;
	this.objHideBox.hide();

	if (this.intDefaultTab && this.boolOpenLastTab) {
		this.selectTab(this.intDefaultTab);
	}
}

function objHMLTabs_hideSelectTab() {
	if (this.intSelectedTab > 0) {
		if (boolHMLShapesUseMicrosoftVectors) {
			this.arrTabs[this.intSelectedTab].objTab.objVector.fillcolor = this.strTabsFillColor;
			this.arrTabs[this.intSelectedTab].objTab.objVector.strokecolor = this.strStrokeColor;
			this.arrTabs[this.intSelectedTab].objTab.objVector.strokeweight = this.intStrokeWeight;

			this.arrTabs[this.intSelectedTab].objTab.objVector.filled = (this.strTabsFillColor == "" || this.strTabsFillColor == "transparent")?"f":"t";
			this.arrTabs[this.intSelectedTab].objTab.objVector.stroked = (this.strStrokeColor == "" || this.strStrokeColor == "transparent")?"f":"t";
		}
		else if (boolHMLShapesUseCanvasVectors) {
			this.arrTabs[this.intSelectedTab].objTab.objCanvasContext.clearRect(0, 0, this.arrTabs[this.intSelectedTab].objTab.intWidth, this.arrTabs[this.intSelectedTab].objTab.intHeight);

			if (this.strTabsFillColor != "" && this.strTabsFillColor != "transparent") {
				this.arrTabs[this.intSelectedTab].objTab.objCanvasContext.fillStyle = this.strTabsFillColor;
			}
			if (this.strStrokeColor != "" && this.strStrokeColor != "transparent") {
				this.arrTabs[this.intSelectedTab].objTab.objCanvasContext.lineWidth = this.intStrokeWeight;
				this.arrTabs[this.intSelectedTab].objTab.objCanvasContext.strokeStyle = this.strStrokeColor;
			}

			if (this.strTabsFillColor != "" && this.strTabsFillColor != "transparent") this.arrTabs[this.intSelectedTab].objTab.objCanvasContext.fill();
			if (this.strStrokeColor != "" && this.strStrokeColor != "transparent") this.arrTabs[this.intSelectedTab].objTab.objCanvasContext.stroke();
		}
		this.arrTabs[this.intSelectedTab].objTabBox.fadeout();
		if (this.arrTabs[this.intSelectedTab].objQuickScrollBox) this.arrTabs[this.intSelectedTab].objQuickScrollBox.fadeout();

		this.intSelectedTab = 0;
	}
	if (this.objLastPicoShown) this.objLastPicoShown.objParent.picohide();

	this.objHideBox.hide();
}

function objHMLTabs_selectTab(intID) {
	if (this.objMouseOverTabTimer) clearTimeout(this.objMouseOverTabTimer);

	if (this.intSelectedTab > 0) {
		var boolRetFalse = false;
		if (this.intSelectedTab == intID) {
			boolRetFalse = true;
		}

		this.hideSelectTab();

		this.objContainer.style.height = this.intMaxTabHeight + 1;

		if (boolRetFalse) {
			if (this.boolOpenLastTab) {
				var objTmpXHR = new hmlXHRObject();
				objTmpXHR.open("hmlMenu.php?ajax=1&lastTab=");
				objTmpXHR.send();
			}
			return false;
		}
	}

	this.intSelectedTab = intID;

	if (boolHMLShapesUseMicrosoftVectors) {
		this.arrTabs[intID].objTab.objVector.fillcolor = this.strSelectedTabFillColor;
		this.arrTabs[intID].objTab.objVector.strokecolor = this.strStrokeColor;
		this.arrTabs[intID].objTab.objVector.strokeweight = this.intStrokeWeight;

		this.arrTabs[intID].objTab.objVector.filled = (this.strSelectedTabFillColor == "" || this.strSelectedTabFillColor == "transparent")?"f":"t";
		this.arrTabs[intID].objTab.objVector.stroked = (this.strStrokeColor == "" || this.strStrokeColor == "transparent")?"f":"t";
	}
	else if (boolHMLShapesUseCanvasVectors) {
		if (this.strSelectedTabFillColor != "" && this.strSelectedTabFillColor != "transparent") {
			this.arrTabs[intID].objTab.objCanvasContext.fillStyle = this.strSelectedTabFillColor;
		}
		if (this.strStrokeColor != "" && this.strStrokeColor != "transparent") {
			this.arrTabs[intID].objTab.objCanvasContext.lineWidth = this.intStrokeWeight;
			this.arrTabs[intID].objTab.objCanvasContext.strokeStyle = this.strStrokeColor;
		}

		if (this.strSelectedTabFillColor != "" && this.strSelectedTabFillColor != "transparent") this.arrTabs[intID].objTab.objCanvasContext.fill();
		if (this.strStrokeColor != "" && this.strStrokeColor != "transparent") this.arrTabs[intID].objTab.objCanvasContext.stroke();
	}
	this.arrTabs[this.intSelectedTab].objTabBox.stroke();
	this.arrTabs[this.intSelectedTab].drawContents();

	if (this.arrTabs[this.intSelectedTab].objTabBox.objContents) {
		this.arrTabs[this.intSelectedTab].objTabBox.objContents.onmouseover = hmlTabsBody_over;
		this.arrTabs[this.intSelectedTab].objTabBox.objContents.onmouseout = hmlTabsBody_out;
	}

	this.arrTabs[this.intSelectedTab].objTabBox.fadein();
	this.objHideBox.show();

	if (this.boolMakeContainerGrow) {
		this.objContainer.style.height = this.arrTabs[intID].objTab.intHeight + this.arrTabs[intID].objTabBox.intHeight + 1;
	}
	else {
		this.objContainer.style.height = this.intMaxTabHeight + 1;
	}

	if (this.boolOpenLastTab) {
		var objTmpXHR = new hmlXHRObject();
		objTmpXHR.open("hmlMenu.php?ajax=1&lastTab=" + this.arrTabs[this.intSelectedTab].strID);
		objTmpXHR.send();
	}

	return this.arrTabs[intID];
}

function objHMLTabs_locateTabByID(strID) {
	var intTMP = 0;
	for (intTMP = 1; intTMP < this.intNextTabID; intTMP++) {
		if (this.arrTabs[intTMP].strID == strID) {
			return intTMP;
		}
	}
}

// Tab events
function hmlTabs_selTab() {
	var objShape = this.shapeObject;
	objShape.objParent.selectTab(objShape.intIdInParent);
}
function hmlTabs_External_selTab(strDivID) {
	var objDiv = getDocumentLayer(strDivID);
	objDiv.onclick();
}

function hmlTabs_overTab() {
	var objShape = this.shapeObject;

	if (boolHMLShapesUseMicrosoftVectors) {
        objShape.objVector.fillcolor = objShape.objParent.strOverTabFillColor;
        //objShape.objVector.style.color = "blue";
		//objShape.objVector.fillcolor = "blue";
		objShape.objVector.strokecolor = objShape.objParent.strStrokeColor;
		objShape.objVector.strokeweight = objShape.objParent.intStrokeWeight;
        //ludbyn
        //objShape.objVector.className= objShape.objParent.strGroupTitleClass2;

		objShape.objVector.filled = (objShape.objParent.strOverTabFillColor == "" || objShape.objParent.strOverTabFillColor == "transparent")?"f":"t";
		objShape.objVector.stroked = (objShape.objParent.strStrokeColor == "" || objShape.objParent.strStrokeColor == "transparent")?"f":"t";
	}
	else if (boolHMLShapesUseCanvasVectors) {
		if (objShape.objParent.strOverTabFillColor != "" && objShape.objParent.strOverTabFillColor != "transparent") {
			objShape.objCanvasContext.fillStyle = objShape.objParent.strOverTabFillColor;
            //ludbyn
            //objShape.objCanvasContext.fillStyle = objShape.objParent.strGroupTitleClass2;
		}
		if (objShape.objParent.strStrokeColor != "" && objShape.objParent.strStrokeColor != "transparent") {
			objShape.objCanvasContext.lineWidth = objShape.objParent.intStrokeWeight;
			objShape.objCanvasContext.strokeStyle = objShape.objParent.strStrokeColor;
		}

		if (objShape.objParent.strOverTabFillColor != "" && objShape.objParent.strOverTabFillColor != "transparent") objShape.objCanvasContext.fill();
		if (objShape.objParent.strStrokeColor != "" && objShape.objParent.strStrokeColor != "transparent") objShape.objCanvasContext.stroke();
	}

	objShape.objParent.mouseOverStructure();

	if (this.id == "") this.id = "div_tab_" + objShape.strID;
	if (objShape.objParent.objMouseOverTabTimer) clearTimeout(objShape.objParent.objMouseOverTabTimer);
	objShape.objParent.objMouseOverTabTimer = setTimeout("hmlTabs_External_selTab('"+this.id+"')", 750, "JavaScript");
}

function hmlTabs_outTab() {
	var objShape = this.shapeObject;
	var strColor = (objShape.intIdInParent == objShape.objParent.intSelectedTab)?objShape.objParent.strSelectedTabFillColor:objShape.objParent.strTabsFillColor;

	if (boolHMLShapesUseMicrosoftVectors) {
		objShape.objVector.fillcolor = strColor;
		objShape.objVector.strokecolor = objShape.objParent.strStrokeColor;
		objShape.objVector.strokeweight = objShape.objParent.intStrokeWeight;

		objShape.objVector.filled = (strColor == "" || strColor == "transparent")?"f":"t";
		objShape.objVector.stroked = (objShape.objParent.strStrokeColor == "" || objShape.objParent.strStrokeColor == "transparent")?"f":"t";
	}
	else if (boolHMLShapesUseCanvasVectors) {
		objShape.objCanvasContext.clearRect(0, 0, objShape.intWidth, objShape.intHeight);

		if (strColor != "" && strColor != "transparent") {
			objShape.objCanvasContext.fillStyle = strColor;
		}
		else {
			objShape.objCanvasContext.fillStyle = "rgba(255,255,255,0.0)";
		}
		if (objShape.objParent.strStrokeColor != "" && objShape.objParent.strStrokeColor != "transparent") {
			objShape.objCanvasContext.lineWidth = objShape.objParent.intStrokeWeight;
			objShape.objCanvasContext.strokeStyle = objShape.objParent.strStrokeColor;
		}

		if (strColor != "" && strColor != "transparent") objShape.objCanvasContext.fill();
		if (objShape.objParent.strStrokeColor != "" && objShape.objParent.strStrokeColor != "transparent") objShape.objCanvasContext.stroke();
	}

	objShape.objParent.mouseOutOfStructure();

	if (objShape.objParent.objMouseOverTabTimer) clearTimeout(objShape.objParent.objMouseOverTabTimer);
}

function hmlTabsBody_over() {
	var objShape = this.shapeObject;
	objShape.objParent.mouseOverStructure();
}

function hmlTabsBody_out() {
	var objShape = this.shapeObject;
	objShape.objParent.mouseOutOfStructure();
}

function hmlTabsPico_over() {
	var objShape = this.shapeObject;
	objShape.objParent.objParent.objParent.mouseOverFloat();
}

function hmlTabsPico_out() {
	var objShape = this.shapeObject;
	objShape.objParent.objParent.objParent.mouseOutOfFloat();
}

function hmlTabsQuickScroll_over() {
	var objShape = this.shapeObject;
	objShape.objParent.objParent.mouseOverFloat();
}

function hmlTabsQuickScroll_out() {
	var objShape = this.shapeObject;
	objShape.objParent.objParent.mouseOutOfFloat();
}

// Tab Functions
function objHMLTabsTab_scrollShowHide() {
	if ((this.intScrollGroup + this.intGroups) < this.intNextGroupID) {
		this.objScrollRight.show();
	}
	else {
		this.objScrollRight.hide();
	}

	if (this.intScrollGroup > 1) {
		this.objScrollLeft.show();
	}
	else {
		this.objScrollLeft.hide();
	}

	for (intTMP = 1; intTMP < this.intNextGroupID; intTMP++) {
		if (this.arrGroups[intTMP].objQuickScrollLink) {
			if (intTMP == this.intScrollGroup) {
				this.arrGroups[intTMP].objQuickScrollLink.style.fontWeight = "bold";
			}
			else {
				this.arrGroups[intTMP].objQuickScrollLink.style.fontWeight = "";
			}
		}
	}
}

function objHMLTabsTab_scrollTo(intToGroup, boolDoNotAnimate) {
	if (!boolDoNotAnimate) boolDoNotAnimate = false;

	this.boolDoScrollTo = true;
	this.boolDoNotAnimate = boolDoNotAnimate;
	this.intScrollTo = intToGroup;
	objHMLTabsTab_scrollToInternal(this);

	var objScrollXHR = new hmlXHRObject();
	objScrollXHR.open("hmlMenu.php?ajax=1&lastScrollPos=" + intToGroup + "&forTab=" + this.strID);
	objScrollXHR.send();
}
function objHMLTabsTab_scrollToInternal(objTab) {
	if (objTab.boolDoScrollTo && objTab.intScrollTo) {
		if (objTab.intScrollGroup < objTab.intScrollTo) {
			objTab.scrollLeft(objTab.boolDoNotAnimate);
		}
		else if(objTab.intScrollGroup > objTab.intScrollTo) {
			objTab.scrollRight(objTab.boolDoNotAnimate);
		}
		else {
			objTab.boolDoScrollTo = false;
			objTab.intScrollTo = false;
		}
	}
}

function objHMLTabsTab_scrollLeftDone() {
	this.arrGroups[this.intScrollGroup + this.intGroups - 1].show();
	this.scrollShowHide();
	objHMLTabsTab_scrollToInternal(this);
}
function objHMLTabsTab_scrollLeft(boolDoNotAnimate) {
	var strIDBox = this.objParent.strID + "_box_" + this.intIdInParent;
	var intSteps = (boolDoNotAnimate)?1:5;

	if (this.objParent.objLastPicoShown) this.objParent.objLastPicoShown.objParent.picohide();

	if ((this.intScrollGroup + this.intGroups) < this.intNextGroupID) {
		var intTMP = 0;
		this.intScrollGroup++;

		this.arrGroups[this.intScrollGroup - 1].hide();
	    objHMLTabsTab_scrollLeftInternal(strIDBox, this.intIdInParent, this.intGroupsWidth + this.intLineSpace, 0, intSteps);

	    return this.intScrollGroup;
	}
	else {
		this.boolDoScrollTo = false;
		this.intScrollTo = false;
		return 0;
	}
}
function objHMLTabsTab_scrollLeftInternal(strIDBox, intTabID, intScrollWidth, intStep, intSteps) {
	var objTabBoxTable = document.getElementById(strIDBox);
	var objTabBoxShape = objTabBoxTable.shapeObject;
	var objMainMenu = objTabBoxShape.objParent;
	var objTab = objMainMenu.arrTabs[intTabID];

	var intTMP = 0;
	var intScrollDelta = intScrollWidth / intSteps;

	for (intTMP = 1; intTMP < objTab.intNextGroupID; intTMP++) {
		if (objTab.arrGroups[intTMP].boolDrawn) {
			objTab.arrGroups[intTMP].objGroupTable.intLeft -= intScrollDelta;
			objTab.arrGroups[intTMP].objGroupTable.style.left = objTab.arrGroups[intTMP].objGroupTable.intLeft;
		}
    }
    intStep++;
    if (intStep < intSteps) {
    	if (objTab.scrollLeftTimer) clearTimeout(objTab.scrollLeftTimer);
    	objTab.scrollLeftTimer = setTimeout("objHMLTabsTab_scrollLeftInternal('"+strIDBox+"',"+intTabID+","+intScrollWidth+","+intStep+","+intSteps+")", 33, "JavaScript");
    }
    else {
    	objTab.scrollLeftDone();
    }
}

function objHMLTabsTab_scrollRightDone() {
	this.arrGroups[this.intScrollGroup].show();
	this.scrollShowHide();
	objHMLTabsTab_scrollToInternal(this);
}
function objHMLTabsTab_scrollRight(boolDoNotAnimate) {
	var strIDBox = this.objParent.strID + "_box_" + this.intIdInParent;
	var intSteps = (boolDoNotAnimate)?1:5;

	if (this.objParent.objLastPicoShown) this.objParent.objLastPicoShown.objParent.picohide();

	if (this.intScrollGroup > 1) {
		var intTMP = 0;
		this.intScrollGroup--;

	    this.arrGroups[this.intScrollGroup + this.intGroups].hide();
	    objHMLTabsTab_scrollRightInternal(strIDBox, this.intIdInParent, this.intGroupsWidth + this.intLineSpace, 0, intSteps);

	    return this.intScrollGroup;
	}
	else {
		this.boolDoScrollTo = false;
		this.intScrollTo = false;
		return 0;
	}
}
function objHMLTabsTab_scrollRightInternal(strIDBox, intTabID, intScrollWidth, intStep, intSteps) {
	var objTabBoxTable = document.getElementById(strIDBox);
	var objTabBoxShape = objTabBoxTable.shapeObject;
	var objMainMenu = objTabBoxShape.objParent;
	var objTab = objMainMenu.arrTabs[intTabID];

	var intTMP = 0;
	var intScrollDelta = intScrollWidth / intSteps;

	for (intTMP = 1; intTMP < objTab.intNextGroupID; intTMP++) {
		if (objTab.arrGroups[intTMP].boolDrawn) {
			objTab.arrGroups[intTMP].objGroupTable.intLeft += intScrollDelta;
			objTab.arrGroups[intTMP].objGroupTable.style.left = objTab.arrGroups[intTMP].objGroupTable.intLeft;
		}
    }
    intStep++;
    if (intStep < intSteps) {
    	if (objTab.scrollRightTimer) clearTimeout(objTab.scrollRightTimer);
    	objTab.scrollRightTimer = setTimeout("objHMLTabsTab_scrollRightInternal('"+strIDBox+"',"+intTabID+","+intScrollWidth+","+intStep+","+intSteps+")", 33, "JavaScript");
    }
    else {
    	objTab.scrollRightDone();
    }
}

function objHMLTabsTab_addGroup(strID, strTitle, intLinks, intRows) {
	if (!strTitle) strTitle = "";

	// Definicion implicita del objeto
	this.arrGroups[this.intNextGroupID] = new Object();

	// Propiedades
	this.arrGroups[this.intNextGroupID].objParent = this;
	this.arrGroups[this.intNextGroupID].strID = strID;
	this.arrGroups[this.intNextGroupID].intIdInParent = this.intNextGroupID;
	this.arrGroups[this.intNextGroupID].strTitle = strTitle;
	this.arrGroups[this.intNextGroupID].intLinks = intLinks;
	this.arrGroups[this.intNextGroupID].intRows = intRows;
	this.arrGroups[this.intNextGroupID].intFixedButtons = 0;
	this.arrGroups[this.intNextGroupID].boolDrawn = false;
	this.arrGroups[this.intNextGroupID].boolVisible = false;
	this.arrGroups[this.intNextGroupID].arrLinks = false;

	this.arrGroups[this.intNextGroupID].intNextButtonID = 1;

	this.arrGroups[this.intNextGroupID].objGroupTable = false;

	// Funciones
	this.arrGroups[this.intNextGroupID].draw = objHMLTabsGroup_draw;
	this.arrGroups[this.intNextGroupID].show = objHMLTabsGroup_show;
	this.arrGroups[this.intNextGroupID].hide = objHMLTabsGroup_hide;
	this.arrGroups[this.intNextGroupID].picodraw = objHMLTabsGroup_picodraw;
	this.arrGroups[this.intNextGroupID].picoshow = objHMLTabsGroup_picoshow;
	this.arrGroups[this.intNextGroupID].picohide = objHMLTabsGroup_picohide;
	this.arrGroups[this.intNextGroupID].picoalign = objHMLTabsGroup_picoalign;

	this.intNextGroupID++;

	return this.arrGroups[this.intNextGroupID - 1];
}

function objHMLTabsTab_getGroup(strID) {
	var intTMP = 0;
	for (intTMP = 1; intTMP < this.intNextGroupID; intTMP++) {
		if (this.arrGroups[intTMP].strID == strID) {
			return this.arrGroups[intTMP];
		}
	}
}

function objHMLTabsTab_drawContents() {
	if (this.intNextGroupID > 1) {
		this.drawGroups();
	}
	else {
		var arrDimentions = getObjDimentions(this.objTabCustomContents);
		this.objTabBox.redefine(false, arrDimentions["height"] + 5, this.objTabBox.intCurveRadius);
	}
}
function objHMLTabsTab_drawGroups() {
	if (this.boolGroupsDrawn) return;
	this.boolGroupsDrawn = true;

	if (!this.objTabBox.objContents) {
		this.objTabBox.addContents("&nbsp;");
	}

	this.intLineSpace = this.intLineWidth + 2*this.intLineMargin;

	var intTMP = 0;
	var intTMP2 = 0;
	this.boolUseScrollers = (this.intNextGroupID-1) > this.intMaxGroups;
	this.intGroups = (this.boolUseScrollers)?this.intMaxGroups:(this.intNextGroupID-1);
	var intLines = this.intGroups - 1;

	this.intScrollHeight = (this.boolUseScrollers)?10:0;
	this.intGroupsWidth = Math.round((this.objTabBox.objContents.intWidth - intLines*this.intLineSpace - 2*(this.intScrollHeight+this.intLineMargin))/this.intGroups);
	this.intGroupsMaxHeight = 0;

	if (this.boolUseScrollers && this.intInitScroll > 0) {
		if ((this.intInitScroll + this.intGroups) >= this.intNextGroupID) {
			this.intInitScroll = this.intNextGroupID - this.intGroups;
		}
    	this.intScrollGroup = this.intInitScroll;
    	this.intInitScroll = 0;
    }

	this.intGroupsMaxHeight = 10;

    var strPath;

    if (!this.arrLines) {
    	this.arrLines = new Array();
    	for (intTMP = 0; intTMP < intLines; intTMP++) {
    		strPath = "M"+this.intLineMargin+","+(3*this.intLineMargin);
    		strPath += " L"+this.intLineMargin+","+(this.objTabBox.objContents.intHeight - 3*this.intLineMargin);
    		strPath += " z";

    		intTMP2 = (this.intScrollHeight+this.intLineMargin) + (this.intGroupsWidth * (intTMP + 1)) + (this.intLineSpace * intTMP);
	    	this.arrLines[intTMP] = new objHMLShapeLine(this.objTabBox.strID + "_Line_" + intTMP, this.objTabBox.objContents, false, strPath,
	    												intTMP2, 0, this.intLineSpace, this.objTabBox.objContents.intHeight,
	    												this.objParent.strSepLineColor, this.intLineWidth, this.objParent.intSepLineAlpha);
	    	this.arrLines[intTMP].stroke();
	    	if (this.arrLines[intTMP].objBackFrame) {
	    		var strPatron  =/#/ig;
				var strColor = this.objParent.strContentsFillColor;
				strColor = strColor.replace(strPatron, "|");
	    		this.arrLines[intTMP].objBackFrame.src = "core/index.php?backColor=" + strColor;
	    	}
    	}
    }

    if (this.boolUseScrollers) {
    	if (!this.objScrollLeft) {
    		strPath = "M0,"+this.intScrollHeight;
    		strPath += " L"+this.intScrollHeight+",0";
    		strPath += " L"+this.intScrollHeight+","+(2*this.intScrollHeight);
    		strPath += " L0,"+this.intScrollHeight;
    		strPath += " z";

    		this.objScrollLeft = new objHMLShapesAnyShape(this.objTabBox.strID + "_ScrollLeft", this.objTabBox.objContents, false, strPath,
    													  0, Math.round(this.intGroupsMaxHeight/2) - this.intScrollHeight,
    													  this.intScrollHeight, 2*this.intScrollHeight,
    													  this.objParent.strTrianguloScrollFill, "transparent");
    		this.objScrollLeft.objParent = this;
    		this.objScrollLeft.stroke();
    		this.objScrollLeft.addContents("&nbsp;");
    		this.objScrollLeft.objContents.style.cursor = "pointer";
    		this.objScrollLeft.objContents.onclick = function () {
				var intTMP = this.shapeObject.objParent.scrollRight();

				var objScrollXHR = new hmlXHRObject();
				objScrollXHR.open("hmlMenu.php?ajax=1&lastScrollPos=" + intTMP + "&forTab=" + this.shapeObject.objParent.strID);
				objScrollXHR.send();
    		}
    	}

    	if (!this.objScrollRight) {
    		strPath = "M0,0";
    		strPath += " L"+this.intScrollHeight+","+this.intScrollHeight;
    		strPath += " L0,"+(2*this.intScrollHeight);
    		strPath += " L0,0";
    		strPath += " z";
    		this.objScrollRight = new objHMLShapesAnyShape(this.objTabBox.strID + "_ScrollRight", this.objTabBox.objContents, false, strPath,
    													   this.objTabBox.objContents.intWidth - this.intScrollHeight, Math.round(this.intGroupsMaxHeight/2) - this.intScrollHeight,
    													   this.intScrollHeight, 2*this.intScrollHeight,
    													   this.objParent.strTrianguloScrollFill, "transparent");
    		this.objScrollRight.objParent = this;
    		this.objScrollRight.stroke();
    		this.objScrollRight.addContents("&nbsp;");
    		this.objScrollRight.objContents.style.cursor = "pointer";
    		this.objScrollRight.objContents.onclick = function () {
				var intTMP = this.shapeObject.objParent.scrollLeft();

				var objScrollXHR = new hmlXHRObject();
				objScrollXHR.open("hmlMenu.php?ajax=1&lastScrollPos=" + intTMP + "&forTab=" + this.shapeObject.objParent.strID);
				objScrollXHR.send();
    		}
    	}

    	if (!this.objQuickScroll) {
    		var sinTMPW = this.intScrollHeight + this.intLineMargin;
    		var sinTMPH = this.intScrollHeight;

    		strPath = "M0,0";
    		strPath += " L"+sinTMPW+",0";
    		strPath += " L"+Math.round(sinTMPW/2)+","+sinTMPH;
    		strPath += " L0,0";
    		strPath += " z";
    		this.objQuickScroll = new objHMLShapesAnyShape(this.objTabBox.strID + "_QuickScroll", this.objTabBox.objContents, false, strPath,
    													   this.objTabBox.objContents.intWidth - sinTMPW, this.intGroupsMaxHeight - sinTMPH - this.intLineMargin,
    													   sinTMPW, sinTMPH,
    													   this.objParent.strTrianguloScrollFill, "transparent");
    		this.objQuickScroll.objParent = this;
    		this.objQuickScroll.stroke();
    		this.objQuickScroll.addContents("&nbsp;");
    		this.objQuickScroll.objContents.style.cursor = "pointer";
    		this.objQuickScroll.objContents.onclick = function () {
				if (!this.shapeObject.objParent.objQuickScrollBox) {
	    			var sinTMPW = 150;
	    			var sinTMPH = 100;
	    			var intTMP = 0;
	    			var strContents = "&nbsp;";

	    			this.shapeObject.objParent.objQuickScrollBox = new objHMLShapesPicoBox(this.shapeObject.objParent.objTabBox.strID + "_QuickScrollBox",
	    																				   this.shapeObject.objParent.objParent.objContainer,
							    														   0, 0,
							    														   sinTMPW, sinTMPH,
							    														   this.shapeObject.objParent.objParent.strPicoWindowFillColor, this.shapeObject.objParent.objParent.strStrokeColor,
							    														   this.shapeObject.objParent.objParent.intStrokeWeight, this.shapeObject.objParent.objParent.intPicoAlpha,
							    														   true, strContents);
					this.shapeObject.objParent.objQuickScrollBox.show();
					this.shapeObject.objParent.objQuickScrollBox.objParent = this.shapeObject.objParent;

					this.shapeObject.objParent.objQuickScrollBox.objContents.objTable = document.createElement("table");
					this.shapeObject.objParent.objQuickScrollBox.objContents.objTable.shapeObject = this.shapeObject;
					this.shapeObject.objParent.objQuickScrollBox.objContents.objTable.cellSpacing = 0;
					this.shapeObject.objParent.objQuickScrollBox.objContents.objTable.cellPadding = 2;
					this.shapeObject.objParent.objQuickScrollBox.objContents.objTable.border = 0;
					this.shapeObject.objParent.objQuickScrollBox.objContents.objTable.width = "100%";

					if (this.shapeObject.objParent.objQuickScrollBox.objContents) {
						this.shapeObject.objParent.objQuickScrollBox.objContents.onmouseover = hmlTabsQuickScroll_over;
						this.shapeObject.objParent.objQuickScrollBox.objContents.onmouseout = hmlTabsQuickScroll_out;
					}

					var objRow = false;
					var objNewCell = false;

					for (intTMP = 1; intTMP < this.shapeObject.objParent.intNextGroupID; intTMP++) {
						objRow = this.shapeObject.objParent.objQuickScrollBox.objContents.objTable.insertRow(this.shapeObject.objParent.objQuickScrollBox.objContents.objTable.rows.length);
						objNewCell = objRow.insertCell(0);
						objNewCell.className = this.shapeObject.objParent.objParent.strLinkClass;

						strContents = "<a href='' onclick='this.parentNode.parentNode.parentNode.parentNode.shapeObject.objParent.scrollTo("+intTMP+"); this.parentNode.parentNode.parentNode.parentNode.shapeObject.objParent.objQuickScrollBox.fadeout(); return false;'>";
						strContents += this.shapeObject.objParent.arrGroups[intTMP].strTitle;
						strContents += "</a>";

						objNewCell.innerHTML = strContents;

						this.shapeObject.objParent.arrGroups[intTMP].objQuickScrollLink = objNewCell;
					}

					this.shapeObject.objParent.objQuickScrollBox.objContents.innerHTML = "";
					this.shapeObject.objParent.objQuickScrollBox.objContents.appendChild(this.shapeObject.objParent.objQuickScrollBox.objContents.objTable);


					var arrDimms = getObjDimentions(this.shapeObject.objParent.objQuickScrollBox.objContents.objTable);
					this.shapeObject.objParent.objQuickScrollBox.redefine(arrDimms["width"] + 2*this.shapeObject.objParent.objParent.intPicoCurveRadius,
																		  arrDimms["height"] + 2*this.shapeObject.objParent.objParent.intPicoCurveRadius + 10,
																		  "up", false,
																		  this.shapeObject.objParent.objParent.boolPicoSquareCorners,
																		  this.shapeObject.objParent.objParent.intPicoCurveRadius,
																		  sinTMPW - 5, 10);
					this.shapeObject.objParent.objQuickScrollBox.hide();
	    		}
	    		if (this.shapeObject.objParent.objQuickScrollBox.boolShow) {
					this.shapeObject.objParent.objQuickScrollBox.fadeout();
	    		}
	    		else {
	    			this.shapeObject.objParent.objQuickScrollBox.moveTo(this.shapeObject.objParent.objTabBox.objContents.intWidth - this.shapeObject.objParent.objQuickScrollBox.intWidth + 10,
	    																this.shapeObject.objParent.intGroupsMaxHeight + 2.5*this.shapeObject.objParent.objQuickScroll.intHeight);
	    			this.shapeObject.objParent.objQuickScrollBox.fadein();

	    			if (this.shapeObject.objParent.objParent.objLastPicoShown) {
	    				this.shapeObject.objParent.objParent.objLastPicoShown.objParent.picohide();
	    			}
	    		}

	    		this.shapeObject.objParent.scrollShowHide();
    		}
    	}

    	this.scrollShowHide();
    }

    for (intTMP = 1; intTMP < this.intNextGroupID; intTMP++) {
		if (intTMP >= this.intScrollGroup && intTMP <= this.intScrollGroup + this.intGroups - 1) {
			this.arrGroups[intTMP].show();
		}
		else {
			this.arrGroups[intTMP].hide();
		}
	}
}

function objHMLTabsTab_updateHeight(intHeight) {
	this.objTabBox.redefine(false, intHeight, this.objTabBox.intCurveRadius);

	if (this.arrLines) {
		var intLines = this.arrLines.length;
		var strPath = "";
		for (intTMP = 0; intTMP < intLines; intTMP++) {
			if (this.arrLines[intTMP].intHeight < intHeight) {
				strPath = "M"+this.intLineMargin+","+(3*this.intLineMargin);
	    		strPath += " L"+this.intLineMargin+","+(intHeight - 3*this.intLineMargin);
	    		strPath += " z";
				this.arrLines[intTMP].redefine(this.arrLines[intTMP].intWidth, intHeight, strPath);
			}
		}
	}

	if (this.boolUseScrollers) {
		if (this.objScrollLeft) {
			this.objScrollLeft.moveTo(0, Math.round(this.intGroupsMaxHeight/2) - this.intScrollHeight);
		}
		if (this.objScrollRight) {
			this.objScrollRight.moveTo(this.objTabBox.objContents.intWidth - this.intScrollHeight, Math.round(this.intGroupsMaxHeight/2) - this.intScrollHeight);
		}
		if (this.objQuickScroll) {
			var sinTMPW = this.intScrollHeight + this.intLineMargin;
    		var sinTMPH = this.intScrollHeight;

			this.objQuickScroll.moveTo(this.objTabBox.objContents.intWidth - sinTMPW, this.intGroupsMaxHeight - sinTMPH - this.intLineMargin);
		}
	}

	if (this.objParent.boolMakeContainerGrow) {
		this.objParent.objContainer.style.height = this.objTab.intHeight + this.objTabBox.intHeight + 1;
	}
	else {
		this.objParent.objContainer.style.height = this.objParent.intMaxTabHeight + 1;
	}
}

function objHMLTabsGroup_draw() {
	this.boolUsePico = this.intRows > this.objParent.objParent.intMaxLinksTop;
	this.boolUseMostFrequentlyUsed = this.objParent.objParent.intMaxLinksTop > 0;
	var boolLoadLinksOnDemand = this.objParent.objParent.boolLoadLinksOnDemand;

	var intTMP = 0;
	var arrPicoDims = false;
	var objRow = false;
	var objNewCell = false;

	if (!this.boolDrawn) {
		this.boolDrawn = true;

		this.objGroupTable = document.createElement("table");
		this.objGroupTable.intLeft = this.objParent.intScrollHeight + this.objParent.intLineMargin + ((this.objParent.intGroupsWidth + this.objParent.intLineSpace) * (this.intIdInParent - this.objParent.intScrollGroup));
		this.objGroupTable.intOriginalLeft = this.objParent.intScrollHeight + this.objParent.intLineMargin + ((this.objParent.intGroupsWidth + this.objParent.intLineSpace) * (this.intIdInParent - 1));
		this.objGroupTable.cellSpacing = 0;
		this.objGroupTable.cellPadding = 0;
		this.objGroupTable.border = 0;
		this.objGroupTable.style.position = "absolute";
		this.objGroupTable.style.left = this.objGroupTable.intLeft;
		this.objGroupTable.style.top = 0;
		this.objGroupTable.style.width = this.objParent.intGroupsWidth;
		this.objGroupTable.style.height = "100%";

		var intCurrRow = 0;
		if (this.boolUseMostFrequentlyUsed) {
			objRow = this.objGroupTable.insertRow(intCurrRow);
			objNewCell = objRow.insertCell(0);
			objNewCell.vAlign = "top";
			objNewCell.colSpan = 2;
			var objLinksCell = objNewCell;

			intCurrRow++;
		}

		if (!this.boolUsePico) {
			if (boolLoadLinksOnDemand) {
				objLinksCell.innerHTML = "<div class='info'><b>Cargando contenido...</b></div>";

				var objLinksFromStatsXHR = new hmlXHRObject();
				objLinksFromStatsXHR.open("hmlMenu.php?ajax=1&getMenu=" + this.strID);

				var objGlobalXHR = objLinksFromStatsXHR.objXHR;
				var objGlobalGroupForXHR = this;
				objLinksFromStatsXHR.onStatusOK = function () {
					drawLinksFromXHR(objGlobalGroupForXHR, objGlobalXHR, objLinksCell, objTabMenu.intMaxLinksTop);

					var boolTMP = objGlobalGroupForXHR.boolVisible;
					objGlobalGroupForXHR.show();
					var arrCellsDimms = getObjDimentions(objGlobalGroupForXHR.objGroupTable);
					if (arrCellsDimms["height"] > objGlobalGroupForXHR.objParent.intGroupsMaxHeight) {
						objGlobalGroupForXHR.objParent.intGroupsMaxHeight = arrCellsDimms["height"] + 4;
						objGlobalGroupForXHR.objParent.updateHeight(objGlobalGroupForXHR.objParent.intGroupsMaxHeight);
					}
					objGlobalGroupForXHR.boolVisible = boolTMP;
					if (!objGlobalGroupForXHR.boolVisible) objGlobalGroupForXHR.hide();
				}
				objLinksFromStatsXHR.onStatusFail = function () {
					//objLinksCell.innerHTML = "<div class='error'><b>Error en conexión...</b></div>";
				}
				objLinksFromStatsXHR.send();
			}
			else {
				drawLinksFromArray(this, this.arrLinks, objLinksCell, objTabMenu.intMaxLinksTop);
			}
		}
		else {
			if (this.boolUseMostFrequentlyUsed) {
				if (boolLoadLinksOnDemand) {
					objLinksCell.innerHTML = "<div class='info'><b>Cargando contenido...</b></div>";

					var objLinksFromStatsXHR = new hmlXHRObject();
					objLinksFromStatsXHR.open("hmlMenu.php?ajax=1&getMenu=" + this.strID + "&getFromStats=true&intLinks="+objTabMenu.intMaxLinksTop);
					var objGlobalXHR = objLinksFromStatsXHR.objXHR;
					var objGlobalGroupForXHR = this;
					objLinksFromStatsXHR.onStatusOK = function () {
						drawLinksFromXHR(objGlobalGroupForXHR, objGlobalXHR, objLinksCell, objTabMenu.intMaxLinksTop, true);

						var boolTMP = objGlobalGroupForXHR.boolVisible;
						objGlobalGroupForXHR.show();
						var arrCellsDimms = getObjDimentions(objGlobalGroupForXHR.objGroupTable);
						if (arrCellsDimms["height"] > objGlobalGroupForXHR.objParent.intGroupsMaxHeight) {
							objGlobalGroupForXHR.objParent.intGroupsMaxHeight = arrCellsDimms["height"] + 4;
							objGlobalGroupForXHR.objParent.updateHeight(objGlobalGroupForXHR.objParent.intGroupsMaxHeight);
						}
						objGlobalGroupForXHR.boolVisible = boolTMP;
						if (!objGlobalGroupForXHR.boolVisible) objGlobalGroupForXHR.hide();
					}
					objLinksFromStatsXHR.onStatusFail = function () {
						//objLinksCell.innerHTML = "<div class='error'><b>Error en conexion...</b></div>";
					}
					objLinksFromStatsXHR.send();
				}
				else {
					drawLinksFromArray(this, this.arrLinks, objLinksCell, objTabMenu.intMaxLinksTop);
				}
			}
		}

		objRow = this.objGroupTable.insertRow(intCurrRow);

		objNewCell = objRow.insertCell(0);
		objNewCell.id = "td_picoCell_" + this.strID;
		objNewCell.height = "1%";
		objNewCell.objParent = this;
		objNewCell.className = this.objParent.objParent.strGroupTitleClass;
		objNewCell.innerHTML = this.strTitle;

		if (this.boolUsePico) {
			objNewCell.style.cursor = "pointer";
			objNewCell.onclick = function() {
				var objGroup = this.objParent;
				objGroup.picoshow();
			};
			objNewCell.onmouseover = function() {
				var objGroup = this.objParent;

				if (objGroup.objParent.objParent.objMouseOverPicoTimer) clearTimeout(objGroup.objParent.objParent.objMouseOverPicoTimer);
				objGroup.objParent.objParent.objMouseOverPicoTimer = setTimeout("objHMLTabsGroup_External_picoshow('"+this.id+"')", 750, "JavaScript");
			};
			objNewCell.onmouseout = function() {
				var objGroup = this.objParent;

				if (objGroup.objParent.objParent.objMouseOverPicoTimer > 0) clearTimeout(objGroup.objParent.objParent.objMouseOverPicoTimer);
				objGroup.objParent.objParent.objMouseOverPicoTimer = false;

				objGroup.objParent.objParent.mouseOutOfFloat(750);
			};

			objNewCell = objRow.insertCell(1);
			objNewCell.align = "right";
			objNewCell.className = this.objParent.objParent.strGroupTitleClass;
			objNewCell.innerHTML = "<div id='"+this.objParent.objTabBox.strID + "_PicoDiv_" + this.intIdInParent+"' style='position:relative; width:10; height:10;'></div>";
			objNewCell.width = 10;
		}
		else {
			objNewCell.colSpan = 2;
		}
		this.objParent.objTabBox.objContents.appendChild(this.objGroupTable);

		var arrCellsDimms = getObjDimentions(this.objGroupTable);
		if (arrCellsDimms["height"] > this.objParent.intGroupsMaxHeight) {
			this.objParent.intGroupsMaxHeight = arrCellsDimms["height"] + 4;
			this.objParent.updateHeight(this.objParent.intGroupsMaxHeight);
		}

		if (this.boolUsePico) {
			var objPicoDiv = getDocumentLayer(this.objParent.objTabBox.strID + "_PicoDiv_" + this.intIdInParent);
            //alert(this.objParent.objTabBox.strID + "_PicoDiv_" + this.intIdInParent);
			objPicoDiv.objParent = this;
			arrPicoDims = getObjDimentions(objPicoDiv);
			this.objPicoTriangle = new objHMLShapesAnyShape(this.objParent.objTabBox.strID + "_PicoTriangle_" + this.intIdInParent,
															this.objParent.objTabBox.strID + "_PicoDiv_" + this.intIdInParent,
															false,
															"M0,0 L10,0 L5,5 L0,0 z",
															0, arrPicoDims["height"] - 10,
															10, 5,
															this.objParent.objParent.strTriangulosDownFill,
															"transparent");
			this.objPicoTriangle.objParent = this;
			this.objPicoTriangle.stroke();
			this.objPicoTriangle.objVector.className = this.objParent.objParent.strGroupTitleClass;

			objPicoDiv.style.cursor = "pointer";
			objPicoDiv.onclick = function() {
				var objGroup = this.objParent;
				objGroup.picoshow();
			};
		}

		this.objParent.updateHeight(this.objParent.intGroupsMaxHeight);
		if (!this.boolVisible) this.hide();
	}
}

function objHMLTabsGroup_show() {
	if (!this.boolDrawn) this.draw();
	this.objGroupTable.style.display = "";
	this.boolVisible = true;
}

function objHMLTabsGroup_hide() {
	if (this.boolDrawn) {
		this.objGroupTable.style.display = "none";
		this.boolVisible = false;
	}
}

function objHMLTabsGroup_picodraw() {
	if (!this.boolPicoDrawn) {
		if (!this.objXHR) {
			var arrGlblContPos = getObjAbsoluteCoordinates(this.objParent.objParent.objContainer);
			var arrGrpTblPos = getObjAbsoluteCoordinates(this.objGroupTable);
			var arrTmpDimms = getObjDimentions(this.objGroupTable);

			if (!this.objPicoShape) {
				this.objPicoShape = new objHMLShapesPicoBox(this.objParent.objTabBox.strID + "_PicoShape_" + this.intIdInParent,
															this.objParent.objParent.objContainer,
															arrGrpTblPos["left"] - arrGlblContPos["left"],
															arrGrpTblPos["top"] - arrGlblContPos["top"] + arrTmpDimms["height"],
															250,
															30,
															this.objParent.objParent.strPicoWindowFillColor,
															this.objParent.objParent.strStrokeColor,
															this.objParent.objParent.intStrokeWeight,
															this.objParent.objParent.intPicoAlpha, true, "<div class='info'><b>Cargando contenido...</b></div>");
			}

			this.objPicoShape.objParent = this;

			this.objPicoShape.redefine(false, false, "up", false,
									   this.objParent.objParent.boolPicoSquareCorners, this.objParent.objParent.intPicoCurveRadius,
									   arrTmpDimms["width"] - 14, 10)
			this.objPicoShape.stroke();

			if (this.objPicoShape.objContents) {
				this.objPicoShape.objContents.onmouseover = hmlTabsPico_over;
				this.objPicoShape.objContents.onmouseout = hmlTabsPico_out;
			}

			this.objXHR = new hmlXHRObject();
			this.objXHR.open("hmlMenu.php?ajax=1&getMenu=" + this.strID);

			var objGlobalXHR = this.objXHR.objXHR;
			var objGlobalGroupForXHR = this;
			this.objXHR.onStatusOK = function () {
				drawLinksFromXHR(objGlobalGroupForXHR, objGlobalXHR, objGlobalGroupForXHR.objPicoShape.objContents, objTabMenu.intMaxRowsPico);
				objGlobalGroupForXHR.boolPicoDrawn = true;
			}
			this.objXHR.onStatusFail = function () {
				objGlobalGroupForXHR.picohide();
				objGlobalGroupForXHR.objXHR = false;
				objGlobalGroupForXHR.boolPicoDrawn = false;
			}

			this.objXHR.send();
		}
		this.boolPicoDrawn = true;
	}
	else {
		this.picoshow();
	}
}

function objHMLTabsGroup_External_picoshow(strGroupDivID) {
	var objGroupDiv = getDocumentLayer(strGroupDivID);
	var objGroup = objGroupDiv.objParent;
	objGroup.picoshow();
}

function objHMLTabsGroup_picoshow() {
	this.objParent.objParent.mouseOverFloat();

	if (this.objParent.objParent.objMouseOverPicoTimer > 0) clearTimeout(this.objParent.objParent.objMouseOverPicoTimer);
	this.objParent.objParent.objMouseOverPicoTimer = false;

	if (!this.boolPicoDrawn) {
		this.picodraw();
	}

	if (this.objParent.objParent.objLastPicoShown) {
		var strLastShownID = this.objParent.objParent.objLastPicoShown.strID;

		this.objParent.objParent.objLastPicoShown.objParent.picohide();

		if (this.objPicoShape.strID != strLastShownID) {
			this.objParent.objParent.objLastPicoShown = this.objPicoShape;
			this.objParent.objParent.objLastPicoShown.fadein();
			this.picoalign();
		}
	}
	else {
		this.objParent.objParent.objLastPicoShown = this.objPicoShape;
		this.objParent.objParent.objLastPicoShown.fadein();
		this.picoalign();
	}

	if (this.objParent.objQuickScrollBox && this.objParent.objQuickScrollBox.boolShow) {
		this.objParent.objQuickScrollBox.fadeout();
	}
}

function objHMLTabsGroup_picohide() {
	if (!this.boolPicoDrawn) {
		return false;
	}
	if (this.objParent.objParent.objLastPicoShown) {
		if (this.objPicoShape.strID == this.objParent.objParent.objLastPicoShown.strID) {
			this.objParent.objParent.objLastPicoShown = false;
		}
	}
	this.objPicoShape.fadeout();
}

function objHMLTabsGroup_picoalign() {
	if (!this.boolPicoDrawn) {
		return false;
	}

	var objContainer = this.objPicoShape.objContents;
	if (objContainer.objTable) {
		var arrGlblContPos = getObjAbsoluteCoordinates(this.objParent.objParent.objContainer);
		var arrGlblContDim = getObjDimentions(this.objParent.objParent.objContainer);
		var arrContentsDim = getObjDimentions(objContainer.objTable);

		var arrGrpTblPos = getObjAbsoluteCoordinates(this.objGroupTable);
		var arrTmpDimms = getObjDimentions(this.objGroupTable);

		var intNewPicoLeft = arrGrpTblPos["left"] - arrGlblContPos["left"];
		var intNewPicoPos = 0;
		var intNewPicoWidth = arrContentsDim["width"] + 7;
		var intNewPicoHeight = arrContentsDim["height"] + this.objPicoShape.intPicoLength + 7;

		intNewPicoPos = Math.round(intNewPicoWidth/2) - this.objPicoShape.intPicoLength;
		intNewPicoLeft = intNewPicoLeft - intNewPicoPos + arrTmpDimms["width"] - this.objPicoShape.intPicoLength - Math.round(this.objPicoTriangle.intWidth/2);

		if (intNewPicoLeft < 0) {
			intNewPicoPos += intNewPicoLeft;
			intNewPicoLeft -= intNewPicoLeft;
		}

		if ((intNewPicoLeft + intNewPicoWidth) > arrGlblContDim["width"]) {
			var intDelta = intNewPicoLeft + intNewPicoWidth - arrGlblContDim["width"];
			intNewPicoPos += intDelta;
			intNewPicoLeft -= intDelta;
		}

		this.objPicoShape.moveTo(intNewPicoLeft, this.objPicoShape.intTop);
		this.objPicoShape.redefine(intNewPicoWidth, intNewPicoHeight,
								   false, false,
								   this.boolPicoSquareCorners, this.objPicoShape.intCurveRadius,
								   intNewPicoPos);

		this.boolPicoDrawn = true;
	}
}

function drawLinksFromXHR(objGroup, objXHR, objContainer, intMaxRows, boolFromStats) {
	var arrLinksArray = new Array();
	var arrDivisions = objXHR.responseXML.getElementsByTagName("division");

	var intDivs = 0;

	for (intDivs = 0; intDivs < arrDivisions.length; intDivs++) {
		arrLinksArray[intDivs] = new Array();
		arrLinksArray[intDivs]["title"] = arrDivisions[intDivs].getAttribute("title");
		arrLinksArray[intDivs]["link"] = new Array();

		arrLinks = arrDivisions[intDivs].getElementsByTagName("link");
		for (intLinks = 0; intLinks < arrLinks.length; intLinks++) {
			arrLinksArray[intDivs]["link"][intLinks] = new Array();
			arrLinksArray[intDivs]["link"][intLinks]["title"] = arrLinks[intLinks].getAttribute("title");
			arrLinksArray[intDivs]["link"][intLinks]["link"] = arrLinks[intLinks].getAttribute("link");
		}
	}
	drawLinksFromArray(objGroup, arrLinksArray, objContainer, intMaxRows, boolFromStats);
}

function drawLinksFromArray(objGroup, arrDivisions, objContainer, intMaxRows, boolFromStats) {
	var arrLinks;
	var intDivs = 0;
	var intLinks = 0;
	var objRow;
	var objCell;
	var strText;
	var strTextEsc;
	var strWrap;
	var strInnerHTML;
	var intColWidth = objGroup.objParent.intGroupsWidth;
	var intColWidthA = 5;
	var intColWidthB = intColWidth - intColWidthA;
	var intLenForWrapCat = Math.round(25*intColWidth/200);
	var intLenForWrapLink = Math.round(35*intColWidth/200);
	var intRow = 1;
	var intCol = 0;

	var intTotLinks = 0;

	if (!boolFromStats) boolFromStats = false;

	objContainer.innerHTML = "";
	objContainer.objTable = document.createElement("table");
	objContainer.objTable.cellSpacing = 0;
	objContainer.objTable.cellPadding = 5;
	objContainer.objTable.border = 0;

	if (objGroup.objParent.objParent.strLinksBullet == "") {
		objGroup.objParent.objParent.boolLinkAsLI = false;
	}

	objRow = objContainer.objTable.insertRow(0);

	for (intDivs = 0; intDivs < arrDivisions.length; intDivs++) {
		if (intRow == 1) {
			if (objCell) {
				strInnerHTML += "<tr><td width='"+intColWidthA+"'>&nbsp;</td><td width='"+intColWidthB+"'>&nbsp;</td></tr>";
				strInnerHTML += "</table>"
				objCell.innerHTML = strInnerHTML;
				objCell = false;
			}
			objCell = objRow.insertCell(intCol);
			objCell.vAlign = "top";
			strInnerHTML = "<table cellspacing='0' cellpadding='0' border='0'>";
		}
		else if (intRow > 1) {
			strInnerHTML += "<tr><td colspan='2'>&nbsp;</td></tr>";
			intRow++;
		}
		strText = arrDivisions[intDivs]["title"];
		if (strText.length > 0) {
			strWrap = (strText.length > intLenForWrapCat)?"":"nowrap";
			strInnerHTML += "<tr><td "+strWrap+" class='"+objGroup.objParent.objParent.strLinkCatClass+"' colspan='2'><img src='images/ico20/tab_ADMON.gif'>&nbsp;&nbsp;"+strText+"</td></tr>";
		}
		intRow++;

		arrLinks = arrDivisions[intDivs]["link"];
		for (intLinks = 0; intLinks < arrLinks.length; intLinks++) {
			if (intRow == 1) {
				if (objCell) {
					strInnerHTML += "<tr><td width='"+intColWidthA+"'>&nbsp;</td><td width='"+intColWidthB+"'>&nbsp;</td></tr>";
					strInnerHTML += "</table>"
					objCell.innerHTML = strInnerHTML;
					objCell = false;
				}
				objCell = objRow.insertCell(intCol);
				objCell.vAlign = "top";
				strInnerHTML = "<table cellspacing='0' cellpadding='0' border='0'>";
			}

			strText = arrLinks[intLinks]["title"];
			strText = strText.htmlEntities_decode();
			strTextEsc = escape(strText);
			strWrap = (strText.length > intLenForWrapLink)?"":"nowrap";

			strInnerHTML += "<tr>";
			if (objGroup.objParent.objParent.boolLinkAsLI) {
				strInnerHTML += "<td class='"+objGroup.objParent.objParent.strLinkClass+"' valign='top' align='center'><img src='"+objGroup.objParent.objParent.strLinksBullet+"'></td>";
				strInnerHTML += "<td "+strWrap+" class='"+objGroup.objParent.objParent.strLinkClass+"'>";
			}
			else {
				strInnerHTML += "<td "+strWrap+" class='"+objGroup.objParent.objParent.strLinkClass+"' colspan='2'>";
			}

			var strTmpLink = arrLinks[intLinks]["link"];
			var arrSplit = strTmpLink.split("?");
			if (!arrSplit[1]) {
				strTmpLink += "?strModulo="+objGroup.strID+"&saveLinkStats="+strTextEsc;
			}
			else {
				strTmpLink += "&strModulo="+objGroup.strID+"&saveLinkStats="+strTextEsc;
			}
			strInnerHTML += "<a href='"+strTmpLink+"'>"+strText+"</a>";
			strInnerHTML += "</td></tr>";
			intRow++;

			intTotLinks++;

			if (intRow > (intMaxRows + 1)) {
				intRow = 1;
				intCol++;
			}
		}
		if (intRow > (intMaxRows - 2 + 1)) {
			intRow = 1;
			intCol++;
		}
	}
	if (objCell) {
		strInnerHTML += "</table>"
		objCell.innerHTML = strInnerHTML;
	}
	objContainer.appendChild(objContainer.objTable);

	if (intTotLinks == 0) {
		objContainer.innerHTML = "<div class='"+objGroup.objParent.objParent.strLinkClass+"'><br>"+objGroup.objParent.objParent.strEmptyStatsAreaText+"</div>";
	}

	if (objGroup.boolUsePico && !boolFromStats) {
		objGroup.picoalign();
	}
}