// Part.js version 1.7, modified by Jon to add collapseOnParentClick: false .
/*"____________________ Prepare item-level behaviors. ___________________ "*/
ExpandingMenu.prototype.prepareMenu = function() {
    //Associate superlinks with sublinks. UPGRADE: NEW FEATURE--add to ExpandingMenu.js as example.
    // Assume the first link may be a parent.
    menuParentCandidateObj = this.itemManager[0] ;
    for (var item=1; item < this.itemManager.length; item++) {
        // If the link id has no hyphen, then assume it may be a parent.
        if (this.itemManager[item].htmlElement.id.indexOf("-") == -1 ) {
            menuParentCandidateObj = this.itemManager[item] ;
            // _parentCandidate = this.itemManager[item].htmlElement.id ; debug("_parentCandidate", 3) ;
        }
        // If the link id has a hyphen, associate it with the parent.
        else {
            menuParentCandidateObj.associateChildren(  [ this.itemManager[item] ]  ) ;
            // _childCandidate = this.itemManager[item].htmlElement.id ; debug("_childCandidate", 3) ;
        }
    }
    //Here we automate these assignments for each particular application.
    //Associate all the content using a formulaic approach.
    for (var counter=0; counter < this.itemManager.length; counter++) {
        var contentIdStr = "content-" + this.itemManager[counter].htmlElement.id;
        this.itemManager[counter].associateContent( document.getElementById(contentIdStr) );
    }
    // Set classes and custom menu response using formulaic approach based on id nomenclature.

    for (var item=0; item < this.itemManager.length; item++) {
        var itemClassesObj = {
            argBachelorUnselected: "menulink-bachelor-unselected", 
            argBachelorSelected: "menulink-bachelor-selected", 
            argParentCollapsedUnselected: "menulink-parent-collapsed-unselected",
            argParentCollapsedSelected: "menulink-parent-collapsed-selected",
            argParentExpandedUnselected: "menulink-parent-expanded-unselected",
            argParentExpandedSelected: "menulink-parent-expanded-selected",
            argChildUnselected: "menulink-child-unselected",
            argChildSelected: "menulink-child-selected",
            argMouseover: "this.style.cursor = 'pointer'; this.style.color = 'yellow'; " ,
            argMouseout: "this.style.cursor = 'default'; this.style.color = 'white'; "
        }
        /* Use if you want a special style for parent menu items.
        if (this.itemManager[item].linkType != "child") {
            itemClassesObj.argMouseover = "this.style.cursor = 'pointer'; this.style.border = 'dashed 2px orange'; " ;
            itemClassesObj.argMouseout = "this.style.cursor = 'default'; this.style.border = 'solid 2px darkslategray'; " ;
        }
        */
        this.itemManager[item].setClasses( itemClassesObj ) ;
    }

    // Initialize the menu and choose an initial item to select.
    this.setInitialCondition( this.itemManager[0] );
}
function respondAsIf(menuItemEleArg) {
    menuItemEleArg.menuItem.respond({menuItemEle: menuItemEleArg}) ;
}
/*"____________________ Prepare menu-level behaviors. ___________________ "*/
// Register global stylistic changes based on menu clicks.
logoClassArr = [
    "logo-a" ,
    "logo-b" ,
    "logo-c" ,
    "logo-d"    
]
watermarkClassArr = [
    "watermark-a" ,
    "watermark-b" ,
    "watermark-c" ,
    "watermark-d"    
]
// Deprecated:
mainBodyClassArr = [
    "main-body-a" ,
    "main-body-b" ,
    "main-body-c" ,
    "main-body-d"
]
ExpandingMenu.prototype.setMenuResponse = function(itemNum) { 
    // This particular response function must be called after parent-child relationships established.
    // It also assumes a certain naming convention for menu instances and page styles:
    // "this" is the JS wrapper of the menu div clicked on. "this.id" looks like "navMenu2Obj". The variable name of this object is like navMenu2ObjVar.
    var responseFunVar = " " ;
	/*______________ Global changes ______________*/
	// Hide splash screen. (Hiding when a menu is clicked creates less bubbling than adding an onclick to the body, and permits show on logo click.) 
	document.getElementById("logo").onclick = function() { 
		respondAsIf( document.getElementById('goals') ) ;
		document.getElementById('splash-only').style.display='block' ;
		var firstMenuItems = document.getElementById('goals').menu.htmlElement.getElementsByTagName('div') ;
		for (var itemCounter=1; itemCounter < firstMenuItems.length; itemCounter++) { // Starting with 1 so as to omit lead item.
			firstMenuItems[itemCounter].style.display='none' ;
		};
	}
	responseFunVar += "document.getElementById('splash-only').style.display='none' ;" ;
	/*______________ Local changes ______________*/
	// Change look of page. UPGRADE: make these classNames.
    responseFunVar += "document.getElementById('logo').className = logoClassArr[" + navMenuMan[this.id].num + "] ;" ;
    responseFunVar += "document.getElementById('watermark').className = watermarkClassArr[" + navMenuMan[this.id].num + "] ;" ;
    responseFunVar += "document.getElementById('main-body').className = mainBodyClassArr[" + navMenuMan[this.id].num + "] ;" ;
    // Set all other menus back to their initial condition.
    for ( var menuNum = 0; menuNum < navMenuMan.length ; menuNum++ ) {
        if (navMenuMan[menuNum] != this) { // This should only happen for other menus.
            // DEBUG id = navMenuMan[menuNum].id; debug("id")
            responseFunVar += " " + navMenuMan[menuNum].id + "Var.setInitialCondition( " + navMenuMan[menuNum].id + "Var.itemManager[0] ); " ;
            responseFunVar += " " + navMenuMan[menuNum].id  + "Var.hideAllContent(); " ;
        }
    }
    // Collapse menu selected if you clicked on a child (expand if you didn't).
    if ( this.itemManager[itemNum].linkType == "child" ) {
        responseFunVar += " " + this.id + "Var.setInitialCondition(" + this.id + "Var.itemManager[0] );" ;
        responseFunVar += " " + this.id + "Var.itemManager[" + itemNum + "].htmlElement.style.display = 'block' ; " ;
        responseFunVar += " " + this.id + "Var.itemManager[" + itemNum + "].htmlElement.style.color = 'yellow' ; "; // Emulates visited link color.
        // responseFunVar += " " + this.id + "Var.itemManager[" + itemNum + "].htmlElement.style.border = 'solid 2px darkslategray' ; " ;
    }
    // _responseNew = responseFunVar ; debug("_responseNew", 2)
    return responseFunVar ;
}
//____________________ Instantiate drop-downs. ___________________ //
navMenuMan = new Array() ;

navMenu0ObjVar = new ExpandingMenu({ menuId: "navMenu0", isTwoLevelMenu: true, useDefaultContentManagement: true, collapseOnParentClick: false } ) ;
navMenuMan.push(navMenu0ObjVar) ;

navMenu1ObjVar = new ExpandingMenu({ menuId: "navMenu1", isTwoLevelMenu: true, useDefaultContentManagement: true, collapseOnParentClick: false } ) ;
navMenuMan.push(navMenu1ObjVar) ;

navMenu2ObjVar = new ExpandingMenu({ menuId: "navMenu2", isTwoLevelMenu: true, useDefaultContentManagement: true, collapseOnParentClick: false } ) ;
navMenuMan.push(navMenu2ObjVar) ;

navMenu3ObjVar = new ExpandingMenu({ menuId: "navMenu3", isTwoLevelMenu: true, useDefaultContentManagement: true, collapseOnParentClick: false } ) ;
navMenuMan.push(navMenu3ObjVar) ;
//____________________ Prep menus. ___________________ //
for (var menuNum = 0 ; menuNum < navMenuMan.length ; menuNum++) {
    navMenuMan[menuNum].prepareMenu() ;
    // Associate menus with ids. This translates to statements like kidMan["kai"] = kaiObj. 
    navMenuMan[ navMenuMan[menuNum].id ] = navMenuMan[menuNum] ;
    //_id = navMenuMan[ navMenuMan[menuNum].id ].id ; debug("_id", 2)
    // Associate ids with array indices.
    navMenuMan[ navMenuMan[menuNum].id ].num = menuNum ;
    _num = navMenuMan[ navMenuMan[menuNum].id ].num ; debug("_num", 2)
    // Adjust menu settings on click.
    for (var itemNum=0; itemNum < navMenuMan[menuNum].itemManager.length; itemNum++) {
        navMenuMan[menuNum].itemManager[itemNum].responseFun = navMenuMan[menuNum].setMenuResponse(itemNum) ;
       //_menu = navMenuMan[menuNum].id ; debug("_menu")
       // _responseFun = navMenuMan[menuNum].responseFun ; if (!confirm(_responseFun)) break ;
    }
}
