
var MenuTimeout;
var LevelsArr = new Array();
var ComponentOverColor = "#669933";
var ComponentOutColor = "#CC3333";
var TimeoutOpenMenuCells = 100;
var TimeoutCloseMenuCells = 100;
var TimeoutHideMenuCells = 1000;

// הפונקציה מהתחלת תצוגת תפריט נפתח
function DisplayOpenMenu(OpenerObj, Menu, Position, MenuLevel)
{
	// אלמנט האבא של התפריט הנפתח
	var MenuLayerObj = document.getElementById(Menu);
	
	
	// אם קיים אלמנט פותח באותה רמה של האלמנט הנוכחי
	if (LevelsArr[MenuLevel])
	{
		// אם זה אותו האלמנט, ריצת הקוד תיעצר
		if (LevelsArr[MenuLevel].OpenerObj.id == OpenerObj.id){return;}
		//if (LevelsArr[MenuLevel].OpenerObj)
		//{
		// אם האלמנט הקודם באותה הרמה איננו אלמנט התפריט הראשי
		if (Number(LevelsArr[MenuLevel].OpenerLevel) != 0)
		{
			// האלמנט הקודם יקבל צבע של אלמנט רגיל
			LevelsArr[MenuLevel].OpenerObj.style.backgroundColor = ComponentOutColor;
		}
		//}	
		// השיכבה הקודמת שהיתה פתוחה תוסתר
		if (LevelsArr[MenuLevel].OpenLayerObj){HideOpenMenu('Immediately', MenuLevel);}
	}
	// כל השכבות אשר היו פתוחות ברמה גבוהה יותר יוסתרו
	for (var i = LevelsArr.length;i >= MenuLevel;i --)
	{
		if (LevelsArr[i])
		{
			if (LevelsArr[i].OpenLayerObj)
			{
				HideOpenMenu('Immediately', "+(i)+");
			}
		}
	}
	// אם האלמנט הפותח החדש איננו אלמנט ברמת התפריט הראשי, הוא יקבל צבע של
	// אלמנט אשר העכבר נמצא מעליו או שתפריט המשנה שלו פתוח
	if (MenuLevel != 0){OpenerObj.style.backgroundColor = ComponentOverColor;}	
	
	// נתוני האלמנט הפותח ושיכבת תפריטי המשנה שלו יוכנסו אל תוך רכיב מערך
	// השכבות הפתוחות במיקום אשר מספרו זהה לרמת האלמנט הפותח
	LevelsArr[MenuLevel] = new Array();
	LevelsArr[MenuLevel].OpenerObj = OpenerObj;
	LevelsArr[MenuLevel].OpenerLevel = MenuLevel;
	
	// אם לא קיימת שיכבת תפריטי משנה עבור האלמנט הפותח, רק רמתו והפנייה אליו
	// יוכנסו אל תוך המערך
	if (MenuLayerObj == null){return;}
	
	clearTimeout(MenuTimeout);
	
	// קבלת מיקומו של האלמנט הפותח ע"מ שניתן יהיה למקם את שיכבת תפריטי המשנה
	with (new Obj_rectangle(OpenerObj))
	{
		var Obj1Right = ObjRight;
		var Obj1Bottom = ObjBottom;
		var Obj1Left = ObjLeft;
		var Obj1Top = ObjTop;
	}
	// הפיכת שיכבת המשנה לגלויה
	MenuLayerObj.style.display = "block";
	// קבלת רוחבה של שיכבת המשנה
	with (new Obj_rectangle(MenuLayerObj))
	{
		var Obj2Width = ObjWidth;
	}
	
	// בירור היכן יש למקם את שיכבת המשנה
	var PositionLeft, PositionTop;
	switch (Position)
	{
		// מיקום בתחתית האלמנט הפותח כאשר צידה הימני של שיכבת המשנה באותו
		// הקו עם צידו הימני של האלמנט הפותח
		case 1:
			PositionLeft = (Obj1Right - Obj2Width + 1)+"px";
			PositionTop = (Obj1Bottom)+"px";
		break;
		// מיקום בגובה האלמנט הפותח כאשר צידה הימני של שיכבת המשנה
		// צמודה לצידו השמאלי של האלמנט הפותח
		case 2:
			PositionLeft = (Obj1Left - Obj2Width)+"px";
			PositionTop = (Obj1Top)+"px";
		break;
	}
	
	// קביעת מיקומה של שיכבת המשנה במסמך
	with (MenuLayerObj)
	{
		style.left = PositionLeft;
		style.top = PositionTop;
	}
	
	// הכנסה של אוסף התאים של תפריט המשנה אל מאפיין של המערך
	LevelsArr[MenuLevel].CellsCollection = MenuLayerObj.getElementsByTagName("td");
	
	// אוספת הפנייה אל האלמנט הראשי של שיכבת המשנה אל המערך
	LevelsArr[MenuLevel].OpenLayerObj = MenuLayerObj;
	
	// קריאה לפונקציה אשר מגלה או מסתירה את תאי שיכבת המשנה
	ColorCell(0, 1, MenuLevel);
}

// הפונקציה מגלה או מסתירה את תאי שיכבת המשנה
function ColorCell(CellIndex, Display, MenuLevel)
{
	var CellBackground, SpanDisplay;
	// שלו נשלח לפונקציה index יש להציג את התא אשר ה
	if (Display == 1)
	{
		// התא יקבל צבע רקע של רכיב בשכבה אשר העכבר איננו מעליו והטקסט
		// שבתוכו יוצג
		CellBackground = ComponentOutColor;
		SpanDisplay = "inline";
	}
	// יש להסתיר את התא אשר נשלח לפונקציה
	else
	{
		// צבע הרקע של התא יהפוך לשקוף והטקסט שבתוכו יוסתר
		CellBackground = "transparent";
		SpanDisplay = "none";
	}
	try
	{
		var OpenMenuItem = LevelsArr[MenuLevel].CellsCollection.item(CellIndex);
		OpenMenuItem.style.backgroundColor = CellBackground;
		OpenMenuItem.getElementsByTagName("span").item(0).style.display = SpanDisplay;
	}
	catch (err){return;}
	
	if ((Display == 1) && (CellIndex < LevelsArr[MenuLevel].CellsCollection.length - 1))
	{
		CellIndex = CellIndex + 1;
		setTimeout("ColorCell("+CellIndex+", "+Display+", '"+MenuLevel+"')", TimeoutOpenMenuCells);
	}
	else if ((Display == 0) && (CellIndex > 0))
	{
		CellIndex = CellIndex - 1;
		setTimeout("ColorCell("+CellIndex+", "+Display+", '"+MenuLevel+"')", TimeoutCloseMenuCells);
	}
	else
	{
		if (Display == 1)
		{
			LevelsArr[MenuLevel].OpenLayerObj.style.backgroundColor = "silver";
		}
		else
		{
			LevelsArr[MenuLevel].OpenLayerObj.style.backgroundColor = "transparent";
			LevelsArr[MenuLevel].OpenLayerObj.style.display = "none";
			if (Number(LevelsArr[MenuLevel].OpenerLevel) != 0)
			{
				LevelsArr[MenuLevel].OpenerObj.style.backgroundColor = ComponentOutColor;
			}
			delete LevelsArr[MenuLevel];
			//LevelsArr[MenuLevel].OpenLayerObj = null;
		}
		MenuLevel = MenuLevel - 1;
		if (MenuLevel >= 0)
		{
			HideOpenMenu('Timeout', MenuLevel);
		}
	}
}

var ClientX, ClientY;
function SetMouseLocation()
{
	ClientX = window.event.clientX;
	ClientY = window.event.clientY;
}
document.onmousemove = SetMouseLocation;


function HideOpenMenu(Status, MenuLevel)
{
	for (var i = LevelsArr.length - 1;i >= 0;i --)
	{
		if (LevelsArr[i] != null){MenuLevel = i; break;}
	}
	
	//clearTimeout(MenuTimeout);
	clearTimeout(MenuTimeout);
	
	MenuLevel = Number(MenuLevel);
	switch (Status)
	{
		case "Timeout":
			MenuTimeout = setTimeout("HideOpenMenu('gradation', "+MenuLevel+")", TimeoutHideMenuCells);
		break;
		case "Immediately":
			
			if (LevelsArr[MenuLevel].OpenLayerObj)
			{
				//
				//{
					for (var i = 0;i < LevelsArr[MenuLevel].CellsCollection.length;i ++)
					{
						LevelsArr[MenuLevel].CellsCollection.item(i).style.backgroundColor = "transparent";
						LevelsArr[MenuLevel].CellsCollection.item(i).getElementsByTagName("span").item(0).style.display = "none";
					}
					LevelsArr[MenuLevel].OpenLayerObj.style.backgroundColor = "transparent";
					LevelsArr[MenuLevel].OpenLayerObj.style.display = "none";
					if (Number(LevelsArr[MenuLevel].OpenerLevel) != 0)
					{
						LevelsArr[MenuLevel].OpenerObj.style.backgroundColor = ComponentOutColor;
					}
					delete LevelsArr[MenuLevel];
				//}
			}
			else
			{
				LevelsArr[MenuLevel] = null;
				HideOpenMenu('Immediately', MenuLevel - 1);
			}
			
		//	}
			//LevelsArr[MenuLevel].OpenLayerObj = null;
		break;
		case "gradation":
		//alert(MenuLevel)
		
			if (LevelsArr[MenuLevel].OpenerObj)
			{
				with (new Obj_rectangle(LevelsArr[MenuLevel].OpenerObj))
				{
					var Obj1Right = ObjRight;
					var Obj1Bottom = ObjBottom;
					var Obj1Left = ObjLeft;
					var Obj1Top = ObjTop;
				}
				//try
				//{
				
					if ((ClientX < Obj1Left) || (ClientX > Obj1Right) 
					|| (ClientY < Obj1Top) || (ClientY > Obj1Bottom))
					{
						if (LevelsArr[MenuLevel].OpenLayerObj)
						{
							LevelsArr[MenuLevel].OpenLayerObj.style.backgroundColor = "transparent";
							var Start = LevelsArr[MenuLevel].CellsCollection.length - 1;
							ColorCell(Start, 0, MenuLevel);
						}
						else
						{
							LevelsArr[MenuLevel] = null;
							if (MenuLevel > 0)
							{
								HideOpenMenu('gradation', MenuLevel - 1);
							}
						}
					}
				//}
				//catch(err){alert(event.clientX); alert(event.clientY)}
			}
			
			
		break;
	}
}






















function Layer(ID, Width, Arr)
{
	this.ID = ID;
	this.Width = Width;
	this.Arr = Arr;
		
	var NewDiv = document.createElement("div");
	NewDiv.id = ID;
	//NewDiv.style.position = "absolute";
	//NewDiv.style.visibility = "hidden";
	//NewDiv.style.left = "0";
	//NewDiv.style.top = "0";
	NewDiv.className = "OpenLayer";
	
	var NewTable = document.createElement("table");
	NewTable.setAttribute("cellpadding", "2");
	NewTable.setAttribute("cellspacing", "2");
	
	var NewTbody = document.createElement("tbody");
		
	NewDiv.appendChild(NewTable);
	NewTable.appendChild(NewTbody);

	for (var i = 0;i < this.Arr.length;i ++)
	{
		if (this.Arr[i].RenderHTML)
		{
			//alert(ID + " [] " + this.Arr[i].RenderHTML.outerHTML)
			NewTbody.appendChild(this.Arr[i].RenderHTML);
		}
			
			
	}
	document.body.appendChild(NewDiv);
	
	if (Number(Width))
	{
		NewTable.style.width = Width+"px";
	}
	else
	{
		with (new Obj_rectangle(NewDiv))
		{
			var Obj1Width = ObjWidth;
		}
		NewTable.style.width = Obj1Width+"px";
	}
	NewDiv.style.visibility = "visible";
	NewDiv.style.display = "none";
	
	var TitlesColl = NewDiv.getElementsByTagName("span");
	for (var i = 0;i < TitlesColl.length;i ++)
	{
		TitlesColl.item(i).style.display = "none";
	}
}
	


function Comp(Title, URL, SubMenuID, SubMenuPosition, MenuLevel, MenuID)
{
	function RenderHTML(Title, URL, SubMenuID, SubMenuPosition, MenuLevel, MenuID)
	{
		var RegChr1 = /&#39;/g;
		var RegChr2 = /&#34;/g;
		Title = Title.replace(RegChr1, "'");
		Title = Title.replace(RegChr2, '"');		
	
		this.Title = Title;
		this.URL = URL;
		this.SubMenuID = SubMenuID;
		this.SubMenuPosition = SubMenuPosition;
		this.MenuLevel = MenuLevel;
		this.MenuID = MenuID;
			
		var NewTr = document.createElement("tr");
		var NewTd = document.createElement("td");
			
		var NewSpan = document.createElement("span");
		
		if (isMIE)
		{
			NewTd.id = MenuID;
			NewTd.className = "OpenMenu";
			NewTd.setAttribute("onmouseover", function(){DisplayOpenMenu(this, SubMenuID, SubMenuPosition, MenuLevel);});
			NewTd.setAttribute("onmouseout", function(){HideOpenMenu('Timeout', MenuLevel);});
			if (URL != "")
			{
				NewTd.setAttribute("onclick", function(){location.href=URL;});
			}
		}
		else if ((isOpera) || (isNetscape6plus))
		{
			NewTd.id = this.MenuID;
			NewTd.className = "OpenMenu";
			NewTd.setAttribute("onclick", "alert('"+this.URL+"')");
			NewTd.setAttribute("onmouseover", "DisplayOpenMenu(this, '"+this.SubMenuID+"', "+this.SubMenuPosition+", "+this.MenuLevel+")");
			NewTd.setAttribute("onmouseout", "HideOpenMenu('Timeout', '"+MenuLevel+"')");
			if (URL != "")
			{
				NewTd.setAttribute("onclick", "location.href='"+this.URL+"'");
			}
		}
		
		if (SubMenuID)
		{
			NewTd.style.backgroundImage = "url('Images/White_Arrow_left.gif')";
			NewTd.style.backgroundRepeat = "no-repeat";
			NewTd.style.backgroundPosition = "2px";
		}
		
		//NewSpan.style.visibility = "hidden";
		var NewText = document.createTextNode(Title);
			
		NewTr.appendChild(NewTd);
		NewTd.appendChild(NewSpan);
		NewSpan.appendChild(NewText);
		
		return NewTr;
	}
		
	this.Title = Title;
	this.URL = URL;
	this.SubMenuID = SubMenuID;
	this.SubMenuPosition = SubMenuPosition;
	this.MenuLevel = MenuLevel;
	this.MenuID = MenuID;
	this.RenderHTML = RenderHTML(this.Title, this.URL, this.SubMenuID, this.SubMenuPosition, this.MenuLevel, this.MenuID);
}


function GenerateLayers()
{
	LayerData();
}