websitepanel/WebsitePanel/Sources/WebsitePanel.WebPortal/JavaScript/AdapterUtils.js
2011-07-13 16:07:32 -07:00

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