﻿function setCompanionElementClass (name, className)
{
    var e = document.getElementById (name);
    
    if (! e)
        return;
    else if (e.className)
        e.className = className;
    else if (e.setAttribute)
        e.setAttribute ("class", className);
}

function getTrueLeft (e)
{
    if (e.tagName.toLowerCase() == "body")
    {
        return e.offsetLeft;
    }
    
    return e.offsetLeft + getTrueLeft (e.offsetParent);
}

function getTrueTop (e)
{
    if (e.tagName.toLowerCase() == "body")
    {
        return e.offsetTop;
    }
    
    return e.offsetTop + getTrueTop (e.offsetParent);
}

function doPopOut (menu, caller)
{
    var status;
    
    if (! menu)
    {
        return;
    }
        
    menu.setAttribute (caller ? "caller" : "drop", "true");
    
    if (caller)
    {
        if ((status = menu.getAttribute ("status")) == null)
        {
            menu.setAttribute ("status", "closed");
        }
        
        menu.style.left = (getTrueLeft(caller)) + "px";
        menu.style.top  = (getTrueTop (caller) + caller.offsetHeight) + "px";
    }
    
    status = menu.getAttribute ("status");
    
    if (status != "growing")
    {       
        menu.setAttribute ("status", "growing"); setTimeout ("doPopGrow('" + menu.id + "');", 0);
    }
}

function doPopIn (menu, caller)
{
    var status;
    
    if (! menu)
    {
        return;
    }
    
    menu.setAttribute (caller ? "caller" : "drop", "false");    
    
    if ((status = menu.getAttribute ("status")) == "closed")
        return;
    else if (status == "shrinking")
        return;
        
    if ((menu.getAttribute ("caller") == "true") || (menu.getAttribute ("drop") == "true"))
    {
        return;
    }
    
    menu.setAttribute ("status", "shrinking");
    
    setTimeout ("doPopGrow('" + menu.id + "');", 10);
}

function doPopGrow (menuId)
{
    var menu = document.getElementById (menuId);
    var inner;
    var current;
    var maximum;
    var height;
    var status;
    
    if (! menu)
    {
        return;
    }
    
    status  = menu.getAttribute ("status")
    inner   = menu.getElementsByTagName ("table")[0];
   
    maximum = inner.offsetHeight; 
    current = parseInt (menu.style.height);
    
    if (status == "growing")
    {
        if (current < maximum)
        {
            height = current + 8;
            
            if (height > maximum)
            {
                height = maximum;
            }

            menu.style.height = height + "px";
        } 
        
        if (height < maximum)
            setTimeout ("doPopGrow('" + menu.id + "');", 0);
        else
            menu.setAttribute ("status", "idle");
    }
    
    else if (status == "shrinking")
    {
        if (current > 0)
        {
            height = current - 8;
            
            if (height < 0)
            {
                height = 0;
            }
            
            menu.style.height = height + "px";
        }
        
        if (height > 0)
            setTimeout ("doPopGrow('" + menu.id + "');", 0);
        else
            menu.setAttribute ("status", "closed");
        
    }
}

function opaquen(visible) 
{
    var e = document.getElementById("OpaqueMask");
    var b;
    var cx, cy;

    if (!e) {
        e = document.createElement("div");
        e.style.position = "absolute";
        e.style.top = "0px";
        e.style.left = "0px";
        e.style.overflow = "auto";
        e.style.display = "none";
        e.id = "OpaqueMask";

        b = document.getElementsByTagName("body")[0];
        b.appendChild(e);
    }

    if (visible == true) 
    {
        if (document.body && (document.body.scrollWidth || document.body.scrollHeight)) {
            cx = document.body.scrollWidth + "px";
            cy = document.body.scrollHeight + "px";
        }

        else if (document.body.offsetWidth) {
            cx = document.body.offsetWidth + "px";
            cy = document.body.offsetHeight + "px";
        }

        else 
        {
            cx = "100%";
            cy = "100%";
        }

        e.style.width           = "100%";
        e.style.height          = cy;
        e.style.opacity         = 30 / 100;
        e.style.MozOpacity      = 30 / 100;
        e.style.zIndex          = 50;
        e.style.filter          = "alpha(opacity=" + 30 + ")";
        e.style.backgroundColor = "#000000";
        e.style.display = "block";
        e.style.margin = "0";
        e.style.padding = "0";
    }

    else 
    {
        e.style.display = "none";
    }
} 

function setAspNetRadios(ex, element)
{
    re = new RegExp(ex);
   
    for (var x = 0; x < document.forms[0].elements.length; x++)
    {
        var e = document.forms[0].elements[x];
      
        if (e.type)
        {
            if (e.type == "radio")
            {
                if (re.test(e.name))
                {
                    e.checked = false;
                }
            }
        }
    }

    element.checked = true;
}
