﻿var noticeloaded = false;
var noticeshowing = false;

// This method should be called from the page onload event to construct dynamic objects.
function initializeNotice() 
{
  var objbody = document.getElementsByTagName("body").item(0);
	if (objbody) {
	  // Dynamically add overlay html content
	  var objoverlay = document.createElement("div");
	  objoverlay.setAttribute("id", "overlaynotice");
	  objoverlay.onclick = function() { hideNotice(); return false; }
	  objoverlay.style.display = "none";	  
	  objbody.appendChild(objoverlay); 
	  
	  var objnoticeiframe = document.createElement("iframe");
	  objnoticeiframe.setAttribute("id", "noticeiframe");  
	  objnoticeiframe.setAttribute("name", "noticeiframe");  
	  objnoticeiframe.setAttribute("frameborder", "0");  
	  objnoticeiframe.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
	    objnoticeiframe.style.width = "0px";
	    objnoticeiframe.style.height = "0px";
    } else {
      objnoticeiframe.style.display = "none";
    }		  
	  
	  // setAttribute does not work for IE for properties that impact display layout
	  objnoticeiframe.frameBorder = "0";	  
	  objnoticeiframe.border = "0";	  	  	     
	  objbody.appendChild(objnoticeiframe);  	 	  
	}
}

// Dynamically position overlay and iframe for notice. Only works in case notice is 
// visible or when force = true (for internal use).
function resizeNoticeOverlay(force)
{
  if ((noticeshowing) || (force)) {
    var overlaydiv = $("overlaynotice");
    var overlayiframe = $("noticeiframe");

    if ((overlaydiv) && (overlayiframe)) {
      var menuarea = document.getElementById("bbmenuarea");
      if (menuarea) {
        var pagesize = KMMeasurement.getPageSize();
        var divrect = KMMeasurement.getRect(menuarea);
        divrect.top += divrect.height + 1;
        divrect.left = 0;
        divrect.width = pagesize.windowWidth;
        divrect.height = pagesize.windowHeight - divrect.top;
        
        KMMeasurement.setRect(overlaydiv, divrect);
        
        var iframerect = KMMeasurement.cloneRect(divrect);
        iframerect.width = (divrect.width * 0.8);
        iframerect.height = (divrect.height * 0.6);
        
        var margin = (divrect.height - iframerect.height) / 2; 
        iframerect.top = divrect.top + margin;
        iframerect.left = divrect.width - iframerect.width - margin;
        KMMeasurement.setRect(overlayiframe, iframerect);
      }   
    }
  }
}

var noticeId = "";
function toggleNotice(objId) 
{
  if (!noticeshowing) {
    showNotice(objId);
  }
  else {
    if (objId != noticeId) {
      showNotice(objId);
    }
    else {
      hideNotice();
    }
  }
  noticeId = objId;
}

// Make notice and it's overlay visible.
function showNotice(objId)
{  
  overlaydiv = $("overlaynotice");
  overlayiframe = $("noticeiframe");
  
  if (!overlaydiv) {
    throw("overlaynotice element niet beschikbaar. initializeNotice() niet aangeroepen in pagina onload?");
  } else {
    resizeNoticeOverlay(true);    
    new Effect.Appear(overlaydiv, { duration: 0.2, from: 0.0, to: 0.8, afterFinish: _callbackShowNotice });    
     
    if (!noticeloaded) {
      var noticeframe = frames["noticeiframe"];    
      if (noticeframe) {
        var url = "notice.aspx?pageid=" + objId;
        noticeframe.location.replace(url);
        // notice frame should always be reloaded on showNotice
        // so never set noticeloaded to true
        //noticeloaded = true;
      }
    }
    noticeshowing = true;
  }
}

// Called after show overlay effect was finished to allow us to display the actual notice list.
function _callbackShowNotice(obj)
{
  Element.show(overlayiframe);	 
}

// Hides notice and it's overlay.
function hideNotice()
{
  if (noticeshowing) {
	  Element.hide("noticeiframe");
    new Effect.Fade("overlaynotice", { duration: 0.2});    
    
    noticeshowing = false;
  }
}


