var collapseClass = "AspNet-TreeView-Collapse";
var expandClass = "AspNet-TreeView-Expand";
var showClass = "AspNet-TreeView-Show";
var hideClass = "AspNet-TreeView-Hide";
var hoverClass = "AspNet-TreeView-Hover";

function IsExpanded__AspNetTreeView(element)
{
   return (HasClass__CssFriendlyAdapters(element, collapseClass));
}

function TogglePlusMinus__AspNetTreeView(element, showPlus)
{
   if (HasAnyClass__CssFriendlyAdapters(element))
   {
       var showPlusLocal = IsExpanded__AspNetTreeView(element);
       if ((typeof(showPlus) != "undefined") && (showPlus != null))
       {
           showPlusLocal = showPlus;
       }    
       var oldClass = showPlusLocal ? collapseClass : expandClass;
       var newClass = showPlusLocal ? expandClass : collapseClass;
       SwapClass__CssFriendlyAdapters(element, oldClass, newClass);
   }
}

function ToggleChildrenDisplay__AspNetTreeView(element, collapse)
{
   if ((element != null) && (element.parentNode != null) && (element.parentNode.getElementsByTagName != null))
   {    
       var childrenToHide = element.parentNode.getElementsByTagName("ul");
       var oldClass = collapse ? showClass : hideClass;
       var newClass = collapse ? hideClass : showClass;
       for (var i=0; i<childrenToHide.length; i++)
       {
           if ((childrenToHide[i].parentNode != null) && (childrenToHide[i].parentNode == element.parentNode))
           {
               SwapOrAddClass__CssFriendlyAdapters(childrenToHide[i], oldClass, newClass);
           }
        }
    }
}

function ExpandCollapse__AspNetTreeView(sourceElement)
{
   if (HasAnyClass__CssFriendlyAdapters(sourceElement))
   {
       var expanded = IsExpanded__AspNetTreeView(sourceElement);
       TogglePlusMinus__AspNetTreeView(sourceElement, expanded);
       ToggleChildrenDisplay__AspNetTreeView(sourceElement, expanded);
   }
}

function GetViewState__AspNetTreeView(id)
{
   var retStr = "";
   if ((typeof(id) != "undefined") && (id != null) && (document.getElementById(id) != null))
   {
       var topUL = document.getElementById(id);
       retStr = ComposeViewState__AspNetTreeView(topUL, "");        
   }
   return retStr;
}

function ComposeViewState__AspNetTreeView(element, state)
{
   var child = element.firstChild;
   var bConsiderChildren = true;

   //  The following line must be changed if you alter the TreeView adapters generation of
   //  markup such that the first child within the LI no longer is the expand/collapse <span>.
   if ((element.tagName == "LI") && (child != null))
   {
       var expandCollapseSPAN = null;
       var currentChild = child;
       while (currentChild != null)
       {
           if ((currentChild.tagName == "SPAN") &&
               (currentChild.className != null) &&
               ((currentChild.className.indexOf(collapseClass) > -1) ||
                (currentChild.className.indexOf(expandClass) > -1)))
           {
               expandCollapseSPAN = currentChild;
               break;
           }
           currentChild = currentChild.nextSibling;
       }
   
       if (expandCollapseSPAN != null)
       {
           if (expandCollapseSPAN.className.indexOf(collapseClass) > -1)
           {
               //  If the "collapse" class is currently being used then the "collapse" icon is, presumably, being shown.
               //  In other words, the node itself is actually expanded at the present moment (which is why you now
               //  have the option of collapsing it.  So we mark it as an "expanded" node for purposes of the view state
               //  we are now accumulating.
               state +=  "e";
           }
           else if (expandCollapseSPAN.className.indexOf(expandClass) > -1)
           {
               //  This part of the tree is collapsed so we don't need to consider its children.
               bConsiderChildren = false;
               state +=  "n";
           }
       }
   }
       
   if (bConsiderChildren && (child != null))
   {
       state = ComposeViewState__AspNetTreeView(child, state);
   }
   
   if (element.nextSibling != null)
   {
       state = ComposeViewState__AspNetTreeView(element.nextSibling, state);
   }
   
   return state;
}

// Added functions for OnHover functionality
function Hover__AspNetTreeView(element)
{
   if (typeof(element) != "undefined")
   {
       AddClass__CssFriendlyAdapters(element, hoverClass);
   }
}

function UnHover__AspNetTreeView(element)
{
   if (typeof(element) != "undefined")
   {
       RemoveClass__CssFriendlyAdapters(element, hoverClass);   
   }
}

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();