
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - metanavwidgets.js - */
var nav_xmlhttp;

function getSubFolders(dropdown) {
    //var dropdown = document.getElementById('form.navigation_location_top_level');
    var folder_uid = dropdown.options[dropdown.selectedIndex].value;
    nav_xmlhttp = new XMLHttpRequest();
    nav_xmlhttp.open('GET', location + '../../@@getSubNavigationFoldersXML?topLevelFolderUID=' + folder_uid);
    nav_xmlhttp.onreadystatechange = getSubFolderXML;
    nav_xmlhttp.send(null);
}

function getSubFolderXML() {
   if (nav_xmlhttp.readyState == 4) {
       var xmlDoc = nav_xmlhttp.responseXML;
       var results = xmlDoc.getElementsByTagName("result");
       var title_list = new Array(results.length);
       var id_list = new Array(results.length);
   
       /* Clear out the current options, if there are any */
       var secondarySelect = document.getElementById('form.navigation_location_top_level_secondary_level');
       if (secondarySelect.length > 0) {secondarySelect.length = 0;}
       
       /* Populate the dropdown with the right data */
       for (var i = 0; i < results.length; i++) {
           title = results[i].getAttribute("title");
           id = results[i].getAttribute("id");
           secondarySelect.options[i] = new Option(title, id);
           }
       }
}

/* - metanav.js - */
/*
	metaNav.js
  controls display of metaNav navigation levels and descriptions
*/


/* add stylesheet which creates hide/show and other classes on the
   metaNav elements.  Users without Javascript will still be able 
   to see all style choices.  The no-javascript CSS file will be
   overridden by this new CSS file
*/

function setMetaNavStyle() {
  //sets metaNav stylesheet to the one used for javascript version
  metaNavStyle = cssQuery('#metanavStyleLink')[0];
  metaNavStyle.setAttribute('href','metanav.css');  
}

//register function to fire on window onload
registerPloneFunction(setMetaNavStyle);

function showNavLevel(level, id) {

  //display specified node at the specified level,
  //hide other nodes at that level.  levels defined by CSS classes

  selectedNode = cssQuery('#'+id)[0];
  allNodesAtLevel = cssQuery('.navLevel-'+level);
  for (node in allNodesAtLevel) {
    thisNode = allNodesAtLevel[node];
    if (thisNode == selectedNode) replaceClassName(thisNode, 'hide', 'show');
    else replaceClassName(thisNode  , 'show', 'hide');    
   }

   //hide all sublevels of the selected node
   subLevels = cssQuery('.navLevel-'+(level+1),selectedNode);
   for (node in subLevels) {
     thisNode = subLevels[node];
     replaceClassName(thisNode, 'show', 'hide');
   }
  
}

function showNavDescription(el) {
  var topLevelDescription = cssQuery('#topLevelDescription')[0];
  topLevelDescription.innerHTML = el.title;
}

function clearNavDescription(el) {
  var topLevelDescription = cssQuery('#topLevelDescription')[0];
  topLevelDescription.innerHTML = '';  
}

function clearNavLevel(id) {
  //hide specified nav level
  selectedNode = cssQuery('#'+id)[0];
  replaceClassName(selectedNode, 'show', 'hide')

  //hide all lower levels  
  allNodesAtLevel = cssQuery('.navLevel-3');
  for (node in allNodesAtLevel) {
    thisNode = allNodesAtLevel[node];
    replaceClassName(thisNode, 'show', 'hide');
   }
  
}
