var persisteduls = new Object()
var ddFAQ = new Object()

ddFAQ.closefolder="/gfx/navsubplus.png"; //set image path to "closed" folder image
ddFAQ.openfolder="/gfx/navsubmin.png"; //set image path to "open" folder image
ddFAQ.nofolder="/gfx/navsubblank.gif"; //set image path to "no" folder image

//////////No need to edit beyond here///////////////////////////

ddFAQ.createTree=function(treeid)
{
    var answers=document.getElementById(treeid).getElementsByTagName("div");
    var questions=document.getElementById(treeid).getElementsByTagName("div");
    var image;
    for (var j=0; j<questions.length; j++)
    {
	if (questions[j].className=="question")
	{
		image=document.createElement("img");
        	image.setAttribute("src", ddFAQ.nofolder);
        	questions[j].insertBefore(image, questions[j].firstChild);
	}
    }
    
    for (var i=0; i<answers.length; i++)
    {
	if (answers[i].parentNode.className=="question")
	        ddFAQ.buildSubTree(treeid, answers[i], i);
    }
}

ddFAQ.buildSubTree=function(treeid, answer, index)
{
    answer.parentNode.getElementsByTagName("img")[0].setAttribute("src", ddFAQ.closefolder);
    answer.parentNode.className="question";
    
    if (answer.className==null || answer.className=="") 
        answer.className="closed";
    else if (answer.className=="open") 
        ddFAQ.expandSubTree(treeid, answer) 

    if (answer.className=="closed")
	answer.style.display="none";

    answer.parentNode.onclick=function(e)
    {
        var submenu=this.getElementsByTagName("div")[0];
        var attribute = submenu.className;
        ddFAQ.flatten(treeid, "contract");
        if (attribute=="closed")
        {
            submenu.style.display="block";
            submenu.className="open";
            answer.parentNode.getElementsByTagName("img")[0].setAttribute("src", ddFAQ.openfolder);            
        }
        else if (attribute=="open")
        {
            submenu.style.display="none";
            submenu.className="closed";
            answer.parentNode.getElementsByTagName("img")[0].setAttribute("src", ddFAQ.closefolder);            
        }
        ddFAQ.preventpropagate(e)
    }
    
    answer.onclick=function(e)
    {
        ddFAQ.preventpropagate(e)
    }
}

 //expand an answer
ddFAQ.expandSubTree=function(treeid, answer)
{
    var rootnode=document.getElementById(treeid);
    var currentnode=answer;
    
    currentnode.style.display="block";
    currentnode.parentNode.getElementsByTagName("img")[0].setAttribute("src", ddFAQ.openfolder);
}

 //expand or contract all UL elements
ddFAQ.flatten=function(treeid, action)
{
    var answers=document.getElementById(treeid).getElementsByTagName("div");
    for (var i=0; i<answers.length; i++)
    {
	if (answers[i].parentNode.className=="question")
	{
        	answers[i].style.display=(action=="expand")? "block" : "none";
        	var classvalue=(action=="expand")? "open" : "closed";
        	answers[i].className=classvalue;
        	if (action=="expand")
        	{
        	    answers[i].parentNode.getElementsByTagName("img")[0].setAttribute("src", ddFAQ.openfolder);
        	}
        	else
        	{
        	    answers[i].parentNode.getElementsByTagName("img")[0].setAttribute("src", ddFAQ.closefolder);
        	}
	}
    }
}

////A few utility functions below//////////////////////


//searches an array for the entered value. If found, delete value from array
ddFAQ.searcharray=function(thearray, value)
{ 
    var isfound=false;
    
    for (var i=0; i<thearray.length; i++)
    {
        if (thearray[i]==value)
        {
            isfound=true;
            thearray.shift(); //delete this element from array for efficiency sake
            break;
        }
    }
    return isfound;
}

//prevent action from bubbling upwards
ddFAQ.preventpropagate=function(e)
{
    if (typeof e!="undefined")
        e.stopPropagation();
    else
        event.cancelBubble = true;
}

//assign a function to execute to an event handler (ie: onunload)
ddFAQ.dotask=function(target, functionref, tasktype)
{
    tasktype=(window.addEventListener)? tasktype : "on"+faqtasktype
    
    if (target.addEventListener)
        target.addEventListener(tasktype, functionref, false)
    else if (target.attachEvent)
        target.attachEvent(tasktype, functionref)
}