function markIt(it)
{
    it.style.background = '#C4D3C5';
    it.style.color = '#336633';
    if (it.className == 'fol')
    {
        it.style.backgroundImage = "url('../images/trRightI.gif')";
        it.style.backgroundRepeat = "no-repeat";
        it.style.backgroundPosition = 'right center';
    }
}

function unMarkIt(it)
{
    it.style.background = '#C4D3C5';
    it.style.color = '#003300';
    if (it.className == 'fol')
    {
        it.style.backgroundImage = "url('../images/trRight.gif')";
        it.style.backgroundRepeat = "no-repeat";
        it.style.backgroundPosition = 'right center';
    }
}

function imov(it)
{
    markIt(it);
}

function imou(it)
{
    var i;
    for (i = 0; i < marked.length; i++)
    {
        if (marked[i] == it) return;
    }
    unMarkIt(it);
}

function getLeft(td)
{
    var left = td.offsetLeft;
    var el = td;
    while (el = el.offsetParent) left += el.offsetLeft;
    return left;
}

function getTop(td)
{
    var top = td.offsetTop;
    var el = td;
    while (el = el.offsetParent) top += el.offsetTop;
    return top;
}


var boxes = new Array(0);

var itemURLs = new Array(0);
var itemNums = new Array(0);
var i = 0;

itemURLs[i] = 'misc/';
itemNums[i] = 1;
i++;
itemURLs[i] = 'mod/';
itemNums[i] = 2;
i++;
itemURLs[i] = 'vhosts/';
itemNums[i] = 4;
i++;

var boxURLs = new Array(0);
var boxNums = new Array(0);
i = 0;

boxURLs[i] = '';
boxNums[i] = 0;
i++;
boxURLs[i] = 'misc/';
boxNums[i] = 43;
i++;
boxURLs[i] = 'mod/';
boxNums[i] = 65;
i++;
boxURLs[i] = 'vhosts/';
boxNums[i] = 116;
i++;

var pr1 = "td";
var pr2 = "div";

function item2Box(itemID)
{
    var id = 0 + itemID.substring(pr1.length);

    var i;
    for (i = 0; i < itemNums.length; i++)
    {
        if (id == itemNums[i]) break;
    }
    if (i >= itemNums.length) return 0;

    var url = itemURLs[i];

    for (i = 0; i < boxURLs.length; i++)
    {
        if (url == boxURLs[i]) break;
    }
    if (i >= boxURLs.length) return 0;

    return (pr2 + boxNums[i]); 
}

function box2Item(boxID)
{
    var id = 0 + boxID.substring(pr2.length);

    var i;
    for (i = 0; i < boxNums.length; i++)
    {
        if (id == boxNums[i]) break;
    }
    if (i >= boxNums.length) return 0;

    var url = boxURLs[i];

    for (i = 0; i < itemURLs.length; i++)
    {
        if (url == itemURLs[i]) break;
    }
    if (i >= itemURLs.length) return 0;

    return (pr1 + itemNums[i]); 
}

var expanded = new Array(0);
var marked = new Array(0);

function subExp(td)
{
    var i, j;    

    if (td.id == '') return true;

    var left = getLeft(td) + td.offsetWidth;
    var top = getTop(td);

    var divid = item2Box(td.id);
    if (!divid) return true;
    var div = document.getElementById(divid);
    if (!div) return true;

    div.style.visibility = 'visible';
    div.style.position = 'absolute';
    div.style.left = left;
    div.style.top = top;
    // alternative
    var val = "visibility:visible; position:absolute; left:" + left + "px; top:" + top + "px; visibility:visible;";
    div.setAttribute('style', val);

    expanded.length = 0;
    expanded[0] = div;
    var markedOld = new Array(marked.length);
    for (i = 0; i < marked.length; i++)
        markedOld[i] = marked[i];
    marked.length = 0;
    marked[0] = td;

    var parent = getParentDiv(td);
    for (i = 1; parent; i++)
    {
        expanded[i] = parent;

        var cell = 0;
        if (parent.id != '')
        {
            cell = box2Item(parent.id);
            if (cell) cell = document.getElementById(cell);
        }
        if (cell)
        {
            parent = getParentDiv(cell);
            marked[i] = cell;
        }
        else parent = 0;
    } 

    for (i = markedOld.length; i; )
    {
        // XHTML doesn't validate when "i minus minus" is used :)
        // I had to remake everything :(
        i -= 1; 
        for (j = marked.length; j; )
        {
            j -= 1;
            if (markedOld[i] == marked[j])
            {
                j = 1; 
                break;
            }
        }
        if (j > 0) continue;
        unMarkIt(markedOld[i]);
    }
    markIt(td);
     
    return false;
}

function getParentDiv(td)
{
    var el = td.parentNode;
    for (; el; el = el.parentNode)
    {
        if (el.tagName.toLowerCase() == 'div') return el;
    }
    return 0;
}

function hideBox(id)
{
    var div = document.getElementById(id);
    if (!div) return;
    div.style.visibility = 'hidden';
    div.style.position = 'absolute';
}

function bodyClick()
{
    var i,j;
    if (!boxes.length)
    {
        for (i = 0; i < boxNums.length; i++)
        {
            var div = document.getElementById("div" + boxNums[i]);
            boxes[i] = div;
        }
    }

    for(i = boxes.length; i; )
    {
        i -= 1;
        var div = boxes[i];
        j = expanded.length;
        while (j)
        {
            j -= 1;
            if (div == expanded[j])
            {
                j = 1;
                break;
            }
        }
        if (j > 0) continue;
        if (div) div.style.visibility = 'hidden';
    }

    if (!expanded.length) 
    {
        for (j = marked.length; j; )
        {
            j -= 1;
            unMarkIt(marked[j]);
        }
        marked.length = 0;
    }
    
    expanded.length = 0;
}

function itGo(url)
{
    window.location.href = url;
    return true;
}

function hideDivs()
{

  hideBox("div43");
  hideBox("div65");
  hideBox("div116");
}
