var offsetleft=0;
var offsettop=0;
var object=new Array();
var id=0;

function GroupMenu(img, imgover, href, target, left, top, width, height)
{
	this.id="id_"+(id++);
	this.zIndex=100-id;
	this.name="object["+object.length+"]";
	this.img=preloadImage(img);
	this.imgover=preloadImage(imgover);
	this.imgmerk=this.img;
	this.href=href;
	this.target=target;
	this.left=left;
	this.top=top;
	this.moveleft;
	this.movetop;
	this.width=width;
	this.height=height;
	this.visible=true;
	this.subvisible=false;
	this.css="layerHiddenFront";
	this.tag="";
	this.parentname;
	this.closemelater=false;
	this.closetimer=null;
	this.overtag="changeImage('img_" + this.id + "'," + this.name + ".imgover); ";
	this.outtag="changeImage('img_" + this.id + "'," + this.name + ".img); ";
	this.menuover="";
	this.menuout="";
	this.action="";
	this.isLink= (href==null) ? false : true;
	this.isPopup=false;
	this.isSubmenu=false;
	this.submenus;		// keep undefined for first init
	this.toDocument=__toDocument;
	this.addSubmenu=__addSubmenu;
	this.toggleClick=__toggleClick;
	this.toggleSubmenu=__toggleSubmenu;
	this.showSubmenu=__showSubmenu;
	this.hideSubmenu=__hideSubmenu;
	this.openMe=__openMe;
	this.closeMe=__closeMe;
	
	// first time init
	if (typeof(this.submenus)=="undefined")	this.submenus=new Array();
	// href or javascript
	this.isScript=false;
	if	(this.href!=null 
		&& this.href.substring(0,11)=="javascript:"
		&& this.href.substring(11,15)!="void")
		this.isScript=true;
//alert(this.isScript+this.href);	
	// internal functions
	function __addSubmenu(submenu)
	{
		if (submenu==null || typeof(submenu)=="undefined")	return;
		this.submenus[this.submenus.length]=submenu;
		this.isPopup=true;
		submenu.parentname=this.name;
		submenu.menuover=this.overtag;
		submenu.menuout=this.outtag;
		submenu.visible=false;
		submenu.css="layerHidden";
		submenu.isSubmenu=true;
		submenu.subvisible=false;
		return;
	}

	function __toggleClick()
	{
		if (this.isLink)
		{
			for (i in object)
			{
				if (object[i]!=this && object[i].img!=object[i].imgmerk && ((this.isSubmenu && object[i].isSubmenu) || (this.isSubmenu==false &&  this.isPopup==false) || (this.isSubmenu && object[i].isPopup==false)) )
				{
					object[i].img=object[i].imgmerk
					eval(object[i].outtag);
				}
			}
		}
		
		if (this.img=this.imgmerk)
		{
			this.img=this.imgover;
			if (this.isSubmenu)
			{
//				eval(this.parentname+".img="+this.parentname+".imgover");
//				eval(eval(this.parentname+".outtag"));
				eval(this.parentname+".toggleClick();");
			}
		}
		else
		{
			this.img=this.imgmerk
		}
		eval(this.outtag);

		if (this.isLink || this.isPopup)
		{
			for (i in object)
			{
				if (object[i].img!=object[i].imgmerk && object[i].isPopup && object[i].subvisible==false)
				{
					change=true;
					for (j in object[i].submenus)
					{
						if (object[i].submenus[j].img!=object[i].submenus[j].imgmerk)
						{
							change=false;
						}
					}
					if (change)
					{
						object[i].img=object[i].imgmerk
						eval(object[i].outtag);
					}
				}
			}
		}
	}
	function __toggleSubmenu()
	{
		if (this.subvisible)
		{
			this.hideSubmenu();
		}
		else
		{
			var scanobj=object;
			if (this.isSubmenu)
				scanobj=eval(this.parentname+".submenus");
			for (i in scanobj)
			{
//				alert(object[i].img.src+" / "+object[i].img+" / "+(object[i]!=this && object[i].name!=this.parentname && object[i].subvisible));
				if (scanobj[i]!=this && scanobj[i].name!=this.parentname && scanobj[i].subvisible)
				{
					scanobj[i].toggleSubmenu();
				}
			}
			this.showSubmenu();
		}
	}
	
	function __showSubmenu()
	{
		this.subvisible=true;
		for (i in this.submenus)
		{
			if (this.submenus[i].closetimer!=null)
			{
				clearTimeout(this.submenus[i].closetimer);
				this.submenus[i].closetimer=null;
			}
			if (this.submenus[i].action!="open")
			{
				this.submenus[i].action="open";
				if (this.submenus[i].moveleft==null)
					this.submenus[i].moveleft=this.left;
				if (this.submenus[i].movetop==null)
					this.submenus[i].movetop=this.top;
				this.submenus[i].openMe((this.submenus[i].left-this.submenus[i].moveleft)/23,(this.submenus[i].top-this.submenus[i].movetop)/23);
			}
		}
		return;
	}

	function __hideSubmenu()
	{
		this.subvisible=false;
		var closeall=true;
		for (i in this.submenus)
		{
			if (this.submenus[i].isPopup && this.submenus[i].subvisible)
			{
				this.submenus[i].hideSubmenu();
				closeall=false;
				this.closemelater=true;
			}
		}
		if (closeall)
		{
			for (i in this.submenus)
			{
				this.submenus[i].action="close";
				this.submenus[i].closetimer=setTimeout(this.submenus[i].name+".closeMe(" + (this.submenus[i].left-this.left)/13 + "," + (this.submenus[i].top-this.top)/13 + ");",20);
			}
		}
		return;
	}
	
	function __openMe(stepleft,steptop)
	{
		if (this.action!="open") return;
		show(this.id,offsetleft+this.moveleft,offsettop+this.movetop,this.zIndex);
		if (this.moveleft!=this.left)
			this.moveleft+=stepleft;

		if (this.movetop!=this.top)
			this.movetop+=steptop;

		if (  (stepleft>=0 && this.moveleft<this.left) || (steptop>=0 && this.movetop<this.top) || (stepleft<0 && this.moveleft>this.left) || (steptop<0 && this.movetop>this.top)  )
		{
			setTimeout(this.name+".openMe("+stepleft+","+steptop+");",20);
		}
		else
		{
			show(this.id,offsetleft+this.left,offsettop+this.top,this.zIndex);
			this.visible=true;
			this.action="";
			this.moveleft=this.left;
			this.movetop=this.top;
			if (this.isPopup && this.img!=this.imgmerk && this.subvisible==false )
			{
				this.showSubmenu();
			}
		}
	}
	
	function __closeMe(stepleft,steptop)
	{
		if (this.action!="close") return;
		show(this.id,offsetleft+this.moveleft,offsettop+this.movetop,this.zIndex);
		var left=eval(this.parentname+".left");
		var top=eval(this.parentname+".top");
		if (this.moveleft!=left)
			this.moveleft-=stepleft;
		if (this.movetop!=top)
			this.movetop-=steptop;
		if ( (stepleft>=0 && this.moveleft>left) || (steptop>=0 && this.movetop>top) || (stepleft<0 && this.moveleft<left) || (steptop<0 && this.movetop<top) )
		{
			setTimeout(this.name+".closeMe("+stepleft+","+steptop+");",20);
		}
		else
		{
			hide(this.id);
			this.visible=false;
			this.action="";
			this.moveleft=left;
			this.movetop=top;
			if (this.isSubmenu)
			{
				if (eval(this.parentname+".isSubmenu"))
				{
					if (eval(eval(this.parentname+".parentname")+".closemelater"))
					{
						eval(eval(this.parentname+".parentname")+".hideSubmenu();");
						eval(eval(this.parentname+".parentname")+".closemelater=false;");
					}
				}
			}
		}
	}
	
	function __toDocument(doc)
	{
		if (doc==null || typeof(doc)=="undefined")	doc=document;
		if (doc.getElementById && !doc.all)
		{
			div=doc.createElement("DIV");
			div.setAttribute("id",this.id);
			div.setAttribute("class",this.css);
//			this.tag="<a href='";
			this.tag="<a ";

		}
		else
		{
			this.tag="<div id='" + this.id + "' class='" + this.css + "'><a ";
		}

		if (typeof(this.href)=="string")
		{
			if (this.isScript)
				{
				this.tag+="onclick=\"";
				}
			else
				{
				this.tag+="href=\"";
				}
			this.tag+=this.href+"\"";
			if (typeof(this.target)=="string")	this.tag+=" target='" + this.target + "'";
		}
		else
		{
			this.tag+="href='javascript:void(0);'";
		}
		this.tag+=" onmouseover=\"" + this.overtag + this.menuover + "\"";
		this.tag+=" onmouseout=\"" + this.outtag + this.menuout + "\"";
//		if (this.isPopup)
		if (this.isScript==false)
			this.tag+=" onclick=\"" + this.name + ".toggleSubmenu();" + this.name + ".toggleClick();" + "\"";
//		else
//			this.tag+=" onclick=\"" + this.name + ".toggleClick();" + "\"";

		if (doc.getElementById && !doc.all)
		{
			this.tag+="><img name='img_" + this.id + "' src='" + this.img.src + "' border='0'></a>";
			div.innerHTML=this.tag;
			doc.body.appendChild(div);
		}
		else
		{
			this.tag+="><img name='img_" + this.id + "' src='" + this.img.src + "' border='0'></a></div>";
			if (document.layers)	doc.open();
			doc.writeln(this.tag);
			if (document.layers)	doc.close();
		}
//alert('2'+this.tag);

		if (this.visible)
			show(this.id,offsetleft+this.left,offsettop+this.top,this.zIndex);
	}
	
	object[object.length]=this;
}
