
CompleteMenuSolution=function(){var self=this;var menuId=null;var dependencies=[];var transitions=[];var modifiers=[];var menuOptions={'theme':{'name':'','options':{}},'transitions':{},themeRootPath:null,maxDepth:0,forceSkipTransitions:false,interval:3,length:100,openTimeout:0,closeTimeout:0,toggleMenuOnClick:false,closeSiblings:true,incrementalConvert:true,handlers:{onOpen:[],onClose:[],onChangeState:[]},dummy:null};var cssClasses={'root':'CmsListMenu','folder':'CmsMenuItemFolder','folderOpen':'CmsMenuItemFolderExpanded','folderClosed':'CmsMenuItemFolderCollapsed','menuItem':'CmsMenuItemFile','evenLevel':'CmsMenuItemEvenLevel','oddLevel':'CmsMenuItemOddLevel','menuLevel':'CmsMenuItemLevel'}
var keys={'cmsSelf':'__cmsSelf','openFlag':'__isOpen','interval':'__interval','timeout':'__timeout','isRoot':'__isRoot','isFolder':'__isFolder','parentNode':'__parentNode','submenu':'__submenu','menuLevel':'__menuLevel','activator':'__activator'}
var ___________________________Publis____________________________;this.setMenuOption=function(n,v){if(menuOptions[n]&&typeof menuOptions[n]!=typeof v)return false;menuOptions[n]=v;return true;}
this.initMenu=function(mid,options){menuId=mid;menuOptions.merge(options);loader.init();convertMenuById();}
this.getThemePath=function(skin){if(!/^[-a-z0-9\/]*$/.test(name.toLowerCase()))return false;var sp=menuOptions.theme.name.split('/');return gluePath(menuOptions.themeRootPath?menuOptions.themeRootPath:gluePath(self.cmsRoot,'templates'),(skin?menuOptions.theme.name:sp[0]));}
this.reinitSubmenu=function(el){if(!el||!el.tagName)return;var omd=menuOptions.maxDepth;switch(el.tagName.toLowerCase()){case"li":menuOptions.maxDepth=el[keys['parentNode']][keys['menuLevel']]+2;convertMenu(el[keys['submenu']],el[keys['parentNode']][keys['menuLevel']]+1);break;}
menuOptions.maxDepth=omd;}
var ______________________________Privates________________________________;var loader=new function(){var ls=this;var head=document.getElementsByTagName('head')[0];var applySS=function(sn){if(!isUndefined(self.loadedStylesheets[sn]))return;head.appendChild(document.createElementExt('link',{'param':{'rel':'stylesheet','type':'text/css','href':sn}}));self.loadedStylesheets[sn]=true;}
var applyJS=function(sn){if(!isUndefined(self.loadedJS[sn]))return;head.appendChild(document.createElementExt('script',{'param':{'type':'text/javascript','defer':true,'src':sn}}));self.loadedJS[sn]=true;}
this.transitionOnload=function(name,cntr){if(cntr>=10000){self.transition[name]=true;return;}if(!self.transition[name]){setTimeout(function(){ls.transitionOnload(name,cntr+10)},10);return;}transitions[transitions.length]=self.transition[name];if('function'==typeof self.transition[name].init)self.transition[name].init.call(self.transition[name],menuOptions,cssClasses,keys);}
this.themeOnload=function(name){transitions=[self.transition['default']];for(var i in menuOptions.transitions){if(!menuOptions.transitions.hasOwnProperty(i))continue;if(!self.transition[i])applyJS(gluePath(self.cmsRoot,'transitions',i+'.js'));playTimeout(this.transitionOnload,1,[i,0]);}
if(menuOptions.modifiers&&menuOptions.modifiers.length>0){for(var i=0,tL=menuOptions.modifiers.length;i<tL;i++){if(!self.modifier[menuOptions.modifiers[i]]){if(isUndefined(self.modifier[menuOptions.modifiers[i]]))self.modifier[menuOptions.modifiers[i]]=menuOptions.modifiers[i];applyJS(gluePath(self.cmsRoot,'modifiers',menuOptions.modifiers[i]+'.js'));}
dependencies[dependencies.length]=['modifier',menuOptions.modifiers[i]];modifiers.push(menuOptions.modifiers[i]);}}}
this.init=function(){applySS(gluePath(self.getThemePath(),'layout.css'));applySS(gluePath(self.getThemePath(true),'design.css'));applyJS(gluePath(self.getThemePath(),'template.js'));var sp=menuOptions.theme.name.split('/');if(isUndefined(self.theme[sp[0]]))self.theme[sp[0]]=sp[0];dependencies[dependencies.length]=['theme',sp[0]];}}
var menuItemInOut=function(e){var el=getParent(e.srcElement||e.target,'li');while(el&&!el[keys['parentNode']])self.reinitSubmenu(getParent(el,keys['isFolder'],true));if(!el)return;while(!el[keys['isRoot']]){if(el[keys['isFolder']]){clearTimeout(el[keys['timeout']]);switch(e.type.toLowerCase()){case'mouseover':el[keys['timeout']]=playTimeout(playOpenClose,menuOptions.openTimeout,[el,'open']);break;case'mouseout':if(parseInt(menuOptions.closeTimeout))el[keys['timeout']]=playTimeout(playOpenClose,menuOptions.closeTimeout,[el,'close']);break;}}
el=el[keys['parentNode']];}}
var menuItemClick=function(e){var el=getParent(e.srcElement||e.target,'li');while(el&&!el[keys['parentNode']])self.reinitSubmenu(getParent(el,keys['isFolder'],true));if(!el)return;if(!el[keys['isFolder']]||(el[keys['submenu']][keys['interval']]&&el[keys['submenu']][keys['interval']].interval))return;clearTimeout(el[keys['timeout']]);playOpenClose(el,'toggle');}
var playOpenClose=function(el,flag){var isOpen,i,player;if(flag!='toggle'&&el[keys['openFlag']]==(flag=='open'))return;switch(flag.toLowerCase()){case'open':flag='Open';break;case'close':flag='Close';break;case'toggle':flag=el[keys['openFlag']]?'Close':'Open';break;default:return;}
callEventHandlers(el,flag);if(null==el[keys['submenu']][keys['menuLevel']])self.reinitSubmenu(el);isOpen=el[keys['openFlag']]=(flag=='Open');if(menuOptions['closeSiblings']&&isOpen)
for(i=0,sL=el[keys['parentNode']][keys['submenu']].length;i<sL;i++)
if(el[keys['parentNode']][keys['submenu']][i][keys['openFlag']]&&el[keys['parentNode']][keys['submenu']][i]!=el)
playOpenClose(el[keys['parentNode']][keys['submenu']][i],'close');el=el[keys['submenu']];player=function(el,t,e){var i,tL=t.length,eL=e.length;var dt=(new Date).valueOf();el[keys['interval']].pg=Math.round(el[keys['interval']].pg+(dt-el[keys['interval']].start)*100/menuOptions.length);el[keys['interval']].start=dt;if(el[keys['interval']].pg>100)el[keys['interval']].pg=100;el[keys['interval']].pg_delta=el[keys['interval']].pg/100;for(i=0;i<tL;i++){if(null==t[i])continue;if(!t[i][0].call(t[i][1],el,menuOptions,cssClasses,keys)){t.splice(i,1);i--;tL--;}}
if(0==t.length){for(i=0;i<eL;i++)e[i][0].call(e[i][1],el,menuOptions,cssClasses,keys);clearInterval(el[keys['interval']].interval);el[keys['interval']].interval=false;menuOptions['forceSkipTransitions']=false;}}
if(el[keys['interval']]){clearInterval(el[keys['interval']].interval);el[keys['interval']].pg=100-el[keys['interval']].pg;el[keys['interval']].pg_delta=el[keys['interval']].pg/100;}else{el[keys['interval']]={'pg':0,'pg_delta':0}}
for(i=0,mL=transitions.length;i<mL;i++){}
var f,t=[],e=[];for(i=0,mL=transitions.length;i<mL;i++){f=transitions[i]['init'+flag];if(typeof f=='function')f.call(transitions[i],el,menuOptions,cssClasses,keys);f=transitions[i]['play'+flag];if(!menuOptions['forceSkipTransitions']&&typeof f=='function')t[t.length]=[f,transitions[i]];f=transitions[i]['finish'+flag];if(typeof f=='function')e[e.length]=[f,transitions[i]];}
el[keys['interval']].start=(new Date).valueOf();el[keys['interval']].interval=setInterval(function(){player(el,t,e)},menuOptions.interval);}
var callEventHandlers=function(el,flag){if(!menuOptions.handlers)return;var _call=function(el,h){if(menuOptions.handlers[h]instanceof Array){for(var i=0,mL=menuOptions.handlers[h].length;i<mL;i++){try{menuOptions.handlers[h][i][1].call(menuOptions.handlers[h][i][0],el,keys,cssClasses,menuOptions);}catch(e){}}}}
var h='on'+flag;_call(el,h);_call(el,'onChangeState');}
var convertMenu=function(el,level){if(menuOptions['maxDepth']&&level>menuOptions['maxDepth']-1)return;el[keys['menuLevel']]=level;var dummy=document.createElement('div');el.parentNode.replaceChild(dummy,el);level++;el[keys['submenu']]=[];for(var i=0,cL=el.childNodes.length;i<cL;i++){if(!el.childNodes[i].tagName||el.childNodes[i].tagName.toLowerCase()!='li')continue;el[keys['submenu']][el[keys['submenu']].length]=el.childNodes[i];el.style.display='';el.childNodes[i][keys['parentNode']]=el;convertMenuItem(el.childNodes[i],level);var tmp=el.childNodes[i].className.split(' ');if(!isUndefined(el.childNodes[i][keys['submenu']])){tmp[tmp.length]=cssClasses['folder'];if(tmp.indexOf(cssClasses['folderClosed'])<0&&tmp.indexOf(cssClasses['folderOpen'])<0)
tmp[tmp.length]=cssClasses['folderClosed'];el.childNodes[i][keys['isFolder']]=true;}else{tmp[tmp.length]=cssClasses['menuItem'];el.childNodes[i][keys['isFolder']]=false;}
tmp[tmp.length]=cssClasses['menuLevel']+level;tmp[tmp.length]=cssClasses[level%2?'evenLevel':'oddLevel'];el.childNodes[i].className=tmp.join(' ');el.childNodes[i][keys['openFlag']]=(tmp.indexOf(cssClasses['folderOpen'])>-1);for(var mod=0,smL=modifiers.length;mod<smL;mod++){if(self.modifier[modifiers[mod]].runat!='li')continue;self.modifier[modifiers[mod]].mod.call(self.modifier[modifiers[mod]],el.childNodes[i],keys,cssClasses,menuOptions);}
var a=el.childNodes[i].firstChild;while(null!=a&&a.tagName.toLowerCase()!='a')a=a.nextSibling;if(a){el.childNodes[i][keys['activator']]=a;a[keys['parentNode']]=el.childNodes[i];for(var mod=0,smL=modifiers.length;mod<smL;mod++){if(self.modifier[modifiers[mod]].runat!='a')continue;self.modifier[modifiers[mod]].mod.call(self.modifier[modifiers[mod]],a,keys,cssClasses,menuOptions);}}}
dummy.parentNode.replaceChild(el,dummy);dummy=null;}
var convertMenuItem=function(el,level){for(var i=0,cL=el.childNodes.length;i<cL;i++){if(!el.childNodes[i].tagName||el.childNodes[i].tagName.toLowerCase()!='ul')continue;el.childNodes[i][keys['openFlag']]=false;el[keys['submenu']]=el.childNodes[i];el.childNodes[i][keys['parentNode']]=el;if(!menuOptions.incrementalConvert||el.className.indexOf(cssClasses['folderOpen'])>-1)convertMenu(el[keys['submenu']],level)
for(var mod=0,smL=modifiers.length;mod<smL;mod++){if(self.modifier[modifiers[mod]].runat!='ul')continue;self.modifier[modifiers[mod]].mod.call(self.modifier[modifiers[mod]],el.childNodes[i],keys,cssClasses,menuOptions);}}}
var convertMenuById=function(){var el=document.getElementById(menuId)
if(!el||!dpdLoaded()){setTimeout(convertMenuById,10);return}
var tmp=el.className.split(" ");tmp[tmp.length]=cssClasses.root;var n=menuOptions.theme.name.split("/");var s="";for(var i=0,nL=n.length;i<nL;i++){s+=n[i];tmp[tmp.length]=cssClasses.root+s;}
el.className=tmp.join(" ");el[keys['isRoot']]=true;convertMenu(el,-1);if(menuOptions.openTimeout){el.attachEvent('onmouseover',menuItemInOut);el.attachEvent('onmouseout',menuItemInOut);}
if(!menuOptions.openTimeout||menuOptions.toggleMenuOnClick)el.attachEvent('onmouseup',menuItemClick);el.style.display='';for(var mod=0,smL=modifiers.length;mod<smL;mod++){if(self.modifier[modifiers[mod]].runat!='root')continue;self.modifier[modifiers[mod]].mod.call(self.modifier[modifiers[mod]],el,keys,cssClasses,menuOptions);}
el[keys['cmsSelf']]=self;}
var dpdLoaded=function(){var i,dL=dependencies.length,dp;for(i=0;i<dL;i++){if(isNaN(dependencies[i][3]))dependencies[i][3]=0;dp=self[dependencies[i][0]][dependencies[i][1]];if('string'!=typeof dp){if(dp.menuOptions)menuOptions.merge(dp.menuOptions,false);if(dp.init)dp.init.call(dp,menuOptions,cssClasses,keys);if(loader[dependencies[i][0]+'Onload'])loader[dependencies[i][0]+'Onload'](dependencies[i][1]);dependencies.splice(i,1);i--;dL--;}else if(dependencies[i][3]>=10000){throw Error("Resource could not be loaded: "+dependencies[i][0]+" - "+dependencies[i][1]);}else{dependencies[i][3]+=10;}}
return!dependencies.length;}}
CompleteMenuSolution.prototype.cmsRoot=findPath('cms.js');CompleteMenuSolution.prototype.loadedStylesheets={};CompleteMenuSolution.prototype.loadedJS={};CompleteMenuSolution.prototype.theme={};CompleteMenuSolution.prototype.transition={'default':{'initOpen':function(el,mo,cssClasses,keys){el=el[keys['parentNode']];var tmp=el.className.split(" ");var idx=tmp.indexOf(cssClasses.folderClosed);if(idx>-1)tmp.splice(idx,1);idx=tmp.indexOf(cssClasses.folderOpen);if(idx==-1)tmp[tmp.length]=cssClasses.folderOpen;el.className=tmp.join(" ");},'finishClose':function(el,mo,cssClasses,keys){el=el[keys['parentNode']];var tmp=el.className.split(" ");var idx=tmp.indexOf(cssClasses.folderOpen);if(idx>-1)
tmp[idx]=cssClasses.folderClosed;else
tmp[tmp.length]=cssClasses.folderClosed;el.className=tmp.join(" ");}}};CompleteMenuSolution.prototype.modifier={};CompleteMenuSolution.prototype.requires=['extensions/helpers.js','extensions/objectextensions.js','extensions/functionextensions.js','extensions/arrayextensions.js','extensions/domextensions.js'];for(var i=0,cL=CompleteMenuSolution.prototype.requires.length;i<cL;i++){document.write("<scr"+"ipt type=\"text/javascript\" src=\""+CompleteMenuSolution.prototype.cmsRoot+CompleteMenuSolution.prototype.requires[i]+"\" ></script>");}
function findPath(sname){var sc=document.getElementsByTagName('script'),sr=new RegExp('^(.*/|)('+sname+')([#?]|$)');for(var i=0,scL=sc.length;i<scL;i++){var m=String(sc[i].src).match(sr);if(m){if(m[1].match(/^((https?|file)\:\/{2,}|\w:[\\])/))return m[1];if(m[1].indexOf("/")==0)return m[1];b=document.getElementsByTagName('base');if(b[0]&&b[0].href)return b[0].href+m[1];else return document.location.pathname.match(/(.*[\/\\])/)[0]+m[1];}}
return null;}