Ext.ux.Portal=Ext.extend(Ext.Panel,{layout:"column",autoScroll:true,cls:"x-portal",defaultType:"portalcolumn",initComponent:function(){Ext.ux.Portal.superclass.initComponent.call(this);this.addEvents({validatedrop:true,beforedragover:true,dragover:true,beforedrop:true,drop:true})},initEvents:function(){Ext.ux.Portal.superclass.initEvents.call(this);this.dd=new Ext.ux.Portal.DropZone(this,this.dropConfig)},beforeDestroy:function(){if(this.dd){this.dd.unreg()}Ext.ux.Portal.superclass.beforeDestroy.call(this)}});Ext.reg("portal",Ext.ux.Portal);Ext.ux.Portal.DropZone=function(a,b){this.portal=a;Ext.dd.ScrollManager.register(a.body);Ext.ux.Portal.DropZone.superclass.constructor.call(this,a.bwrap.dom,b);a.body.ddScrollConfig=this.ddScrollConfig};Ext.extend(Ext.ux.Portal.DropZone,Ext.dd.DropTarget,{ddScrollConfig:{vthresh:50,hthresh:-1,animate:true,increment:200},createEvent:function(a,f,d,b,h,g){return{portal:this.portal,panel:d.panel,columnIndex:b,column:h,position:g,data:d,source:a,rawEvent:f,status:this.dropAllowed}},notifyOver:function(w,u,x){var f=u.getXY(),a=this.portal,o=w.proxy;if(!this.grid){this.grid=this.getGrid()}var b=a.body.dom.clientWidth;if(!this.lastCW){this.lastCW=b}else{if(this.lastCW!=b){this.lastCW=b;a.doLayout();this.grid=this.getGrid()}}var d=0,m=this.grid.columnX,n=false;for(var s=m.length;d<s;d++){if(f[0]<(m[d].x+m[d].w)){n=true;break}}if(!n){d--}var r,l=false,k=0,v=a.items.itemAt(d),q=v.items.items;for(var s=q.length;k<s;k++){r=q[k];var t=r.el.getHeight();if(t!==0&&(r.el.getY()+(t/2))>f[1]){l=true;break}}var g=this.createEvent(w,u,x,d,v,l&&r?k:v.items.getCount());if(a.fireEvent("validatedrop",g)!==false&&a.fireEvent("beforedragover",g)!==false){o.getProxy().setWidth("auto");if(r){o.moveProxy(r.el.dom.parentNode,l?r.el.dom:null)}else{o.moveProxy(v.el.dom,null)}this.lastPos={c:v,col:d,p:l&&r?k:false};this.scrollPos=a.body.getScroll();a.fireEvent("dragover",g);return g.status}else{return g.status}},notifyOut:function(){delete this.grid},notifyDrop:function(m,g,f){delete this.grid;if(!this.lastPos){return}var k=this.lastPos.c,b=this.lastPos.col,l=this.lastPos.p;var a=this.createEvent(m,g,f,b,k,l!==false?l:k.items.getCount());if(this.portal.fireEvent("validatedrop",a)!==false&&this.portal.fireEvent("beforedrop",a)!==false){m.proxy.getProxy().remove();m.panel.el.dom.parentNode.removeChild(m.panel.el.dom);if(l!==false){k.insert(l,m.panel)}else{k.add(m.panel)}k.doLayout();this.portal.fireEvent("drop",a);var n=this.scrollPos.top;if(n){var h=this.portal.body.dom;setTimeout(function(){h.scrollTop=n},10)}}delete this.lastPos},getGrid:function(){var a=this.portal.bwrap.getBox();a.columnX=[];this.portal.items.each(function(b){a.columnX.push({x:b.el.getX(),w:b.el.getWidth()})});return a},unreg:function(){Ext.ux.Portal.DropZone.superclass.unreg.call(this)}});Ext.ux.PortalColumn=Ext.extend(Ext.Container,{layout:"anchor",autoEl:"div",defaultType:"portlet",cls:"x-portal-column"});Ext.reg("portalcolumn",Ext.ux.PortalColumn);Ext.ux.Portlet=Ext.extend(Ext.Panel,{anchor:"100%",frame:true,collapsible:true,draggable:true,cls:"x-portlet",initComponent:function(){Ext.ux.Portlet.superclass.initComponent.call(this);if(this.sticky){this.cls+=" sticky-portlet"}}});Ext.reg("portlet",Ext.ux.Portlet);function tx_iportal_addportlet(a){Ext.Ajax.request({url:"/index.php",method:"POST",params:{action:"createportlet",eID:"tx_iportal",id:tx_iportal_pid,uid:a},success:tx_iportal_processPortletCreateSuccess,failure:tx_iportal_processPortletCreateFailure})}function tx_iportal_processPortletCreateFailure(response,request){try{var result=eval("("+response.responseText+")");Ext.MessageBox.alert("",result.errormsg)}catch(e){Ext.MessageBox.alert("",e.message)}}function tx_iportal_processPortletCreateSuccess(response,request){try{var result=eval("("+response.responseText+")");if(!result.success){Ext.MessageBox.alert("",result.errormsg)}else{var config=result.config;config.title=result.title;tx_iportal_processPortletCreate(config)}}catch(e){Ext.MessageBox.alert("",e.message)}}function tx_iportal_processPortletConfig(response,request){try{var result=eval("("+response.responseText+")");if(!result.success){Ext.MessageBox.alert("",result.errormsg)}else{var config=result.config;config.title=result.title;var portlet=tx_iportal_processPortletCreate(config);if(typeof result.setup!="undefined"){config.id=portlet.getId();result.setup({config:config,fn:tx_iportal_replacePortlet})}}}catch(e){Ext.MessageBox.alert("",e.message)}}function tx_iportal_replacePortlet(a){Ext.Ajax.request({url:"/index.php",method:"POST",params:{action:"createportlet",eID:"tx_iportal",id:tx_iportal_pid,_original_id:a.id,uid:uid},success:tx_iportal_processPortletReplace,failure:tx_iportal_processPortletCreateFailure})}function tx_iportal_findInsertColumn(){var d=tx_iportal.items.items;var e=1000000;var b=null;for(var c=0;c<d.length;c++){var a=d[c].getSize().height;if(a<e){b=d[c];e=a}}return b==null?d[d.length==1?0:1]:b}function tx_iportal_processPortletCreate(a){a.id="id-"+(new Date()).getTime();var d=new DmitryDulepov.iPortlet(a);var b=tx_iportal.items.items;var c=tx_iportal_findInsertColumn();c.add(d);c.doLayout();tx_iportal_saveState();if(typeof Prototype!="undefined"){new Effect.Pulsate(d.getId(),{pulses:3,duration:2,from:0.3})}return d}function tx_iportal_processPortletReplace(response,request){var result=eval("("+response.responseText+")");var config=result.config;var portlet=new DmitryDulepov.iPortlet(config);var old_portlet=Ext.fly(request.params._original_id);var column=old_portlet.ownerCt;for(var i=0;i<column.items.length;i++){if(column.items.itemAt(i).getId()==old_portlet.getId()){break}}if(i<column.items.length){column.remove(old_portlet.getId());column.insert(i,portlet)}else{column.add(portlet)}column.doLayout();tx_iportal_saveState()}function tx_iportal_closePortlet(c,b,a){if(typeof Prototype!="undefined"){new Effect.Shrink(a.getId(),{duration:1});setTimeout(function(){a.ownerCt.remove(a,true);tx_iportal_saveState()},1000)}else{a.ownerCt.remove(a,true);tx_iportal_saveState()}}var tx_iportal_lockUpdates=true;function tx_iportal_saveState(){if(!tx_iportal_lockUpdates){var c=[];for(i=0;i<tx_iportal.items.length;i++){var a=tx_iportal.items.items[i];var b=[];for(j=0;j<a.items.length;j++){var g=a.items.items[j];if(g.draggable){var f=g.tx_iportal_state;f.collapsed=g.collapsed;f.title=g.title;b.push(f)}}var d={portlets:b,uid:a.tx_iportal_state.uid};c.push(d)}var e={columns:c};Ext.Ajax.request({url:"/index.php",method:"POST",params:{eID:"tx_iportal",id:tx_iportal_pid,action:"savestate",data:Ext.encode(e)}})}}Ext.onReady(function(){Ext.BLANK_IMAGE_URL="/typo3/gfx/clear.gif";Ext.QuickTips.init();Ext.namespace("DmitryDulepov");DmitryDulepov.iPortal=Ext.extend(Ext.ux.Portal,{defaultType:"iportalcolumn",initComponent:function(){Ext.EventManager.onWindowResize(this.adjustPortalLayout,this);DmitryDulepov.iPortal.superclass.initComponent.call(this,arguments)},adjustPortalLayout:function(){this.doLayout(true)},listeners:{drop:tx_iportal_saveState}});Ext.reg("iportal",DmitryDulepov.iPortal);DmitryDulepov.iPortalColumn=Ext.extend(Ext.ux.PortalColumn,{defaultType:"iportlet",tx_iportal_state:{uid:0}});Ext.reg("iportalcolumn",DmitryDulepov.iPortalColumn);DmitryDulepov.iPortlet=Ext.extend(Ext.ux.Portlet,{defaultType:"iportlet",tx_iportal_state:{portlet_id:""},listeners:{collapse:tx_iportal_saveState,expand:tx_iportal_saveState}});Ext.reg("iportlet",DmitryDulepov.iPortlet);tx_iportal_tbar=new Ext.Toolbar();tx_iportal_tbar.render("tx-iportal-toolbar");for(var a=0;a<tx_iportal_tbar_buttons.length;a++){tx_iportal_tbar.add(tx_iportal_tbar_buttons[a])}if(tx_iportal_tbar.doLayout){tx_iportal_tbar.doLayout()}tx_iportal=new DmitryDulepov.iPortal(tx_iportal_config);tx_iportal.render("tx-iportal");tx_iportal.doLayout(true);tx_iportal_lockUpdates=false});