function __(str,repl)
 // __("Willommen im schönen Österreich")
 // __("willk","Willommen im schönen Österreich") // "willk": Kurzschlüssel in Sprachdatei
 {
	return typeof cms_lang == 'object' && cms_lang[str] ? cms_lang[str] : repl ? repl : str;
 }

cmslib=function(){
	var dialoge={};
	//var Dom=null;
	//var Event=null;
	//var JSON=null;
	var imgdlg=null,imgdlgsrc=null,imgdlgalt=null,swfdlg=null,waitdlg=null,waitdlgtim=null;;
	
	function send(obj,onerror,onok)	// benötigt YUI: connect,json
	 {
		function onsuccess(o)
		 {
			if (typeof onok == "function")
				onok(o.responseText);
		 }
		function onfailure(o)
		 {
			var errormsg=typeof onerror=="string" ? onerror : "Fehler bei der Übertragung";
			if (typeof onerror == "function")
				onerror(o);
			else
				alert(errormsg);
		 }
		 YAHOO.util.Connect.asyncRequest('POST', (window.cms?'':'../../')+'update.asp', {
							success: onsuccess,
							failure: onfailure,
							timeout: 30000
							}, YAHOO.lang.JSON.stringify(obj));
	 }
	function refreshcss(file)
	 {
		var stcoll=document.styleSheets;
		for ( var i=0 ; stcoll && i<stcoll.length ; ++i )
		{
			if ( stcoll(i).href == file)
			{
				stcoll(i).href=file+"?"+new Date().getTime();
				break;
			}
		}
		if ( !stcoll || i==stcoll.length )
			YAHOO.util.Get.css(file);
	 }
	function setstyles(el,styles)
	 {
		var styles=(styles||'').split(/[;\r]\s*/);
		for ( var is=0 ; is<styles.length ; ++is )
		{
			var st=styles[is].split(/\s*:\s*/);
			if ( st.length>1 || st[0]!='' )
				Dom.setStyle(el,st[0],st[1]);
		}
	 }
	
	
	var dialogstack = function()
	 {
		var stack=[];
		return {
			push_and_show:function (dlgobj)
			 {
				if ( stack.length>0 )
				{
					//stack[stack.length-1].hide();
					// var topzindex=Dom.getStyle(stack[stack.length-1].element,"zIndex");
					// Dom.setStyle(dlgobj.element,"zIndex",topzindex+1);
					dlgobj.bringToTop();
					var kltab=stack[stack.length-1].cfg.getProperty("keylisteners")||[];
					for ( var ik=0 ; ik<kltab.length ; ++ik )
						kltab[ik].disable();
					stack[stack.length-1]._removeFocusHandlers();
				}
				stack.push(dlgobj);
				dlgobj.show();
			 },
			hide_and_pop:function ()
			 {
				if ( stack.length==0 )
					return;
				stack[stack.length-1].hide();
				stack.pop();
				if ( stack.length>0 )
				{
					var kltab=stack[stack.length-1].cfg.getProperty("keylisteners")||[];
					for ( var ik=0 ; ik<kltab.length ; ++ik )
						kltab[ik].enable();
					stack[stack.length-1]._addFocusHandlers();
					//stack[stack.length-1].show();
				}
			 },
			is_top_dialog:function (dlgobj)
			 {
				return stack.length>0 && stack[stack.length-1]===dlgobj;
			 }
			 
		 }
	 }();
	 
	var subtypes = {
		editor:"textarea",
		autocomplete:"text",
		properties:"table"
	 }

	 
	return {
		stopEvent:false,	// workaround für click-Behandlung von Links
		unload:function(){
			var destroytab=[];
			return {
				purgeElement: function(el,flg)
				 {
					//cms.expand[el.id]=null;
					//var gschrappen=Dom.getChildren(el);
					if ( false ) // flg )
					{
						for ( var ig=0 ; ig<gschrappen.length ; ++ig )
							this.purgeElement(gschrappen[ig],flg);
					}
					Event.purgeElement(el,flg);
					//Event.purgeElement(el,false);
				 },
				register:function(obj)
				 {
					//alert('register: '+obj);
					for (var i=0; i<destroytab.length && destroytab[i]!=obj; ++i)
						;
					if (i==destroytab.length)
						destroytab.push(obj);
				 },
				unregister:function(obj)
				 {
					for (var i=0; i<destroytab.length && destroytab[i]!=obj; ++i)
						;
					if (i<destroytab.length)
						destroytab.splice(i,1);
				 },
				destroy:function(obj)
				 {
					for (var i=0; i<destroytab.length && destroytab[i]!=obj; ++i)
						;
					if (i<destroytab.length)
						destroytab.splice(i,1);
					if (typeof obj.destroy=='function')
						obj.destroy();
				 },
				destroyall:function()
				 {
					//alert("destroying "+destroytab.length+" objects");
					for (var i=destroytab.length-1; i>=0; --i)
					{
						try
						{
							if (YAHOO.lang.isFunction(destroytab[i].destroy))
							{
								destroytab[i].destroy();
								//alert(destroytab[i])
								destroytab[i]=null;
							}
						}
						catch(ex)
						{
							//alert("CATCH (cmslib.unload.destroyall): ["+destroytab[i]+"]"+ex.description);
						}
					}
					destroytab=[];
					cmslib.unload.purgeElement(document,true);
				 }
			 };
		 }(),
		clone:function(){
			return function (o)
			 {
				if ( !o )
					return o;
				else if ( o instanceof Array )
				{
					var arr=[];
					for ( var ia=0 ; ia<o.length ; ++ia )
						arr.push(cmslib.clone(o[ia]));
					return arr;
				}
				else if ( typeof o == 'object' )
				{
					var obj={};
					for ( var k in o )
						obj[k]=cmslib.clone(o[k]);
					return obj;
				}
				else
					return o;
			 }
		 }(),
		dialog:{
			show:function() // dialog.show(dlg,dialogid,onok,config)
			 {
				return function(dlg,dialogid,onok,config)
				 {
					function createdlg(o)
					 {
						var dlgelem=typeof dialogid == 'string' ? Dom.get(dialogid) : dialogid;
						if ( !dlgelem )
						{
							dlgelem=document.createElement("div");
							dlgelem.id=dialogid;
							var papa=dlg.parentelement||document.body;
							papa.appendChild(dlgelem);
						}
						function oncancel()
						 {
							//alert('oncancel');
							dialogstack.hide_and_pop(dlgobj);
							if ( typeof dlg.oncancel == 'string' && dlg.oncancel!='' )
								dlg.oncancel = new Function("dlg",dlg.oncancel);
							if ( typeof dlg.oncancel == 'function' )
								dlg.oncancel.call(dlgobj.form,dlg);
							//this.cancel();
						 }
						
						if ( dlg.buttons && dlg.buttons instanceof Array )
						{
							for ( var ib=0 ; ib<dlg.buttons.length ; ++ib )
							{
								var fun;
								if ( typeof dlg.buttons[ib].handler=='string' )
									fun=new Function("dlg","ev",dlg.buttons[ib].handler);
								else if ( typeof dlg.buttons[ib].handler=='function' )
									fun=dlg.buttons[ib].handler;
								else if ( dlg.buttons[ib].handler && typeof dlg.buttons[ib].handler.fn == 'function' )
									fun=dlg.buttons[ib].handler.fn;
								else
									continue;
								dlg.buttons[ib].handler = function(fun) {return function(e,o) {
									fun.call(this.form,dlg,e);
								} }(fun);
							}
							dlg.butsobj=dlg.buttons;
						}
						else
							dlg.butsobj=[];
						/* if ( dlg.showdefaultbuttons!==false && dlg.showdefaultbuttons!=="" )
							dlg.butsobj=dlg.butsobj.concat([
									{ text:"Ok", handler:dialogok, isDefault:false },
									{ text:"Abbruch", handler:function(){this.cancel();} } 
								 ]);
						 */
						switch ( dlg.showdefaultbuttons )
						{
						 case false: //
						 case "": //
						 	break;
						 case "backnextokcancel": //
							dlg.butsobj=dlg.butsobj.concat([
									{ text:"zurück", handler:function(){
										var tv=dlg.maintab;
										if ( tv )
										{
											var ai=tv.get("activeIndex");
											if ( ai>0 )
												tv.set("activeIndex",ai-1);
										}
									 }, isDefault:false, disabled:true },
									{ text:"weiter", handler:function(){
										var tv=dlg.maintab;
										if ( tv )
										{
											var ai=tv.get("activeIndex");
											var alen=tv.get("tabs").length;
											if ( ai<alen-1 )
												tv.set("activeIndex",ai+1);
										}
									 }, isDefault:false, disabled:true },
									{ text:"fertig", handler:dialogok, isDefault:false },
									{ text:"abbrechen", handler:function(){this.cancel();} } 
							 ]);
						 	break;
						 default: // okesc
							dlg.butsobj=dlg.butsobj.concat([
									{ text:"Ok", handler:dialogok, isDefault:false },
									{ text:"Abbruch", handler:function(){this.cancel();} } 
							 ]);
						}
						if ( dlg.helpurl )
						{
							switch ( typeof dlg.width )
							{
							 case "number": //
							 	dlg.width+=250;
							 	break;
							 case "string": //
							 	if ( /\s*\d+px/.test(dlg.width) )
									dlg.width=parseInt(dlg.width)+250+'px';
							 	break;
							}
						}
						dlgobj=dlg.dlgobj=new YAHOO.widget.Dialog(dlgelem.id,{ 
								modal:dlg.modal,
								width: dlg.width,
								buttons: dlg.butsobj,
								postmethod:"async",
								draggable: dlg.draggable===undefined||dlg.draggable,
								visible:false,
								close:dlg.close,
								fixedcenter:dlg.fixedcenter===undefined||dlg.fixedcenter });
						cmslib.unload.register(dlgobj);
						dlgobj.cancelEvent.subscribe(oncancel);
						// alert('create');
						// dlgobj.showMaskEvent.subscribe(function(){alert(Dom.getStyle(this.mask,"z-index")+' < '+Dom.getStyle(this.element,"z-index"));});
						dlg.iscreated=false;
						dlg.ok=dialogok;
						dlg.cancel=function(){this.dlgobj.cancel();};
						var formhtml=o ? o.responseText : '<form></form>';
						if ( dlg.helpurl )
						{
							dlgobj.showEvent.subscribe(function(){
								if ( !dlg.helpdlg )
								{
									var regbody=Dom.getRegion(dlg.dlgobj.body)
									var helpheight=Math.max(regbody.bottom-regbody.top,300);
									dlg.helpdlg=new YAHOO.widget.SimpleDialog(Dom.generateId(null,"helpdlg"), {
										width:"230px",
										height:helpheight-14+'px',
										visible:false,
										close:false,
										draggable:false,
										//text:"HILFE",
										context:[dlgobj.body,"tr","tr"]
									 });
									cmslib.unload.register(dlg.helpdlg);
									dlg.helpdlg.render(dlgobj.element);
									var helpiframe=dlg.helpiframe=document.createElement("IFRAME");
									helpiframe.width=210;
									helpiframe.height=helpheight-60;
									if ( regbody.bottom-regbody.top<300 )
									{
										Dom.setStyle(dlg.dlgobj.body,"height","300px");
										this.center();
									}
									helpiframe.src=dlg.helpurl;
									dlg.helpdlg.body.appendChild(helpiframe);
									Dom.setStyle(dlg.dlgobj.form,"width",regbody.right-regbody.left-250+'px');
								}
								dlg.helpdlg.show();
								Dom.setStyle(dlg.helpdlg.element,"display","");
							 });
							dlgobj.hideEvent.subscribe(function(){
								if ( dlg.helpdlg )
								{
									dlg.helpdlg.hide();
									Dom.setStyle(dlg.helpdlg.element,"display","none");
								}
							 });
						}
						dlgobj.setBody(formhtml); //dlg.helpurl? '<table><tr><td><form></form></td><td><iframe width="200" height="100%" src="'+dlg.helpurl+'"></iframe></td></tr></table>' : '<form></form>');
						dlgobj.renderEvent.subscribe(function(){
								if ( !dlg.iscreated )
								{
									dlg.iscreated=true;
									cmslib.dialog.mkfields(dlgobj.form,dlg);
									if ( typeof dlg.oncreate == 'string' && dlg.oncreate!='' )
										dlg.oncreate=new Function("dlg",dlg.oncreate);
									if ( typeof dlg.oncreate == 'function' )
										dlg.oncreate.call(dlgobj.form,dlg);
								}
								if ( typeof dlg.oninit == 'string' && dlg.oninit!='' )
									dlg.oninit=new Function("config","dlg",dlg.oninit);
								if ( typeof dlg.oninit == 'function' )
									dlg.oninit.call(dlgobj.form,config,dlg);
								var keys=[];
								if ( dlg.ok_key===undefined || dlg.ok_key )
									keys.push(13);
								if ( /*dlg.esc_key===undefined ||*/ dlg.esc_key )
									keys.push(27);
								if ( keys.length>0 )
								{
									var k_ok_esc=new YAHOO.util.KeyListener(document,{keys:keys},function(e,ev){ 
										switch ( ev[0] )
										{
										 case 27: //
											Event.stopEvent(ev[1]);
											dlgobj.cancel();
											return false;
											break;
										 case 13: //
											//alert(Event.getTarget(ev[1]).tagName);
											switch(Event.getTarget(ev[1]).tagName.toUpperCase())
											{
											 case "TEXTAREA": //
											 case "BUTTON": //
											 case "A": //
												return true;
												break;
											 case "INPUT": //
												if(ev[1].keyCode)
													ev[1].keyCode=9;
												else
													ev[1].charCode=9;
												return true;
											 default:
												// alert(ev[1].keyCode); // bzw. charCode
												// ev[1].keyCode=9;
												// return true;
												Event.stopEvent(ev[1]);
												dlg.ok();
												return false;
											}
											break;
										 default:
											 return true;
										}
									 });
									this.cfg.setProperty("keylisteners",(this.cfg.getProperty("keylisteners")||[]).concat([k_ok_esc]));
								}
							 });
						dlgobj.setHeader(dlg.title);
						if ( Lang.isString(dlg.yuimoduls) && dlg.yuimoduls!="" )
							dlg.yuimoduls=dlg.yuimoduls.split(/,/);
						if (Lang.isArray(dlg.yuimoduls) && dlg.yuimoduls.length>0)
						{
							//alert(typeof YUILoader);
							//new YAHOO.util.YUILoader({require:dlg.yuimoduls,onSuccess:function(){
							//	dlgobj.render();
							//	dialogstack.push_and_show(dlgobj);
							//	//dlgobj.show();
							// }}).insert();
							YUILoader.require(dlg.yuimoduls);
							YUILoader.onSuccess=function(){
								dlgobj.render();
								dialogstack.push_and_show(dlgobj);
								//dlgobj.show();
							 };
							YUILoader.insert();
						}
						else
						{
							dlgobj.render();
							dialogstack.push_and_show(dlgobj);
							//dlgobj.show();
						}
					 }
								
					function dialogok()
					 {
						var onok=dlg.onok;
						if ( typeof dlg.onsubmit == 'string' && dlg.onsubmit!='' )
							dlg.onsubmit = new Function("dlg",dlg.onsubmit);
						if ( typeof dlg.onsubmit == 'function' )
						{
							var config=dlg.onsubmit.call(dlgobj.form,dlg);
							if ( typeof config != 'boolean' || config!=false )
							{
								//dialogstack.pop(dlgobj);
								if ( typeof dlg.onupload == 'string' && dlg.onupload!='' )
									dlg.onupload = new Function("o","dlg",dlg.onupload);
								if ( typeof dlg.onupload == 'function' )
								{
									dlgobj.callback={upload: function(o){
										var uploadconfig=dlg.onupload.call(dlgobj.form,o,dlg);
										if ( typeof uploadconfig != 'boolean' || uploadconfig!=false )
											onok({submit:config,upload:uploadconfig})
									 } };
									dlgobj.submit()
								}
								else
									onok(config);
								//dlgobj.hide();
								dialogstack.hide_and_pop();
							}
						}
						else
						{
							//dialogstack.pop(dlgobj);
							onok(null);
							//dlgobj.hide();
							dialogstack.hide_and_pop();
						}
					 }
					
					
					if ( typeof onok!="function" )
						onok=function(){};
					
					if ( dlg!=null ) // Dialog geladen und verfügbar?
					{
						var dlgobj=dlg.dlgobj;
						dlg.onok=onok;
						if(dlgobj==null)
						{
							if ( dlg.html!=null && dlg.html!="" )
							{
								var con=YAHOO.util.Connect.asyncRequest('GET', (dlg.html.indexOf("/")<0 ? '../../DIALOGS/':'')+dlg.html+'?'+new Date(), {
									success: createdlg,
									failure: function(o){alert('Dialog konnte nicht initialisiert werden _ '+o.responseText);},
									timeout: 10000
								 });
							}
							else
								createdlg(null);
						}
						else
						{
							dlg.dlgobj.cfg.setProperty("buttons",dlg.butsobj);
							dialogstack.push_and_show(dlgobj);
							//dlgobj.show();
							if ( typeof dlg.oninit == 'string' && dlg.oninit!='' )
								dlg.oninit = new Function("config","dlg",dlg.oninit);
							if ( typeof dlg.oninit == 'function' )
								dlg.oninit.call(dlgobj.form,config,dlg);
						}
					}
					else
						onok(null);
				 }
			 }(),
			istop:function (dlgobj)
			 {
				return dialogstack.is_top_dialog(dlgobj);
			 },
			initfields:function(config,dlg,form,exceptions)
			 {
				dlg.elements=[];
				var tabindex=0,tableindex=0;
				if ( dlg.fields )	// Initialisierung aufgrund dlg.fields
				{
					var ftab=dlg.fields;
					if ( !config )
						config={};
					function dotab(tab)
					 {
						 var tabstack=[],tabinitialized=false;
						 if ( !tab )
						 	return;
						 for ( var i=0 ; i<tab.length ; ++i )
						 {
							if ( typeof tab[i] == 'string' )
							{
								if ( config[tab[i]] != null )
									form[tab[i]].value=config[tab[i]];
								dlg.elements.push(form[tab[i]]);
							}
							else
							{
								var type=tab[i].type;
								if ( type==null )
									type="text";
								var subtype=subtypes[type] || type;
								switch ( subtype )
								{
								 case "text": //
								 case "password": //
								 case "textarea": //
									form[tab[i].name].value=config[tab[i].name]!=null?config[tab[i].name]:tab[i].defaultval || '';
									if ( tab[i].defaultval )
										form[tab[i].name].defaultValue=tab[i].defaultval;
									dlg.elements.push(form[tab[i].name]);
									if ( tab[i].tabkey && !tab[i].tabkeyinitialized )
									{
										Event.addListener(form[tab[i].name],"keydown",cmslib.inserttab);
										tab[i].tabkeyinitialized=true;
									}
									switch ( type )
									{
									 case "editor": //
										if ( !dlg.ediobj )
											dlg.ediobj={};
										if ( !dlg.ediobj[tab[i].name] )
										{
											form[tab[i].name].id=Dom.generateId(null,tab[i].name+'-');
											var edreg=Dom.getRegion(form[tab[i].name]);
											var edi=dlg.ediobj[tab[i].name]=new YAHOO.widget.SimpleEditor(form[tab[i].name], {
												height:edreg.height,
												width:edreg.width
											 });
											cmslib.unload.register(edi);
											edi.render();
										}
										Lang.later(10,this,function(){edi.show();});
									 	break;
									 case "autocomplete": //
									 	
									 	break;
									 
									}
									if ( type=="editor" )
									{
									}	
								 	break;
								 case "select": //
								 	if ( config[tab[i].name] != null )
									{
										for ( var j=0 ; j<tab[i].options.length ; ++j )
										{
											if ( typeof tab[i].options[j] == 'string' )
											{
												if ( config[tab[i].name]==tab[i].options[j] )
												{
													form[tab[i].name].selectedIndex=j;
													//break;
												}
											}
											else
											{
												if ( config[tab[i].name]==tab[i].options[j].value )
												{
													form[tab[i].name].selectedIndex=j;
													//break;
												}
											}
											if ( tab[i].options[j].selected || tab[i].options[j].checked )
											{
												form[tab[i].name].options[j].defaultSelected=true;
												//break;
											}
										}
									}
									dlg.elements.push(form[tab[i].name]);
								 	break;
								 case "radio": //
								 	if ( config[tab[i].name] != null )
									{
										for ( var j=0 ; j<tab[i].options.length ; ++j )
										{
											if ( typeof tab[i].options[j] == 'string' )
											{
												if ( config[tab[i].name]==tab[i].options[j] )
												{
													form[tab[i].name][j].checked=true;
													//break;
												}
											}
											else
											{
												if ( config[tab[i].name]==tab[i].options[j].value )
												{
													form[tab[i].name][j].checked=true;
													//break;
												}
											}
											if ( tab[i].options[j].selected || tab[i].options[j].checked )
											{
												form[tab[i].name][j].defaultCecked=true;
												//break;
											}
											dlg.elements.push(form[tab[i].name][j]);
										}
									}
								 	break;
								 case "checkbox": //
									if ( tab[i].options )
									{
										var cbobj=config[tab[i].name]||{};
										for ( var j=0 ; j<tab[i].options.length ; ++j )
											form[tab[i].name][j].checked=cbobj[tab[i].options[j].value]
									}
									else
									{
										if ( config[tab[i].name] != null )
											form[tab[i].name].checked=config[tab[i].name];
										else if ( tab[i].checked )
											form[tab[i].name].checked=true
										if ( tab[i].checked )
											form[tab[i].name].defaultChecked=true
										dlg.elements.push(form[tab[i].name]);
									}
								 	break;
								 case "tabs": //
									if ( !tab[i].tabobj )
									{
										// var tv=tab[i].tabobj=new cmslib.simpleTabView(dlg.id+"-tab"+(tabindex++));
										// cmslib.unload.register(tv);
										cmslib.patchtabview();
										var tv=tab[i].tabobj=new cmslib.TabView(dlg.id+"-tab"+(tabindex++));
										//var tv=tab[i].tabobj=new YAHOO.widget.TabView(dlg.id+"-tab"+(tabindex++));
										cmslib.unload.register(tv);
										
										if (tab[i].ref)
											tab[i].ref.tabview=tv;
										if ( !dlg.maintab )
										{
											dlg.maintab=tv;
											if ( dlg.showdefaultbuttons == "backnextokcancel" && dlg.butsobj.length>=4 )
											{
												tv.subscribe("activeTabChange",function(){
													var bts=dlg.dlgobj.getButtons();
													var bckbtn=bts[bts.length-4];
													var nxtbtn=bts[bts.length-3];
													var ai=this.get("activeIndex");
													var alen=this.get("tabs").length;
													bckbtn.set("disabled",ai==0);
													nxtbtn.set("disabled",ai>=alen-1);
												 });
											}
										}
										tv.fireEvent("activeTabChange");
										var ttabs=tv.get("tabs");
										for ( var itt=0 ; itt<ttabs.length ; ++itt )
										{
											var tt=ttabs[itt];
											
											if ( tab[i].tabs[itt].onactivate || tab[i].tabs[itt].ondeactivate )
											{
												tt.subscribe("activeChange",function(e,t){
													if(e.newValue)
													{
														if ( typeof t.onactivate == 'string' )
															t.onactivate=new Function("dlg","tab","tabconfig",t.onactivate);
														if ( typeof t.onactivate == 'function' )
															t.onactivate.call(dlg.dlgobj.form,dlg,this,t);
													}
													else
													{
														if ( typeof t.ondeactivate == 'string' )
															t.ondeactivate=new Function("dlg","tab","tabconfig",t.onactivate);
														if ( typeof t.ondeactivate == 'function' )
															t.ondeactivate.call(dlg.dlgobj.form,dlg,this,t);
													}
												 },tab[i].tabs[itt]);
											}
											if ( tab[i].tabs[itt].helpurl && dlg.helpiframe )
											{
												Event.addListener(tt.get("labelEl"),"click",function (e,t)
												 {
													if ( t.helpurl && dlg.helpiframe )
														dlg.helpiframe.src=t.helpurl;
												 },tab[i].tabs[itt]);											
											}
										}
									}
									for ( var j=0 ; j<tab[i].tabs.length ; ++j )
										dotab(tab[i].tabs[j].fields);
								 	break;
								 case "tabelem": //
									var isfirsttab=false,tvobj;
									var field=tab[i];
									if ( field.initialized )
										break;
									field.initialized=true;
									if ( tabstack.length==0 || field.ebene=='tiefer' )
									{
										cmslib.patchtabview();
										tvobj={tv:field.tabobj=new cmslib.TabView(dlg.id+"-tab"+(tabindex++)),idx:0};
										cmslib.unload.register(tvobj.tv);
										if (field.ref)
											field.ref.tabview=tvobj.tv;
										if ( !dlg.maintab )
										{
											dlg.maintab=tvobj.tv;
											if ( dlg.showdefaultbuttons == "backnextokcancel" && dlg.butsobj.length>=4 )
											{
												tvobj.tv.subscribe("activeTabChange",function(){
													var ai=this.get("activeIndex");
													var bts=dlg.dlgobj.getButtons();
													var bckbtn=bts[bts.length-4];
													var nxtbtn=bts[bts.length-3];
													var alen=this.get("tabs").length;
													bckbtn.set("disabled",ai==0);
													nxtbtn.set("disabled",ai>=alen-1);
												 });
											}
										}
										tvobj.tv.fireEvent("activeTabChange");
										tabstack.push(tvobj);
										isfirsttab=true;
									}
									else if ( field.ebene=='höher' )
									{
										tabstack.pop();
										tvobj=tabstack[tabstack.length-1];
									}
									else
										tvobj=tabstack[tabstack.length-1];
									
									if ( field.ebene!='höher' || field.label&&field.label!='' )
									{
										// Eventhandler setzen
										var tt=tvobj.tv.getTab(tvobj.idx++);
										if ( field.onactivate || field.ondeactivate )
										{
											tt.subscribe("activeChange",function(e,t){
												if(e.newValue)
												{
													if ( typeof t.onactivate == 'string' )
														t.onactivate=new Function("dlg","tab","tabconfig",t.onactivate);
													if ( typeof t.onactivate == 'function' )
														t.onactivate.call(dlg.dlgobj.form,dlg,this,t);
												}
												else
												{
													if ( typeof t.ondeactivate == 'string' )
														t.ondeactivate=new Function("dlg","tab","tabconfig",t.ondeactivate);
													if ( typeof t.ondeactivate == 'function' )
														t.ondeactivate.call(dlg.dlgobj.form,dlg,this,t);
												}
											 },field);
										}
										if ( field.helpurl )
										{
											Event.addListener(tt.get("labelEl"),"click",function (e,t)
											 {
												if ( t.helpurl && dlg.helpiframe )
													dlg.helpiframe.src=t.helpurl;
											 },field);											
										}
									}
									break;
								 case "block": //
								 	dotab(tab[i].fields);
								 	break;
								 case "table": //
									// if ( tab[i].tableobj )
									// 	cmslib.unload.destroy(tab[i].tableobj);
									// delete tab[i].tableobj;
									if ( !dlg.tableobj )
										dlg.tableobj={};
									//if ( dlg.tableobj[tab[i].name] )
									//	cmslib.unload.destroy(dlg.tableobj[tab[i].name]);
									//delete dlg.tableobj[tab[i].name];
									
									if ( dlg.tableobj[tab[i].name] )
									{
										var table=dlg.tableobj[tab[i].name];
										//table.deleteRows(0,table.getRecordSet().getLength());
										var ds=table.getDataSource();
										ds.flushCache();
										if ( type=="table" )
											ds.liveData=config[tab[i].name];
										else
										{
											var tabdefdata=[],configdata=config[tab[i].name];
											for( var kd in configdata )
												tabdefdata.push({_key:kd,_val:configdata[kd]});
											 /* {
												var cdata=configdata[kd];
												if ( Lang.isArray(cdata) )
													tabdefdata.push({_key:kd,_val:cdata});
												else if ( Lang.isObject(cdata) )
													tabdefdata.push(Lang.merge(cdata,{_key:kd}));
												else if ( Lang.isValue(cdata) )
													tabdefdata.push({_key:kd,_val:cdata});
											  }
											 */
											ds.liveData=tabdefdata;
										}
										if ( !ds.liveData || !ds.liveData.length )
											ds.liveData=tab[i].defaultval instanceof Array ? tab[i].defaultval : [];
										ds.sendRequest(table.get("generateRequest")(null,table),{success:table.onDataReturnInitializeTable,failure:table.onDataReturnInitializeTable,argument:null,scope:table});
									}
									else
									{
										Dom.get(tab[i].id).innerHTML='';
										var tabdef=Lang.isFunction(tab[i].tabdef) ? tab[i].tabdef() : tab[i].tabdef;
										if ( type=="table" )
											tabdef.data=config[tab[i].name];
										else
										{
											var tabdefdata=[],configdata=config[tab[i].name];
											for( var kd in configdata )
												tabdefdata.push({_key:kd,_val:configdata[kd]});
											 /* {
												var cdata=configdata[kd];
												if ( Lang.isArray(cdata) )
													tabdefdata.push({_key:kd,_val:cdata});
												else if ( Lang.isObject(cdata) )
													tabdefdata.push(Lang.merge(cdata,{_key:kd}));
												else if ( Lang.isValue(cdata) )
													tabdefdata.push({_key:kd,_val:cdata});
											  }
											 */
											tabdef.data=tabdefdata;
										}
										if ( !tabdef.data || !tabdef.data.length )
											tabdef.data=tab[i].defaultval instanceof Array ? tab[i].defaultval : [];
										tabdef.dialog=dlg.dlgobj;
										//var table=tab[i].tableobj=cmslib.getdatatable(tab[i].id,tabdef);
										var table=dlg.tableobj[tab[i].name]=cmslib.getdatatable(tab[i].id,tabdef);
										// if(table._syncScroll)
										// 	table.subscribe("postRenderEvent",function(){
										// 		Lang.later(0,this,function(){ table._syncScroll(); });	  
										// 	 });
										cmslib.unload.register(table);
										if(table.focel)
											dlg.elements.push(table.focel);
									}
								 	break;
								 case "html": //
								 	if ( tab[i].istpl && tab[i].div )
									{
										var tplstr=tab[i].html || "";
										tab[i].div.innerHTML=Lang.substitute(tplstr,config);
									}
								 	break;
								 case "button": //
									if ( Lang.isArray(tab[i].options) )
									{
										for ( var ib=0 ; ib<tab[i].options.length ; ++ib )
										{
											var fun=tab[i].options[ib].onclick;
											if ( typeof fun == 'string' )
												fun=new Function("dlg","ev",fun);
											Event.removeListener(form[tab[i].name][ib]);
											if ( typeof fun == 'function' )
											{
												Event.addListener(form[tab[i].name][ib],'click',function(fun) {
													return function(e) {
														fun.call(form,dlg,e);
													 }
												 }(fun));
											}
										}
									}
								 	break;
								 default:
								}
							}
						 }
					 }
					dotab(ftab);
					if ( dlg.elements.length>0 )
					{
						dlg.firstelem=dlg.dlgobj.firstElement=dlg.elements[0];
						dlg.lastelem=dlg.dlgobj.lastElement=dlg.elements[dlg.elements.length-1];
						dlg.dlgobj.focussableElements=dlg.elements;
						window.setTimeout(function(){try{dlg.firstelem.focus();}catch(ex){}},20);
					}
				}
				else	// Initialisierung aufgrund der Formularfelder
				{
				
				}
			 },
			getfields:function(dlg,form,exceptions)
			 {
				var config={};
				if ( dlg.fields )
				{
					var ftab=dlg.fields;
					function dotab(tab)
					 {
						 if ( !tab )
						 	return;
						 for ( var i=0 ; i<tab.length ; ++i )
						 {
						 	if ( typeof tab[i] == 'string' )
							{
								config[tab[i]]=form[tab[i]].value;
							}
							else
							{
								var type=tab[i].type;
								if ( type==null )
									type="text";
								switch ( type )
								{
								 case "autocomplete": //
								 case "text": //
								 case "password": //
								 case "textarea": //
									config[tab[i].name]=form[tab[i].name].value;
								 	break;
								 case "select": //
									 config[tab[i].name]=form[tab[i].name].options[form[tab[i].name].selectedIndex].value;
								 	break;
								 case "radio": //
									for ( var j=0 ; j<tab[i].options.length ; ++j )
									{
										if ( form[tab[i].name][j].checked )
										{
											config[tab[i].name]=form[tab[i].name][j].value;
											break;
										}
									}
									break;
								 case "checkbox": //
									if ( tab[i].options )
									{
										config[tab[i].name]={};
										for ( var j=0 ; j<tab[i].options.length ; ++j )
											config[tab[i].name][tab[i].options[j].value]=form[tab[i].name][j].checked;
									}
									else
										config[tab[i].name]=form[tab[i].name].checked;
								 	break;
								 case "tabs": //
									for ( var j=0 ; j<tab[i].tabs.length ; ++j )
										dotab(tab[i].tabs[j].fields);
								 	break;
								 case "block": //
									dotab(tab[i].fields);
								 	break;
								 case "properties": //
									 //var tabdata=tab[i].tableobj.getDataTabObject();
									 var tabdata=dlg.tableobj[tab[i].name].getDataTabObject();
									 var outdata={};
									 for ( var itd=0 ; itd<tabdata.length ; ++itd )
									 {
									 	var cdata=tabdata[itd];
										if ( false ) // !cdata._val )
										{
											var key=cdata._key;
											delete cdata._key;
											outdata[key]=cdata;
										}
										else
											outdata[cdata._key]=cdata._val;
									 }
								 	config[tab[i].name]=outdata;
									break;
								 case "table": //
								 	//config[tab[i].name]=tab[i].tableobj.getDataTabObject();
								 	config[tab[i].name]=dlg.tableobj[tab[i].name].getDataTabObject();
								 	break;
								 default:
								}
							}
						 }
					 }
					dotab(ftab);
				}
				else
				{
					
				}
				return config;
			 },
			wait:function(startInSec,dauerInSec,fun)
			 {
				var endtime,endivl=null;
				waitdlg={
					width:"300px",
					modal:true,
					title:"",
					id:"wait-dlg",
					fields:[{type:"html",html:'<h3>Bitte warten ...</h3><p id="dlg-wait-showsek"><small>(automatischer Abbruch in <span id="dlg-wait-sek">x</span> Sekunden)</small></p>'}],
					oninit:function(config,dlg) {
						if (config)
						{
							YAHOO.util.Dom.setStyle("dlg-wait-showsek","display","");
							YAHOO.util.Dom.get("dlg-wait-sek").innerHTML=config;
							endtime=new Date().getTime()+config*1000;
							endivl=window.setInterval(function(){ YAHOO.util.Dom.get("dlg-wait-sek").innerHTML=Math.ceil((endtime-new Date().getTime())/1000) },500);
						}
						else
							YAHOO.util.Dom.setStyle("dlg-wait-showsek","display","none")
					 },
					 oncancel:function() {
						 if (endivl)
						 {
							 window.clearInterval(endivl);
							 endivl=null;
						 }
					  }
				 }
				if (waitdlgtim)
				{
					window.clearTimeout(waitdlgtim);
					waitdlgtim=null;
				}
				if(isNaN(startInSec))
					startInSec=0;
				waitdlgtim=window.setTimeout(function(){ 
					cmslib.dialog.show(waitdlg,"wait-dlg",null,dauerInSec); 
					waitdlg.dlgobj.cfg.setProperty("buttons",[]);
					waitdlg.dlgobj.cfg.setProperty("close",false);
					if (!isNaN(dauerInSec))
						waitdlgtim=window.setTimeout(function(){ waitdlg.dlgobj.cancel(); if(YAHOO.lang.isFunction(fun)) fun(); },dauerInSec*1000);
				 },startInSec*1000)
			 },
			stopwait:function()
			 {
				if (waitdlgtim)
				{
					window.clearTimeout(waitdlgtim);
					waitdlgtim=null;
				}
				if (waitdlg.dlgobj)
					waitdlg.dlgobj.cancel();
			 },
			mkfields:function(form,dlg,meta)
			 {
				/* Beschreibung der Feldstruktur
					fields=[
						"feldname",
						{	type:"text"|"password"|"textarea"|"checkbox"|"button"|"hidden"
							name:
							label:
							perms:
							defaultval:
							checked:
							inpattr:
							id:
							cssclass:
						},
						{	type:"radio"|"select",
							options: [
							 ],
							...
						},
						{	type:"html",
							html:,
							istpl:
						},
						{	type:"block",
							id:
							merge:
							fields: [
								...
							 ]
						},
						{	type:"tabs"
							label:
							ref:	// Referenzvariable zum Speichern der Tabview
							tabs: [ {
									tab:
									helpurl:
									onactivate:
									ondeactivate:
									fields: [
										...
									 ]
								},
								...
							 ]
						},
						{	type:"table"
							name:
							tabdef: {...}
						}
						...
					]
				*/
				// if ( !meta || typeof )
				// 	meta={elements:[]};
				// else if ( !meta.elements )
				// 	meta.elements=[];
				var tabindex=0,tableindex=0;
				if ( !dlg.focusableelements )
					dlg.focusableelements=[];
				function mkfieldsrek(fields,elem)
				 {
					if ( fields )
					{
						var rekstack=[],tabstack=[];
						for ( var fi=0 ; fi<fields.length ; ++fi )
						{
							var field=typeof fields[fi] == "string" 
								? {
									label:fields[fi],
									name:fields[fi],
									type:"text"
								  }
								: fields[fi];
							if ( field.type==null )
								field.type="text";
							var subtype=subtypes[field.type] || field.type;
							switch ( subtype )
							{
							 case "button": //
							 case "checkbox": //
							 case "radio": //
								var div=document.createElement("DIV");
								var lbl=document.createElement("LABEL");
								div.appendChild(lbl);
								var rdiv=document.createElement("DIV");
								rdiv.className=field.type+"controls"
								Dom.setStyle(rdiv,"display","inline-block");
								div.appendChild(rdiv);
								lbl["for"]=field.name;
								lbl.innerHTML=field.label!=null?field.label:field.name;
								lbl.className=(field.cssclass!=null ? field.cssclass+" ":"")+field.type+"group";
								var inp=null;
								if ( field.id!=null )
								{
									div.id=field.id+"-div";
									lbl.id=field.id+"-lbl";
									//inp.id=field.id+"-inp";
								}
								var fieldoptions=field.options;
								if ( !(fieldoptions instanceof Array) || fieldoptions.length==0 )
									fieldoptions=[{text:'',value:field.defaultval}]
								for ( var iopt=0 ; iopt<fieldoptions.length ; ++iopt )
								{
									var optdiv=document.createElement("DIV");
									if ( field.type!="button" )
									{
										var optlbl=document.createElement("LABEL");
										optlbl.className=field.type;
									}
									var inp;
									if ( YAHOO.env.ua.ie>0 )
										inp=document.createElement('<INPUT name="'+field.name+'">');
									else
										inp=document.createElement('INPUT');
									inp.type=field.type;
									inp.name=field.name;
									if ( typeof fieldoptions[iopt] == 'string' )
									{
										inp.value=fieldoptions[iopt];
										if ( field.type!="button" )
											optlbl.innerHTML=fieldoptions[iopt];
									}
									else
									{
										inp.value=fieldoptions[iopt].value;
										if ( field.type!="button" )
										{
											optlbl.innerHTML=fieldoptions[iopt].text;
											inp.selected=fieldoptions[iopt].checked==true;
										}
									}
									inp.className=(field.cssclass!=null ? field.cssclass+" ":"")+field.type;
									if ( field.inpattr!=null )
									{
										for ( var ka in field.inpattr )
											inp[ka]=field.inpattr[ka];
									}
									optdiv.appendChild(inp);
									if ( field.type!="button" )
										optdiv.appendChild(optlbl);
									rdiv.appendChild(optdiv);
									Dom.setStyle(optdiv,"float","left");

									if ( fieldoptions[iopt].floatleft )
										Dom.setStyle(optdiv,'float','left');
									setstyles(inp,field.fstyles);
									if ( field.type!='button' )
										setstyles(optlbl,field.lstyles);
									setstyles(optdiv,field.cstyles);

									if ( !dlg.firstelem )
										dlg.firstelem=inp;
									dlg.lastelem=inp;
									dlg.focusableelements.push(inp);
								}

								elem.appendChild(div);
								break;
							 case "select": //
								var div=document.createElement("DIV");
								var lbl=document.createElement("LABEL");
								lbl["for"]=field.name;
								lbl.innerHTML=field.label!=null?field.label:field.name;
								var inp=null;
								if ( YAHOO.env.ua.ie>0 )
									inp=document.createElement('<SELECT name="'+field.name+'"></SELECT>');
								else
									inp=document.createElement('SELECT');
								inp.name=field.name;
								if ( field.id!=null )
								{
									div.id=field.id+"-div";
									lbl.id=field.id+"-lbl";
									inp.id=field.id+"-inp";
								}
								for ( var iopt=0 ; iopt<field.options.length ; ++iopt )
								{
									var opt=document.createElement('OPTION');
									if ( typeof field.options[iopt] == 'string' )
										opt.value=opt.text=field.options[iopt];
									else
									{
										opt.value=field.options[iopt].value;
										opt.text=field.options[iopt].text;
										opt.selected=field.options[iopt].selected==true;
									}
									inp.options.add(opt);	
								}
								inp.className=lbl.className=(field.cssclass!=null ? field.cssclass+" ":"")+"select";
								if ( field.inpattr!=null )
								{
									for ( var ka in field.inpattr )
										inp[ka]=field.inpattr[ka];
								}

								if ( field.floatleft )
									Dom.setStyle(div,'float','left');
								setstyles(inp,field.fstyles);
								setstyles(lbl,field.lstyles);
								setstyles(div,field.cstyles);

								div.appendChild(lbl);
								div.appendChild(inp);
								elem.appendChild(div);
								if ( !dlg.firstelem )
									dlg.firstelem=inp;
								dlg.lastelem=inp;
								dlg.focusableelements.push(inp);
								break;
							 case "html": //
								if ( field.istpl )
								{
									var hdiv=document.createElement("div");
									elem.appendChild(hdiv);
									field.div=hdiv;
								}
								else
									elem.innerHTML+=field.html;
								break;
							 case "block": //
								if ( field.fields )
								{
									var div=document.createElement("DIV");
									div.id=field.id;
									div.className=field.cssclass;
									setstyles(div,field.blockstyles);
									elem.appendChild(div);
									mkfieldsrek(field.fields,div);
								}
								else if ( Lang.isString(field.ebene) )
								{
									var newid=!field.name || Dom.get(field.name ) ? Dom.generateId(null,field.name) : field.name;
										
									switch ( field.ebene )
									{
									 case "": //
										var div=document.createElement("DIV");
										div.id=newid;
										div.className=field.cssclass;
										setstyles(div,field.blockstyles);
										var papa=rekstack.length>0 ? rekstack.pop() : elem;
										papa.appendChild(div);
										rekstack.push(papa);
										elem=div;
										 	break;
									 case "tiefer": //
										var div=document.createElement("DIV");
										div.id=newid;
										div.className=field.cssclass;
										setstyles(div,field.blockstyles);
										elem.appendChild(div);
										rekstack.push(elem);
										elem=div;
									 	break;
									 case "höher": //
										if ( rekstack.length>0 )
											elem=rekstack.pop();
										if ( field.name&&field.name!='' || field.blockstyles&&field.blockstyles!='' || field.cssclass&&field.cssclass!='' )
										{
											var div=document.createElement("DIV");
											div.id=newid;
											div.className=field.cssclass;
											setstyles(div,field.blockstyles);
											var papa=rekstack.length>0 ? rekstack.pop() : elem;
											papa.appendChild(div);
											rekstack.push(papa);
											elem=div;
										}
									 	break;
									 
									}
								}
								break;
							 case "tabelem": //
								var isfirsttab=false,tv;
								if ( tabstack.length==0 || field.ebene=='tiefer' )
								{
									var tabdiv=document.createElement("DIV");
									tabdiv.id=dlg.id+"-tab"+(tabindex++);
									if ( field.cssclass )
										tabdiv.className=field.cssclass;
									Dom.addClass(tabdiv,"yui-navset");
									elem.appendChild(tabdiv);
									var nav=document.createElement("UL");
									Dom.addClass(nav,"yui-nav");
									tabdiv.appendChild(nav);
									var content=document.createElement("DIV");
									Dom.addClass(content,"yui-content");
									tabdiv.appendChild(content);
									tabstack.push(tv={nav:nav,content:content,tabdiv:tabdiv});
									isfirsttab=true;
								}
								else if ( field.ebene=='höher' )
								{
									tabstack.pop();
									tv=tabstack[tabstack.length-1];
								}
								else
									tv=tabstack[tabstack.length-1];
								
								if ( field.ebene!='höher' || field.label&&field.label!='' )
								{
									var navelem=document.createElement("LI");
									tv.nav.appendChild(navelem);
									var navelema=document.createElement("A");
									navelema.href='#';
									navelem.appendChild(navelema);
									var navelemaem=document.createElement("EM");
									navelema.appendChild(navelemaem);
									navelemaem.innerHTML=field.label;
									var tabelem=document.createElement("DIV");
									//tabelem.id=div.id+'-tab'+itvtabs;
									tv.content.appendChild(tabelem);
									if ( field.cssclass )
										tabelem.className=field.cssclass;
									var tabstab=Dom.getChildren(tv.content);
									if ( tabstab.length>1 )
										Dom.addClass(tabelem,"yui-hidden");
									else
										Dom.addClass(navelem,"selected");
									setstyles(tabelem,field.tabstyles);
									elem=tabelem;
								}
								else
								{
									var tabstab=Dom.getChildren(tv.content);
									if ( tabstab.length>0 )
										elem=tabstab[tabstab.length-1];
									else
									{
										elem=document.createElement("DIV");
										tv.content.appendChild(elem);
									}
								}
								break;
							 case "tabs": //
								var div=document.createElement("DIV");
								div.id=dlg.id+"-tab"+(tabindex++);
								Dom.addClass(div,"yui-navset");
								elem.appendChild(div);
								var nav=document.createElement("UL");
								Dom.addClass(nav,"yui-nav");
								div.appendChild(nav);
								var content=document.createElement("DIV");
								Dom.addClass(content,"yui-content");
								div.appendChild(content);
								for ( var itvtabs=0 ; itvtabs<field.tabs.length ; ++itvtabs )
								{
									var navelem=document.createElement("LI");
									if ( itvtabs==0 )
										Dom.addClass(navelem,"selected");
									nav.appendChild(navelem);
									var navelema=document.createElement("A");
									navelema.href='#';
									navelem.appendChild(navelema);
									var navelemaem=document.createElement("EM");
									navelema.appendChild(navelemaem);
									navelemaem.innerHTML=field.tabs[itvtabs].tab;
									var tabelem=document.createElement("DIV");
									tabelem.id=div.id+'-tab'+itvtabs;
									if ( itvtabs>0 )
										Dom.addClass(tabelem,"yui-hidden");
									content.appendChild(tabelem);
									mkfieldsrek(field.tabs[itvtabs].fields,tabelem)
									setstyles(tabelem,field.tabs[itvtabs].tabstyles);
								}
								break;
							 case "hidden": //
								var inp;
								if ( YAHOO.env.ua.ie>0 )
									inp=document.createElement('<INPUT name="'+field.name+'" type="hidden">');
								else
								{
									inp=document.createElement('INPUT');
									inp.name=field.name;
									inp.type="hidden";
								}
								if ( field.defaultval!=null )
									inp.value=field.defaultval;
								elem.appendChild(inp);
								break;
							 case "table": //
								var div=document.createElement("DIV");
								if ( field.label )
								{
									var lbl=document.createElement("LABEL");
									lbl["for"]=field.name;
									lbl.innerHTML=field.label!=null?field.label:field.name;
									div.appendChild(lbl);
								}
								var tabdiv=document.createElement("DIV");
								if ( false ) //field.id )
									div.id=(tabdiv.id=field.id)+"-table";
								else
									div.id=(tabdiv.id=field.id=Dom.generateId(div,form.getAttributeNode('id').value+'-'+field.name))+"-table";
								Dom.setStyle(tabdiv,"display","inline-block");
								if ( field.tabdef.width )
									Dom.setStyle(tabdiv,"width",field.tabdef.width);
								if ( field.tabdef.height )
									Dom.setStyle(tabdiv,"height",parseInt(field.tabdef.height)+28+'px');
								div.appendChild(tabdiv);
								elem.appendChild(div);
							 	break;
							 //case "checkbox": //
							 case "password" : //
							 case "text": //
							 case "textarea": //
							 default:
								var div=document.createElement("DIV");
								var lbl=document.createElement("LABEL");
								lbl["for"]=field.name;
								lbl.innerHTML=field.label!=null?field.label:field.name;
								var inp=null;
								switch ( subtype )
								{
								 case "textarea": //
									if ( YAHOO.env.ua.ie>0 )
										inp=document.createElement('<TEXTAREA name="'+field.name+'"></TEXTAREA>');
									else
										inp=document.createElement('TEXTAREA');
									break;
								 default:
									if ( YAHOO.env.ua.ie>0 )
										inp=document.createElement('<INPUT name="'+field.name+(subtype=="checkbox" && field.checked==true ? '" checked="true"' : '"')+'>');
									else
										inp=document.createElement('INPUT');
									inp.type=subtype;
									if ( subtype=="checkbox" && field.checked==true )
										inp.checked=true;
								}
								inp.name=field.name;
								if ( field.id!=null )
								{
									div.id=field.id+"-div";
									lbl.id=field.id+"-lbl";
									inp.id=field.id+"-inp";
								}
								if ( field.defaultval!=null )
									inp.value=field.defaultval;
								div.className=inp.className=lbl.className=(field.cssclass!=null ? field.cssclass+" ":"")+field.type;
								
								if ( field.inpattr!=null )
								{
									for ( var ka in field.inpattr )
										inp[ka]=field.inpattr[ka];
								}
								
								if ( field.floatleft )
									Dom.setStyle(div,'float','left');
								setstyles(inp,field.fstyles);
								setstyles(lbl,field.lstyles);
								setstyles(div,field.cstyles);

								div.appendChild(lbl);
								div.appendChild(inp);
								elem.appendChild(div);
								if ( !dlg.firstelem )
									dlg.firstelem=inp;
								dlg.lastelem=inp;
								dlg.focusableelements.push(inp);
								break;
							}
						} 
						//alert(this.outerHTML)
					}
				 }
				Dom.addClass(form,"dialog");
				
				if(!dlg.id)
					dlg.id=Dom.generateId();
				form.id=dlg.id+'-form';
				dlg.firstelem=dlg.lastelem=null;
				dlg.focusableelements=[];
				
				var globcss=[];
				if ( dlg.labelstyles && dlg.labelstyles!=='' )
					globcss.push('label { '+dlg.labelstyles+' }');
				if ( dlg.textstyles && dlg.textstyles!=='' )
					globcss.push('input.text { '+dlg.textstyles+' }');
				if ( dlg.textareastyles && dlg.textareastyles!=='' )
					globcss.push('textarea { '+dlg.textareastyles+' }');
				if ( dlg.selectstyles && dlg.selectstyles!=='' )
					globcss.push('select { '+dlg.selectstyles+' }');
				if ( dlg.checkboxstyles && dlg.checkboxstyles!=='' )
					globcss.push('input.checkbox { '+dlg.checkboxstyles+'; float:left;}');
				if ( dlg.checkboxlabelstyles && dlg.checkboxlabelstyles!=='' )
				{
					globcss.push('div.checkbox {float:left; clear:none;}');
					globcss.push('label.checkbox { '+dlg.checkboxlabelstyles+' }');
				}
				else
				{
					globcss.push('div.checkbox {float:none;clear:left;}');
					globcss.push('label.checkbox {clear:none;}');
				}
				if ( dlg.radiostyles && dlg.radiostyles!=='' )
					globcss.push('input.radio { '+dlg.radiostyles+' }');
				if ( dlg.radiolabelstyles && dlg.radiolabelstyles!=='' )
				{
					globcss.push('div.radio {float:left; clear:none;}');
					globcss.push('label.radio { '+dlg.radiolabelstyles+' }');
				}
				else
				{
					globcss.push('div.radio {float:none;clear:left;}');
					globcss.push('label.radio {clear:none;}');
				}
				//globcss.push('div.radiocontrols {border:1px red dotted;}');
				if ( dlg.buttonstyles && dlg.buttonstyles!=='' )
					globcss.push('input.button { '+dlg.buttonstyles+' }');

				if ( dlg.otherstyles && dlg.otherstyles!=='' )
				{
					var rtab=dlg.otherstyles.match(/[^{]*\{[^}]*\}/gm);
					if ( rtab!=null )
						globcss=globcss.concat(rtab);
				}
				var fullcsstab=dlg.csstab ? globcss.concat(dlg.csstab) : globcss;
				if(document.createStyleSheet) 
				{
					if ( !cmslib.stylesheet )
						cmslib.stylesheet=document.createStyleSheet();
					stylesheet=cmslib.stylesheet;
					//stylesheet.addRule("#"+dlg.id+" label","color:red");
					for ( var is=0 ; fullcsstab!=null && is<fullcsstab.length ; ++is )
					{
						var r=fullcsstab[is].split(/[\{\}]/);
						var r00=r[0].split(/,/);
						for ( ir00=0 ; ir00<r00.length ; ++ir00 )
							stylesheet.addRule("#"+dlg.id+"-form "+r00[ir00],r[1]);
					}
				} 
				else 
				{
					styleobj=document.createElement("style");
					document.getElementsByTagName("head")[0].appendChild(styleobj);
					//styleobj.appendChild(document.createTextNode("#"+dlg.id+" label {color:red;}"));
					var rstrtab=[];
					for ( var is=0 ; fullcsstab!=null && is<fullcsstab.length ; ++is )
					{
						var r=fullcsstab[is].split(/[\{\}]/);
						rstrtab.push("#"+dlg.id+" "+fullcsstab[is]);
					}
					styleobj.appendChild(document.createTextNode(rstrtab.join("\n")));
				}

				mkfieldsrek(dlg.fields,form);
			 }
		 },
		foreachplugin:function (plugin,fn)
		 {
			if ( typeof cms_config != "object" )
				cms_config={pluginconfig:{}};
			var allplugs=Dom.getElementsByClassName(plugin,"div");
			for ( var ia=0 ; ia<allplugs.length ; ++ia )
			{
				var el=allplugs[ia];
				var cfg=cms_data[el.id]||(cms_config.pluginconfig["CONFIG/"+cms_basepage+".js"]&&cms_config.pluginconfig["CONFIG/"+cms_basepage+".js"][el.id])||(cms_config.pluginconfig["CONFIG/"+cms_template+".js"]&&cms_config.pluginconfig["CONFIG/"+cms_template+".js"][el.id]);
				fn(el,cfg);
			}
		 },
		getplugin:function (plugin,idx)
		 {
			var allplugs=Dom.getElementsByClassName(plugin,"div");
			if ( idx<allplugs.length )
			{
				var el=allplugs[idx];
				var cfg=cms_data[el.id]||(cms_config.pluginconfig["CONFIG/"+cms_basepage+".js"]&&cms_config.pluginconfig["CONFIG/"+cms_basepage+".js"][el.id])||(cms_config.pluginconfig["CONFIG/"+cms_template+".js"]&&cms_config.pluginconfig["CONFIG/"+cms_template+".js"][el.id]);
				return {el:el,cfg:cfg};
			}
			else
				return null;
		 },
		getdatatable:function (id,def)
		 {
			var dt=def.scrollable ? new YAHOO.cms.XScrollingDataTable(id,def) : new new YAHOO.cms.XDataTable(id,def);
			cmslib.unload.register(dt);
			return dt;
		 },
		helpurl:function (pg)
		 {
			 var server="http://web.contentmanager.cc";
			 var dir="cm20help";
			 var page="page.asp";
			 var code="template=cms_dialog_help";
			 return /\//.test(pg)?pg:[server,dir,page,code,pg].join("/");
		 },
		inserttab:function(e)
		 {
			if (e.keyCode==9)
			{
				r=document.selection.createRange();
				if(r!=null)
					r.text="\t";
				Event.stopEvent(e);
				return false;
			}
			else
				return true;
		 },
		loaddialog:function(dlg,onok,config)	// benötigt YUI: dom event container connection json
		 {
			var dlgid=typeof dlg == 'string' 
				?dlg.replace(/.*\//,'')+'-dlg'
				:dlg.id ? dlg.id : 'dlg';
			if ( typeof dlg == 'object' || dialoge[dlg]!=null )
				this.dialog.show(typeof dlg == 'object' ? dlg : dialoge[dlg],dlgid,onok,config);
			else
			{	// Dialogobj aus xxx.js laden
				YAHOO.util.Connect.asyncRequest('GET', (dlg.indexOf("/")<0 ? '../../DIALOGS/':'')+dlg+".js?"+new Date().getTime(), {
					success: function(o){
						var dlgobj=eval("("+o.responseText+")");
						if ( dlgobj!=null )
						{
							dialoge[dlg]=dlgobj;
							cmslib.dialog.show(dlgobj,dlgid,onok,config);
						}
					 },
					failure: function(o){alert('Dialog konnte nicht initialisiert werden -'+o);},
					timeout: 10000
				 });
			}
		 },
		loaddata:function (fn,page)	// benötigt YUI: connect,json
		 {
			if ( page==null )
			 	 page=location.pathname.replace(/.*\/([^\/]+)\.\w+$/,"$1.jsn");
			var pgadr=(page.indexOf("/")<0 ? '../../DATA/':'')+page
			YAHOO.util.Connect.asyncRequest('GET', pgadr, {
				success: function(o){
					try
					{
						fn(eval("("+o.responseText+")"));
					}
					catch (ex)
					{
						alert("FEHLER: "+ex.description);
					}
					
				 },
				failure: function(){alert('Fehler beim Laden der Daten\nBitte drücken Sie F5 und versuchen Sie es noch einmal');},
				timeout: 10000,
				cache:false
			 });
		 },
		loadconfig:function (fn,page)	// benötigt YUI: connect,json
		 {
			//alert('loadconfig');
			if ( page==null )
			 	 page=location.pathname.replace(/.*\/([^\/]+)\.\w+$/,"$1.js");
			var pgadr=(page.indexOf("/")<0 ? '../../CONFIG/':'')+page
			// cms_config.pluginconfig["CONFIG/2.js"]={...}
			if (typeof cms_config=="undefined" || !YAHOO.lang.isObject(cms_config))
				cms_config={pluginconfig:[]};
			if (!YAHOO.lang.isArray(cms_config.pluginconfig))
				cms_config.pluginconfig=[];
			if (YAHOO.lang.isObject(cms_config.pluginconfig["CONFIG/"+pgadr]))
				fn(cms_config.pluginconfig["CONFIG/"+pgadr]);
			else
			{
				YAHOO.util.Connect.asyncRequest('GET', pgadr, {
					success: function(o){
						try
						{
							//alert('o.responseText:\n'+o.responseText);
							fn(eval("("+o.responseText+")"));
						}
						catch (ex)
						{
							alert("FEHLER: "+ex.description);
						}
					 },
					failure: function(){alert('Fehler beim Laden der Konfigurationsdaten\nBitte drücken Sie F5 und versuchen Sie es noch einmal');},
					timeout: 10000,
					cache:false
				 });
			}
		 },
		mkplugin:function(refelem,pos,typ,subtyp,config,postprocess)
		 {
			//alert('mkplugin("'+refelem.id+'","'+pos+'","'+typ+'","'+subtyp+'",'+JSON.stringify(config)+')');
			cms.send({ cmd:"new",
			     typ:typ,
			     page:cms.designmode?"TEMPLATE/"+cms_basetemplate+".asp":"PAGE/"+cms_basepage+".htm",
			     id:subtyp,	//elem.id,
			     config:config,
			     refid:refelem.id,
			     pos:pos
			 },"Element konnte nicht angelegt werden",function(str){
				//alert(str);
				var robj=eval("("+str+")");
				if ( robj.reload || robj.refreshcss || (robj.update.scripts&&robj.update.scripts.length>0) || (robj.update.yuimoduls&&robj.update.yuimoduls.length>0) )
					window.setTimeout(function(){
						var w=typeof cms=='object' && cms.cwin ? cms.cwin : window;
						w.location.reload(true);
					 },200);
				else
				{
					var cmsstrukturtree=cms.getStrukturtree();
					//alert(pos);
					try
					{
						switch (pos)
						{
						 case "prependChild": 
							refelem.innerHTML=robj.html+refelem.innerHTML;
							if ( cms.expand[refelem.id] && cms.expand[refelem.id].tvnode && cmsstrukturtree )
							{
								var knopf=cms.expand[refelem.id].tvnode;
								cmsstrukturtree.removeChildren(knopf);
								knopf.expand();
							}
							break;
						 case "appendChild": 
							refelem.innerHTML+=robj.html;
							if ( cms.expand[refelem.id] && cms.expand[refelem.id].tvnode && cmsstrukturtree )
							{
								var knopf=cms.expand[refelem.id].tvnode;
								cmsstrukturtree.removeChildren(knopf);
								knopf.expand();
							}
							break;
						 case "insertBefore": 
						 case "insertAfter": 
							var ne=(refelem.ownerDocument||document).createElement("div");
							ne.innerHTML=robj.html;
							var firstchild=Dom.getFirstChild(ne);
							var nextsibling=Dom.getNextSibling(firstchild);
							var nextafternextsibling=nextsibling!=null ? Dom.getNextSibling(nextsibling) : null;
							var insertednode=null;
							if ( pos=="insertBefore" )
								insertednode=Dom.insertBefore(firstchild,refelem);
							else
								insertednode=Dom.insertAfter(firstchild,refelem);
						
							//var aktsibling=nextsibling;
							while ( nextsibling!=null )
							{
								insertednode=Dom.insertAfter(nextsibling,insertednode);
								nextsibling=nextafternextsibling;
								nextafternextsibling=nextsibling!=null ? Dom.getNextSibling(nextsibling) : null;
							}
							if ( cms.expand[refelem.id] && cms.expand[refelem.id].tvnode && cmsstrukturtree )
							{
								var papa=cms.expand[refelem.id].tvnode.parent;
								cmsstrukturtree.removeChildren(papa);
								papa.expand();
							}
						}
					}
					catch (ex)
					{
						// workaround gegen Fehler in IE7
						window.setTimeout(function(){
							var w=typeof cms=='object' && cms.cwin ? cms.cwin : window;
							w.location.reload(true);
						 },0);
					}
					
				}
				var configfilename="CONFIG/"+(cms.designmode?cms_template:cms_basepage).toLowerCase()+".js";
				if(typeof cms_config.pluginconfig == "undefined")
					cms_config.pluginconfig={};
				if(typeof cms_config.pluginconfig[configfilename] == "undefined")
					cms_config.pluginconfig[configfilename]={};
				cms_config.pluginconfig[configfilename][robj.id]=config;
				/*
				 if(robj.refreshcss)
				 	refreshcss(cms.designer?"../../STYLES/"+cms_template+".css":"../../STYLES/"+cms_basepage+".css");
				 for ( var i=0 ; i<robj.update.css.length ; ++i )
				 	refreshcss("../../STYLES/"+robj.update.css[i]);
				 for ( i=0 ; i<robj.update.scripts.length ; ++i )
				 {
				 	//alert("loading: ../../SCRIPTS/"+robj.update.scripts[i]);
				 	YAHOO.util.Get.script("../../SCRIPTS/"+robj.update.scripts[i]);
				 }
				 YUILoader.require(robj.update.yuimoduls);
				 YUILoader.onSuccess=null;
				 YUILoader.insert();
				*/
				if ( typeof postprocess == 'function' )
					postprocess();
			  });
		 },
		savedata:function (dataobj,page)	// benötigt YUI: connect,json
		 {
			if ( page==null )
			 	 page=location.pathname.replace(/.*\/([^\/]+)\.\w+$/,"$1.jsn");
			var pgadr=(page.indexOf("/")<0 ? '../../DATA/':'')+page;
			send({cmd:"savetext",filename:pgadr.replace(/^(\.\.\/)+/,""),content:YAHOO.lang.JSON.stringify(dataobj)});
		 },
		patchtabview:function()
		 {	// Patch gegen Probleme mit Speicherverwaltung im IE
			if ( !cmslib.TabView && YUILoader.inserted.tabview )
			{
				var ACTIVE = 'active',
					ACTIVE_INDEX = 'activeIndex',
					ACTIVE_TAB = 'activeTab',
					CONTENT_EL = 'contentEl',
					ELEMENT = 'element',
					Y=YAHOO.util;
		
				var TV1=function(el,attr)
				 {
					TV1.superclass.constructor.call(this,el,attr);
				 }
				
				Lang.extend(TV1,YAHOO.widget.TabView, {
					initAttributes: function(attr) {
					    
						    YAHOO.widget.TabView.superclass.initAttributes.call(this, attr);
						    
						    if (!attr.orientation)
							attr.orientation = 'top';
						    
						    var el = this.get(ELEMENT);
					
						    if (!Dom.hasClass(el, this.CLASSNAME))
							Dom.addClass(el, this.CLASSNAME);        
						    
						    this.setAttributeConfig('tabs', {
							value: [],
							readOnly: true
						     });
					
						    this._tabParent = this.getElementsByClassName(this.TAB_PARENT_CLASSNAME, 'ul' )[0] || this._createTabParent();
						    this._contentParent = this.getElementsByClassName(this.CONTENT_PARENT_CLASSNAME, 'div')[0] ||  this._createContentParent();
						    
						    this.setAttributeConfig('orientation', {
							value: attr.orientation,
							method: function(value) {
							    var current = this.get('orientation');
							    this.addClass('yui-navset-' + value);
							    
							    if (current != value) {
								this.removeClass('yui-navset-' + current);
							    }
							    
							    if (value === 'bottom') {
								this.appendChild(this._tabParent);
							    }
							}
						     });
						    
						    this.setAttributeConfig(ACTIVE_INDEX, {
							value: attr.activeIndex,
							validator: function(value) {
							    var ret = true;
							    if (value && this.getTab(value).get('disabled')) { // cannot activate if disabled
								ret = false;
							    }
							    return ret;
							}
						     });
						    
						    this.setAttributeConfig(ACTIVE_TAB, {
							value: attr.activeTab,
							method: function(tab) {
							    var activeTab = this.get(ACTIVE_TAB);
							    
							    if (tab) {
								tab.set(ACTIVE, true);
							    }
							    
							    if (activeTab && activeTab !== tab) {
								activeTab.set(ACTIVE, false);
							    }
							    
							    if (activeTab && tab !== activeTab) { // no transition if only 1
								this.contentTransition(tab, activeTab);
							    } else if (tab) {
								tab.set('contentVisible', true);
							    }
							},
							validator: function(value) {
							    var ret = true;
							    if (value && value.get('disabled')) { // cannot activate if disabled
								ret = false;
							    }
							    return ret;
							}
						     });
					
						    this.on('activeTabChange', this._onActiveTabChange);
						    this.on('activeIndexChange', this._onActiveIndexChange);
					
						    YAHOO.log('attributes initialized', 'info', 'TabView');
						    if ( this._tabParent )
							this._initTabs();
						    
						    // Due to delegation we add all DOM_EVENTS to the TabView container
						    // but IE will leak when unsupported events are added, so remove these
						    this.DOM_EVENTS.submit = false;
						    this.DOM_EVENTS.focus = false;
						    this.DOM_EVENTS.blur = false;
						     this.DOM_EVENTS.mouseenter = false;
						     this.DOM_EVENTS.mouseleave = false;
						     this.DOM_EVENTS.mouseover = false;
						     this.DOM_EVENTS.mouseout = false;
						    this.DOM_EVENTS.change = false;
						     // this.DOM_EVENTS.mousemove = false;
						     // this.DOM_EVENTS.keydown = false;
						     // this.DOM_EVENTS.keypress = false;
						     // this.DOM_EVENTS.keyup = false;
						     // this.DOM_EVENTS.dblclick = false;
						    this.DOM_EVENTS.click = true;
						    this.DOM_EVENTS.mousedown = true;
						    this.DOM_EVENTS.mouseup = true;
						    
						    //for (var type in {click:true,mouseup:true,mousedown:true}) {
						    for (var type in this.DOM_EVENTS) 
						    {
							if ( YAHOO.lang.hasOwnProperty(this.DOM_EVENTS, type) && this.DOM_EVENTS[type] )
							    this.addListener.call(this, type, this.DOMEventHandler);
						    }
					 }
				 });
				
				cmslib.TabView=TV1;
				return true;
			}
			else
				return false;
		 },
		popupimg_aktlink:null,
		popupimg_linklist:null,
		popupimg:function(t,gtab,config)	// benötigt YUI: container,selector
		 {
			try
			{
				function showpicture(href,alt)
				 {
					var img=new Image();
					img.onload=function() {
						var maxheight=(Dom.getViewportHeight()-120);//*0.8;
						var maxwidth=(Dom.getViewportWidth()-40);//*0.9;
						imgdlg.hide();
						var h=this.height;
						var w=this.width;
						if ( h>maxheight )
						{
							w*=maxheight/h;
							h=maxheight;
						}
						if ( w>maxwidth )
						{
							h*=maxwidth/w;
							w=maxwidth;
						}
						imgdlgsrc.width=w;
						imgdlgsrc.height=h;
						imgdlgsrc.src=this.src;
						//imgdlg.render(document.body); 
						if ( alt )
							imgdlgalt.innerHTML=alt;
						imgdlg.show();
					 };
					img.src=href;
				 }
				function checkgaleryandshowpicture()
				 {
					if ( gtab instanceof Array )
					{
						cmslib.popupimg_linklist=gtab;
						var href=typeof t == 'string' ?  t : t.tagName == 'A' ? t.href : t.src;
						for ( var ig=0 ; ig<cmslib.popupimg_linklist.length && href!=cmslib.popupimg_linklist[ig].src ; ++ig )
							;
						if ( ig==cmslib.popupimg_linklist.length )
						{
							cmslib.popupimg_aktlink=0;
							cmslib.popupimg_linklist.unshift({src:href,alt:''});
						}
						else
							cmslib.popupimg_aktlink=ig;
					}
					else
					{
						var gal=Dom.getAncestorByClassName(t,"bhv-image-galery");
						cmslib.popupimg_linklist=[];
						if ( gal!=null )
						{
							var imglist=YAHOO.util.Selector.query("a>img",gal);
							cmslib.popupimg_aktlink=null;
							for ( var ii=0 ; ii<imglist.length ; ++ii )
							{
								if ( imglist[ii].parentNode.href.search(/\.jpe?g$|\.gif$|\.png$|\.bmp$|\.tiff?$/)>=0 )
									cmslib.popupimg_linklist.push({src:imglist[ii].parentNode.href,alt:imglist[ii].alt,elem:imglist[ii]});
								if ( imglist[ii].parentNode==t )
									cmslib.popupimg_aktlink=ii;
							}
						}
					}
					var buts=config && config.buttons instanceof Array ? config.buttons : [];
					if ( cmslib.popupimg_linklist.length>1 )
					{
						imgdlg.cfg.setProperty("buttons",[
							{text:"&lt;", handler:function(){
								if(cmslib.popupimg_aktlink>0)
								{
									--cmslib.popupimg_aktlink;
									showpicture(cmslib.popupimg_linklist[cmslib.popupimg_aktlink].src,cmslib.popupimg_linklist[cmslib.popupimg_aktlink].alt);
							 	}
								if(cmslib.popupimg_aktlink==0)
									Dom.setStyle(imgdlg.getButtons()[0].get("element"),"visibility","hidden");
							 	if(cmslib.popupimg_aktlink<cmslib.popupimg_linklist.length-1)
									Dom.setStyle(imgdlg.getButtons()[2].get("element"),"visibility","");
								
							 } }, 
							{text:"x", handler:function(){imgdlg.hide();} },
							{text:"&gt;", handler:function(){
								if(cmslib.popupimg_aktlink<cmslib.popupimg_linklist.length-1)
								{
									++cmslib.popupimg_aktlink
									showpicture(cmslib.popupimg_linklist[cmslib.popupimg_aktlink].src,cmslib.popupimg_linklist[cmslib.popupimg_aktlink].alt);
							 	}
								if(cmslib.popupimg_aktlink>0)
									Dom.setStyle(imgdlg.getButtons()[0].get("element"),"visibility","");
							 	if(cmslib.popupimg_aktlink==cmslib.popupimg_linklist.length-1)
									Dom.setStyle(imgdlg.getButtons()[2].get("element"),"visibility","hidden");
							 } } 
						 ].concat(buts));
						if(cmslib.popupimg_aktlink==0)
							Dom.setStyle(imgdlg.getButtons()[0].get("element"),"visibility","hidden");
						if(cmslib.popupimg_aktlink==cmslib.popupimg_linklist.length-1)
							Dom.setStyle(imgdlg.getButtons()[2].get("element"),"visibility","hidden");
					}
					else
						imgdlg.cfg.setProperty("buttons",buts);
					if ( typeof t == 'string' )
						showpicture(t,cmslib.popupimg_linklist[cmslib.popupimg_aktlink]?cmslib.popupimg_linklist[cmslib.popupimg_aktlink].alt:null);
					else
					{
						switch ( t.tagName )
						{
						 case "IMG": //
							showpicture(t.src,t.alt);
							break;
						 case "A": //
							showpicture(t.href,t.title);
							break;
						 default:
						}
					}
					
				 }
				if ( !imgdlg )
				{
					imgdlg=new YAHOO.widget.SimpleDialog("imgdlg1", {
							fixedcenter: true,
							visible: false,
							modal: true,
							draggable:false,
							close:true,
							text:'<img src="" id="galery-imgdlg"><div id="galery-imgdlg-alt"></div>'
					});
					cmslib.unload.register(imgdlg);
					imgdlg.renderEvent.subscribe(function(){
						imgdlgsrc=Dom.get("galery-imgdlg");
						imgdlgalt=Dom.get("galery-imgdlg-alt");
						Event.on(imgdlgsrc,"click",function(ev){imgdlg.hide();});
						checkgaleryandshowpicture();
					 });
					imgdlg.render(document.body);
				}
				else
					checkgaleryandshowpicture()
				cmslib.stopEvent=true;
				return imgdlg;
			}
			catch(ex)
			{
				//alert('CATCH: '+ex.description);
				return null;
			}
		 },
		popupswf:function(t,f,ver,b,h,flv,par,att)
		 {
			function showswf()
			 {
				swfdlg.setBody('<div style="height: 20px;"></div><div id=swfdiv></div>');
				swfobject.embedSWF(f,"swfdiv",b,h,ver,null,flv,par,att);
				swfdlg.show();
			 }
			try
			{
				if (swfobject.hasFlashPlayerVersion(ver))
				{
					if ( !swfdlg )
					{
						swfdlg=new YAHOO.widget.SimpleDialog("swfdlg", {
								fixedcenter: true,
								visible: false,
								modal: true,
								draggable:false,
								close:true
						 });
						cmslib.unload.register(swfdlg);
						swfdlg.renderEvent.subscribe(function(){
							swfdlgsrc=Dom.get("swfdlg");
							Event.on(swfdlgsrc,"click",function(ev){swfdlg.hide();});
							showswf();
						 });
						swfdlg.hideEvent.subscribe(function(){
							swfdlg.setBody('');
						 });
						swfdlg.render(document.body);
					}
					else
						showswf()
					cmslib.stopEvent=true;
					return false;
				}
				else
					return this.popupimg(t);
			}
			catch(ex)
			{
				//alert('CATCH: '+ex.description);
				return true;
			}
		 },
		prompt:function(label,defaultvalue,fnok)
		 {
			cms.loaddialog("/s/DIALOGS/prompt",fnok,{defaulttext:defaultvalue,prompttext:label});
		 },
		TabView:null,
		update:function(modul,method,param,onok,onerror)	// benötigt YUI: connect,json
		 {
			send({cmd:"userdef",modul:modul,method:method,param:param},onerror,onok);
		 },
		sync: function()	// wait.notify(wid), wait.run(wid,fn)
		 {
			 var wref={};
			 return {
				notify: function(wid,obj)
				{
					//alert('notify');
					if (!wref[wid])
						wref[wid]={open: false, fntab:[], obj:obj};
					else if (wref[wid].open)
					{
						wref[wid].open=false;
						wref[wid].obj=obj;
						for(var ifn=0; ifn<wref[wid].fntab.length; ++ifn)
							wref[wid].fntab[ifn](obj);
					}
				},
				wait: function(wid,fn)
				{
					//alert('run');
					if (!wref[wid])
						wref[wid]={open: true, fntab:[fn]};
					else if (wref[wid].open)
						wref[wid].fntab.push(fn);
					else
						fn(wref[wid].obj);
				}
			}
		 }(),
		init:function ()
		 {
			if ( typeof YAHOO == 'object' )
			{
				Dom=YAHOO.util!=null ? YAHOO.util.Dom : null;
				Event=YAHOO.util!=null ? YAHOO.util.Event : null;
				Lang=YAHOO.lang;
				JSON=YAHOO.lang!=null ? YAHOO.lang.JSON : null;
				cmslib.patchtabview();
			}
			Event.addListener(window,"unload",cmslib.unload.destroyall);
			//YAHOO.util.Element.prototype.__init=YAHOO.util.Element.prototype.init;
			//YAHOO.util.Element.prototype.init=function() {cmslib.unload.register(this); this.__init.apply(this,arguments);}
			//YAHOO.widget.Module.prototype.__init=YAHOO.widget.Module.prototype.init;
			//YAHOO.widget.Module.prototype.init=function() {cmslib.unload.register(this); this.__init.apply(this,arguments);}
		 }
		
	 }
 }();
cms_inittab.push(cmslib.init);

