/*-----------Framework-------------*/
var enableDebug = false;
var debugOut = new String();

function isInstance(ob)
{
	return typeof(ob) != "undefined" && new String(ob) != "null";
}

function toStringPx(val)
{
	return String(val) + "px";
}

function Write(htmlToWrite)
{
	document.write(htmlToWrite);
	if(enableDebug)
		debugOut += htmlToWrite;
}

function WriteDebugData()
{
	document.write("<textarea cols='70' rows='15'><![CDATA[" + debugOut + "]]></textarea>")
}

function DebugShowProps(ob)
{
	if((new String(typeof(ob))).toLowerCase() == "string")
	{
		alert(ob);
		return;
	}
	
	var output = new Array();
	var linesCount = 0;
	var currentBlock = new String();
	for(prop in ob)
	{
		if(ob[prop] == null || String(ob[prop]) == "" || String(ob[prop]).indexOf(["native code"]) != -1 || prop == "innerHTML"  || prop == "outerHTML")
			continue;
		
		if(linesCount > 25)
		{
			output[output.length] = currentBlock;
			currentBlock = new String();
			linesCount = 0;
		}
		currentBlock += prop + " =" + ob[prop] + "\n";
		linesCount ++;
	}
	output[output.length] = currentBlock;
	
	for(block in output)
		alert(output[block]);
}

function calcOffsetsRecursive(ob, result)
{
	if(!isInstance(ob))
		return result;

	if(result == null) 
	{
		result = new Object();
		if(!isInstance(ob.offsetLeft))
		{
			result.offsetLeft = 0;
			result.offsetTop = 0;
		}
		else
		{
			result.offsetLeft = ob.offsetLeft;
			result.offsetTop = ob.offsetTop;
		}
	}
	else if(isInstance(ob.offsetLeft))
	{
		result.offsetLeft += ob.offsetLeft;
		result.offsetTop += ob.offsetTop;
	}

	return calcOffsetsRecursive(ob.offsetParent, result);
}

/*-----------Menu-------------*/
var ma=new Array();
var mx=new Array();
var my=new Array();
var mc=new Array();
var mal=0;
var main=0;
var menuw=200;
var psrc=0;
var pname="";
var al="";
var NS6 = (!isInstance(document.all) && isInstance(document.getElementById));
var FFX = (isInstance(document.getElementById)&&navigator.userAgent.indexOf('Firefox')!=-1);
var NS4 = (!isInstance(document.getElementById));
var IE5 = (!NS4&&!NS6&&navigator.userAgent.indexOf('MSIE 5.0')!=-1);
var activeMainMenuButton;

function startMainMenu(file,h,w,dir,space,align)
{
	if(w>0)
		menuw=w;
	main=dir;
	if(main==1||main==2)
		Write("<table summary=\"Generated main menu table\" border=\"0\" cellspacing=\""+space+"\" cellpadding=\"0\">");
	if(file!="")
	{
		al="";
		if(align==1)
			al=" align=\"right\"";
		if(align==2)
			al=" align=\"center\"";
		if(main==1||main==2)
			Write("<tr><td"+al+">");
		Write("<img alt=\"\" src=\""+loc+file+"\" border=\"0\"");
		if(h>0)
			Write(" height=\""+h+"\"");
		if(w>0)
			Write(" width=\""+w+"\"");
		Write(" />");
		if(main==1||main==2)
			Write("</td>");
		if(main==1)
			Write("</tr>");
		if(main==3)
			Write("<br />");
	}
}
function endMainMenu(file,h,w)
{
	if(file!="")
	{
		if(main==1)
			Write("<tr>");
		if(main==1||main==2)
			Write("<td"+al+">");
		Write("<img alt=\"\" src=\""+loc+file+"\" border=\"0\"");
		if(h>0)
			Write(" height=\""+h+"\"");
		if(w>0)
			Write(" width=\""+w+"\"");
		Write(" />");
		if(main==1||main==2)
			Write("</td></tr>");
	}
	if(main==1||main==2)
		Write("</table>");main=0;
}
function mainMenuItem(name,ext,h,w,url,tar,alt,dir,state,s)
{
	if(NS4&&main==0)
		return;
	var isgraphic=ext.charAt(0)==".";
	if(main==1)
		Write("<tr>");
	if(main==1||main==2)
		Write("<td"+al+">");
	Write("<a ");
	if(url!=""||!isgraphic)
		Write("href=\""+url+"\" ");
	if(tar!="")
		Write("target=\""+tar+"\" ");
	Write("onmouseout=\"");
	if(dir>0)
		Write("tidyMenu(event);");
	Write("\" onmouseover=\"");
	if(dir>0)
		Write("openMenu(event, '"+name+"',"+dir+","+bc+","+fc+",this);");
	if(state>1&&isgraphic)
	{
		document[name+"_over"]=new Image();
		document[name+"_over"].src=loc+name+"_over"+ext;
		Write("setGraphic(event, '"+loc+name+"_over"+ext+"');");
	}
	Write("return true;\"");
	if(!isgraphic)
		Write(" class=\""+s+"\"");
	Write(">");
	if(isgraphic)
	{
		Write("<img src=\""+loc+name+ext+"\" border=\"0\"");
		if(h>0)
			Write(" height=\""+h+"\"");
		if(w>0)
			Write(" width=\""+w+"\"");
		if(alt!="")
			Write(" alt=\""+alt+"\"");
		Write(" />");
	}
	else
	{
		Write(ext);
	}
	Write("</a>");
	if(main==1||main==2)
		Write("</td>");
	if(main==1)
		Write("</tr>");
	if(main==3)
		Write("<br />");
}
function startSubmenu(name,style,sw)
{
	if(NS4)
		return;
	if(sw>0)
		menuw=sw;
	
	var divWidth = menuw + subMenuButtonCompositeWPadding;
	
	Write("<div id=\""+name+"\" class=\""+style+"\"  style=\"width:"+divWidth+"px; z-index: 100; \">");
}
function endSubmenu(name)
{
	if(NS4)
		return;
	Write("</div>");
	if(!NS6)
		document.getElementById(name).onmouseout=tidyMenu;
}
function submenuItem(text,url,tar,s)
{
	if(NS4)
		return;
	if(text.charAt(0)=='<')
		Write(text);
	else
	{
		Write("<a ");
		if(url!="")
			Write("href=\""+url+"\" ");
		if(tar!="")
			Write("target=\""+tar+"\" ");
		Write("class=\""+s+"\" style=\"width:"+(menuw-3)+"px\"> "+text+" </a>");
	}
}
function setGraphic(event,name)
{
	if(NS4)
		return;
	psrc=(NS6||FFX)?event.target:event.srcElement;
	pname=psrc.src;
	if(NS6||FFX)
		event.target.src=name;
	else 
		event.srcElement.src=name;
}
function setLinkStyleRecursive(ob, className)
{
	if(!isInstance(ob))
		return;
		
	if(ob.tagName.toLowerCase() == "a")
	{
		ob.className = className;
		return;
	}
	setTdStyleRecursive(ob.parentNode, className)
}
function openMenu(event,id,pos,bc,fc,callerControl)
{
	if(NS4)
		return;
	var el,x,y;
	if(mal>0)
	{
		el=document.getElementById(ma[mal-1]);
		if(mx[mal-1]!=el.offsetLeft||my[mal-1]!=el.offsetTop)
		{
			el.style.left=toStringPx(mx[mal-1]);
			el.style.top=toStringPx(my[mal-1]);
		}
		tidyMenu(event);
	}
	if(NS6||FFX)
	{
		if(mal==0)
		{
			if(!isInstance(event.target.x))
			{
				var result = calcOffsetsRecursive(event.target, null);
				if(result == null)
					return;
				x=result.offsetLeft;
				y=result.offsetTop;
			}
			else
			{
				x=event.target.x;
				y=event.target.y;
			}
			dx=event.target.offsetWidth;
			dy=event.target.offsetHeight;
		}
		else
		{
			var p=event.target;
			if(p.nodeName!="A"&&p.parentNode.nodeName=="A")
				p=p.parentNode;
			dx=p.offsetWidth;
			dy=p.offsetHeight;
			el=document.getElementById(ma[mal-1]);
			x=el.offsetLeft;
			y=el.offsetTop+p.offsetTop;
		}
	}
	else
	{
		var result = calcOffsetsRecursive(event.srcElement, null);

		x=result.offsetLeft;
		y=result.offsetTop;
		dx=event.srcElement.offsetWidth;
		dy=event.srcElement.offsetHeight;
	}
	el=document.getElementById(id);
	if(isInstance(el) && el.style.visibility != "visible")
	{
		if(pos==1)
		{
			x+=dx;
			el.style.left=toStringPx(x-el.offsetWidth);
			el.style.top=toStringPx(y);
			nspeed=el.offsetWidth/frames;
		}
		else if(pos==2)
		{
			y+=dy;
			el.style.left=toStringPx(x);
			el.style.top=toStringPx(y-el.offsetHeight);
			nspeed=el.offsetHeight/frames;
		}
		else if(pos==3)
		{
			x-=el.offsetWidth;
			el.style.left=toStringPx(x+el.offsetWidth);
			el.style.top=toStringPx(y);
			nspeed=el.offsetWidth/frames;
		}
		mx[mal]=x;
		my[mal]=y;
		if(NS6||FFX||IE5||frames==0)
		{
			el.style.left=toStringPx(x);
			el.style.top=toStringPx(y);
		}
		if(!IE5)
			clipMenu(mal,el);
		el.style.visibility="visible";
		ma[mal]=id;
		if(NS6||FFX)
		{
			var p=event.target;
			if(p.nodeName!="A"&&p.parentNode.nodeName=="A")
				p=p.parentNode;
			mc[mal]=p.style;
			el.onmouseout=tidyMenu;
		}
		else
		{
			mc[mal]=event.srcElement.style;
			if(mal>0)
			{
				mc[mal].backgroundColor=bc;
				mc[mal].color=fc;
			}
		}
		mal++;
	}
	
	setLinkStyleRecursive(callerControl, "mainMenuButtonHover");
	activeMainMenuButton = callerControl;
}
function overMenu(x,y)
{
	if(isInstance(activeMainMenuButton))
	{
		var result = calcOffsetsRecursive(activeMainMenuButton, null);
		if( result.offsetLeft + activeMainMenuButton.offsetWidth > x &&
			result.offsetLeft <= x &&
			result.offsetTop + activeMainMenuButton.offsetHeight > y &&
			result.offsetTop <= y )
		{
			return activeMainMenuButton;
		}
	}

	for(i=0;i<mal;i++)
	{
		var el=document.getElementById(ma[i]);
		if(el.offsetLeft+el.offsetWidth>x&&el.offsetLeft<=x&&el.offsetTop+el.offsetHeight>y&&el.offsetTop<=y)
		{
			return ma[i];
		}
	}
	return "";
}
function tidyMenu(e)
{
	if(NS4)
		return;
	if(NS6||FFX)
	{
		t=overMenu(e.pageX,e.pageY);
		if(t!=""&&(e.target.firstChild==e.relatedTarget||e.target==e.relatedTarget.firstChild))
			return;
	}
	else 
		t=overMenu(event.clientX+document.body.scrollLeft-document.body.clientLeft,event.clientY+document.body.scrollTop-document.body.clientTop);
	if(t == activeMainMenuButton)
		return;
	om=0;
	for(i=0;i<mal;i++)
	{
		var mail=ma[i].length;
		if(mail>t.length||t.substring(0,mail)!=ma[i])
		{
			var el=document.getElementById(ma[i]);
			el.style.visibility="hidden";
			mc[i].backgroundColor="";
			mc[i].color="";
		}
		else
		{
			ma[om]=ma[i];
			mx[om]=mx[i];
			my[om]=my[i];
			om++;
		}
	}
	mal=om;
	if(mal==0 && psrc)
		psrc.src=pname;
	if(om == 0 && isInstance(activeMainMenuButton))
	{
		setLinkStyleRecursive(activeMainMenuButton, "mainMenuButton");
		activeMainMenuButton = null;
	}
}
function animate()
{
	for(i=0;i<mal;i++)
	{
		var el=document.getElementById(ma[i]);
		if(el.style.visibility == "visible")
		{
			if(el.offsetLeft<mx[i])
				el.style.left=toStringPx(Math.min(el.offsetLeft+nspeed,mx[i]));
			if(el.offsetLeft>mx[i])
				el.style.left=toStringPx(Math.max(el.offsetLeft-nspeed,mx[i]));
			if(el.offsetTop<my[i])
				el.style.top=toStringPx(Math.min(el.offsetTop+nspeed,my[i]));
			clipMenu(i,el);
		}
	}
	if(mal!=0||frames!=0)
		setTimeout("animate()",10);
}
function clipMenu(i,el)
{
	if(el.offsetLeft>mx[i])
		el.style.clip="rect("+(my[i]-el.offsetTop)+"px "+(el.offsetWidth+(mx[i]-el.offsetLeft))+"px "+el.offsetHeight+"px "+0+"px)";
	else
		el.style.clip="rect("+(my[i]-el.offsetTop)+"px "+el.offsetWidth+"px "+el.offsetHeight+"px "+(mx[i]-el.offsetLeft)+"px)";
}


/* MENU 2 */

// Copyright 2006-2007 javascript-array.com

var timeout	= 500;
var closetimer	= 0;
var ddmenuitem	= 0;

// open hidden layer
function mopen(id)
{	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

}
// close showed layer
function mclose()
{
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime()
{
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime()
{
	if(closetimer)
	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose; 

