﻿var indexloaded = false;
var indexshowing = false;

// This method should be called from the page onload event to construct dynamic objects.
function initializeIndex() 
{
  var objbody = document.getElementsByTagName("body").item(0);
	if (objbody) {
	  // Dynamically add overlay html content
	  var objoverlay = document.createElement("div");
	  objoverlay.setAttribute("id", "overlayindex");
	  objoverlay.onclick = function() { hideIndex(); return false; }
	  objoverlay.style.display = "none";	  
	  objbody.appendChild(objoverlay); 
	  
	  var objindexiframe = document.createElement("iframe");
	  objindexiframe.setAttribute("id", "indexiframe");  
	  objindexiframe.setAttribute("name", "indexiframe");  
	  objindexiframe.setAttribute("frameborder", "0");  
	  objindexiframe.setAttribute("border", "0");  
	  
	  // do not set display to none because of Safari bug
	  if (navigator.userAgent.toString().toLowerCase().indexOf('safari') > 0) {
      // instead set dimensions to zero
	    objindexiframe.style.width = "0px";
	    objindexiframe.style.height = "0px";
    } else {
      objindexiframe.style.display = "none";
    }		  
	  
	  // setAttribute does not work for IE for properties that impact display layout
	  objindexiframe.frameBorder = "0";	  
	  objindexiframe.border = "0";	  	  	     
	  objbody.appendChild(objindexiframe);  	 	  
	}
}

// Dynamically position overlay and iframe for index. Only works in case index is 
// visible or when force = true (for internal use).
function resizeIndexOverlay(force)
{
  if ((indexshowing) || (force)) {
    var overlaydiv = $("overlayindex");
    var overlayiframe = $("indexiframe");    

    if ((overlaydiv) && (overlayiframe)) {
      var menuarea = document.getElementById("bbmenuarea");
      if (menuarea) {
        var pagesize = KMMeasurement.getPageSize();
        var divrect = KMMeasurement.getRect(menuarea);
        divrect.top = 0;
        divrect.left = 0;
        divrect.width = pagesize.windowWidth;
        divrect.height = pagesize.windowHeight;
        
        KMMeasurement.setRect(overlaydiv, divrect);
        
        var iframerect = KMMeasurement.cloneRect(divrect);
        iframerect.width = (divrect.width * 0.3);
        iframerect.height = (divrect.height * 0.9);
        
        var margin = (divrect.height - iframerect.height) / 2; 
        iframerect.top = divrect.top + margin;
        iframerect.left = divrect.width - iframerect.width - margin;
        KMMeasurement.setRect(overlayiframe, iframerect);
      }   
    }
  }
}

function toggleIndex() 
{
  if (!indexshowing) {
    showIndex();
  } else {
    hideIndex();
  }
}

// Make index and it's overlay visible.
function showIndex()
{  
  overlaydiv = $("overlayindex");
  overlayiframe = $("indexiframe");
  
  if (!overlaydiv) {
    throw("overlayindex element niet beschikbaar. initializeIndex() niet aangeroepen in pagina onload?");
  } else {
    resizeIndexOverlay(true);    
    new Effect.Appear(overlaydiv, { duration: 0.2, from: 0.0, to: 0.8, afterFinish: _callbackShowIndex });    
     
    if (!indexloaded) {
      var indexframe = frames["indexiframe"];    
      if (indexframe) {
        indexframe.location.href = "index.aspx";
        
        indexloaded = true;
      }
    }
    indexshowing = true;
  }
}

// Called after show overlay effect was finished to allow us to display the actual index list.
function _callbackShowIndex(obj)
{
  Element.show(overlayiframe);	 
}

// Hides index and it's overlay.
function hideIndex()
{
  if (indexshowing) {
    Element.hide("indexiframe");
    new Effect.Fade("overlayindex", { duration: 0.2});    
    
    indexshowing = false;
  }
}


