All pastes #755061 Raw Edit

Zeug

public text v1 · immutable
#755061 ·published 2007-10-30 13:10 UTC
rendered paste body
Array.prototype.contains = function(elem)
{
    for (i in this)
        if (this[i] == elem) return true;
    return false;
}

Array.prototype.add = function(elem)
{
    if (!this.contains(elem))
        this.push(elem);
}

Array.prototype.remove = function(elem)
{
    for (i in this)
    {
        if (this[i] == elem)
        {
            this.splice(i, 1);
            i--;
        }
    }
}

function toggleCssClasses(parentNode, childNode, activeCssClass, inactiveCssClass, matchCssClass)
{
    if (!parentNode) return;

    var items = 0;

    for (i in parentNode.childNodes)
    {
        obj = parentNode.childNodes[i];
        // none-element node
        if (obj.nodeType != 1) continue;

        classes = obj.className.split(" ");

        if (matchCssClass && !classes.contains(matchCssClass))
        {
            continue;
        }

        items++;

        // if childNode is null (i.e. not given),
        // activate the first one by default
        if (childNode == null && items == 1)
        {
            childNode = obj;
        }

        if (obj == childNode)
        {
            classes.remove(inactiveCssClass);
            classes.add(activeCssClass);
        }
        else
        {
            classes.remove(activeCssClass);
            classes.add(inactiveCssClass);
        }

        obj.className = classes.join(" ");
    }
}

function elementHasClassesSet(obj, neededClasses)
{
    if (!obj.className) return false;

    classes = obj.className.split(" ");
    
    for (i in neededClasses)
    {
        if (!classes.contains(neededClasses[i])) return false;        
    }
    return true;
}

function initToggleCssClasses(containerClasses, activeCssClass, inactiveCssClass, matchCssClass)
{
    var elements = document.getElementsByTagName('div');
    for (var i in elements)
    {
        obj = elements[i];
        if (!elementHasClassesSet(obj, containerClasses)) continue;
        toggleCssClasses(obj, null, activeCssClass, inactiveCssClass, matchCssClass);
    }
}

function pageInit()
{
    initToggleCssClasses(['related', 'contacts'], 'visible', 'hidden', 'entry');
}