//---------- 
      function addEvent(obj ,evt, fnc)
      {
        if (obj.addEventListener)
          obj.addEventListener(evt,fnc,false);
        else if (obj.attachEvent)
          obj.attachEvent('on'+evt,fnc);
        else
          return false;
        return true;
      } 
      function removeEvent(obj ,evt, fnc)
      {
        if (obj.removeEventListener)
          obj.removeEventListener(evt,fnc,false);
        else if (obj.detachEvent)
          obj.detachEvent('on'+evt,fnc);
        else
          return false;
        return true;
      } 
      //---------- 
      function appendElement(node,tag,id,htm)
      {
        var ne = document.createElement(tag);
        if(id) ne.id = id;
        if(htm) ne.innerHTML = htm;
        node.appendChild(ne);
      } 
      //---------- 
      function showPopup(p) {
          greyout(true);
        var popup1 = document.getElementById(p);
        popup1.style.display = 'block';
        var screenWidth;
        screenWidth = Math.round(0.5*Math.max(document.body.scrollWidth,document.body.clientWidth))-200;
        popup1.style.left = screenWidth + 'px';
      } 
      function hidePopup(p)
      {
        greyout(false);
        document.getElementById(p).style.display = 'none';
      } 
      //---------- 
      function greyout(d, z) {
      // d=display (boolean: true=activate, false=deactivate), z=z-index (The function defaults the z-index element to 50 if the parameter is omitted, so the popup should have a higher z-index property)
          var obj = document.getElementById('greyout');
        if(!obj)
        {
          appendElement(document.body,'div','greyout');
          obj = document.getElementById('greyout');
          obj.style.position = 'absolute';
          obj.style.top = '0px';
          obj.style.left = '0px';
          obj.style.background = '#111';
          obj.style.opacity = '.5';
          obj.style.filter = 'alpha(opacity=50)'; 
        }
        if(d) {
          if(!z){ z = 50 }
          obj.style.zIndex = z;
          obj.style.height = Math.max(document.body.scrollHeight,document.body.clientHeight)+'px';
          obj.style.width  = Math.max(document.body.scrollWidth,document.body.clientWidth)+'px';
          obj.style.display = 'block';
          addEvent(window, 'resize', greyoutResize);
        }
        else {
          obj.style.display = 'none';   
          removeEvent(window,'resize',greyoutResize);
      }
      } 
      function greyoutResize()
      {
        var obj = document.getElementById('greyout');
        obj.style.height = document.body.clientHeight+'px';
        obj.style.width  = document.body.clientWidth+'px';
        obj.style.height = Math.max(document.body.scrollHeight,document.body.clientHeight)+'px';
        obj.style.width  = Math.max(document.body.scrollWidth,document.body.clientWidth)+'px';
      } 
// script from http://www.astral-consultancy.co.uk/cgi-bin/hunbug/doco.cgi?11420 
      //----------