function wfAppendToClassName(element, className) 
{
    var current = element.className;
    if (current) 
    {
        if (current.charAt(current.length - 1) != ' ') 
        {
            current += ' ';
        }
        current += className;
    }
    else 
    {
        current = className;
    }
    element.className = current;
}

function wfRemoveClassName(element, className) 
{
    var current = element.className;
    if (current) 
    {
        if (current.substring(current.length - className.length - 1, current.length) == ' ' + className) 
        {
            element.className = current.substring(0, current.length - className.length - 1);
            return;
        }
        if (current == className) 
        {
            element.className = "";
            return;
        }

        var index = current.indexOf(' ' + className + ' ');
        if (index != -1) 
        {
            element.className = current.substring(0, index) + current.substring(index + className.length + 2, current.length);
            return;
        }

        if (current.substring(0, className.length) == className + ' ') 
        {
            element.className = current.substring(className.length + 1, current.length);
        }
    }
}

function wfGetElementById(elementId) 
{
    if (document.getElementById) 
    {
        return document.getElementById(elementId);
    }
    else if (document.all) 
    {
        return document.all[elementId];
    }
    else 
      return null;
}

function wfGetElementByTagName(element, tagName) 
{
    var elements = WebForm_GetElementsByTagName(element, tagName);
    if (elements && elements.length > 0) 
    {
        return elements[0];
    }
    else 
       return null;
}

function wfGetElementsByTagName(element, tagName) 
{
    if (element && tagName) 
    {
        if (element.getElementsByTagName) 
        {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) 
        {
            return element.all.tags(tagName);
        }
    }
    return null;
}

function wfGetElementDir(element) 
{
    if (element) 
    {
        if (element.dir) 
        {
            return element.dir;
        }
        return WebForm_GetElementDir(element.parentNode);
    }
    return "ltr";
}

function wfGetElementPosition(element) 
{
    var result = new Object();
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    if (element.offsetParent) 
    {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
        while (parent) 
        {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft) 
                {
                  result.x += parent.clientLeft;
                  result.y += parent.clientTop;
                }
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) 
    {
        result.x = element.left;
        result.y = element.top;
    }
    else 
    {
        if (element.x) 
        {
            result.x = element.x;
        }
        if (element.y) 
        {
            result.y = element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) 
    {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) 
    {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    }
    return result;
}

function wfGetParentByTagName(element, tagName) 
{
    var parent = element.parentNode;
    var upperTagName = tagName.toUpperCase();
    while (parent && (parent.tagName.toUpperCase() != upperTagName)) 
    {
        parent = parent.parentNode ? parent.parentNode : parent.parentElement;
    }
    return parent;
}

function wfSetElementHeight(element, height) 
{
    if (element && element.style) 
    {
        element.style.height = height + "px";
    }

}

function wfSetElementWidth(element, width) 
{
    if (element && element.style) 
    {
        element.style.width = width + "px";
    }
}

function wfSetElementX(element, x) 
{
    if (element && element.style) 
    {
        element.style.left = x + "px";
    }
}

function wfSetElementY(element, y) 
{
    if (element && element.style) 
    {    
        element.style.top = y + "px";
    }
}

