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