function Toggler(parentElementId, toggleButtonClass, toggleButtonActiveClass, toggleContentClass, openIndex)
{
    this.ParentElementId = parentElementId;
    this.ToggleButtonClass = toggleButtonClass;
    this.ToggleButtonActiveClass = toggleButtonActiveClass;
    this.ToggleContentClass = toggleContentClass;
    this.OpenIndex = (typeof(openIndex) != "undefined") ? openIndex : null;
    
    this.toggleContents = new Array();
    this.toggleButtons = new Array();
    this.parentElement = document.getElementById(this.ParentElementId);
    
    this.Toggle = function(index)
    {
        for(var i = 0; i < this.toggleContents.length; i++)
        {
            if(i == index)
            {
                if(this.toggleButtons[i].className == this.ToggleButtonActiveClass)
                {
                    this.toggleContents[i].style.display = "none";
                    this.toggleButtons[i].className = this.ToggleButtonClass;
                }
                else
                {
                    this.toggleContents[i].style.display = "block";
                    this.toggleButtons[i].className = this.ToggleButtonActiveClass;
                }
            }
            else
            {
                this.toggleContents[i].style.display = "none";
                this.toggleButtons[i].className = this.ToggleButtonClass;
            }
        }
    }
    
    this.loadToggleItems = function()
    {
        var childCount = this.parentElement.childNodes.length;
        for(var i = 0; i < childCount; i++)
        {
            if(this.parentElement.childNodes[i].className == this.ToggleButtonClass)
            {
                this.toggleButtons[this.toggleButtons.length] = this.parentElement.childNodes[i];
                this.toggleButtons[this.toggleButtons.length - 1].ToggleIndex = this.toggleButtons.length - 1;
                this.toggleButtons[this.toggleButtons.length - 1].Toggler = this;
                attachEventHandler("click", this.toggleButtons[this.toggleButtons.length - 1], Toggler_OnToggleButtonClick);
            }
            else if(this.parentElement.childNodes[i].className == this.ToggleContentClass)
            {
                this.toggleContents[this.toggleContents.length] = this.parentElement.childNodes[i];
                this.toggleContents[this.toggleContents.length - 1].style.display = "none";
            }
        }
    }
    
    this.loadToggleItems();
    
    if(this.OpenIndex != null)
    {
        this.Toggle(this.OpenIndex);
    }
}

function Toggler_OnToggleButtonClick(e)
{
     var src = getEventSource(e);
     if(src)
     {
        src.Toggler.Toggle(src.ToggleIndex);
     }
}
