// ============================================================================
//    PURPOSE:             Общие подпрограммы подсистемы GUI клиентского исполнения
//
//    FUNCTIONAL AREA:     GUI
//    NAME:                GUI.h 
//    VERSION:             1.0
//    AUTHORS:             Sasha
//    DESIGN REFERENCE:    
//    MODIFICATION:        25.01.2005 - (version 1.0) 
// ============================================================================

function GUI_getX(El) 
//el - (html object)
{
	var X = 0;
	do { X += El.offsetLeft } while ((El = El.offsetParent) != null);
	return X;
}

function GUI_getY(El) 
//el - (html object)
{
	var Y = 0;
	do { Y += El.offsetTop } while ((El = El.offsetParent) != null);
	return Y;
}


function GUI_getHTMLObject(id) 
{
   var obj = document.getElementById(id);
	return obj;
}


function GUI_getHeight(layer)
{
//if(_app.is.ns4)
//{
	//if(layer.document.height)return layer.document.height;
	//else return layer.clip.bottom-layer.clip.top;
//}
//if(_app.is.ns)
//{
   return layer.offsetHeight;
//};
//if(_app.is.ie4)
//{
//	if(layer.style.pixelHeight)
//		return layer.style.pixelHeight;
//	else 
//		return layer.clientHeight;
//}
//	return-1;
}


function GUI_getWidth(layer)
{
   return layer.offsetWidth;
   //if(isMinNS4)
   //{
   //   if(layer.document.width)
   //      return layer.document.width;
   //   else 
   //      return layer.clip.right-layer.clip.left;
   //}
   //if(isMinIE4)
   //{
   //   if(layer.style.pixelWidth)
   //      return layer.style.pixelWidth;
   //   else 
   //      return layer.clientWidth;
//
   //}
   //return-1;
}

function GUI_bounds()
{
   this.x0;
   this.x1;
   this.y0;
   this.y1;
}

function GUI_getBounds(htmlObj)
{
   var coords = new GUI_bounds();
   coords.x0 = GUI_getX(htmlObj);
   coords.x1 = coords.x0 + htmlObj.offsetWidth;
   coords.y0 = GUI_getY(htmlObj);
   coords.y1 = coords.y0 + htmlObj.offsetHeight;
   
   return coords;
}

function GUI_hit(x, y, square)
//возвращает true, если точка (x, y) попадает в прямоугольник (square) типа GUI_bounds
{
   var hit = false;

   if ((square.x0 < x) && (square.x1 > x) && (square.y0 < y) && (square.y1 > y))
   {
      hit = true;
   };

   return hit;
}

function GUI_moveRel(srcName, destName, dx, dy)
{
   var objMap = GUI_getHTMLObject(srcName);
   var objOuterFrame = GUI_getHTMLObject(destName);

   var x = GUI_getX(objOuterFrame);
   var y = GUI_getY(objOuterFrame);
   var newX = x + dx;
   var newY = y + dy;

   objMap.style.left  = newX;
   objMap.style.top   = newY;
}

function GUI_setZ(srcName, z)
{
   var objMap = GUI_getHTMLObject(srcName);

   //alert(objMap.style.zIndex);
   objMap.style.zIndex  = z;
}

function GUI_show(obj)
{
   var o = obj;
   if (!o.style)
   {
      o = GUI_getHTMLObject(obj);
   };

   if (o)
   {
      o.style.visibility = "visible";
   };
}

function GUI_hide(obj)
{
   var o = obj;
   if (!o.style)
   {
      o = GUI_getHTMLObject(obj);
   };

   if (o)
   {
      o.style.visibility = "hidden";
   };
}

function GUI_echoAr2D_(ar)
{
   var i;
   var j;
   

   var s = "\n";
   for (i=0; i<ar.length; i++)
   {
      var line = "";
      var lineAr = ar[i];

      for (j=0; j<lineAr.length; j++)
      {
         line = line + lineAr[j] + " ";
      };

      s = s + line + "\n";
   };

   return s;
}

function GUI_echoAr2D(name, ar)
{
   alert(name + "=" + GUI_echoAr2D_(ar));
}
