﻿var tmrID;
var autoExpand = true;
var imgSrcExpand = "/wp-content/themes/neec/activetree/images/activetree/expand.gif";
var imgSrcCollapse = "/wp-content/themes/neec/activetree/images/activetree/collapse.gif";


if(typeof HTMLElement!="undefined" && ! 
HTMLElement.prototype.insertAdjacentElement)
{ 
    HTMLElement.prototype.insertAdjacentElement = function 
    (where,parsedNode) 
    { 
        switch (where)
        { 
        case 'beforeBegin': 
        this.parentNode.insertBefore(parsedNode,this) 
        break; 
        case 'afterBegin': 
        this.insertBefore(parsedNode,this.firstChild); 
        break; 
        case 'beforeEnd': 
        this.appendChild(parsedNode); 
        break; 
        case 'afterEnd': 
        if (this.nextSibling) 
        this.parentNode.insertBefore(parsedNode,this.nextSibling); 
        else this.parentNode.appendChild(parsedNode); 
        break; 
        } 
    } 

    HTMLElement.prototype.insertAdjacentHTML = function 
    (where,htmlStr) 
    { 
        var r = this.ownerDocument.createRange(); 
        r.setStartBefore(this); 
        var parsedHTML = r.createContextualFragment(htmlStr); 
        this.insertAdjacentElement(where,parsedHTML) 
    } 


    HTMLElement.prototype.insertAdjacentText = function 
    (where,txtStr) 
    { 
        var parsedText = document.createTextNode(txtStr) 
        this.insertAdjacentElement(where,parsedText) 
    } 
}

function ActiveTreeInitialize()
{
    if(document.body.getElementsByTagName)
    {        
        var ulTags = document.body.getElementsByTagName("ul");        
        for(var i=0;i<ulTags.length;i++)
        {            
            if(ulTags[i].className == "active-tree")
            {
                ActiveTreeGenerate(ulTags[i],i,0,false);
            }
            else if(ulTags[i].className == "active-tree-expanded")
            {
                ActiveTreeGenerate(ulTags[i],i,0,true);
            }
        }
    }
}

function ActiveTreeNotProcessed(item)
{
    var notProcessed = true;
    if(item.getElementsByTagName("img").length > 0)
    {
        if(item.getElementsByTagName("img")[0].className == "active-tree-icon")
        {
            notProcessed = false;
        }
    }
    return notProcessed;
}

function ActiveTreeGenerate(list,TreeIndex,ListIndex,expanded)
{    
    var items = list.getElementsByTagName("li");
    var imgPlus;    
    
    for(var i=0;i<items.length;i++)
    {
        if(ActiveTreeNotProcessed(items[i]) && items[i].getElementsByTagName("ul").length > 0)
        {
            imgPlus = document.createElement("img");
            imgPlus.style.marginLeft = "6px";
            if(!expanded)
            {
                imgPlus.src = imgSrcExpand;
                imgPlus.alt = "Display Associated Links";
            }
            else
            {
                imgPlus.src = imgSrcCollapse;
                imgPlus.alt = "Hide Associated Links";
            }
            
            imgPlus.className = "active-tree-icon";
            imgPlus.id = "treeIcon" + TreeIndex + "n" + ListIndex + "n" + i;
            
            if (window.addEventListener)
            {
                imgPlus.addEventListener('click', ActiveTreeIconClick, false);                
            }
            else if (window.attachEvent)
            {
                imgPlus.attachEvent('onclick',ActiveTreeIconClick);
            }
            else if (document.getElementById)
            {
                imgPlus.onclick=ActiveTreeIconClick;
            }                     
            
            if(autoExpand)
            {
                var link = items[i].firstChild;
                if(link)
                {
                    if (window.addEventListener)
                    {
                        link.addEventListener("mouseover", ActiveTreeDelayedExpand, false);
                        link.addEventListener("mouseout", ActiveTreeCancelDelayedExpand, false);
                    }
                    else if (window.attachEvent)
                    {
                        link.attachEvent('onmouseover',ActiveTreeDelayedExpand);
                        link.attachEvent('onmouseout',ActiveTreeCancelDelayedExpand);
                    }
                    else if (document.getElementById)
                    {                                 
                        link.onmouseover=ActiveTreeDelayedExpand;
                        link.onmouseout=ActiveTreeCancelDelayedExpand;
                    }
                    
                    
                    link.id = "treeLink" + TreeIndex + "n" + ListIndex + "n" + i;
                }                        
            }
            
            if(!expanded)
            {
                items[i].getElementsByTagName("ul")[0].style.display = "none";
            }
            
            items[i].getElementsByTagName("a")[0].insertAdjacentElement("afterEnd",imgPlus);
            items[i].getElementsByTagName("ul")[0].id = "treeList" + TreeIndex + "n" + ListIndex + "n" + i;            

            ListIndex ++;
            ActiveTreeGenerate(items[i].getElementsByTagName("ul")[0],TreeIndex,ListIndex,expanded);
        }        
    } 
}

function ActiveTreeIconClick(evt)
{
    
    var imgIcon;
    
    if(evt.srcElement)
    {
        imgIcon = evt.srcElement;
    }
    else if(evt.target)
    {
        imgIcon = evt.target;
    }
    
    window.clearTimeout(tmrID);
    ActiveTreeToggle(imgIcon.id);
}

function ActiveTreeToggle(iconID)
{
    var imgIcon = document.getElementById(iconID);
    if(imgIcon.alt == "Display Associated Links")
    {
        document.getElementById(imgIcon.id.replace("treeIcon","treeList")).style.display = "block";
        imgIcon.src = imgSrcCollapse;
        imgIcon.alt = "Hide Associated Links";
    }
    else
    {
        document.getElementById(imgIcon.id.replace("treeIcon","treeList")).style.display = "none";
        imgIcon.src = imgSrcExpand;
        imgIcon.alt = "Display Associated Links";
    }
}

function ActiveTreeDelayedExpand(evt)
{
    var link;
    
    if(evt.srcElement)
    {
        link = evt.srcElement;
    }
    else if(evt.target)
    {
        link = evt.target;
    }
    
    link.style.cursor = "pointer";
    var imgIcon = document.getElementById(link.id.replace("treeLink","treeIcon"));
    
    if(imgIcon)
    {
        if(imgIcon.alt == "Display Associated Links")
        {
            tmrID = window.setTimeout("ActiveTreeToggle('" + imgIcon.id + "')",1000);  
        }
    }
}

//Clear Timer and reset to default settings on Mouse Out//
function ActiveTreeCancelDelayedExpand(evt){
    var link;
    if(evt.srcElement)
    {
        link = evt.srcElement;
    }
    else if(evt.target)
    {
        link = evt.target;
    }

    link.style.cursor = "auto";
    window.clearTimeout(tmrID);
}
      
if (window.addEventListener)
{
    window.addEventListener("load", ActiveTreeInitialize, false);
}
else if (window.attachEvent)
{
    window.attachEvent('onload',ActiveTreeInitialize);
}
else if (document.getElementById)
{                                 
    window.onload=ActiveTreeInitialize;
}