function CORE()
{
   this.GetObjectByID = function(BlockID, objDocument)
     {
        if (objDocument == undefined)
          objDocument = document; 

        var objBlock = ((objDocument.all) ? objDocument.all[BlockID] : objDocument.getElementById(BlockID));

        return objBlock;
     }

   //+---

   this.GetBlockX = function(objBlock)
     {
        var X = objBlock.offsetLeft;

        while ((objBlock = objBlock.offsetParent) !== null)
          X+= objBlock.offsetLeft;

        return X;
     }

   //+---

   this.GetBlockY = function(objBlock)
     {
        var Y = objBlock.offsetTop;

        while ((objBlock = objBlock.offsetParent) !== null)
          Y+= objBlock.offsetTop;

        return Y;
     }

   //+---

   this.BlockSwitch = function(BlockID, objDocument)
     {
        if (objDocument == undefined)
          objDocument = document; 

        var objBlock = this.GetObjectByID(BlockID, objDocument);
        var isHidden = ((objBlock.style.display == "none") || (objBlock.style.display == ""));

        objBlock.style.display = ((isHidden) ? "block" : "none");
     }

   //+---

   this.SetBlockAnchor = function(BlockID, AnchorID, arrOffset, objDocument)
     {
        if (objDocument == undefined)
          objDocument = document; 

        var objBlock  = this.GetObjectByID(BlockID, objDocument);
        var objAnchor = this.GetObjectByID(AnchorID, objDocument);

        objBlock.style.left = (this.GetBlockX(objAnchor)+arrOffset[0])+"px";
        objBlock.style.top  = (this.GetBlockY(objAnchor)+arrOffset[1])+"px";
     }

   //+---

   this.BlockShowHide = function(BlockID, isShow, objDocument, isFocus)
     {
        if (objDocument == undefined)
          objDocument = document; 

        isShow = ((isShow == undefined) ? false : isShow);

        var objBlock = this.GetObjectByID(BlockID, objDocument);
        objBlock.style.display = ((isShow) ? "block" : "none");

        if (isFocus)
          this.SetFocus(BlockID, objDocument);
     }

   //+---

   this.BlockShow = function(BlockID, objDocument, isFocus)
     {
        this.BlockShowHide(BlockID, true, objDocument, isFocus);
     }

   //+---

   this.BlockHide = function(BlockID, objDocument)
     {
        this.BlockShowHide(BlockID, false, objDocument);
     }

   //+---

   this.SetFocus = function(BlockID, objDocument)
     {
        if (objDocument == undefined)
          objDocument = document; 

        var objBlock = this.GetObjectByID(BlockID, objDocument);
        objBlock.focus();
     }

   //+---

   this.SetBlockSize = function(IDSource, IDDest, BorderWidth)
     {
        var BorderWidth = ((BorderWidth == undefined) ? 0 : BorderWidth);

        var objSource = this.GetObjectByID(IDSource);
        var objDest   = this.GetObjectByID(IDDest);

        objDest.style.width  = (objSource.offsetWidth-2*BorderWidth)+"px";
        objDest.style.height = (objSource.offsetHeight-2*BorderWidth)+"px";
     }
}

var objCore = new CORE();