cms_inittab.push(function() {
	var Dom=YAHOO.util.Dom;
	var Event=YAHOO.util.Event;
	var avtab={},cvtab={},tvtab={},lytab={},mtab={},ovtab={},wbtab={};
	var parently=null;

	cmslib.foreachplugin("layout",function(el,tabcfg) {
		// TODO: geschachtelte Layouts, Problem mit close-Button und so
		var elid=el.id;
		var cfg={
			units: [],
			xwidth:Dom.getRegion(el.parentNode).width,
			xheight:300
		 };
		if ( tabcfg.scripted.layout )
		{
			var stylesheet=new YAHOO.util.StyleSheet('css-specials');
			stylesheet.set('#'+el.id+' .layout-hidden',{display:'none'});
			var papavonel=el.parentNode;
			function mklu(elid,unit)
			 {
				var props=tabcfg["props"+unit];
				var c = { 
					position: unit, 
					width: parseInt(tabcfg["width"+unit]||"120"), 
					height: parseInt(tabcfg["height"+unit]||"120"), 
					body: 'cont-'+elid+'-'+unit+'-bd', 
					gutter: tabcfg["gutter"+unit] || '0px', 
					collapse: props.collapse, 
					resize: props.resize, 
					close:props.close,
					animate:props.animate,
					scroll:props.scroll || (props.overlap ? null : false)
				 }
				if ( props.footer )
					c.footer='cont-'+elid+'-'+unit+'-ft';
				if ( props.header )
					c.header=tabcfg["headertext"+unit];
				if ( props.resize && /\d/.test(tabcfg["minheight"+unit]) )
					c.minHeight=parseInt(tabcfg["minheight"+unit])
				if ( props.resize && /\d/.test(tabcfg["maxheight"+unit]) )
					c.maxHeight=parseInt(tabcfg["maxheight"+unit])
				if ( props.resize && /\d/.test(tabcfg["minwidth"+unit]) )
					c.minWidth=parseInt(tabcfg["minwidth"+unit])
				if ( props.resize && /\d/.test(tabcfg["maxwidth"+unit]) )
					c.maxWidth=parseInt(tabcfg["maxwidth"+unit])
				return c;
			 }
			
			if ( tabcfg.propstop.activated )
				cfg.units.push(mklu(elid,"top"));
			if ( tabcfg.propsbottom.activated )
				cfg.units.push(mklu(elid,"bottom"));
			if ( tabcfg.propsleft.activated )
				cfg.units.push(mklu(elid,"left"));
			if ( tabcfg.propsright.activated )
				cfg.units.push(mklu(elid,"right"));
			cfg.units.push(mklu(elid,"center"));
			
			var ly;
			if(tabcfg.position=="ganzseitig")
			{
				if ( parently )
				{
					cfg.parent=parently;
					ly=new YAHOO.widget.Layout(Dom.getAncestorByClassName(el,"yui-layout-unit")||el,cfg);
					parently=ly;
					ly.render();
				}
				else
				{
					ly=new YAHOO.widget.Layout(cfg);
					parently=ly;
					ly.render();
					// var wrap=ly._doc;
					// var cmstemplate=Dom.get('cms_template');
					// cmstemplate.appendChild(wrap);
				}
			}
			else
			{
				ly=new YAHOO.widget.Layout(el,cfg);
				ly.render();
			}
			//papavonel.appendChild(ly._doc);
			el.appendChild(ly._doc);
			if ( tabcfg.propscenter.scroll )
			{
				var contel=Dom.get('cont-'+el.id+'-center-bd');
				ly.getUnitByPosition('center').on("resize",function () {
					Dom.setStyle(contel,'width',this.get('width')-19);
				 });
				ly.getUnitByPosition('center').fireEvent("resize");
			}
			ly.fireEvent("resize");
			lytab[el.id]=ly;
		}
		if ( tabcfg.scripted.overlay )
		{
			var ov=new YAHOO.widget.Overlay(el.id, {
				width:'800px',
				height:'600px',
				//fixedcenter:true,
				context:[document.body,"br","br",["beforeShow", "windowResize"]],
				constraintoviewport:true
			 });
			ov.render();
			ovtab[el.id]=ov;
		}
		
	 });
	cmslib.sync.notify("layout",{layouts:lytab,overlays:ovtab});
	
	cmslib.foreachplugin("bhv-design-menuhor",function(el,tabcfg) {
		if ( !Dom.hasClass(el,"yuimenubar") || !cms_data[el.id+'-ul-men'] )
			return;
		var mt=new YAHOO.widget.MenuBar(el, {
			autosubmenudisplay:true,
			hidedelay:750,
			lazyload:false
		 });
		var submen=cms_data[el.id+'-ul-men'];
		var refmen={};
		for ( var ism=0 ; ism<submen.length ; ++ism )
			refmen[cms_pgaliasref[submen[ism].ziel]||submen[ism].ziel]=submen[ism];
		var menitems=mt.getItems();
		for ( var imi=0 ; imi<menitems.length ; ++imi )
		{
			var pg=menitems[imi].cfg.getProperty("url");
			var sub=refmen[pg].submen;
			if ( sub.length>0 )
			{
				var smen=new YAHOO.widget.Menu(Dom.generateId());
				for ( var ismen=0 ; ismen<sub.length ; ++ismen )
					smen.addItem({text:sub[ismen].jsn.menutitle,url:sub[ismen].ziel});
				menitems[imi].cfg.setProperty("submenu",smen);
			}
		}
		cmslib.unload.register(mt);
		mt.render();
		mtab[el.id]=mt;
	 });
	cmslib.sync.notify("menuhor",tvtab);
	
	cmslib.foreachplugin("bhv-special-tabview",function(el,tabcfg) {
		var tv=new YAHOO.widget.TabView(el,tabcfg);
		cmslib.unload.register(tv);
		tv.set("activeIndex",0);
		var tabs=tv.get("tabs");
		/*for ( var it=0 ; it<tabs.length ; ++it )
			tabs[it].set("activationEvent","mouseover")*/
		tvtab[el.id]=tv;
	 });
	cmslib.sync.notify("tabview",tvtab);
	
	cmslib.foreachplugin("bhv-special-accordion",function(el,avcfg) {
		if ( typeof avcfg.effect == 'string' )
			avcfg.effect=YAHOO.util.Easing[avcfg.effect];
		avcfg.expandItem=parseInt(avcfg.expandItem);
		if ( isNaN(avcfg.expandItem) )
			avcfg.expandItem=0;
		avcfg.animationSpeed=parseFloat(avcfg.animationSpeed);
		if ( isNaN(avcfg.animationSpeed) )
			avcfg.animationSpeed=0.7;
		avcfg.hoverTimeout=parseInt(avcfg.hoverTimeout);
		if ( isNaN(avcfg.hoverTimeout) )
			avcfg.hoverTimeout=0;
		var ul=el.getElementsByTagName("UL")[0];
		var av=new YAHOO.widget.AccordionView(ul,avcfg); /*||{
			expandItem:0,
			expandable:false,
			collapsible:true,
			width:"",
			animationSpeed:0.3,
			animate:true,
			effect:YAHOO.util.Easing.backOut,
			hoverActivated:true,
			hoverTimeout:200
		 });*/
		cmslib.unload.register(av);
		avtab[el.id]=av;
	 });
	cmslib.sync.notify("accordionview",avtab);
	
	cmslib.foreachplugin("bhv-special-carousel",function(el,cvcfg) {
		var cmsmode=window.parent!=window && window.parent.cms;
		if ( !cvcfg )
			cvcfg={numVisible:''};
		if ( !cvcfg.flags )
			cvcfg.flags={isCircular:cvcfg.isCircular||false,isVertical:cvcfg.isVertical||false,blend:cvcfg.blend||false};
		var cfg = {
			//numVisible:1,	// [2,3]
			isCircular:cvcfg.flags.isCircular,
			isVertical:cvcfg.flags.isVertical,
			//blend:cvcfg.flags.blend,
			scrollIncrement:1//,
			//navigation:{prev:null,next:null},
			//revealAmount:0,
			//animation:{speed:1,effect:YAHOO.util.Easing.easeOut},
			//autoPlayInterval:3000,
			
		 }
		var nv=cvcfg.numVisible.split(/\D+/);
		var nvx=parseInt(nv[0]);
		if ( isNaN(nvx)||nvx==0 )
			nvx=1;
		if ( nv.length>1 )
		{
			var nvy=parseInt(nv[1]);
			if ( isNaN(nvy)||nvy==0 )
				nvy=1
			cfg.numVisible=[nvx,nvy];
		}
		else
			cfg.numVisible=nvx;
		var ra=parseInt(cvcfg.revealAmount);
		cfg.revealAmount=isNaN(ra)?0:ra;
		var as=parseInt(cvcfg.animationspeed);
		if ( isNaN(as) )
			cfg.animation=null;
		else
			cfg.animation={speed:as/1000,effect:YAHOO.util.Easing.easeOut}
		var api=parseInt(cvcfg.autoPlayInterval);
		if ( !isNaN(api) )
			cfg.autoPlayInterval=api;
		var stylesheet=new YAHOO.util.StyleSheet('css-specials');
		var parentbox=Dom.getRegion(el);
		var ol=Dom.getChildren(el)[0];
		var lis=Dom.getChildren(ol);
		var wmax=parseInt(cvcfg.width);
		if ( isNaN(wmax) )
			wmax=Dom.getRegion(el).width;
		var hmax=parseInt(cvcfg.height);
		if ( !isNaN(hmax) && hmax>0 )
			hmax=cvcfg.height;
		else
		{
			function getrekheight(el)
			 {
				if ( !el || el.nodeType!==1 )
					return 0;
				var cl=Dom.getChildren(el);
				var m=0;
				for( var il=0; il<cl.length; ++il)
				{
					if ( cl[il].nodeType!=1 )
						continue;
					else
						m=Math.max(m,Dom.getRegion(cl[il]).height,getrekheight(cl[il]));
				}
				return m;
			 }
			if ( YAHOO.env.ua.ie && YAHOO.env.ua.ie<8 )
			{
				hmax=0;
				for ( var ili=0 ; ili<lis.length ; ++ili )
					hmax=Math.max(hmax,Dom.getRegion(lis[ili]).height);
			}
			else
				hmax=getrekheight(el);
		}
		stylesheet.set('#'+el.id+' li.'+el.id,{width:wmax+'px', height:hmax+'px', margin:'0px', border:'0px'});
		if ( cvcfg.flags.isVertical )
			stylesheet.set('#'+el.id+' .yui-carousel-nav ul',{"float":"right",marginLeft:"-170px"});
		
		if ( cvcfg.nav=='none' && cmsmode )
			cvcfg.nav='blend';
		if ( cvcfg.nav=='blend' || cvcfg.nav=='none' )
		{
			stylesheet.set('#'+el.id,{position:"relative"});
			stylesheet.set('#'+el.id+' div.yui-carousel-nav',{display:'none',position:"absolute",top:'0px',zIndex:'1'});
			//stylesheet.set('#'+el.id+' .yui-carousel-nav ul',{background:"white",border:"1px #bbb solid",paddingTop:'0px'});
		}
		//alert(stylesheet.getCssText());
		var cv=new YAHOO.widget.Carousel(el,cfg);
		cv.STRINGS.PAGER_PREFIX_TEXT='Seite - ';
		cv.render();
		if ( window.parent!=window && window.parent.cms )
		{
			cv.removeListener("keydown");
			cv.removeListener("click");
		}
		//cv.registerPagination('(({currentPage}))');
		window.setTimeout(function(){
			if ( cvcfg.nav=='blend' )
			{
				;//stylesheet.set('#'+el.id+' div.yui-carousel-nav',{display:'block'});
				var nav=null,cont=null;
				for(var elkid=el.firstChild ; elkid ; elkid=elkid.nextSibling)
				{
					if ( Dom.hasClass(elkid,"yui-carousel-nav") )
						nav=elkid;
					else if ( Dom.hasClass(elkid,"yui-carousel-content") )
						cont=elkid;
					
				}
				if ( nav && cont )
				{
					var cdim=Dom.getRegion(cont);
					Dom.setStyle(el,"height",cdim.height+'px')
					Dom.setStyle(nav,"width",wmax+'px')
					Event.addListener(el,"mouseover",function(e,a,o){Dom.setStyle(nav,'display','block')});
					Event.addListener(el,"mouseout",function(e,a,o){Dom.setStyle(nav,'display','none')});
				}
			}
			if ( cvcfg.flags.blend )
			{
				stylesheet.set('#'+el.id,{position:'relative'});
				stylesheet.set('#'+el.id+' li.'+el.id,{position:'absolute',left:'0px',top:'0px'});
				 // var cdiv1=Dom.getChildren(el);
				 // for( var cdiv=el.firstChild ; cdiv && (cdiv.nodeType!=1 || !Dom.hasClass(cdiv,"yui-carousel-content")) ; cdiv=cdiv.nextSibling )
				 // 	;
				 // for ( var ol=cdiv.firstChild ; ol && (ol.nodeType!=1 || ol.tagName.toLowerCase()!="ol") ; ol=ol.nextsibling )
				 // 	;
				//var lit=Dom.getChildren(Dom.getChildren(Dom.getChildren(el)[1])[0]);
				 // var lit=[];
				 // for ( var olli=0 ; olli ; olli=olli.nextSibling )
				 // 	if ( olli.nodeType==1 && olli.tagName.toLowerCase()=="li" )
				 // 		lit.push(olli);
				//for ( var ali=el.firstChild.nextSibling.firstChild.firstChild.nextSibling ; ali ; ali=ali.nextSibling )
				for ( var ili=1 ; ili<lis.length ; ++ili )
				{
					var ali=lis[ili];
					Dom.setStyle(ali,"top","");
					Dom.setStyle(ali,"left","");
					Dom.setStyle(ali,"opacity",0);
					Dom.setStyle(ali,"visibility","hidden");
				}
				cv._animateAndSetCarouselOffset=function(offset,item,sentinel) {
					var carousel=this;
					var fromitem=this.getElementForItem(this.get("selectedItem"));
					var toitem=this.getElementForItem(item);
					var anim1=new YAHOO.util.Anim(fromitem,{opacity:{to:0}},cfg.animation&&cfg.animation.speed,cfg.animation&&cfg.animation.effect);
					var anim2=new YAHOO.util.Anim(toitem,{opacity:{to:1}},cfg.animation&&cfg.animation.speed,cfg.animation&&cfg.animation.effect);
					anim1.onComplete.subscribe(function(){
						carousel._animationCompleteHandler.apply(this,arguments);
						Dom.setStyle(fromitem,"opacity","");
						Dom.setStyle(fromitem,"visibility","hidden");
					 },
                                         { scope: carousel, item: item, last: sentinel });
					Dom.setStyle(toitem,"opacity",0);
					Dom.setStyle(toitem,"visibility","visible");
					anim1.animate();
					anim2.animate();
					//alert('animateAndSetCarouselOffset(...)');
				 }
			}
			Dom.removeClass(el,"cms-hidden");
			if ( !isNaN(api) && !cmsmode )
				cv.startAutoPlay();
		 },0);
		cmslib.unload.register(cv);
		cvtab[el.id]=cv;
	 });
	cmslib.sync.notify("carousel",cvtab);
	
});
document.write('<style id="css-specials">.cms-hidden {visibility:hidden;}</style>');

