var expandStart_o=0;
var expandEnd_o=0;
var expandCurrent_o=0;
var expandSetpOpen=33;
var expandSetpClose=10;
var expandElement_o=null;
var expandInterval=66;
var expandAction_o = "none";
var tempinnertext="";
var expandCloseTimeout=5000;

var closeWaiting=false;
var timeout_closeWaiting=null;
var waitTime=1000;
var focusTime=400;
var recheckTime=1000;
var closeBreakingWait=1000;

function init()
{
	var element_list = document.getElementsByTagName("DIV");
	if(element_list == null) return;
	var index_child = 0;
	var index_parent = 0;
	for(var i=0;i<element_list.length;i++)
	{
		var current_element = element_list.item(i);
		var classN = current_element.className;
		
		if(classN == "child")
		{
			current_element.style.display = "none";
			//current_element.style.height=0+"px";
			current_element.id = "child_menu"+index_child;
			current_element.stateFlag="closed";
			index_child++;
		};
		if(classN == "parent")
		{
			current_element.id = "parent_menu"+index_parent;
			index_parent++;
		};
		current_element.actionTimeOut=null;

	}
}
function smoothexpand(expandStart,expandEnd,expandCurrent,expandAction,expandElementid)
{
//ownerDocument.height]
	var end_smooth=false;
	expandElement = document.getElementById(expandElementid);
	if(expandAction=="open")
	{
		expandCurrent=expandCurrent/1+expandSetpOpen;
		if(expandCurrent>expandEnd)
		{
			expandCurrent=expandEnd;
			end_smooth = true;
			expandElement.stateFlag="opened";
			expandElement.openFlag = false;
			
		}
	}
	else if(expandAction=="close")
	{	
		if(closeWaiting)  
		{
			expandElement.actionTimeOut=setTimeout("Close('"+ expandElement.id+"')",recheckTime);
			return;
		}
		if(expandElement.breakcloseing == true )
		{
			//close late
			expandElement.breakcloseing = false;
			expandElement.closeFlag = true;
			expandElement.actionTimeOut=setTimeout("Close('"+ expandElement.id+"')",closeBreakingWait);
			return;
		}
		expandCurrent=expandCurrent/1-expandSetpClose;
		if(expandCurrent<0)
		{
			expandCurrent=0;
			end_smooth = true;
			expandElement.stateFlag="closed";
			expandElement.closeFlag = false;

		}
	}
	
	expandElement.style.height=expandCurrent+"px";
	
	if(expandCurrent==0)
		expandElement.style.display = "none";
	else
		expandElement.style.display = "block";
		
	if(/*expandCurrent!=expandEnd && expandCurrent!=0*/ end_smooth!=true)
	{
		expandElement.actionTimeOut=setTimeout("smoothexpand('"+expandStart+"','"+expandEnd+"','"+expandCurrent+"','"+expandAction+"','"+expandElementid+"')",expandInterval);
	}
	else
	{
		//expandElement.actionFlag="idel"
	}
}
function closeDiv(elementName)
{
	expandElement = document.getElementById(elementName);
	if(expandElement.className ==  "child" )
	{
		expandElement.style.display = "none";
		//expandElement.style.height = 0;
	}
}
function Close(elementid)
{
	expandElement = document.getElementById(elementid);
	if(expandElement == null)return;
	if(expandElement.stateFlag == "opened")
	{
		expandElement.stateFlag="closeing";
		smoothexpand(expandElement.scrollHeight,0,expandElement.scrollHeight,"close",expandElement.id);
	}
	else
	{
		//expandElement.closeFlag = true;
		//expandElement.actionTimeOut=setTimeout("Close('"+elementid+"')",2000);
		smoothexpand(expandElement.scrollHeight,0,expandElement.clientHeight,"close",expandElement.id);
	}

}
function expand(elementid,action)
{
	expandElement = document.getElementById(elementid);
	if(expandElement == null || typeof(expandElement) == 'undefined')return;
	expandIt(expandElement,action);
	expandElement.expandTimeout=null;
	

}
function expandIt(element,action)
{
	children_list = element.getElementsByTagName("DIV");
	if(children_list == null) return;
	for( i=0;i<children_list.length;i++)
	{
		var child_element = children_list.item(i);
		var classN=child_element.className;
		if(classN == "child")
		{
				if(action == "open" && (child_element.stateFlag=="closed"||child_element.stateFlag=="closeing" ) && child_element.openFlag!=true)
				{
					child_element.style.display = "";
					if(child_element.stateFlag=="closed")
					{
						child_element.stateFlag="opening";
						child_element.openFlag = true;
						smoothexpand(0,child_element.scrollHeight,0,"open",child_element.id);
					}
					else
					{
						child_element.stateFlag="opening";
						child_element.openFlag = true;
						child_element.breakcloseing = true;
						smoothexpand(0,child_element.scrollHeight,parseInt(child_element.style.height),"open",child_element.id);
					}
					
				}
				else if(action == "close" && child_element.closeFlag!=true)
				{
					//child_element.actionFlag="closeing"
					//child_element.style.display = "none";
					//setTimeout("closeDiv('"+child_element.id+"')",5100);
					//var fun="smoothexpand("+child_element.scrollHeight+",0,"+child_element.scrollHeight+",'close','"+child_element.id+"')";
					child_element.closeFlag = true;
					child_element.actionTimeOut=setTimeout("Close('"+ child_element.id+"')",expandCloseTimeout);
					//setTimeout("Close('"+ child_element.id+"')",5000);
					//smoothexpand(child_element.scrollHeight,0,child_element.scrollHeight,"close",child_element.id);
					//child_element.style.display = "none";
					//smoothexpand(100,0,100,"close",child_element);
				}
		}
	}
}
function cellParent_onMouseOver(elem,evnt)
{
	elem.expandTimeout=setTimeout("expand('"+elem.id+"','open')",focusTime);
	//expandIt(elem,'open');
}
function cellParent_onMouseOut(elem,evnt)
{
	if(elem.expandTimeout)
	{
		clearTimeout(elem.expandTimeout);
		elem.expandTimeout=null;
	}
	expandIt(elem,'close');
}
function cellParent_onMouseMove(elem,evnt)
{
	//expandIt(elem.parentNode,'open');
	AllCloseWaiting();
}


function cellChild_onMouseOver(elem,evnt)
{
}
var closeWaiting=false;
var timeout_closeWaiting=null;
function AllCloseWaiting()
{
	if(timeout_closeWaiting)
	{
		clearTimeout(timeout_closeWaiting);
	}
	closeWaiting=true;
	timeout_closeWaiting=setTimeout("cancleAllCloseWaiting();",waitTime);

}
function cancleAllCloseWaiting()
{
	closeWaiting=false;
	timeout_closeWaiting=null;
}
function cellChild_onMouseMove(elem,evnt)
{
	expandIt(elem.parentNode,'open');
	AllCloseWaiting();
}

function cellChild_onMouseOut(elem,evnt)
{
}
//init();
var currentHitElement="";

	function addChildfunc(child_item)
	{
		if(this.menutype!="parent")
			return;
		if(typeof(this.children)=="undefined")
		{
			this.children=new Array();
		}
		
		{
			this.children[this.children.length]=child_item;
		}
	}
	function toHtmlfunc()
	{
		var strInhert;
		if(this.menutype=="parent")
		{
			strInhert="<div class='parent'  onMouseOver=\"cellParent_onMouseOver(this,event);\" onMouseOut=\"cellParent_onMouseOut(this,event)\" onMouseMove=\"cellParent_onMouseMove(this,event);\">";
			if(typeof(this.ref)!="undefined")
				strInhert+="<a href='"+this.ref +"'>";
			strInhert+="<div class='parentlink' onMouseOver=\"this.className='parentlink_on'\" onMouseOut=\"this.className='parentlink'\">";
			if(	typeof(this.imgSrc)!="undefined" && this.imgSrc!="" )
				strInhert+="<IMG SRC='"+this.imgSrc+"' >";
			strInhert+=this.text;
			strInhert+="</div>"
			if(typeof(this.ref)!="undefined")
				strInhert+="</a>";
			document.write(strInhert);
			
			document.write("<div class='child' onMouseMove=\"cellChild_onMouseMove(this,event);\">");

			if(typeof(this.children)!="undefined")
			{
				for(var i=0;i<this.children.length;i++)
				{
					this.children[i].toHtml();
				}
			}
			document.write("</div>\n");
			
			document.write("</div>\n");
		}
		
		else if(this.menutype=="child")
		{
			strInhert="<a href='"+this.ref+"' ><div class='childlink' onMouseOver=\"this.className='childlink_on'\" onMouseOut=\"this.className='childlink'\"><IMG SRC='"+this.imgSrc+"' >&nbsp;"+this.text+"</div></a>";
			document.write(strInhert);
		}
	}

function menu_cell(ctype,ctext,cimgSrc,cref)
{
	this.menutype=ctype;
	this.text=ctext;
	this.ref=cref;
	this.imgSrc=cimgSrc;
	if(ctype=="parent")
	{
		this.className="parent";
		this.linkOn="parentlink_on";
		this.linkNor="parentlink";
	}
	else if(ctype=="child")
	{
		this.className="child";
		this.linkOn="childlink_on";
		this.linkNor="childlink";
	}
	this.addChild=addChildfunc;
	this.toHtml=toHtmlfunc;
	
	
	return this;
	//arguments 
}

