function getoffsetLeft(element)
{
 if(!element) return 0;
 return element.offsetLeft + getoffsetLeft(element.offsetParent);
};

function getoffsetTop(element)
{
 if(!element) return 0;
 return element.offsetTop + getoffsetTop(element.offsetParent);
};

function GYGetDocumentWidth()
{
if (this.DocWidth > 0)
{
f_res = this.DocWidth;
}
else
{
f_res = 0;
if (this.isNN4 == 1)
 {
  f_res = document.body.innerWidth;
 }
else
 {
  f_res = document.body.clientWidth;
 };
 };
 return f_res;
};

function GYGetDocumentHeight()
{
f_res = 0;
if (this.isNN4 == 1)
 {
  f_res = document.body.innerHeight;
 }
else
 {
  //f_res = document.body.offsetHeight;
  f_res = document.body.clientHeight;
 };
 return f_res;
};

function GYMenuItem(AId,ACaption,ACategory,AParent,AUrl,ATarget)
{
this.Id = AId;
this.Caption = ACaption;
this.Category = ACategory;
this.Parent = AParent;
this.SubmenuCreated = 0;
this.Url = AUrl;
this.Target = ATarget;
this.is_vertical = 1;
this.prev_sub_id = 0;
this.max_sub_width = 0;
};

function GYIdToNum(AId)
{
f_res = 0;
fn = this.MenuItems.length;
for( var fi = 0; fi < fn; fi++ )
{ 
 if (this.MenuItems[fi].Id == AId)
  {
   return fi;
  };
 };
 return f_res;
};

function GYAddItem(AId,ACaption,ACategory,AParent,AUrl,ATarget)
{
this.MenuItems[this.MenuItems.length]=new GYMenuItem(AId,ACaption,ACategory,AParent,AUrl,ATarget);
};

function GYBuildMenuHorisontal(ACategory)
{
var f_obj1=0;
var f_xx=0;
var f_yy=0;
var f_ww=0;
var f_hh=0;
var fn = this.MenuItems.length;
var is_first = 1;
var f_nam = "";
var f_nam_par = "";
var is_exist = 0;
var f_event = 0;
var f_cou_top = 0;
var f_submenu_count = this.GetCountSubMenu(0);
for( var fi = 0; fi < fn; fi++ )
{
 if ((this.MenuItems[fi].Category == ACategory)&&(this.MenuItems[fi].Parent == 0))
  {
   is_exist = 1;
   f_cou_top++;
   if (is_first == 1)
    {
	 is_first = 0;
	 document.write(this.TopHorisontalMenu);
	};
   f_nam = this.SelfName+"_layer_" +this.MenuItems[fi].Id;
   f_nam_par = this.SelfName+"_parent_"+this.MenuItems[fi].Id;
   f_event = " onMouseOver=\""+this.SelfName+".InMenu('"+this.MenuItems[fi].Id+"'); "+this.SelfName+".ShowVertical('"+this.MenuItems[fi].Id+"');\""+
             " onMouseOut=\""+this.SelfName+".OutMenu('"+this.MenuItems[fi].Id+"');\"";
   if (this.MenuItems[fi].Url != "")
    {
	 if (this.MenuItems[fi].Target == "_blank")
	  { 
	   f_event = f_event + " onClick=\"mywin = window.open('"+this.MenuItems[fi].Url+"', 'win'); mywin.focus();\"";
	  }
	 else
	  { 
	   f_event = f_event + " onClick=\"document.location.href='"+this.MenuItems[fi].Url+"'\"";
	  };
	};
   if (this.MenuAlign != "")
    {
	 f_align = " align="+this.MenuAlign;
	}
   else
    {
	 f_align = "";
	};
   if (this.MenuItemWidth != "")
    {
	 f_width = " width='"+this.MenuItemWidth+"'";
	}
   else
    {
	 f_width = " width='100%'";
	};	
   document.write(this.TopHorisontalItem);
   document.write("<table id='"+f_nam_par+"' height='100%' border='0' cellspacing='0' cellpadding='0'"+f_width+f_event+" align='center'><tr><td"+f_align+" class='menu' nowrap>");
   document.write(this.MenuItems[fi].Caption);
   document.write("</td>");
   if (f_cou_top<f_submenu_count) { document.write("<td style='cursor:default'><img height=38 src='../img/menu_div.jpg' width=21 border=0></td>"); };
   document.write("</tr></table>");
   document.write(this.BottomHorisontalItem);
  };
};
if (is_exist == 1)
 {
  document.write(this.BottomHorisontalMenu);
  for( var fi = 0; fi < fn; fi++ )
   {
    if ((this.MenuItems[fi].Category == ACategory)&&(this.MenuItems[fi].Parent == 0))
     {
      this.BuildSubMenuVertical(this.MenuItems[fi].Id);
     };
   };
 };
 //---
 for( var fi = 0; fi < fn; fi++ )
{
 if ((this.MenuItems[fi].Category == ACategory)&&(this.MenuItems[fi].Parent == 0))
  {   
   f_nam_par = this.SelfName+"_parent_"+this.MenuItems[fi].Id;
   //---
   f_obj1=this.getObj(f_nam_par);
   f_xx=getoffsetLeft(f_obj1);
   f_yy=getoffsetTop(f_obj1);
   if (f_obj1 != null)
    {
     f_ww = f_obj1.offsetWidth;
	 //alert(f_xx);
    }
   else
    {
     f_ww = 0;
    }; 
	if (this.max_pos_x<(f_xx+f_ww))
	 {
	  this.max_pos_x = f_xx+f_ww;
	 };
   //---
  };
};
//alert(this.max_pos_x); 
 //---
};

function GYBuildSubMenuVertical(AId)
{
var is_first = 1;
var is_exist = 0;
var f_ww = 0;
var f_obj1 = 0;
var Parent_Ind = 0;
Parent_Ind = this.IdToNum(AId);
var fn = this.MenuItems.length;
for( var fi = 0; fi < fn; fi++ )
{
 if (this.MenuItems[fi].Parent == AId)
  {
   is_exist = 1;
   if (is_first == 1)
    {
	 is_first = 0;
	 document.write("<div id='"+this.SelfName+"_layer_" +AId+"' style='position:absolute; z-index:"+this.Start_Z_Index+"; left: 0px; top: 155px;  width: 100%; visibility: hidden'>");
	 document.write(this.TopVerticalSubMenu);
	};
   f_nam = this.SelfName+"_layer_" +this.MenuItems[fi].Id;
   f_nam_par = this.SelfName+"_parent_"+this.MenuItems[fi].Id;
   f_event = " onMouseOver=\""+this.SelfName+".InSubMenu('"+this.MenuItems[fi].Id+"');\""+
             " onMouseOut=\""+this.SelfName+".OutSubMenu('"+this.MenuItems[fi].Id+"');\"";
   if (this.MenuItems[fi].Url != "")
    {
	 if (this.MenuItems[fi].Target == "_blank")
	  { 
	   f_event = f_event + " onClick=\"mywin = window.open('"+this.MenuItems[fi].Url+"', 'win'); mywin.focus();\"";
	  }
	 else
	  { 
	   f_event = f_event + " onClick=\"document.location.href='"+this.MenuItems[fi].Url+"'\"";
	  };
	};
   if (this.SubMenuAlign != "")
    {
	 f_align = " align ="+this.SubMenuAlign;
	}
   else
    {
	 f_align = "";
	};
   if (this.SubMenuItemWidth != "")
    {
	 f_width = " width='"+this.SubMenuItemWidth+"'";
	}
   else
    {
	 f_width = " width='100%'";
	};
   f_submenu_count = this.GetCountSubMenu(this.MenuItems[fi].Id);	
   document.write(this.TopVerticalSubItem);
   document.write("<table id='"+f_nam_par+"' height='100%' border='0' cellspacing='0' cellpadding='0'"+f_width+f_event+"><tr>");
   if (this.SubMenuLeftMargin > 0) { document.write("<td width='"+this.SubMenuLeftMargin+"'></td>"); };
   if ((this.SubMenuArrow != "") && (f_submenu_count > 0) && (this.SubMenuArrowAlign != "right")) { document.write("<td width='1' align='right'>"+this.SubMenuArrow+"</td>"); };
   document.write("<td"+f_align+" class='sub_menu' nowrap>");
   document.write(this.MenuItems[fi].Caption);
   document.write("</td>");
   if ((this.SubMenuArrow != "") && (f_submenu_count > 0) && (this.SubMenuArrowAlign == "right")) { document.write("<td align='right'>"+this.SubMenuArrow+"</td>"); };
   if (this.SubMenuRightMargin > 0) { document.write("<td width='"+this.SubMenuRightMargin+"'></td>"); };
   document.write("</tr></table>");
   document.write(this.BottomVerticalSubItem);
  };
};
if (is_exist == 1)
 {
  document.write(this.BottomVerticalSubMenu);
  document.write("</div>");
  this.Start_Z_Index=this.Start_Z_Index+1;
  for( var fi = 0; fi < fn; fi++ )
   {
    if (this.MenuItems[fi].Parent == AId)
     {
      this.BuildSubMenuVertical(this.MenuItems[fi].Id);
     };
   };
 };
};

function GYGetCountSubMenu(AId)
{
var f_res = 0;
var fn = this.MenuItems.length;
for( var fi = 0; fi < fn; fi++ )
{
 if (this.MenuItems[fi].Parent == AId)
  {
  f_res++;
  };
  };
  return f_res;
};

function GYBuildSubMenuHorisontal(AId)
{
var fn = this.MenuItems.length;
var is_first = 1;
var is_exist = 0;
for( var fi = 0; fi < fn; fi++ )
{
 if (this.MenuItems[fi].Parent == AId)
  {
   is_exist = 1;
   if (is_first == 1)
    {
	 is_first = 0;
	 document.write("<div id='"+this.SelfName+"_layer_" +AId+"' style='position:absolute; z-index:"+this.Start_Z_Index+"; left: 0px; top: 155px; visibility: hidden'>");
	 document.write(this.TopHorisontalSubMenu);
	};
   f_nam = this.SelfName+"_layer_" +this.MenuItems[fi].Id;
   f_nam_par = this.SelfName+"_parent_"+this.MenuItems[fi].Id;
   f_event = " onMouseOver=\""+this.SelfName+".ShowVertical('"+this.MenuItems[fi].Id+"');\"";
   if (this.MenuItems[fi].Url != "")
    {
	 if (this.MenuItems[fi].Target == "_blank")
	  { 
	   f_event = f_event + " onClick=\"mywin = window.open('"+this.MenuItems[fi].Url+"', 'win'); mywin.focus();\"";
	  }
	 else
	  { 
	   f_event = f_event + " onClick=\"document.location.href='"+this.MenuItems[fi].Url+"'\"";
	  };
	};
   if (this.SubMenuAlign != "")
    {
	 f_align = " align ="+this.SubMenuAlign;
	}
   else
    {
	 f_align = "";
	};
   if (this.SubMenuItemWidth != "")
    {
	 f_width = " width='"+this.SubMenuItemWidth+"'";
	}
   else
    {
	 f_width = " width='100%'";
	};
   document.write(this.TopHorisontalSubItem);
   document.write("<table id='"+f_nam_par+"' height='100%' border='0' cellspacing='0' cellpadding='0'"+f_width+f_event+"><tr><td"+f_align+" nowrap>");
   document.write(this.MenuItems[fi].Caption);
   document.write("</td></tr></table>");
   document.write(this.BottomHorisontalSubItem);
  };
};
if (is_exist == 1)
 {
  document.write(this.BottomHorisontalSubMenu);
  document.write("</div>");
  this.Start_Z_Index=this.Start_Z_Index+1;
  for( var fi = 0; fi < fn; fi++ )
   {
    if (this.MenuItems[fi].Parent == AId)
     {
      this.BuildSubMenuVertical(this.MenuItems[fi].Id);
     };
   };
 };
};

function GYInMenu(AId)
{
this.HideAllChilds(0);
var f_nam_par = this.SelfName+"_parent_"+AId;
var obj1=this.getObj(f_nam_par);
obj1.bgColor=this.MenuBgColorSelected;
};

function GYOutMenu(AId)
{
var f_nam_par = this.SelfName+"_parent_"+AId;
var obj1=this.getObj(f_nam_par);
obj1.bgColor=this.MenuBgColor;
};

function GYInSubMenu(AId)
{
var f_nam_par = this.SelfName+"_parent_"+AId;
var obj1=this.getObj(f_nam_par);
obj1.bgColor=this.SubMenuBgColorSelected;
};

function GYOutSubMenu(AId)
{
var f_nam_par = this.SelfName+"_parent_"+AId;
var obj1=this.getObj(f_nam_par);
obj1.bgColor=this.SubMenuBgColor;
};

function GYgetObj(n) {
	if (this.isIE)
	 return document.all[n];
	if (this.isDOM)
	 {
	 fres = document.getElementById(n);
	 return fres;
	 };
	return document.layers[n];
};
;
function GYgetStyle(n) {
	var obj=this.getObj(n);
	if (obj) {
		if(this.isNN4) return obj;
		return obj.style;
	};
};

function GYsetShow(n) {
	var obj=this.getStyle(n);
	if (obj) {
		if (this.isNN4) obj.visibility='show';
		else obj.visibility='visible';
	};
};

function GYsetHide(n) {
	var obj=this.getStyle(n);
	if (obj) {
		if (this.isNN4)
		 obj.visibility='hide';
		else
		 obj.visibility='hidden';
	};
};

function GYHideAllChildsStart(AId) {
var fn = this.MenuItems.length;
for( var fi = 0; fi < fn; fi++ )
{
 if (this.MenuItems[fi].Parent == AId)
  {
   this.HideAllChilds(this.MenuItems[fi].Id);
  };
 };
};

function GYHideAllChilds(AId) {
f_nam = this.SelfName+"_layer_" +this.MenuItems[this.IdToNum(AId)].Id;
this.setHide(f_nam);
var fn = this.MenuItems.length;
for( var fi = 0; fi < fn; fi++ )
{
 if (this.MenuItems[fi].Parent == AId)
  {
   this.HideAllChilds(this.MenuItems[fi].Id);
  };
 };
};

function GYGetMaxPosX()
{
var max_pos_x = 0;
var fn = this.MenuItems.length;
var f_nam_par1 = "";
var f_obj1 = 0;
var f_xx = 0;
var f_ww = 0;
for( var fi = 0; fi < fn; fi++ )
{
 if (this.MenuItems[fi].Parent == 0)
  {   
   f_nam_par1 = this.SelfName+"_parent_"+this.MenuItems[fi].Id;
   //---
   f_obj1=this.getObj(f_nam_par1);
   f_xx=getoffsetLeft(f_obj1);
   if (f_obj1 != null)
    {
     f_ww = f_obj1.offsetWidth;
    }
   else
    {
     f_ww = 0;
    }; 
	if (max_pos_x<(f_xx+f_ww))
	 {
	  max_pos_x = f_xx+f_ww;
	 };
   //---
  };
};
return max_pos_x;
};

function GYSetSubMaxWidth(AId)
{
var max_pos_x = 0;
var fn = this.MenuItems.length;
var f_nam_par1 = "";
var f_obj1 = 0;
var f_xx = 0;
var f_ww = 0;
var Parent_Ind = 0;
var fn = this.MenuItems.length;
var f_nam_par1 = "";
var f_obj1 = 0;
var f_xx = 0;
var f_ww = 0;
var f_yy = 0;
Parent_Ind = this.IdToNum(AId);

for( var fi = 0; fi < fn; fi++ )
{
if (this.MenuItems[fi].Parent == AId)
  {
   f_nam_par = this.SelfName+"_parent_"+this.MenuItems[fi].Id;
   f_obj1=this.getObj(f_nam_par);
   if (f_obj1 != null)
    {
     f_ww = f_obj1.offsetWidth;
    }
   else
    {
     f_ww = 0;
    }; 
   if (this.MenuItems[Parent_Ind].max_sub_width < f_ww)
    {
	 this.MenuItems[Parent_Ind].max_sub_width = f_ww;
	};
   //---
};
};
};

function GYHideAll() {
   this.HideAllChilds(0);
};

function GYShowVertical(AId) {
var Parent_Ind = 0;
var fn = this.MenuItems.length;
var f_nam_par1 = "";
var f_obj1 = 0;
var f_xx = 0;
var f_ww = 0;
var f_yy = 0;
Parent_Ind = this.IdToNum(AId);
this.SetSubMaxWidth(AId);
this.max_pos_x = this.GetMaxPosX();
var f_parent = this.MenuItems[this.IdToNum(AId)].Parent;
var f_nam_prev = this.SelfName+"_layer_" +this.MenuItems[this.IdToNum(f_parent)].prev_sub_id;
if ((this.MenuItems[this.IdToNum(f_parent)].prev_sub_id != f_parent)&&(this.MenuItems[this.IdToNum(f_parent)].prev_sub_id != 0))
{
this.HideAllChilds(this.MenuItems[this.IdToNum(f_parent)].prev_sub_id);
};

var f_nam = this.SelfName+"_layer_" +AId;
var f_nam_par = this.SelfName+"_parent_"+AId;
var obj1=this.getObj(f_nam_par);
xx=getoffsetLeft(obj1);
yy=getoffsetTop(obj1);
if (obj1 != null)
 {
  ww = obj1.offsetWidth;
  hh = obj1.offsetHeight;
 }
else
 {
  ww = 0;
  hh = 0;
 }; 
var obj2=this.getStyle(f_nam);

var obj3=this.getObj(f_nam);
if (obj3 != null)
 {
  ww3 = obj3.offsetWidth;
  hh3 = obj3.offsetHeight;
 }
else
 {
  ww3 = 0;
  hh3 = 0;
 }; 
distance_up = yy;
distance_down = this.GetDocumentHeight()-(yy+hh);
distance_left = xx;
distance_right = this.max_pos_x-(xx+this.MenuItems[Parent_Ind].max_sub_width);
//alert('dr='+this.MenuItems[Parent_Ind].max_sub_width);
if (obj2)
 {
  obj2.width = this.MenuItems[Parent_Ind].max_sub_width;
  if (distance_up > distance_down)
   {
    obj2.top = yy+hh;
   }
  else
   {
    obj2.top = yy+hh;
   };
  obj2.left = xx;
  if (distance_right < 0)
   {
    obj2.left = xx + distance_right;
   };
 };
this.setShow(f_nam);

f_parent = this.MenuItems[this.IdToNum(AId)].Parent;
this.MenuItems[this.IdToNum(f_parent)].prev_sub_id = AId;
};

function GYMenu(AName)
{
this.isDOM = 0;
this.DocWidth = 0;
this.max_pos_x = 0;
this.isIE = 0;
this.isNN4 = 0;
this.isOpera = 0;
this.isIE4 = 0;
this.MenuStyle = "";
this.MenuBgColor = "";
this.MenuBgColorSelected = "";
this.MenuBg = "";
this.MenuTextColor = "#0000B4";
this.MenuTextColorSelected = "#FFFFFF";
this.SubMenuStyle = "";
this.SubMenuBgColor = "#EEEEEE";
this.SubMenuBgColorSelected = "#DDDDDD";
this.SubMenuBg = "";
this.SubMenuTextColor = "#FFFFFF";
this.SubMenuTextColorSelected = "#FFFFFF";
this.MenuAlign="center";
this.SubMenuAlign="left";
this.MenuItemWidth="100%";
this.SubMenuItemWidth="10";
this.MenuLeftMargin="0";
this.MenuRightMargin="0";
this.SubMenuLeftMargin="15";
this.SubMenuRightMargin="15";

if (navigator.userAgent.indexOf('Opera')!=-1) this.isOpera=1;
if (document.getElementById) this.isDOM=1;
if (document.all && !this.isOpera) this.isIE=1;
if (document.layers) this.isNN4=1;
if (!this.isDOM && document.all) this.isIE4=1;

this.GetDocumentWidth = GYGetDocumentWidth;
this.GetDocumentHeight = GYGetDocumentHeight;
this.IdToNum = GYIdToNum;
this.getObj = GYgetObj;
this.getStyle = GYgetStyle;
this.setShow = GYsetShow;
this.setHide = GYsetHide;
this.ShowVertical = GYShowVertical;
this.InMenu = GYInMenu;
this.OutMenu = GYOutMenu;
this.InSubMenu = GYInSubMenu;
this.OutSubMenu = GYOutSubMenu;
this.GetCountSubMenu = GYGetCountSubMenu;
this.GetMaxPosX = GYGetMaxPosX;
this.SetSubMaxWidth = GYSetSubMaxWidth;
this.HideAllChilds = GYHideAllChilds;
this.HideAllChildsStart = GYHideAllChildsStart;
this.HideAll = GYHideAll;

this.SelfName = AName;
this.Start_Z_Index = 10;
this.MenuItems = new Array();
this.AddItem = GYAddItem;
this.BuildSubMenuVertical = GYBuildSubMenuVertical;
this.BuildSubMenuHorisontal = GYBuildSubMenuHorisontal;
this.BuildMenuHorisontal = GYBuildMenuHorisontal;
this.TopVerticalMenu="<table border='1' cellspacing='0' cellpadding='0'>";
this.TopVerticalItem="<tr><td class='sub_menu'>";
this.BottomVerticalItem="</td></tr>";
this.BottomVerticalMenu="</table>";
this.TopHorisontalMenu="<table border='0' cellspacing='0' height='38' cellpadding='0'><tr>";
this.TopHorisontalItem="<td class='menu' align='center'>"+	  
  "<table border='0' width='100' height='38' cellspacing='0' cellpadding='0'>"+
    "<tr>"+
	"<td width='1'><img width='1' height='1' src='../img/tr.gif'></td>"+
      "<td class='menu' align='center'>";
this.BottomHorisontalItem="</td>"+
      "</tr></table></td>";
this.BottomHorisontalMenu="</tr></table>";
this.TopVerticalSubMenu="<table border='0' cellspacing='0' cellpadding='0'><tr><td bgcolor='#333333'><table width='100%' border='0' cellspacing='1' cellpadding='1' height='19'>";
this.TopVerticalSubItem="<tr><td class='sub_menu' align='left' valign='middle' height='20' nowrap bgcolor='#EEEEEE'>";
this.BottomVerticalSubItem="</td></tr>";
this.BottomVerticalSubMenu="</table></td>"+
  "</tr>"+
"</table>";
this.TopHorisontalSubMenu="<table border='1' cellspacing='0' cellpadding='0'><tr>";
this.TopHorisontalSubItem="<td>";
this.BottomHorisontalSubItem="</td>";
this.BottomHorisontalSubMenu="</tr></table>";
this.SubMenuArrow="<b>&raquo;<b>";
this.SubMenuArrowAlign="right";
};