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');
}