var MenuMake={};
MenuMake.Utils={};
MenuMake.Utils.getAbsolutePos=function(mmu){
var SL=0,ST=0;
var thisisdiv=/^div$/i.test(mmu.tagName);
if(thisisdiv&&mmu.scrollLeft)
SL=mmu.scrollLeft;
if(thisisdiv&&mmu.scrollTop)
ST=mmu.scrollTop;
var r={x:mmu.offsetLeft-SL,y:mmu.offsetTop-ST};
if(mmu.offsetParent){
var tmp=this.getAbsolutePos(mmu.offsetParent);
r.x+=tmp.x;
r.y+=tmp.y;
}
return r;
};
MenuMake.Utils.fixBoxPosition=function(box){
if(box.x<0)
box.x=0;
if(box.y<0)
box.y=0;
var cp=MenuMake.Utils.createElement("div");
var s=cp.style;
s.position="absolute";
s.right=s.bottom=s.width=s.height="0px";
window.document.body.appendChild(cp);
var br=MenuMake.Utils.getAbsolutePos(cp);
window.document.body.removeChild(cp);
if(MenuMake.thisisie){
br.y+=window.document.body.scrollTop;
br.x+=window.document.body.scrollLeft;
}else{
br.y+=window.scrollY;
br.x+=window.scrollX;
}
var tmp=box.x+box.width-br.x;
if(tmp>0)box.x-=tmp;
tmp=box.y+box.height-br.y;
if(tmp>0)box.y-=tmp;
};
MenuMake.Utils.isRelated=function(mmu,evt){
evt||(evt=window.event);
var related=evt.relatedTarget;
if(!related){
var type=evt.type;
if(type=="mouseover"){
related=evt.fromElement;
}else if(type=="mouseout"){
related=evt.toElement;
}
}
try{
while(related){
if(related==mmu){
return true;
}
related=related.parentNode;
}
}catch(e){};
return false;
};
MenuMake.Utils.removeClass=function(mmu,className){
if(!(mmu&&mmu.className)){
return;
}
var cls=mmu.className.split(" ");
var ar=[];
for(var i=cls.length;i>0;){
if(cls[--i]!=className){
ar[ar.length]=cls[i];
}
}
mmu.className=ar.join(" ");
};
MenuMake.Utils.addClass=function(mmu,className){
MenuMake.Utils.removeClass(mmu,className);
mmu.className+=" "+className;
};
MenuMake.Utils.getElement=function(ev){
if(MenuMake.thisisie){
return window.event.srcElement;
}else{
return ev.currentTarget;
}
};
MenuMake.Utils.getTargetElement=function(ev){
if(MenuMake.thisisie){
return window.event.srcElement;
}else{
return ev.target;
}
};
MenuMake.Utils.stopEvent=function(ev){
ev||(ev=window.event);
if(MenuMake.thisisie){
ev.cancelBubble=true;
ev.returnValue=false;
}else{
ev.preventDefault();
ev.stopPropagation();
}
return false;
};
MenuMake.Utils.addEvent=function(mmu,evname,func){
if(mmu.attachEvent){
mmu.attachEvent("on"+evname,func);
}else if(mmu.addEventListener){
mmu.addEventListener(evname,func,true);
}else{
mmu["on"+evname]=func;
}
};
MenuMake.Utils.removeEvent=function(mmu,evname,func){
if(mmu.detachEvent){
mmu.detachEvent("on"+evname,func);
}else if(mmu.removeEventListener){
mmu.removeEventListener(evname,func,true);
}else{
mmu["on"+evname]=null;
}
};
MenuMake.Utils.createElement=function(type,parent){
var mmu=null;
if(window.self.document.createElementNS)
mmu=window.self.document.createElementNS("http://www.w3.org/1999/xhtml",type);
else
mmu=window.self.document.createElement(type);
if(typeof parent!="undefined")
parent.appendChild(mmu);
if(MenuMake.thisisie)
mmu.setAttribute("unselectable",true);
if(MenuMake.thisisgecko)
mmu.style.setProperty("-moz-user-select","none","");
return mmu;
};
MenuMake.Utils.writeCookie=function(name,value,domain,path,exp_days){
value=escape(value);
var ck=name+"="+value,exp;
if(domain)
ck+=";domain="+domain;
if(path)
ck+=";path="+path;
if(exp_days){
exp=new Date();
exp.setTime(exp_days*86400000+exp.getTime());
ck+=";expires="+exp.toGMTString();
}
document.cookie=ck;
};
MenuMake.Utils.getCookie=function(name){
var re=new RegExp("(^|;\\s*)"+name+"\\s*=(.*?)(;|$)");
if(re.test(document.cookie)){
var value=RegExp.$2;
value=unescape(value);
return(value);
}
return null;
};
MenuMake.Utils.makePref=function(obj){
function stringify(val){
if(typeof val=="object"&&!val)
return"null";
else if(typeof val=="number"||typeof val=="boolean")
return val;
else if(typeof val=="string")
return'"'+val.replace(/\22/,"\\22")+'"';
else return null;
};
var txt="",i;
for(i in obj)
txt+=(txt?",'":"'")+i+"':"+stringify(obj[i]);
return txt;
};
MenuMake.Utils.loadPref=function(txt){
var obj=null;
try{
eval("obj={"+txt+"}");
}catch(e){}
return obj;
};
MenuMake.Utils.mergeObjects=function(dest,src){
for(var i in src)
dest[i]=src[i];
};
MenuMake.Utils.__wch_id=0;
MenuMake.Utils.createWCH=function(element){
var f=null;
element=element||window.self.document.body;
if(MenuMake.thisisie&&!MenuMake.thisisie5){
var filter='filter:progid:DXImageTransform.Microsoft.alpha(style=0,opacity=0);';
var id="WCH"+(++MenuMake.Utils.__wch_id);
element.insertAdjacentHTML
('beforeEnd','<iframe id="'+id+'" scroll="no" frameborder="0" '+
'style="z-index:0;position:absolute;visibility:hidden;'+filter+
'border:0;top:0;left:0;width:0;height:0;" '+
'src="javascript:false;"></iframe>');
f=window.self.document.getElementById(id);
}
return f;
};
MenuMake.Utils.setupWCH_el=function(f,mmu,el2){
if(f){
var pos=MenuMake.Utils.getAbsolutePos(mmu),
X1=pos.x,
Y1=pos.y,
X2=X1+mmu.offsetWidth,
Y2=Y1+mmu.offsetHeight;
if(el2){
var p2=MenuMake.Utils.getAbsolutePos(el2),
XX1=p2.x,
YY1=p2.y,
XX2=XX1+el2.offsetWidth,
YY2=YY1+el2.offsetHeight;
if(X1>XX1)
X1=XX1;
if(Y1>YY1)
Y1=YY1;
if(X2<XX2)
X2=XX2;
if(Y2<YY2)
Y2=YY2;
}
MenuMake.Utils.setupWCH(f,X1,Y1,X2-X1,Y2-Y1);
}
};
MenuMake.Utils.setupWCH=function(f,x,y,w,h){
if(f){
var s=f.style;
(typeof x!="undefined")&&(s.left=x+"px");
(typeof y!="undefined")&&(s.top=y+"px");
(typeof w!="undefined")&&(s.width=w+"px");
(typeof h!="undefined")&&(s.height=h+"px");
s.visibility="inherit";
}
};
MenuMake.Utils.hideWCH=function(f){
if(f)
f.style.visibility="hidden";
};
MenuMake.Utils.getPageScrollY=function(){
return window.pageYOffset||
document.documentElement.scrollTop||
(document.body?document.body.scrollTop:0)||
0;
};
MenuMake.ScrollWithWindow={};
MenuMake.ScrollWithWindow.list=[];
MenuMake.ScrollWithWindow.stickiness=0.25;
MenuMake.ScrollWithWindow.register=function(node){
MenuMake.ScrollWithWindow.list[MenuMake.ScrollWithWindow.list.length]={
node:node,
origTop:parseInt(node.style.top)||0
};
};
MenuMake.ScrollWithWindow.handler=function(newScrollY){
oldScrollY+=((newScrollY-oldScrollY)*this.stickiness);
if(Math.abs(oldScrollY-newScrollY)<=1)oldScrollY=newScrollY;
for(var count=0;count<MenuMake.ScrollWithWindow.list.length;count++){
var elm=MenuMake.ScrollWithWindow.list[count];
elm.node.style.top=elm.origTop+parseInt(oldScrollY)+'px';
}
};
var oldScrollY=MenuMake.Utils.getPageScrollY();
setInterval(
'var newScrollY = MenuMake.Utils.getPageScrollY(); '+
'if (newScrollY != oldScrollY) { '+
'MenuMake.ScrollWithWindow.handler(newScrollY); '+
'}',50);
MenuMake.Utils.destroy=function(mmu){
if(mmu&&mmu.parentNode)
mmu.parentNode.removeChild(mmu);
};
MenuMake.Utils.newCenteredWindow=function(url,windowName,width,height,scrollbars){
var leftPosition=0;
var topPosition=0;
if(screen.width)
leftPosition=(screen.width-width)/2;
if(screen.height)
topPosition=(screen.height-height)/2;
var winArgs=
'height='+height+
',width='+width+
',top='+topPosition+
',left='+leftPosition+
',scrollbars='+scrollbars+
',resizable';
var win=window.open(url,windowName,winArgs);
return win;
};
MenuMake.Utils.selectOption=function(sel,val,call_default){
var a=sel.options,i,o;
for(i=a.length;--i>=0;){
o=a[i];
o.selected=(o.val==val);
}
sel.value=val;
if(call_default){
if(typeof sel.onchange=="function")
sel.onchange();
else if(typeof sel.onchange=="string")
eval(sel.onchange);
}
};
MenuMake.Utils.getNextSibling=function(mmu,tag){
mmu=mmu.nextSibling;
if(!tag)
return mmu;
tag=tag.toLowerCase();
while(mmu&&(mmu.nodeType!=1||mmu.tagName.toLowerCase()!=tag))
mmu=mmu.nextSibling;
return mmu;
};
MenuMake.Utils.getFirstChild=function(mmu,tag){
mmu=mmu.firstChild;
if(!tag)
return mmu;
tag=tag.toLowerCase();
if(mmu.nodeType==1&&mmu.tagName.toLowerCase()==tag)
return mmu;
return MenuMake.Utils.getNextSibling(mmu,tag);
};
MenuMake.Utils._ids={};
MenuMake.Utils.generateID=function(code,id){
if(typeof id=="undefined"){
if(typeof this._ids[code]=="undefined")
this._ids[code]=0;
id=++this._ids[code];
}
return"menu-"+code+"-"+id;
};
MenuMake.Utils.addTooltip=function(target,tooltip){
return new MenuMake.Tooltip(target,tooltip);
};
MenuMake.thisisopera=/opera/i.test(navigator.userAgent);
MenuMake.thisisie=(/msie/i.test(navigator.userAgent)&&!MenuMake.thisisopera);
MenuMake.thisisie5=(MenuMake.thisisie&&/msie 5\.0/i.test(navigator.userAgent));
MenuMake.thisismac_ie=(/msie.*mac/i.test(navigator.userAgent)&&!MenuMake.thisisopera);
MenuMake.thisiskhtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);
MenuMake.thisiskonqueror=/Konqueror/i.test(navigator.userAgent);
MenuMake.thisisgecko=/Gecko/i.test(navigator.userAgent);


MenuMake.Tree=function(mmu,config,noInit){
if(typeof config=="undefined")
config={};
this._el=mmu;
this._config=config;
if(!noInit)this.initTree();
};
MenuMake.Tree.prototype.initTree=function(){
var mmu=this._el;
var config=this._config;
function param_default(name,value){
if(typeof config[name]=="undefined")config[name]=value;
};
param_default('d_profile',false);
param_default('hiliteSelectedNode',true);
param_default('compact',false);
param_default('dynamic',false);
param_default('initLevel',false);
if(config.dynamic)
config.initLevel=0;
this.config=config;
if(this.config.d_profile){
var T1=new Date().getTime();
profile={
items:0,
trees:0,
icons:0
};
}
if(typeof mmu=="string")
mmu=document.getElementById(mmu);
this.list=mmu;
this.items={};
this.trees={};
this.selectedItem=null;
this.id=null;
if(mmu)
this.id=mmu.id||MenuMake.Utils.generateID("tree");
else
alert("Can not find Menu id=\""+this._el+"\"")
var top=this.top_parent=MenuMake.Utils.createElement("div");
top.className="makeMenu makeMenu-top";
if(this.config.vertical)
MenuMake.Utils.addClass(top,"makeMenu-vertical-mode");
else
MenuMake.Utils.addClass(top,"makeMenu-horizontal-mode");
this.createTree(mmu,top,0);
if(mmu){
mmu.parentNode.insertBefore(top,mmu);
mmu.parentNode.removeChild(mmu);
}
MenuMake.Tree.all[this.id]=this;
if(this.selectedItem)
this.sync(this.selectedItem.tsu_item);
if(this.config.d_profile){
alert("Generated in "+(new Date().getTime()-T1)+" milliseconds\n"+
profile.items+" total tree items\n"+
profile.trees+" total (sub)trees\n"+
profile.icons+" total icons");
}
};
MenuMake.Tree.all={};
MenuMake.Tree.prototype.createTree=function(list,parent,level){
if(this.config.d_profile)
++profile.trees;
var id;
var intItem=1,bFirst=true;
if(list)id=list.id;
if(!id)id=MenuMake.Utils.generateID("tree.sub");
var
self=this;
function _makeIt(){
self.creating_now=true;
var
last_li=null,
next_li,
i=(list?list.firstChild:null),
items=parent.tsu_items=[];
self.trees[id]=parent;
parent.tsu_level=level;
parent.tsu_treeid=id;
while(i){
if(last_li)
last_li.className+=" makeMenu-lines-c";
if(i.nodeType!=1)
i=i.nextSibling;
else{
next_li=MenuMake.Utils.getNextSibling(i,'li');
if(i.tagName.toLowerCase()=='li'){
last_li=self.createItem(i,parent,next_li,level,intItem++);
if(last_li){
if(bFirst)
{
bFirst=false;
MenuMake.Utils.addClass(last_li,"makeMenu-item-first");
}
items[items.length]=last_li.tsu_item;
}
}
i=next_li;
}
}
if(last_li)MenuMake.Utils.addClass(last_li,"makeMenu-item-last");
i=parent.firstChild;
if(i&&!level){
i.className=i.className.replace(/makeMenu-lines-./g,"");
i.className+=(i===last_li)?" makeMenu-lines-s":" makeMenu-lines-t";
}
if(last_li&&(level||last_li!=i)){
last_li.className=last_li.className.replace(/makeMenu-lines-./g,"");
last_li.className+=" makeMenu-lines-b";
}
self.creating_now=false;
};
if(this.config.dynamic&&level>0)
this.trees[id]=_makeIt;
else
_makeIt();
return id;
};
MenuMake.Tree.prototype.createItem=function(li,parent,next_li,level,intItem){
if(this.config.d_profile)
++profile.items;
if(!li.firstChild)
return;
var
id=li.id||MenuMake.Utils.generateID("tree.item"),
item=this.items[id]=MenuMake.Utils.createElement("div",parent),
t=MenuMake.Utils.createElement("table",item),
tb=MenuMake.Utils.createElement("tbody",t),
tr=MenuMake.Utils.createElement("tr",tb),
td=MenuMake.Utils.createElement("td",tr),
thisislist,
tmp,
i=li.firstChild,
has_icon=false;
t.className="makeMenu-table";
t.cellSpacing=0;
t.cellPadding=2;
td.className="makeMenu-label"
if(li.getAttribute('title')){
td.setAttribute('title',li.getAttribute('title'));
}
item.className="makeMenu-item"+(li.className?' '+li.className:'');
if(level==0&&!this.config.vertical){
MenuMake.Utils.addClass(item,"makeMenuVertical");
}
MenuMake.Utils.addClass(item,"makeMenu-level-"+(level+1));
item.tsu_item=id;
item.tsu_tree=this.id;
item.tsu_parent=parent.tsu_treeid;
item.onmouseover=MenuMake.Menu.onItemMouseOver;
item.onmouseout=MenuMake.Menu.onItemMouseOut;
item.onclick=MenuMake.Menu.onItemClick;
MenuMake.Utils.addClass(item,"makeMenu-item-"+(intItem%2==1?"odd":"even"));
while(i){
thisislist=i.nodeType==1&&/^[ou]l$/i.test(i.tagName);
if(i.nodeType!=1||!thisislist){
if(i.nodeType==3){
tmp=i.data.replace(/^\s+/,'');
tmp=tmp.replace(/\s+$/,'');
li.removeChild(i);
if(tmp){
i=MenuMake.Utils.createElement("span");
i.innerHTML=tmp;
td.appendChild(i);
}
}else if(i.tagName.toLowerCase()=='img'){
this.item_addIcon(item,i);
has_icon=true;
}else{
if((this._menuMode)&&(i.tagName.toLowerCase()=='hr')){
MenuMake.Utils.addClass(item,"makeMenu-item-hr");
}
td.appendChild(i);
}
i=li.firstChild;
continue;
}
if(thisislist){
this.item_addIcon(item,null);
var np=MenuMake.Utils.createElement("div",item.parentNode);
np.tsu_item=id;
np.className="makeMenu"+(i.className?' '+i.className:'');
np.onmouseover=MenuMake.Menu.onItemMouseOver;
np.onmouseout=MenuMake.Menu.onItemMouseOut;
if(next_li)
np.className+=" makeMenu-lined";
item.tsu_subtree=this.createTree(i,np,level+1);
if((this.config.initLevel!=false&&this.config.initLevel<=level)||
(this.config.compact&&!/(^|\s)expanded(\s|$)/i.test(li.className))
||/(^|\s)collapsed(\s|$)/i.test(li.className)){
item.className+=" makeMenu-item-collapsed";
this.toggleItem(id);
}else
item.className+=" makeMenu-item-expanded";
if(/(^|\s)selected(\s|$)/i.test(li.className))
this.selectedItem=item;
break;
}
}
if(!has_icon&&!/makeMenu-item-hr/i.test(item.className))
if(this.config.defaultIcons)
this.item_addDefaultIcon(item,this.config.defaultIcons);
else
this.item_addDefaultIcon(item,"makeMenu-noicon");
return item;
};
MenuMake.Tree.prototype.item_addDefaultIcon=function(item,className){
if(!className)
return;
var last_td=item.firstChild.firstChild.firstChild.lastChild,td;
var td=MenuMake.Utils.createElement("td");
td.className="tgb icon "+className;
last_td.parentNode.insertBefore(td,last_td);
};
MenuMake.Tree.prototype.item_addIcon=function(item,img){
if(this.config.d_profile)
++profile.icons;
var last_td=item.firstChild.firstChild.firstChild,td;
last_td=img?last_td.lastChild:last_td.firstChild;
if(!img||!item.tsu_icon){
td=MenuMake.Utils.createElement("td");
td.className="tgb "+(img?"icon":"minus");
last_td.parentNode.insertBefore(td,last_td);
}else{
td=item.tsu_icon;
img.style.display="none";
}
if(!img){
td.innerHTML="&nbsp;";
item.className+=" makeMenu-item-more";
item.tsu_state=true;
item.tsu_expand=td;
}else{
td.appendChild(img);
item.tsu_icon=td;
}
};
MenuMake.Tree.prototype.itemClicked=function(item_id){
this.selectedItem=this.toggleItem(item_id);
if(this.config.hiliteSelectedNode&&this.selectedItem)
MenuMake.Utils.addClass(this.selectedItem,"makeMenu-item-selected");
this.onItemSelect(item_id);
};
MenuMake.Tree.prototype.toggleItem=function(item_id,state){
if(item_id){
if(this.config.hiliteSelectedNode&&this.selectedItem)
MenuMake.Utils.removeClass(this.selectedItem,"makeMenu-item-selected");
var item=this.items[item_id];
if(typeof state=="undefined")
state=!item.tsu_state;
if(state!=item.tsu_state){
var subtree=this._getTree(item.tsu_subtree,this.creating_now);
if(subtree){
this.treeSetDisplay(subtree,state);
MenuMake.Utils.removeClass(item,"makeMenu-item-expanded");
MenuMake.Utils.removeClass(item,"makeMenu-item-collapsed");
MenuMake.Utils.addClass(item,state?"makeMenu-item-expanded":"makeMenu-item-collapsed");
}
var img=item.tsu_expand;
if(img)
img.className="tgb "+(state?"minus":"plus");
item.tsu_state=state;
img=item.tsu_icon;
if(img){
img.firstChild.style.display="none";
img.appendChild(img.firstChild);
img.firstChild.style.display="block";
}
if(this.config.compact&&state){
var hideItems=this._getTree(item.tsu_parent).tsu_items;
for(var i=hideItems.length;--i>=0;){
if(hideItems[i]!=item_id&&hideItems[i].tsu_state){
this.toggleItem(hideItems[i],false);
if(hideItems[i].tsu_subtree){
var subtree=this._getTree(hideItems[i].tsu_subtree);
this.toggleItem(subtree.firstChild,false);
}
}
}
}
}
return item;
}
return null;
};
MenuMake.Tree.prototype.collapseAll=function(){
for(var i in this.trees)
this.toggleItem(this._getTree(i).tsu_item,false);
};
MenuMake.Tree.prototype.expandAll=function(){
for(var i in this.trees)
this.toggleItem(this._getTree(i).tsu_item,true);
};
MenuMake.Tree.prototype.toggleAll=function(){
for(var i in this.trees)
this.toggleItem(this._getTree(i).tsu_item);
};
MenuMake.Tree.prototype.sync=function(item_id){
var item=this.items[item_id];
if(item){
this.collapseAll();
this.selectedItem=item;
var a=[];
while(item.tsu_parent){
a[a.length]=item;
var pt=this._getTree(item.tsu_parent);
if(pt.tsu_item)
item=this.items[pt.tsu_item];
else
break;
}
for(var i=a.length;--i>=0;)
this.toggleItem(a[i].tsu_item,true);
MenuMake.Utils.addClass(this.selectedItem,"makeMenu-item-selected");
}
};
MenuMake.Tree.prototype.destroy=function(){
var p=this.top_parent;
p.parentNode.removeChild(p);
};
MenuMake.Tree.prototype._getTree=function(tree_id,dont_call){
var tree=this.trees[tree_id];
if(typeof tree=="function"){
if(dont_call)
tree=null;
else{
tree();
tree=this.trees[tree_id];
}
}
return tree;
};
MenuMake.Tree.prototype.onItemSelect=function(){};
MenuMake.Tree.onItemToggle=function(){
var item=this;
var body=document.body;
while(item&&item!=body&&!/makeMenu-item/.test(item.className))
item=item.parentNode;
MenuMake.Tree.all[item.tsu_tree].itemClicked(item.tsu_item);
};
MenuMake.Menu=function(mmu,config_user){
this._el=mmu;
this._config={};
this.setOption(this._config,'showDelay',5);
this.setOption(this._config,'hideDelay',700);
this.setOption(this._config,'onClick',false);
this.setOption(this._config,'vertical',true);
this.setOption(this._config,'scrollWithWindow',false);
this.setOption(this._config,'drag',false);
this.setOption(this._config,'slide',false);
this.setOption(this._config,'glide',false);
this.setOption(this._config,'fade',false);
this.setOption(this._config,'wipe',false);
this.setOption(this._config,'unfurl',false);
this.setOption(this._config,'animSpeed',20);
this.setOption(this._config,'compact',true);
this.setOption(this._config,'initLevel',0);
this.setOption(this._config,'defaultIcons',null);
if(typeof config_user!="undefined")
for(var i in config_user){
if(typeof this._config[i]=="undefined"){
alert("Error:Menu "+this._el+" has invalid parameter --"+i+":"+config_user[i]);
}else{
this.setOption(this._config,i,config_user[i]);
}
}
this.animations=[];
this._menuMode=true;
this.initTree();
this.openMenus=[];
this.clickDone=false;
if(this.config.scrollWithWindow){
MenuMake.ScrollWithWindow.register(this.trees[this._el]);
}
if(this.config.drag){
var self=this;
self.dragging=false;
MenuMake.Utils.addEvent(window.document,"mousedown",
function(ev){return MenuMake.Menu.dragStart(ev,self)});
MenuMake.Utils.addEvent(window.document,"mousemove",
function(ev){return MenuMake.Menu.dragMove(ev,self)});
MenuMake.Utils.addEvent(window.document,"mouseup",
function(ev){return MenuMake.Menu.dragEnd(ev,self)});
}
if(this.config.scrollWithWindow||this.config.drag){
if(!(/(absolute|fixed)/).test(this.trees[this._el].style.position)){
this.trees[this._el].style.position='relative';
}
}
if(this._config.fade)
this.addAnimation('fade');
if(this._config.slide)
this.addAnimation('slide');
else if(this._config.glide)
this.addAnimation('glide');
else if(this._config.wipe)
this.addAnimation('wipe');
else if(this._config.unfurl)
this.addAnimation('unfurl');
};
MenuMake.Menu.prototype=new MenuMake.Tree('',null,true);
MenuMake.Menu.MOUSEOUT=0;
MenuMake.Menu.MOUSEOVER=1;
MenuMake.Menu.CLICK=2;
MenuMake.Menu.prototype.setOption=function(config,name,val){
config[name]=val;
};
MenuMake.Menu.animations={};
MenuMake.Menu.animations.fade=function(ref,counter){
var f=ref.filters,done=(counter==100);
if(f){
if(!done&&ref.style.filter.indexOf("alpha")==-1){
ref.style.filter+=' alpha(opacity='+counter+')';
}
else if(f.length&&f.alpha)with(f.alpha){
if(done)enabled=false;
else{opacity=counter;enabled=true}
}
}
else{
ref.style.opacity=ref.style.MozOpacity=counter/100.1;
}
};
MenuMake.Menu.animations.slide=function(ref,counter){
var cP=Math.pow(Math.sin(Math.PI*counter/200),0.75);
var noClip=((window.opera||navigator.userAgent.indexOf('KHTML')>-1)?
'':'rect(auto, auto, auto, auto)');
if(typeof ref.tsu_origmargintop=='undefined'){
ref.tsu_origmargintop=ref.style.marginTop;
}
ref.style.marginTop=(counter==100)?
ref.tsu_origmargintop:'-'+(ref.offsetHeight*(1-cP))+'px';
ref.style.clip=(counter==100)?noClip:
'rect('+(ref.offsetHeight*(1-cP))+', '+ref.offsetWidth+
'px, '+ref.offsetHeight+'px, 0)';
};
MenuMake.Menu.animations.glide=function(ref,counter){
var cP=Math.pow(Math.sin(Math.PI*counter/200),0.75);
var noClip=((window.opera||navigator.userAgent.indexOf('KHTML')>-1)?
'':'rect(auto, auto, auto, auto)');
ref.style.clip=(counter==100)?noClip:
'rect(0, '+ref.offsetWidth+'px, '+(ref.offsetHeight*cP)+'px, 0)';
};
MenuMake.Menu.animations.wipe=function(ref,counter){
var noClip=((window.opera||navigator.userAgent.indexOf('KHTML')>-1)?
'':'rect(auto, auto, auto, auto)');
ref.style.clip=(counter==100)?noClip:
'rect(0, '+(ref.offsetWidth*(counter/100))+'px, '+
(ref.offsetHeight*(counter/100))+'px, 0)';
};
MenuMake.Menu.animations.unfurl=function(ref,counter){
var noClip=((window.opera||navigator.userAgent.indexOf('KHTML')>-1)?
'':'rect(auto, auto, auto, auto)');
if(counter<=50){
ref.style.clip='rect(0, '+(ref.offsetWidth*(counter/50))+
'px, 10px, 0)';
}
else if(counter<100){
ref.style.clip='rect(0, '+ref.offsetWidth+'px, '+
(ref.offsetHeight*((counter-50)/50))+'px, 0)';
}
else{
ref.style.clip=noClip;
}
};
MenuMake.Menu.prototype.addAnimation=function(animation){
this.animations[this.animations.length]=MenuMake.Menu.animations[animation];
};
MenuMake.Menu.prototype.treeSetDisplay=function(menu,show){
if(!menu.tsu_initialised){
menu.style.visibility='hidden';
menu.tsu_initialised=true;
return;
}
menu.tsu_anim_timer|=0;
menu.tsu_anim_counter|=0;
var tree,t_id=menu.tsu_tree||menu.firstChild.tsu_tree;
if(t_id)tree=MenuMake.Tree.all[t_id];
if(!tree)return;
clearTimeout(menu.tsu_anim_timer);
if(show&&!menu.tsu_anim_counter)menu.style.visibility='inherit';
var speed=!tree.animations.length?100:tree.config.animSpeed;
if(speed<100){
for(var a=0;a<tree.animations.length;a++){
tree.animations[a](menu,menu.tsu_anim_counter);
}
}
menu.tsu_anim_counter+=speed*(show?1:-1);
if(menu.tsu_anim_counter>100){
menu.tsu_anim_counter=100;
}
else if(menu.tsu_anim_counter<=0){
menu.tsu_anim_counter=0;
menu.style.visibility='hidden';
}
else{
menu.tsu_anim_timer=setTimeout(function(){
tree.treeSetDisplay(menu,show);
},50);
}
};
MenuMake.Menu.onItemMouseOver=function(){
var item=this,
tree=null,
body=document.body;
while(item&&item!=body){
var t_id=item.tsu_tree||item.firstChild.tsu_tree;
if(t_id)tree=MenuMake.Tree.all[t_id];
if(/makeMenu-item/.test(item.className)&&!/makeMenu-item-hr/.test(item.className)){
tree.itemMouseHandler(item.tsu_item,MenuMake.Menu.MOUSEOVER);
}
item=tree&&item.tsu_treeid?
tree.items[item.tsu_item]:item.parentNode;
}
};
MenuMake.Menu.onItemMouseOut=function(){
var item=this,
tree=null,
body=document.body;
while(item&&item!=body){
var t_id=item.tsu_tree||item.firstChild.tsu_tree;
if(t_id)tree=MenuMake.Tree.all[t_id];
if(/makeMenu-item/.test(item.className)&&!/makeMenu-item-hr/.test(item.className)){
tree.itemMouseHandler(item.tsu_item,MenuMake.Menu.MOUSEOUT);
}
item=tree&&item.tsu_treeid?
tree.items[item.tsu_item]:item.parentNode;
}
};
MenuMake.Menu.onItemClick=function(e){
var item=this,
tree=null;
body=document.body;
while(item&&item!=body){
if(item.nodeName&&item.nodeName.toLowerCase()=='a'){
return true;
}
if(/makeMenu-item/.test(item.className)){
tree=MenuMake.Tree.all[item.tsu_tree];
if(tree.config.onClick&&item.tsu_subtree&&
(/makeMenu-top/.test(item.parentNode.className))){
tree.itemMouseHandler(item.tsu_item,MenuMake.Menu.CLICK);
e=e||window.event||{};
if(e.preventDefault)e.preventDefault();
e.returnValue=false;
return false;
}
var itemLink=item.getElementsByTagName('a');
if(!itemLink||!itemLink.item(0))return;
var href=itemLink.item(0).getAttribute('href');
if(!(/javascript:/).test(href)){
window.open=href;
return;
}
}
item=item.parentNode;
}
};
MenuMake.Menu.prototype.itemMouseHandler=function(item_id,type){
var item=this.items[item_id];
var menu=this._getTree(item.tsu_parent);
if(menu&&menu.tsu_activeitem!=item_id){
if(menu.tsu_activeitem){
var lastItem=this.items[menu.tsu_activeitem];
MenuMake.Utils.removeClass(lastItem,"makeMenu-item-selected");
if(lastItem.tsu_state)this.toggleItem(lastItem.tsu_item,false);
}
menu.tsu_activeitem=item_id;
MenuMake.Utils.addClass(item,"makeMenu-item-selected");
}
clearTimeout(item.tsu_dimtimer);
if(type==MenuMake.Menu.MOUSEOUT){
item.tsu_dimtimer=setTimeout(function(){
MenuMake.Utils.removeClass(item,"makeMenu-item-selected");
if(menu.tsu_activeitem==item_id)menu.tsu_activeitem='';
},this.config.hideDelay);
}
clearTimeout(item.tsu_mousetimer);
if(this.config.onClick&&!this.clickDone){
if(/makeMenu-top/.test(item.parentNode.className)&&(type==MenuMake.Menu.MOUSEOVER))return;
if(type==MenuMake.Menu.CLICK)this.clickDone=true;
}
if(!item.tsu_state&&type)
{
item.tsu_mousetimer=setTimeout('MenuMake.Tree.all["'+
item.tsu_tree+'"].itemShow("'+item.tsu_item+'")',
(this.config.showDelay||1));
}
else if(item.tsu_state&&!type)
{
item.tsu_mousetimer=setTimeout('MenuMake.Tree.all["'+
item.tsu_tree+'"].itemHide("'+item.tsu_item+'")',
(this.config.hideDelay||1));
}
};
MenuMake.Menu.prototype.itemShow=function(item_id){
var item=this.items[item_id];
var subMenu=this._getTree(item.tsu_subtree);
var parMenu=this._getTree(item.tsu_parent);
if(subMenu){
if(MenuMake.thisisie&&!MenuMake.thisisie5){
if(!subMenu.offsetHeight){
subMenu.style.left='-9999px';
subMenu.style.visibility='visible';
}
if(!subMenu.tsu_wch){
subMenu.tsu_wch=MenuMake.Utils.createWCH(subMenu);
}
subMenu.tsu_wch.style.zIndex=-1;
MenuMake.Utils.setupWCH(subMenu.tsu_wch,-1,0,
subMenu.offsetWidth+2,subMenu.offsetHeight);
}
var newLeft=0,newTop=0;
if((/makeMenu-top/.test(item.parentNode.className))
&&(!(this.config.vertical))){
newLeft=item.offsetLeft;
newTop=item.offsetHeight;
}
else{
newLeft=item.offsetWidth;
newTop=item.offsetTop;
var scrollX=window.pageXOffset||document.body.scrollLeft||
document.documentElement.scrollLeft||0;
var scrollY=window.pageYOffset||document.body.scrollTop||
document.documentElement.scrollTop||0;
var winW=window.innerWidth||document.body.clientWidth||
document.documentElement.clientWidth||0;
var winH=window.innerHeight||document.body.clientHeight||
document.documentElement.clientHeight||0;
var menuPos=MenuMake.Utils.getAbsolutePos(parMenu);
if(menuPos.x+newLeft+subMenu.offsetWidth>scrollX+winW){
newLeft=(0-subMenu.offsetWidth);
}
if(menuPos.y+newTop+subMenu.offsetHeight>scrollY+winH){
newTop-=subMenu.offsetHeight;
}
if(menuPos.x+newLeft<0){
newLeft=0-menuPos.x;
}
if(menuPos.y+newTop<0){
newTop=0-menuPos.y;
}
}
subMenu.style.left=newLeft+'px';
subMenu.style.top=newTop+'px';
this.toggleItem(item_id,true);
}
};
MenuMake.Menu.prototype.itemHide=function(item_id){
var item=this.items[item_id];
var subMenu=this._getTree(item.tsu_subtree);
var parMenu=this._getTree(item.tsu_parent);
if(subMenu){
this.toggleItem(item_id,false);
parMenu.tsu_activeitem='';
subMenu.tsu_activeitem='';
for(var i in this.items){
if(this.items[i].tsu_state)return;
}
this.clickDone=false;
}
};
MenuMake.Menu.dragStart=function(ev,menu){
ev||(ev=window.event);
if(menu.dragging){
return true;
}
var rootMenu=menu.trees[menu._el];
var testElm=ev.srcElement||ev.target;
while(1){
if(testElm==rootMenu)break;
else testElm=testElm.parentNode;
if(!testElm)return true;
}
menu.dragging=true;
var posX=ev.pageX||ev.clientX+window.document.body.scrollLeft||0;
var posY=ev.pageY||ev.clientY+window.document.body.scrollTop||0;
var L=parseInt(rootMenu.style.left)||0;
var T=parseInt(rootMenu.style.top)||0;
menu.xOffs=(posX-L);
menu.yOffs=(posY-T);
};
MenuMake.Menu.dragMove=function(ev,menu){
ev||(ev=window.event);
var rootMenu=menu.trees[menu._el];
if(!(menu&&menu.dragging)){
return false;
}
var posX=ev.pageX||ev.clientX+window.document.body.scrollLeft||0;
var posY=ev.pageY||ev.clientY+window.document.body.scrollTop||0;
var st=rootMenu.style,L=posX-menu.xOffs,T=posY-menu.yOffs;
st.left=L+"px";
st.top=T+"px";
return MenuMake.Utils.stopEvent(ev);
};
MenuMake.Menu.dragEnd=function(ev,menu){
if(!menu){
return false;
}
menu.dragging=false;
};