MENU_VERTICAL_TOP=0;MENU_VERTICAL_BOTTOM=1;MENU_HORIZONTAL_LEFT=2;MENU_HORIZONTAL_RIGHT=3;EXPAND_RIGHT=0;EXPAND_BOTTOM=1;EXPAND_LEFT=2;EXPAND_TOP=3;CLASS_INACTIVE='inactive';CLASS_ACTIVE='active';CLASS_HOVER='hover';CLASS_PARENT='parent';EFFECT_NONE=0;EFFECT_HIDE_ALL=0+0;EFFECT_HIDE_BLOCK=0+1;EFFECT_HIDE_ENTRY=0+2;EFFECT_FADE_ALL=4+0;EFFECT_FADE_BLOCK=4+1;EFFECT_FADE_ENTRY=4+2;EFFECT_SHRINK_ALL=8+0;EFFECT_SHRINK_BLOCK=8+1;EFFECT_SHRINK_ENTRY=8+2;EFFECT_HOOK=65536;MODE_STAY=0;MODE_COLLAPSE=1;BREAK_CONTINUE=0;BREAK_ONBLOCK=1;BREAK_ONENTRY=2;BREAK_REPEAT=2;BREAK_ABORT=3;HOOK_CLICKED=1;HOOK_HOVERED=2;HOOK_HOVERBROTHER=3;HOOK_HOVERCHILD=4;HOOK_HOVERPARENT=5;HOOK_HOVERPARENTBROTHER=6;emptyCell=(MSIE?'<img src="" width="0" height="0" />':'');function menuEntryConfiguration(classname,align,hovereffect,hoverparams,leavemode,leaveeffect,leaveparams){this.classname=classname;this.align=align;this.hovereffect=hovereffect;this.hoverparams=hoverparams;this.leavemode=leavemode;this.leaveeffect=leaveeffect;this.leaveparams=leaveparams;}function menuEntryModification(correctEntX,correctEntY,correctExpX,correctExpY,activator){this.correctEntX=correctEntX;this.correctEntY=correctEntY;this.correctExpX=correctExpX;this.correctExpY=correctExpY;this.activator=activator;}function menuEntry(active,name,configuration,modification,subexpand,subentries,extras){if(!configuration)configuration=mcTerminate;if(!modification)modification=mmNone;this.active=active;this.name=name;this.classname=configuration.classname;this.scut=null;this.icon=null;this.extras=extras;this.align=configuration.align;this.expand=subexpand;this.entries=subentries;this.hovereffect=configuration.hovereffect;this.hoverparams=configuration.hoverparams;this.leavemode=configuration.leavemode;this.leaveeffect=configuration.leaveeffect;this.leaveparams=configuration.leaveparams;this.entOffsX=modification.correctEntX;this.entOffsY=modification.correctEntY;this.expOffsX=modification.correctExpX;this.expOffsY=modification.correctExpY;this.id=null;this.parent=null;this.root=null;this.level=0;this.visible=false;this.posX=0;this.posY=0;this.obj=null;this.expander=null;this.container=null;this.html=null;}function menuBlock(active,name,align,expand,entries){this.active=active;this.name=name;this.align=align;this.expand=expand;this.entries=entries;this.id=null;this.parent=null;this.root=null;this.clicked=null;this.last=null;this.left=null;this.kill=null;this.obj=null;this.html=null;}mcTerminate=new menuEntryConfiguration(null,null,EFFECT_NONE,null,MODE_COLLAPSE,EFFECT_NONE,null);mmNone=new menuEntryModification(0,0,0,0,null);function makeValidID(html){return html.replace(/[\"\'\\\/<>=:;]/g,'');}function getFrom(event){if(!event)return null;if(event.relatedTarget)return event.relatedTarget;else if(event.fromElement)return event.fromElement;return null}function getTo(event){if(!event)return null;if(event.relatedTarget)return event.relatedTarget;else if(event.toElement)return event.toElement;return null}function parseStyle(stylestring){var stylenumber=parseFloat(stylestring);if(isNaN(stylenumber))return 0;return stylenumber}function getStyle(obj,stylestring){var stylevalue=null;var styleobj=null;if(document.defaultView!=null)styleobj=document.defaultView.getComputedStyle(obj,null);else styleobj=obj.currentStyle;return styleobj[stylestring]}function appliedStyle(obj,stylestring){return parseStyle(getStyle(obj,stylestring));}function getAbsoluteLeft(obj){var offsetLeft=0;if(obj.offsetParent){while(obj.offsetParent){if(obj.offsetLeft)offsetLeft+=obj.offsetLeft;obj=obj.offsetParent}}else if(obj.x)offsetLeft+=obj.x;return offsetLeft}function getAbsoluteTop(obj){var offsetTop=0;if(obj.offsetParent){while(obj.offsetParent){if(obj.offsetTop)offsetTop+=obj.offsetTop;obj=obj.offsetParent}}else if(obj.y)offsetTop+=obj.y;return offsetTop}function getExterior(entry,which){var obj=entry.obj;var bc=entry.container;var exp=entry.expander;var o=0;if(MSIE&&!CSS1)o+=appliedStyle(obj,"margin"+which);else{o+=appliedStyle(obj,"border"+which+"Width");o+=appliedStyle(obj,"padding"+which);o+=appliedStyle(obj,"margin"+which);}return o}function getInterior(entry,which){var obj=entry.obj;var bd=entry.container;var exp=entry.expander;var ad=0;if(MSIE&&!CSS1){ad+=appliedStyle(obj,"border"+which+"Width");ad+=appliedStyle(obj,"padding"+which);}return ad}function getExteriorOffset(entry,which){var obj=entry.obj;var be=entry.container;var exp=entry.expander;var ag=0;ag+=appliedStyle(obj,"margin"+which);return ag}function getInteriorOffset(entry,which){var obj=entry.obj;var bf=entry.container;var exp=entry.expander;var ae=0;ae+=appliedStyle(obj,"padding"+which);ae+=appliedStyle(obj,"border"+which+"Width");return ae}function getPosition(entry,which){var obj=entry.obj;var bg=entry.container;var exp=entry.expander;switch(getStyle(obj,"position")){case'absolute':return obj['offset'+which];case'fixed':return obj['offset'+which]}return obj['offset'+which]-(MSIE?0:1);}function getOuterDimension(entry,which){var obj=entry.obj;var bh=entry.container;var exp=entry.expander;if(which=='Width')return obj.offsetWidth+(getExteriorOffset(entry,'Left')+getExteriorOffset(entry,'Right'));else return obj.offsetHeight+(getExteriorOffset(entry,'Top')+getExteriorOffset(entry,'Bottom'));}function getInnerDimension(entry,which){var obj=entry.obj;var bi=entry.container;var exp=entry.expander;if(which=='Width')return obj.offsetWidth-(getInteriorOffset(entry,'Left')+getInteriorOffset(entry,'Right'));else return obj.offsetHeight-(getInteriorOffset(entry,'Top')+getInteriorOffset(entry,'Bottom'));}function getDeltaLeft(objA,objB){return objA.offsetLeft}function getDeltaTop(objA,objB){return objA.offsetTop}function getLeft(entry){var obj=entry.obj;var ao=entry.container;var exp=entry.expander;return getDeltaLeft(obj,ao);}function getTop(entry){var obj=entry.obj;var ap=entry.container;var exp=entry.expander;return getDeltaTop(obj,ap);}function getWidth(entry){var obj=entry.obj;var bj=entry.container;var exp=entry.expander;return getOuterDimension(entry,"Width");}function getHeight(entry){var obj=entry.obj;var bk=entry.container;var exp=entry.expander;return getOuterDimension(entry,"Height");}EFFECT_ALL=0;EFFECT_LEVELED=1;EFFECT_STEPPED=2;EFFECT_COLLAPSING=0;EFFECT_FADING=4;EFFECT_SHRINKING=8;leaveDelay=100;createDelay=1;transSteps=1/5;shrinkStep=10;function setEnterEffect(entry,type,levelsdown){if(entry.hovereffect==EFFECT_HOOK)return entry.hoverparams(entry,type,levelsdown);if(type!=HOOK_HOVERED)return BREAK_CONTINUE;return BREAK_CONTINUE}function setClickEffect(entry){if(entry.hovereffect==EFFECT_HOOK)return entry.hoverparams(entry,HOOK_CLICKED,0);}function effectFadeOut(obj){var q=appliedStyle(obj,'opacity');if((q-=transSteps)>=transSteps){obj.style.opacity=q;ret=true}else ret=false;while((ps=obj.previousSibling)){if((q+=transSteps)<1.0)ps.style.opacity=q;else break;obj=ps}return ret}function effectFadeOutSingle(obj){var ah=appliedStyle(obj,'opacity');if((ah-=transSteps)>=transSteps){obj.style.opacity=ah;return true}return false}function effectShrinkOut(obj){return effectFadeOutSingle(obj);var w=appliedStyle(obj,'width');var h=appliedStyle(obj,'height');var s=Math.max(1,idMap[obj.id].parent.sumWidth/shrinkStep);var t=Math.max(1,idMap[obj.id].parent.sumHeight/shrinkStep);w-=s;h-=t;if((w>=s)||(h>=t)){obj.style.width=Math.max(1,parseInt(w))+'px';obj.style.height=Math.max(1,parseInt(h))+'px';return true}return false}function setLeaveEffect(entry,type,levelsdown){if(!getObj(entry.id))return BREAK_ABORT;if(isLocked(entry))return BREAK_CONTINUE;if(entry.leaveeffect==EFFECT_HOOK){var ai=entry.leaveparams(entry,type,levelsdown);return isNaN(ai)?BREAK_CONTINUE:ai}if((entry.leaveeffect&EFFECT_STEPPED)){try{var container=getObj(entry.id+'.container');if(container&&(container.childNodes.length>1)){if((entry.leaveeffect&EFFECT_FADING)){if(effectFadeOut(container.lastChild))return BREAK_ONENTRY}else if((entry.leaveeffect&EFFECT_SHRINKING)){if(effectShrinkOut(container.lastChild))return BREAK_ONENTRY}container.removeChild(container.lastChild);return BREAK_ONENTRY}}catch(e){return BREAK_REPEAT}}if(!(entry.leaveeffect&EFFECT_ALL)){try{var container=getObj(entry.id+'.container');if(container){if((entry.leaveeffect&EFFECT_FADING)){if(effectFadeOut(container))return BREAK_ONENTRY}else if((entry.leaveeffect&EFFECT_SHRINKING)){if(effectShrinkOut(container))return BREAK_ONENTRY}}}catch(e){return BREAK_REPEAT}}return(entry.leaveeffect&EFFECT_LEVELED?BREAK_ONBLOCK:BREAK_CONTINUE);}idMap=Array();lastEntry=new Array();leftEntry=new Array();killTimer=new Array();function isChild(child,father){return father&&child&&(child.parent==father);}function isFather(father,child){return!father||!child||(child.parent==father);}function isBrother(brother,sister){return brother&&sister&&(brother.parent==sister.parent);}function isLocked(actual){var leaved=actual.root.leaved;var entered=actual.root.entered;if(!entered)return false;do{if(actual==entered)return true}while((entered=entered.parent));return false}function applyEnterEffects(actual,levelsdown,up,down){var l=BREAK_CONTINUE;if(actual.parent!=null){var parent=actual.parent;for(var r in parent.entries){var child=parent.entries[r];var aq=(child.id==actual.id?(levelsdown==0?HOOK_HOVERED:HOOK_HOVERPARENT):(levelsdown==0?HOOK_HOVERBROTHER:HOOK_HOVERPARENTBROTHER));l=Math.max(l,setEnterEffect(child,aq,levelsdown));}if(down)l=Math.max(l,applyEnterEffects(parent,levelsdown+1,false,true));}if(up)for(var r in actual.entries)if(getObj(actual.entries[r].id))l=Math.max(l,setEnterEffect(actual.entries[r],HOOK_HOVERCHILD,levelsdown-1));return l}function applyLeaveEffects(actual,levelsdown,up,down){var m=BREAK_CONTINUE;if(actual.parent!=null){var parent=actual.parent;for(var u in parent.entries){var child=parent.entries[u];var ar=(child==actual?(levelsdown==0?HOOK_HOVERED:HOOK_HOVERPARENT):(levelsdown==0?HOOK_HOVERBROTHER:HOOK_HOVERPARENTBROTHER));m=Math.max(m,setLeaveEffect(child,ar,levelsdown));}if(down)m=Math.max(m,applyLeaveEffects(parent,levelsdown+1,false,true));}if(up)for(var u in actual.entries)if(getObj(actual.entries[u].id))m=Math.max(m,setLeaveEffect(actual.entries[u],HOOK_HOVERCHILD,levelsdown-1));return m}function enableHoverState(entry){if(entry!=null){entry.classname=entry.classname+' hover';entry.obj.className=entry.classname}}function disableHoverState(entry){if(entry!=null){entry.classname=entry.classname.replace(/ hover/,'');entry.obj.className=entry.classname}}function enableClickedState(entry){if(entry!=null){entry.classname=entry.classname+' clicked';entry.obj.className=entry.classname}}function disableClickedState(entry){if(entry!=null){entry.classname=entry.classname.replace(/ clicked/,'');entry.obj.className=entry.classname}}function hoverEntry(obj,id,event){var j=idMap[id];var root=j.root;enableHoverState(j);if(j.kill){clearTimeout(j.kill);j.kill=null}if((j.mvfr=getFrom(event)))root.leaved=idMap[j.mvfr=j.mvfr.id];j.kill=setTimeout('createEntry(\''+id+'\');',createDelay);}function createEntry(id){var root=idMap[id].root;var createEntry=idMap[id];var leaveEntry=idMap[createEntry.mvfr];createEntry.kill=null;var f=0,d=0,floating='';var expander=null,container=null;expander=createEntry.expander;container=createEntry.container;if(!createEntry.entries||!createEntry.entries.length){applyEnterEffects(createEntry,0,false,false);return}if(leaveEntry&&isChild(leaveEntry,createEntry)){applyEnterEffects(createEntry,0,true,true);return}expander.style.visibility='hidden';expander.innerHTML='';f=createEntry.posX=getLeft(createEntry);d=createEntry.posY=getTop(createEntry);switch(createEntry.expand){case EXPAND_RIGHT:f=createEntry.posX+createEntry.szeX;break;case EXPAND_BOTTOM:d=createEntry.posY+createEntry.szeY;break}expander.style.width='auto';expander.style.height='auto';expander.style.left=f+'px';expander.style.top=d+'px';showMenuBlock(expander,createEntry,'sub');var aj=createEntry.maxWidth;var ak=createEntry.maxHeight;var v=createEntry.sumWidth;var aa=createEntry.sumHeight;switch(createEntry.expand){case EXPAND_LEFT:switch(createEntry.align){case MENU_VERTICAL_BOTTOM:f=createEntry.posX-aj;break;case MENU_VERTICAL_TOP:f=createEntry.posX-aj;d=createEntry.posY-aa+createEntry.szeY;break;case MENU_HORIZONTAL_LEFT:f=createEntry.posX-v;break;case MENU_HORIZONTAL_RIGHT:alert('forbidden!!! right left');break}break;case EXPAND_TOP:switch(createEntry.align){case MENU_VERTICAL_BOTTOM:alert('forbidden!!! top bottom');break;case MENU_VERTICAL_TOP:d=createEntry.posY-aa;break;case MENU_HORIZONTAL_LEFT:d=createEntry.posY-ak;f=createEntry.posX-v+createEntry.szeX;break;case MENU_HORIZONTAL_RIGHT:d=createEntry.posY-ak;break}break;case EXPAND_RIGHT:switch(createEntry.align){case MENU_VERTICAL_BOTTOM:break;case MENU_VERTICAL_TOP:f=createEntry.posX+createEntry.szeX;d=createEntry.posY+createEntry.szeY-aa;break;case MENU_HORIZONTAL_LEFT:alert('forbidden!!! right left');break;case MENU_HORIZONTAL_RIGHT:break}break;case EXPAND_BOTTOM:switch(createEntry.align){case MENU_VERTICAL_BOTTOM:break;case MENU_VERTICAL_TOP:alert('forbidden!!! bottom top');break;case MENU_HORIZONTAL_LEFT:d=createEntry.posY+createEntry.szeY;f=createEntry.posX+createEntry.szeX-v;break;case MENU_HORIZONTAL_RIGHT:d=createEntry.posY+createEntry.szeY;break}break}f+=createEntry.expOffsX;d+=createEntry.expOffsY;expander.style.width=v+'px';expander.style.height=aa+'px';expander.style.left=f+'px';expander.style.top=d+'px';expander.style.visibility='';applyEnterEffects(createEntry,0,true,false);}function leaveEntry(obj,id,event){var k=idMap[id];var root=k.root;disableHoverState(k);if(k.kill){clearTimeout(k.kill);k.kill=null}if((k.mvto=getTo(event)))root.entered=idMap[k.mvto=k.mvto.id];k.kill=setTimeout('killEntry(\''+id+'\');',leaveDelay);}function killEntry(id){var root=idMap[id].root;var c=idMap[id];var bl=idMap[c.mvto];c.kill=null;do{var parentEntry=c.parent;for(var as in c.entries){if(getObj(c.entries[as].id+'.container'))return}if(isLocked(c)){setLeaveEffect(c,HOOK_HOVERED,0);break}if(c.leavemode!=MODE_STAY){var af=setLeaveEffect(c,HOOK_HOVERED,0);if(af==BREAK_ABORT)break;if(af==BREAK_ONENTRY){leaveEntry(c.obj,c.id);break}if(parentEntry!=null){hideMenuBlock(c.expander,c,'sub');if(af==BREAK_ONBLOCK){leaveEntry(parentEntry.obj,parentEntry.id);break}}}}while((c=parentEntry)!=null);}function clickEntry(obj,id,event){var root=idMap[id].root;var clickedEntry;disableClickedState(root.clicked);clickedEntry=root.clicked=idMap[id];clickedEntry.obj=obj;enableClickedState(root.clicked);setClickEffect(root.clicked);leaveEntry(obj,id,event);}function completeMenuEntry(entry,parent,level,pfx){entry.level=level;entry.parent=parent;entry.root=parent.root;entry.id=parent.id+'.'+makeValidID(entry.name)+pfx;var at=0;for(var au in entry.entries)completeMenuEntry(entry.entries[au],entry,level+1,at++);idMap[entry.id]=entry}function completeMenuBlock(block){block.level=-1;block.parent=null;block.root=block;block.id=makeValidID(block.name);var av=0;for(var aw in block.entries)completeMenuEntry(block.entries[aw],block,0,av++);}function constructMenuEntry(entry){entry.html=entry.name;for(var ax in entry.entries)constructMenuEntry(entry.entries[ax]);}function constructMenuBlock(block){for(var ay in block.entries)constructMenuEntry(block.entries[ay]);}function showMenuExpander(baseid){return''+'<div'+' id="'+baseid+'.absolute"'+' style="'+'position: absolute;">'+'<div'+' id="'+baseid+'.expander"'+' style="'+'position: absolute; '+'z-index: 0; '+'width: auto; '+'height: auto; '+'left: 0px; '+'top: 0px;">'+'</div>'+'</div>'}function showMenuEntry(entry,classname){var floating='';switch(entry.parent.align){case MENU_HORIZONTAL_RIGHT:floating=' float: left;';break;case MENU_VERTICAL_BOTTOM:floating=' float: none;';break;case MENU_HORIZONTAL_LEFT:floating=' float: left;';break;case MENU_VERTICAL_TOP:floating=' float: none;';break}if(entry.classname!=null)classname=entry.classname;return''+'<div'+' id="'+entry.id+'"'+' class="'+classname+'"'+' style="cursor: pointer; white-space: nowrap;'+floating+'"'+' onmouseover="hoverEntry(this, this.id, event);"'+' onmouseout="leaveEntry(this, this.id, event);"'+' onclick="clickEntry(this, this.id, event);">'+entry.html+'</div>'}function hideMenuBlock(space,block,type){space.style.visibility='hidden';while(space.lastChild)space.removeChild(space.lastChild);space.style.width='auto';space.style.height='auto';space.style.left='0px';space.style.top='0px';block.hasBuild=false}function showMenuBlock(space,block,type){var az=space.style.visibility;var al='';var am='';var wrap=null;var b=null,g=0,i=0,ab=0,ac=0;switch(block.align){case MENU_HORIZONTAL_RIGHT:case MENU_HORIZONTAL_LEFT:wrap='white-space: nowrap;';break;case MENU_VERTICAL_BOTTOM:case MENU_VERTICAL_TOP:wrap='white-space: wrap;';break}for(var p in block.entries)am+=showMenuExpander(block.entries[p].id);space.style.visibility='hidden';space.innerHTML=''+'<div'+' id="'+block.id+'.relation"'+' style="'+'position: relative;">'+am+'<div'+' id="'+block.id+'.container"'+' style="'+'position: relative;"'+'width: auto; '+'height: auto; '+wrap+'">'+'</div>'+'</div>';var an=getObj(block.id+'.relation');var container=getObj(block.id+'.container');for(var p in block.entries){b=block.entries[p];al+=container.innerHTML=showMenuEntry(b,type+'entry');b.obj=getObj(b.id);g=Math.max(g,getWidth(b));i=Math.max(i,getHeight(b));enableHoverState(b);g=Math.max(g,getWidth(b));i=Math.max(i,getHeight(b));disableHoverState(b);enableClickedState(b);g=Math.max(g,getWidth(b));i=Math.max(i,getHeight(b));disableClickedState(b);}container.innerHTML=al;switch(block.align){case MENU_VERTICAL_BOTTOM:case MENU_VERTICAL_TOP:ab=g;break;case MENU_HORIZONTAL_LEFT:case MENU_HORIZONTAL_RIGHT:ac=i;break}for(var p in block.entries){b=block.entries[p];b.obj=getObj(b.id);b.expander=getObj(b.id+'.expander');b.container=container;b.parent=block;switch(block.align){case MENU_VERTICAL_BOTTOM:case MENU_VERTICAL_TOP:b.obj.style.width=g+'px';var ba=g-getWidth(b);b.obj.style.width=g+ba+'px';ac+=getHeight(b);break;case MENU_HORIZONTAL_LEFT:case MENU_HORIZONTAL_RIGHT:b.obj.style.height=i+'px';var bb=i-getHeight(b);b.obj.style.height=i+bb+'px';ab+=getWidth(b);break}b.visible=true;b.posX=getLeft(b);b.posY=getTop(b);b.szeX=getWidth(b);b.szeY=getHeight(b);}space.style.width=an.style.width=container.style.width=ab+'px';space.style.height=an.style.height=container.style.height=ac+'px';block.maxWidth=g;block.maxHeight=i;block.sumWidth=ab;block.sumHeight=ac;block.hasBuild=true;space.style.visibility=az;}function processMenuBlocks(blocks){for(var n in blocks)completeMenuBlock(blocks[n]);for(var n in blocks)constructMenuBlock(blocks[n]);for(var n in blocks)showMenuBlock(getObj(blocks[n].id),blocks[n],'block');}