77 lines
2.5 KiB
JavaScript
77 lines
2.5 KiB
JavaScript
// Material sourced from the bluePortal project (http://blueportal.codeplex.com).
|
|
// Licensed under the Microsoft Public License (available at http://www.opensource.org/licenses/ms-pl.html).
|
|
|
|
function CanHaveClass__CssFriendlyAdapters(element)
|
|
{
|
|
return ((element != null) && (element.className != null));
|
|
}
|
|
|
|
function HasAnyClass__CssFriendlyAdapters(element)
|
|
{
|
|
return (CanHaveClass__CssFriendlyAdapters(element) && (element.className.length > 0));
|
|
}
|
|
|
|
function HasClass__CssFriendlyAdapters(element, specificClass)
|
|
{
|
|
return (HasAnyClass__CssFriendlyAdapters(element) && (element.className.indexOf(specificClass) > -1));
|
|
}
|
|
|
|
function AddClass__CssFriendlyAdapters(element, classToAdd)
|
|
{
|
|
if (HasAnyClass__CssFriendlyAdapters(element))
|
|
{
|
|
if (!HasClass__CssFriendlyAdapters(element, classToAdd))
|
|
{
|
|
element.className = element.className + " " + classToAdd;
|
|
}
|
|
}
|
|
else if (CanHaveClass__CssFriendlyAdapters(element))
|
|
{
|
|
element.className = classToAdd;
|
|
}
|
|
}
|
|
|
|
function AddClassUpward__CssFriendlyAdapters(startElement, stopParentClass, classToAdd)
|
|
{
|
|
var elementOrParent = startElement;
|
|
while ((elementOrParent != null) && (!HasClass__CssFriendlyAdapters(elementOrParent, topmostClass)))
|
|
{
|
|
AddClass__CssFriendlyAdapters(elementOrParent, classToAdd);
|
|
elementOrParent = elementOrParent.parentNode;
|
|
}
|
|
}
|
|
|
|
function SwapClass__CssFriendlyAdapters(element, oldClass, newClass)
|
|
{
|
|
if (HasAnyClass__CssFriendlyAdapters(element))
|
|
{
|
|
element.className = element.className.replace(new RegExp(oldClass, "gi"), newClass);
|
|
}
|
|
}
|
|
|
|
function SwapOrAddClass__CssFriendlyAdapters(element, oldClass, newClass)
|
|
{
|
|
if (HasClass__CssFriendlyAdapters(element, oldClass))
|
|
{
|
|
SwapClass__CssFriendlyAdapters(element, oldClass, newClass);
|
|
}
|
|
else
|
|
{
|
|
AddClass__CssFriendlyAdapters(element, newClass);
|
|
}
|
|
}
|
|
|
|
function RemoveClass__CssFriendlyAdapters(element, classToRemove)
|
|
{
|
|
SwapClass__CssFriendlyAdapters(element, classToRemove, "");
|
|
}
|
|
|
|
function RemoveClassUpward__CssFriendlyAdapters(startElement, stopParentClass, classToRemove)
|
|
{
|
|
var elementOrParent = startElement;
|
|
while ((elementOrParent != null) && (!HasClass__CssFriendlyAdapters(elementOrParent, topmostClass)))
|
|
{
|
|
RemoveClass__CssFriendlyAdapters(elementOrParent, classToRemove);
|
|
elementOrParent = elementOrParent.parentNode;
|
|
}
|
|
}
|