// You should should not use this unless you have the msgWindow function 
// loaded in your code.
      var holdMyElement = false;
      var holdMyLeft    = 0;
      var holdMyTop     = 0;
      var holdData	= 0;
      var holdMessages  = false;
      var holdButtons   = false;
      var hideElements  = new Array();

      function msgWindowClose()
      {
        if((el = document.getElementById('msgWindow')))
          el.parentNode.removeChild(el);

        return true;
      }

      function setOffsets(el, offsetTop, offsetLeft)
      {
        var osTrail = el;
   
        while(osTrail) {
          offsettLeft += osTrail.offsetLeft;
          offsetTop  += osTrail.offsetTop;
          osTrail    = osTrail.offsetParent;
        }
      }

      function reshowElements(btn)
      {
        for(i = 0; i < top.hideElements.length; i++)
        {
          if(top.hideElements[i]) {
            if((top.hideElements[i]['return'] && btn == 1) || btn == 2) { 
              el = top.hideElements[i]['element'];
              el.style.display = top.hideElements[i]['display'];
              top.hideElements.splice(i, 1);
            }
          }
        }
      }

      function hideElement(elName, bringback)
      {
        el		= document.getElementById(elName);

        hTE		= new Object();
	hTE['element']	= el;
	hTE['return']	= bringback;
        hTE['display']  = el.style.display;

        el.style.display = 'none';
	top.hideElements.push(hTE);
      }

      function msgNext()
      {
        if(!holdMessages || holdMessages.length < 1) return false;
        div		= document.getElementById('msgWindow');

        mTxt = holdMessages.shift();
        if(holdMessages.length > 0) {
          
          div.innerHTML = mTxt + '<br /><br />' + 
                          '<input type="button" onclick="msgNext();" value="Next" />';
        } else {
          mBut1     = holdButtons[0];
          mBut2     = holdButtons[1];
          goConfirm = holdButtons[2];

          div.innerHTML = mTxt + '<br /><br />' + 
                          '<input type="button" onclick="'+goConfirm+' msgWindowClose();" value="'+mBut1+'" /> ';

          if(mBut2 != '') { div.innerHTML += '&nbsp;<input type="button" onclick="msgWindowClose();" value="'+mBut2+'" />'; }
        }
      }

      function msgWindow(parentEl, mTxt, mBut1, mBut2, goConfirm)
      {
        var offsetTop = 0, offsetLeft = 0;
        
        if(typeof(mTxt) == 'object') {
          holdButtons 	= new Array(mBut1, mBut2, goConfirm);
          holdMessages 	= mTxt;         
        } else {
          holdButtons 	= false;
          holdMessages 	= false;
        }

        if(parentEl[1]) { 
          offsetTop  = parentEl[1];
          offsetLeft = parentEl[2];
          el         = parentEl[0];
        } else {
          offsetTop = 20;
          offsetLeft = 10;
          el = parentEl;
        }
        top.holdMyElement = el;
        top.holdMyLeft    = offsetLeft;
        top.holdMyTop     = offsetTop;

        div 			= document.createElement('div');
        div.id			= 'msgWindow';
        div.style.position	= 'absolute';
        div.style.width		= '200px';
        div.className		= 'clubMessageWindow';
        div.style.top		= (el.offsetTop + offsetTop) + 'px';
        div.style.left		= (el.offsetLeft + offsetLeft) + 'px';

        if(holdMessages) {
          document.body.appendChild(div);
          msgNext();
        } else {
          div.innerHTML 		= mTxt + '<br /><br />' + 
                                          '<input type="button" onclick="'+goConfirm+' msgWindowClose(); reshowElements(1);" value="'+mBut1+'" /> ';

          if(mBut2 != '') { div.innerHTML += '&nbsp;<input type="button" onclick="msgWindowClose(); reshowElements(2);" value="'+mBut2+'" />'; }
          document.body.appendChild(div);
        }
         
      }

      function xmlParseResults(rTxt)
      {
        rLines = rTxt.split('\r\n');
        handleAjax(rLines);
      }

      function handleAjax(rLines)
      {
        if(!top.holdMyElement) top.holdMyElement = document.body;
        if(top.holdMyTop == 0) top.holdMyTop     = 20;
        if(top.holdMyLeft == 0) top.holdMyLeft   = 10;
        // Clear the hold data every handler call.
        holdData = false;

        for(var i in rLines)
        {
          if(rLines[i]) {
            rSplit = rLines[i].split('::');
            switch(rSplit[0])
            {
              case "END":
                return true;
                break;
              case "errmsg":
                msgWindow(Array(top.holdMyElement, top.holdMyTop, top.holdMyLeft), rSplit[1], 'OK', '', '');
                break;
              case "ackmsg":
                if(rSplit[2]) { msgWindow(Array(top.holdMyElement, top.holdMyTop, top.holdMyLeft), rSplit[2], 'OK', '', rSplit[1]); }
                else          { eval(rSplit[1]); }
                break;
              case "placemsg":
                msgWindow(Array(document.body, rSplit[1], rSplit[2]), rSplit[4], 'OK', '', rSplit[3]);
                break;
              case "callfunc":
                eval(rSplit[1] + '(\'' + rSplit[2] + '\')');
                break;
              case "retdata": // In this particular case, 1 - Function call post-split, 2 - delimiter to divide data, 3 - data.
                holdData = rSplit[3].split(rSplit[2]);
                eval(rSplit[1] + '()');
                break;
              case "reloadpage": window.location.reload(); break;
              default: break;
            }
          }
        }
      }
