function ESWebParts_SetChromeContentPadding(chromeTableId, alterContainerId, contentPadding)
{
    var chromeTable = ESWebParts_GetElementById(chromeTableId);
    
    if (!chromeTable)
        chromeTable = ESWebParts_GetElementById(alterContainerId);
    
    if (!chromeTable)
        return;
    
    var chromeRows = chromeTable.rows;
    if (!chromeRows || (chromeRows.length == 0)) return;
    
    var contentCells = chromeRows[chromeRows.length - 1].cells;
    if (!contentCells || (contentCells.length == 0)) return;
    
    contentCells[0].style.padding = contentPadding + "px";
}

function ESWebParts_ClearZonePadding(zoneID)
{
    var zone = ESWebParts_GetElementById(zoneID);
    
    if ((zone != null) && zone.cells && (zone.cells.length == 1))
        zone.cells[0].style.padding = "0px";
}

function ESWebParts_GetElementById(elementId)
{
    if (document.getElementById)
        return document.getElementById(elementId);
    else if (document.all)
        return document.all[elementId];
    else
        return null;
}

function ESWebParts_ToggleExpandCollapse(contentID, hiddenFieldID, expand)
{
    var content = ESWebParts_GetElementById(contentID);
    var hiddenField = ESWebParts_GetElementById(hiddenFieldID);
    
    if (content != null)
        content.style.display = expand ? "" : "none";
    
    if (hiddenField != null)
        hiddenField.value = expand ? "1" : "0";
}

function ESWebParts_ToggleHyperlinks(showLinkID, hideLinkID)
{
    var showLink = ESWebParts_GetElementById(showLinkID);
    var hideLink = ESWebParts_GetElementById(hideLinkID);
    
    if (showLink)
        showLink.style.display = "";
    
    if (hideLink)
        hideLink.style.display = "none";
}

function ESWebParts_SetExpandCollapseVerbsLinksClientIDs(titleID, expandLinkID, collapseLinkID)
{
    var titleElement = ESWebParts_GetTitleElement(titleID);
    
    if (!titleElement)
        return;
    
    var hyperlinks = titleElement.nextSibling ? ESWebParts_GetChildrenByTagName(titleElement.nextSibling, "A") : null;
    
    if (!hyperlinks || (hyperlinks.length < 2))
        return;
    
    hyperlinks[0].id = expandLinkID;
    hyperlinks[1].id = collapseLinkID;
}

function ESWebParts_SetTitleClass(titleID, className)
{
    var titleElement = ESWebParts_GetTitleElement(titleID);
    
    if (!titleElement || !titleElement.parentNode || !titleElement.parentNode.parentNode || !titleElement.parentNode.parentNode.parentNode)
        return;
    
    var container = titleElement.parentNode.parentNode.parentNode.parentNode;
    
    if (!container || (container.tagName != "TD"))
        return;
    
    if (container.className != "")
        className = container.className + " " + className;
    
    container.className = className;
}

function ESWebParts_GetTitleElement(titleID)
{
    var titleElement = ESWebParts_GetElementById(titleID);
    
    if (titleElement)
        return titleElement;
        
    var containerID = titleID + "_Container";
    
    var container = ESWebParts_GetElementById(containerID);
    if (!container) return;

    var cells = container.getElementsByTagName("TD");

    if (cells.length >= 2)
        return cells[1];
}

function ESWebParts_GetTableRows(table)
{
    if (table.rows)
    {
        return table.rows;
    }
    else
    {
        var rows = new Array();
        
        var tableRows = ESWebParts_GetChildrenByTagName(table, "TR");
        var tableBodies = ESWebParts_GetChildrenByTagName(table, "TBODY");
        
        if (tableRows)
        {
            for (var i = 0; i < tableRows.length; i++)
                rows.push(tableRows[i]);
        }
        
        if (tableBodies)
        {
            for (var i = 0; i < tableBodies.length; i++)
            {
                var tableBodyRows = ESWebParts_GetChildrenByTagName(tableBodies[i], "TR");
                
                for (var j = 0; j < tableBodyRows.length; j++)
                    rows.push(tableBodyRows[j]);
            }
        }
        
        return rows;
    }
}

function ESWebParts_GetTableCells(table)
{
    if (table.cells)
        return table.cells;
    
    var rows = new Array();
    var cells = new Array();
    
    var childRows = ESWebParts_GetChildrenByTagName(table, "TR");
    var childBodies = ESWebParts_GetChildrenByTagName(table, "TBODY");
    var childHeads = ESWebParts_GetChildrenByTagName(table, "THEAD");
    var childFoots = ESWebParts_GetChildrenByTagName(table, "TFOOT");
    
    if (childRows)
    {
        for (var i = 0; i < childRows.length; i++)
            rows.push(childRows[i]);
    }
    
    if (childBodies)
    {
        for (var i = 0; i < childBodies.length; i++)
        {
            var bodyRows = ESWebParts_GetChildrenByTagName(childBodies[i], "TR");
            
            if (bodyRows)
            {
                for (var j = 0; j < bodyRows.length; j++)
                    rows.push(bodyRows[j]);
            }
        }
    }
    
    if (childHeads)
    {
        for (var i = 0; i < childHeads.length; i++)
        {
            var headRows = ESWebParts_GetChildrenByTagName(childHeads[i], "TR");
            
            if (headRows)
            {
                for (var j = 0; j < headRows.length; j++)
                    rows.push(headRows[j]);
            }
        }
    }
    
    if (childFoots)
    {
        for (var i = 0; i < childFoots.length; i++)
        {
            var footRows = ESWebParts_GetChildrenByTagName(childFoots[i], "TR");
            
            if (footRows)
            {
                for (var j = 0; j < footRows.length; j++)
                    rows.push(footRows[j]);
            }
        }
    }
    
    for (var i = 0; i < rows.length; i++)
    {
        var rowCells = ESWebParts_GetChildrenByTagName(rows[i], "TD");
        
        if (rowCells)
        {
            for (var j = 0; j < rowCells.length; j++)
                cells.push(rowCells[j]);
        }
    }
    
    return cells;
}

function ESWebParts_GetChildrenByTagName(element, tagName)
{
    if (element && tagName)
    {
        if (element.children && element.children.tags)
        {
            return element.children.tags(tagName);
        }
        else if (element.childNodes)
        {
            var childNodes = element.childNodes;
            var children = new Array();
            
            for (var i = 0; i < childNodes.length; i++)
            {
                var childNode = childNodes[i];
                
                if (childNode.tagName && (childNode.tagName == tagName))
                    children.push(childNode);
            }
            
            return children;
        }
    }
    return null;
}
