(function(b){b.beng=b.beng||{};var a={format:function(c){return c}};Object.extend(b.beng,{WidgetManager:({instances:{},instancesNG:{},descriptors:[],thumbnailCache:{},__loadQueue:[],__loadCount:0,register:function(h,c,g,i,f){g=g||"";i=i||"";f=f||"";var d=c+":"+f;var e=beng.WidgetManager.instances[g];if(typeof e=="undefined"){e=beng.WidgetManager.instances[g]={}}e[d]=new beng.WidgetInstance(beng.WidgetManager.getDescriptor(h),c,g,i,f)},registerNG:function(c){var d=c.id+":"+(c.wviid||"");beng.WidgetManager.instancesNG[d]=c},getInstance:function(h,l,c,f,j){c=c||"";f=f||"";j=j||"";var k=l+":"+j;var i=beng.WidgetManager.instances[c];if(!i||!i[k]){beng.WidgetManager.register(h,l,c,f,j)}var d=beng.WidgetManager.instances[c][k];try{d.getWidgetId();return d}catch(g){beng.WidgetManager.instances[c][k]=null;return arguments.callee.apply(this,arguments)}},getInstanceNG:function(c,e){e=e||"";var d=c+":"+e;return beng.WidgetManager.instancesNG[d]},showNotifications:function(f,e,d){if(d===true){d={};d.callbackFunc=function(){getTopWindow().controlpanel.forceReloadMainBody("messages")}}var c=beng.WidgetManager.getInstance(f,e);c.showNotifications(d||{})},configure:function(g,e,h,f,d){var c=beng.WidgetManager.getInstance(g,e,"",h,f);c.configure(d)},registerWidgetDescriptor:function(c,d){if(b!=getTopWindow()){throw new Error("WidgetManager.js, function registerWidgetDescriptor: widget descriptors must be loaded in window.top!")}beng.WidgetManager.descriptors[c]=new beng.WidgetDescriptor(c,d)},getDescriptor:function(c){if(b!=getTopWindow()){return getTopWindow().beng.WidgetManager.getDescriptor(c)}if(!beng.WidgetManager.descriptors[c]){throw new Error("widget descriptor ["+c+"] not found!")}return beng.WidgetManager.descriptors[c]},loadThumbnail:function(l,n,j,h){var g,o;var f=beng.WidgetManager.getDescriptor(l);var m=((n&&f.hasInstanceThumbnail)?l+"_"+n:l);j=$(j);try{if((n==""||!f.hasInstanceThumbnail)&&b.editPage&&f.thumbnail){g="tn-"+(new String(new Date().getTime()+Math.random()).replace(/\./,"-"));j.update('<img id="'+g+'" />');o=$(g);o.observe("error",h||function(e){Event.findElement(e,"img").src="/beng/res/img/editor/thumbnail_default.png"});o.src="/.cm4all/widgetres/"+l+"/"+f.thumbnail;return}}catch(k){}var c=getTopWindow().beng.WidgetManager.thumbnailCache;try{if(c[m]){j.update(c[m]);j.thumbnailLoaded=true;return}}catch(k){getTopWindow().beng.WidgetManager.__resetThumbnailCache()}c=null;var d=createBengRequestUrl("/beng/coma/WidgetMgr.cls",{action:"getThumbnail",wcid:l,wiid:n},null,null,true);var i=this;beng.WidgetManager.__loadQueue.push(function(){beng.WidgetManager.__loadCount++;var e={method:"get",onComplete:function(){if(beng.WidgetManager.__loadCount>0){beng.WidgetManager.__loadCount--}beng.WidgetManager.__invokeFromLoadQueue.call(i)},onSuccess:function(r){var q=r.responseText.replace(/<\?xml[^>]*>/,"").replace(/<!DOCTYPE[^>]*>/,"");var p=getTopWindow().beng.WidgetManager.thumbnailCache;p[m]=q;j.update(q);j.thumbnailLoaded=true},onFailure:function(){Common.log("Error loading: "+j)},onException:function(){Common.log("Exception loading: "+j)}};new Ajax.Request(d,e)});beng.WidgetManager.__invokeFromLoadQueue.call(this)},loadInstances:function(f,g){var d=createBengRequestUrl("/beng/coma/WidgetMgr.cls",{action:"getInstances",wcid:f},null,null,true);var e=this;var c={method:"get",onSuccess:function(n){var m=[];var l=n.responseXML.getElementsByTagName("widgetInstance");var k;var h;var j={};for(k=0;k<l.length;k++){h=e.getInstance(f,l.item(k).getAttribute("wiid"));if(!j[h.wiid]){m.push(h);j[h.wiid]=true}if(!h.documentId||(h.documentId&&h.documentId.charAt(0)==":")){h.documentId=l.item(k).getAttribute("documentId")}}if(Object.isFunction(g)){g.call(e,m)}},onFailure:function(){Common.log("Error loading: "+d)},onException:function(){Common.log("Exception loading: "+d)}};new Ajax.Request(d,c)},create:function(l,h){h=h||{};var n=(h.ajaxOptions||{});var g=(h.initParams||"");var d=beng.WidgetManager.getDescriptor(l);if(d.isSingelton&&!h.wvcid){for(var j=0;j<beng.widgetCatalog.length;j++){if(beng.widgetCatalog[j].wcid==l){var f="";if(beng.widgetCatalog[j].pageId=="deleted"){break}if(beng.widgetCatalog[j].pageId=="clipboard"){f=a.format("You have a copy of this widget in your clipboard.<br/>Please use this one.")}else{try{f=a.format("This widget is already incuded in page <br><b>${pagename}</b><br>!",{pagename:beng.editor.editorNG.getSitetree().getPage(beng.widgetCatalog[j].pageId).getNavigationText()})}catch(k){f=a.format("This widget can only be included in your website once!")}f+="<br /><br />"+a.format("You can move the widget through the clipboard or use a link (if applicable).")}messageBox(a.format("Error"),f);if(Object.isFunction(h.onFailure)){h.onFailure({})}return}}}n.method="get";n.origOnSuccess=h.onSuccess||Prototype.emptyFunction;n.onSuccess=function(p){var t=p.responseXML;var i=t.documentElement;var s=(i.getAttribute("isReady")!="false");if(i.getAttribute("ERROR")){messageBox(a.format("Error"),a.format("An error ocurred while trying to create the widget.<br>Please try again later!"));if(Object.isFunction(h.onFailure)){h.onFailure({})}return}var o=i.getAttribute("wiid");var q=i.getAttribute("wviid");var r=i.getAttribute("wvcid");var e=beng.WidgetManager.getInstance(l,o,"",r,q);this.origOnSuccess(e,s)}.bind(n);n.onFailure=h.onFailure;var m;if(h.wiid&&h.wvcid){m={action:"createView",wcid:l,wiid:h.wiid,wvcid:h.wvcid,initParams:g}}else{m={action:"create",wcid:l,initParams:g}}var c=createBengRequestUrl("/beng/coma/WidgetMgr.cls",m,beng.WidgetManager.__metadata2WidgetHeader(h.metadata||{}));return new Ajax.Request(c,n)},makePersistent:function(f,c){c=c||{};var e=createBengRequestUrl("/beng/coma/WidgetMgr.cls",{action:"makePersistent",documentId:f},{},{skipProcess:true});var d=Object.extend(c||{},{method:"post"});new Ajax.Request(e,d)},rollbackParameters:function(f,c){c=c||{};var e=createBengRequestUrl("/beng/coma/WidgetMgr.cls",{action:"rollbackParameters",documentId:f},{},{skipProcess:true});var d=Object.extend(c||{},{method:"post"});new Ajax.Request(e,d)},rollbackParametersByWidget:function(g,f,c){c=c||{};var e=createBengRequestUrl("/beng/coma/WidgetMgr.cls",{action:"rollbackParameters",wiid:f},{},{skipProcess:true});var d=Object.extend(c||{},{method:"post"});new Ajax.Request(e,d)},updateParameters:function(f,j,d,e,i){d=d||{};var c=createBengRequestUrl("/beng/coma/WidgetMgr.cls",{action:"updateParameters",wiid:j,wvcid:(e?e:""),wviid:(i?i:"")},{},{skipProcess:true});var k=Object.extend(d.ajaxOptions||{},{method:"get",onSuccess:function(){try{var n=getTopWindow();if(n.controlpanel){var m=n.controlpanel.getEditorWnd().beng.editor;if(m.editorNG&&typeof m.editorNG.setModified=="function"){m.editorNG.setModified(true)}}}catch(l){}if(Object.isFunction(d.onSuccess)){d.onSuccess()}},onComplete:Object.isFunction(d.onComplete)?d.onComplete:Prototype.emptyFunction,evalScripts:true});if(d.params){var h=getTopWindow().createDocument("widget");var g=h.documentElement;Object.keys(d.params).each(function(m){var l=(Object.isArray(d.params[m]))?d.params[m]:[d.params[m]];l.each(function(o){var n=h.createElement("parameter");n.setAttribute("name",m);n.setAttribute("value",o.toString());g.appendChild(n)})});k.method="post";k.postBody=h;k.contentType="text/xml"}new Ajax.Request(c,k)},updateContent:function(j,o,g,i,m){g=g||{};var f=(g.refElement||null);var n=beng.WidgetManager.getInstance(j,o,"",i,m);var l=g.metadata||new Hash();var e=$("widgetroot_"+o);if(e&&beng.EditorNG){var k=beng.EditorNG.Metadata.getCalculated(e);if(l.get("width")&&k.get("width")){var d=Math.min(+l.get("width"),+k.get("width"));l=k.merge(l);l.set("width",d)}else{l=k.merge(l)}}var h=beng.WidgetManager.__metadata2WidgetHeader(l);var c=createBengRequestUrl("/beng/coma/WidgetMgr.cls",{action:"reload",wcid:j,wiid:o,wvcid:i||"",wviid:m||"",bodyonly:""+(f?false:(g.bodyonly||false))},beng.WidgetManager.__metadata2WidgetHeader(l));new Ajax.Request(c,{method:"get",onSuccess:function(t){try{var q=t.responseText.replace(/<\?xml[^>]*>/,"").replace(/<!DOCTYPE[^>]*>/,"");if(Object.isFunction(g.insertCallback)){g.insertCallback(q)}else{if(f){$(f).replace(q)}else{var s=n.container.ownerDocument;var p=(s.defaultView||s.parentWindow).jQuery(n.container);p.empty();p.append(q);p.css({display:"none"});p.css({display:"block"})}}}catch(r){Common.log(r.message)}if(Object.isFunction(g.onSuccess)){g.onSuccess()}}})},updateWidget:function(e,c,f,g,d){f=f||{};beng.WidgetManager.updateContent(e,c,{metadata:(f.metadata||{}),bodyonly:true,onSuccess:f.callbackFn||Prototype.emptyFunction},g,d)},__metadata2WidgetHeader:function(d){if(Object.isFunction(d.toObject)){d=d.toObject()}var c=new Hash();$w("container alignment display width height maxwidth").each(function(e){if(d[e]){c.set("x-widget"+e,d[e])}});return c.toObject()},__invokeFromLoadQueue:function(){while(beng.WidgetManager.__loadCount<5&&beng.WidgetManager.__loadQueue.length>0){var c=beng.WidgetManager.__loadQueue.shift();if(Object.isFunction(c)){c.call(this)}}},__resetThumbnailCache:function(){delete beng.WidgetManager.thumbnailCache;beng.WidgetManager.thumbnailCache={}},TERM_END:null})});if(b.getTopWindow()&&b.getTopWindow().locale){Xlate.invoke({namespace:"beng.editor",language:b.getTopWindow().locale.replace(/_.*/,""),country:b.getTopWindow().locale.replace(/[^_]*_/,""),callback:function(c){a=c}})}else{Common.log("No locale set or wrong top-window: "+b.getTopWindow())}})(window);
