// Glossary routines.
// Create the Glossary layer.
function glossaryCreate() {
  var glossarPanel = null;
  if (useLayers() && dynapiLoaded) {
    glossaryPanel = new LoadPanel();
    glossaryPanel.setVisible(false);
    glossaryPanel.setSize(300, 1);
	glossaryPanel.setLocation(185, 0);
    dynapi.document.addChild(glossaryPanel);
  
    // Glossary events.
    glossaryPanel.addEventListener(
      {onresize: // Onresize, reposition the panel, if necessary.
	    function(e) {
	      var o = e.getSource();
		  var y = o.ASanchor.cursorY;
		  var h = o.getHeight();
		  var scrollTop = document.body.scrollTop;
		  var screenHeight = document.body.clientHeight;
		  // Set the initial position.
		  switch (o.ASanchor.loc) {
		    case 'wordwatch':
		      y = y - 80;
			  break;
		    default:
		      if (y > (scrollTop + (screenHeight / 2))) {y = y - 15 - h;}
			  else {y = y + 14;}
		  }
		  // Get the whole panel on the screen, with the top showing a priority.
		  y = Math.min(y + h, scrollTop + screenHeight - 5) - h;
		  y = Math.max(y, scrollTop + 5);
		  o.setY(y);
	    }
	  }
    );
  }
  
  // That's all folks.
  return glossaryPanel;
}

// glossaryOpen - Show the glossary layer.  Returns TRUE if the glossary layer can be used.
function glossaryOpen(term, eventInfo, loc) {
  var didUse = false;
  if (useLayers() && dynapiLoaded) {
    var cursor = eventCursor(eventInfo);
    if (!glossaryPanel) glossaryPanel = glossaryCreate();
	glossaryPanel.ASanchor = new Object;
	glossaryPanel.ASanchor.loc = loc;
	glossaryPanel.ASanchor.cursorY = cursor.y;
	glossaryClose();
  	glossaryPanel.setVisible(true);
    glossaryPanel.setURL("/news/term-panel.php?t=" + term);
	didUse = true;
  }
  return didUse;
}

// aboutOpen - Show the glossary layer but with the about text..  Returns TRUE if the glossary layer can be used.
function aboutOpen(eventInfo, loc) {
  var didUse = false;
  if (useLayers() && dynapiLoaded) {
    var cursor = eventCursor(eventInfo);
    if (!glossaryPanel) glossaryPanel = glossaryCreate();
	glossaryPanel.ASanchor = new Object;
	glossaryPanel.ASanchor.loc = loc;
	glossaryPanel.ASanchor.cursorY = cursor.y;
	glossaryClose();
  	glossaryPanel.setVisible(true);
    glossaryPanel.setURL("/news/about-panel.php");
	didUse = true;
  }
  return didUse;
}

// Close the glossary panel.
var loadHTML = "<html></head>"
			 + "<body><div id='glossaryBlock'>"
			 + "<div id='glossaryBar' onMouseOver='dragEnable();' onMouseOut='dragDisable();'>"
			 + "<a href='javascript:glossaryClose();'>"
			 + "<img src='/news/graphics/vocabpop_xbox.gif' alt=''></a></div>"
             + "<div id='glossaryContent'>"
			 + "<div id='glossaryWW'><img src='/news/graphics/vocabpop_wordwatch.gif' alt=''></div>"
			 + "<p class='glossary_def'>Loading defintion...</p><p>&nbsp;</p>"
			 + "</div></div></body></html>";
function glossaryClose() {
  if (useLayers() && dynapiLoaded) {
    if (glossaryPanel) {
      glossaryPanel.setVisible(false);
      glossaryPanel.setHTML(loadHTML);
	  glossaryPanel._notify2();
	}
  }
}

// When over the menu bar, enable/disable mouse dragging.
function dragEnable() {
  DragEvent.enableDragEvents(glossaryPanel);
}
function dragDisable() {
  DragEvent.disableDragEvents(glossaryPanel);
}

// Initialize and load up DynAPI.
function loadDynapi() {
  if (useLayers()) {
    dynapi.library.setPath('/library/dynapi3x/src/');
    dynapi.library.include('dynapi.api');
    dynapi.library.include('dynapi.gui.LoadPanel');
    dynapi.library.include('DragEvent');

    dynapi.onLoad(
      function() {
       dynapiLoaded = true;
      }
    );
  }
}

//** Initializations.
var glossaryPanel;
var dynapiLoaded = false;