/*
 * Ext JS Library 3.2.0
 * Copyright(c) 2006-2010 Ext JS, Inc.
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.app.App=function(){this.appsXml="xml/apps.xml";this.iconsXml="xml/icons.xml";this.winsXml="xml/wins.xml";this.confXml="xml/conf.xml";this.mask=new Ext.LoadMask(Ext.getBody(),{msg:"Cargando plataforma..."});this.addEvents({ready:true,beforeunload:true});Ext.onReady(this.initApp,this)};Ext.extend(Ext.app.App,Ext.util.Observable,{isReady:false,Config:new Array(),Apps:new Array(),Icons:new Array(),Wins:new Array(),Windows:new Array(),appRecord:Ext.data.Record.create([{name:"id",type:"string",mapping:"id"},{name:"nombre",type:"string",mapping:"nombre"},{name:"app",type:"string",mapping:"app"}]),createStoreApps:function(a){this.Apps=new Ext.data.XmlStore({storeId:"Apps",url:a,record:"app",idPath:"id",fields:[{name:"id",type:"string"},{name:"title",type:"string"},{name:"url",type:"string"},{name:"pos",type:"string"},{name:"width",type:"int"},{name:"height",type:"int"}]});this.Apps.load()},createStoreWins:function(a){this.Wins=new Ext.data.XmlStore({storeId:"Wins",url:a,record:"win",idPath:"id",fields:[{name:"id",type:"string"},{name:"title",mapping:"es",type:"string"},{name:"pos",type:"string"},{name:"width",type:"int"},{name:"height",type:"int"}]});this.Wins.load()},createStoreWindows:function(){this.Windows=new Ext.data.ArrayStore({storeId:"Windows",idIndex:0,fields:[{name:"id",type:"string"},{name:"nombre",type:"string"},{name:"app",type:"string"}]})},createStoreIcons:function(a){this.Icons=new Ext.data.XmlStore({storeId:"Icons",url:a,record:"icon",idPath:"id",fields:[{name:"id",type:"string"},{name:"title",type:"string"},{name:"top",type:"int"},{name:"left",type:"int"},{name:"bottom",type:"int"},{name:"right",type:"int"}]});this.Icons.on("load",function(){for(i=0;i<this.Icons.getTotalCount();i++){var d=this.Icons.getAt(i);this.createIcon(d);var c=Ext.get(d.id);var b=new Ext.dd.DDProxy(c);b.startDrag=function(){this.constrainTo("x-desktop")};c.on("click",function(){for(elem=0;elem<MyDesktop.Apps.getTotalCount();elem++){var e=this.id.replace("-shortcut","");if(e==MyDesktop.Apps.getAt(elem).get("id")){Ext.util.CSS.createStyleSheet(".icon-"+e+" { background-image: url(images/icons/"+e+"-icon.png) !important; }");var f=MyDesktop.Apps.getById(e);MyDesktop.desktop.createIWidget(e,f.get("url"),f.get("title"),f.get("pos"),f.get("width"),f.get("height"))}}})}},this);this.Icons.load()},createIcon:function(l){var n=l.get("title");var d=l.get("id");var a=l.get("bottom");var k=l.get("top");var e=l.get("left");var m=l.get("right");var g=(k!=null)?"top:"+Math.ceil((Ext.lib.Dom.getViewHeight()*k)/100)+";":"";var f=(e!=null)?"left:"+Math.ceil((Ext.lib.Dom.getViewWidth()*e)/100)+";":"";var c=(a!=null)?"bottom:"+Math.ceil((Ext.lib.Dom.getViewHeight()*a)/100)+";":"";var b=(m!=null)?"right:"+Math.ceil((Ext.lib.Dom.getViewWidth()*m)/100)+";":"";var j=g+f+c+b;Ext.DomHelper.useDom=true;var h=Ext.DomHelper.append("x-shortcuts",{id:d,tag:"div",style:"position:absolute;"+j,children:[{tag:"a",href:"#",children:[{tag:"img",src:"images/icons/"+d+".png",style:"width:128px;height:128px;"},{tag:"div",html:n}]}]})},readConfig:function(a){this.Config=new Ext.data.XmlStore({storeId:"Config",url:a,record:"conf",fields:[{name:"host",type:"string"},{name:"url",type:"string"}]});this.Config.load()},createLogo:function(){new Ext.Window({id:"logo",closable:false,draggable:false,resizable:false,plain:true,border:false,frame:false,items:new Ext.BoxComponent({autoEl:{tag:"img",src:"images/default/logo.png"},hideParent:true}),renderTo:"x-desktop",x:Ext.lib.Dom.getViewWidth()-140,y:Ext.lib.Dom.getViewHeight()-170}).show()},initApp:function(){this.desktop=new Ext.Desktop(this);this.readConfig(this.confXml);this.createStoreApps(this.appsXml);this.createStoreIcons(this.iconsXml);this.createStoreWins(this.winsXml);this.createStoreWindows();this.init();Ext.EventManager.on(window,"beforeunload",this.onUnload,this);this.fireEvent("ready",this);this.isReady=true},init:Ext.emptyFn,onReady:function(b,a){if(!this.isReady){this.on("ready",b,a)}else{b.call(a,this)}},getDesktop:function(){return this.desktop},onUnload:function(a){if(this.fireEvent("beforeunload",this)===false){a.stopEvent()}}});
/*
 * Ext JS Library 3.2.0
 * Copyright(c) 2006-2010 Ext JS, Inc.
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.ux.TaskBar=function(a){this.app=a;this.init()};Ext.extend(Ext.ux.TaskBar,Ext.util.Observable,{init:function(){this.tbPanel=new Ext.ux.TaskButtonsPanel({el:"ux-taskbuttons-panel",id:"TaskBarButtons",region:"center"});var a=new Ext.ux.TaskBarContainer({el:"ux-taskbar",layout:"border",items:[this.tbPanel]});return this},addTaskButton:function(a){return this.tbPanel.addButton(a,"ux-taskbuttons-panel")},removeTaskButton:function(a){this.tbPanel.removeButton(a)},setActiveButton:function(a){this.tbPanel.setActiveButton(a)}});Ext.ux.TaskBarContainer=Ext.extend(Ext.Container,{initComponent:function(){Ext.ux.TaskBarContainer.superclass.initComponent.call(this);this.el=Ext.get(this.el)||Ext.getBody();this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.setStyle({overflow:"hidden",margin:"0",border:"0 none"});this.el.dom.scroll="no";this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);this.renderTo=this.el},fireResize:function(a,b){this.onResize(a,b,a,b);this.fireEvent("resize",this,a,b,a,b)}});Ext.ux.TaskButtonsPanel=Ext.extend(Ext.BoxComponent,{activeButton:null,enableScroll:true,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:0.35,animScroll:true,resizeButtons:true,buttonWidth:168,minButtonWidth:118,buttonMargin:2,buttonWidthSet:false,initComponent:function(){Ext.ux.TaskButtonsPanel.superclass.initComponent.call(this);this.on("resize",this.delegateUpdates);this.items=[];this.stripWrap=Ext.get(this.el).createChild({cls:"ux-taskbuttons-strip-wrap",cn:{tag:"ul",cls:"ux-taskbuttons-strip"}});this.stripSpacer=Ext.get(this.el).createChild({cls:"ux-taskbuttons-strip-spacer"});this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:"li",cls:"ux-taskbuttons-edge"});this.strip.createChild({cls:"x-clear"})},addButton:function(c){var a=this.strip.createChild({tag:"li"},this.edge);var b=new Ext.ux.TaskBar.TaskButton(c,a);this.items.push(b);if(!this.buttonWidthSet){this.lastButtonWidth=b.container.getWidth()}this.setActiveButton(b);return b},removeButton:function(d){var b=document.getElementById(d.container.id);d.destroy();b.parentNode.removeChild(b);var e=[];for(var c=0,a=this.items.length;c<a;c++){if(this.items[c]!=d){e.push(this.items[c])}}this.items=e;this.delegateUpdates()},setActiveButton:function(a){this.activeButton=a;this.delegateUpdates()},delegateUpdates:function(){if(this.resizeButtons&&this.rendered){this.autoSize()}if(this.enableScroll&&this.rendered){this.autoScroll()}},autoSize:function(){var h=this.items.length;var c=this.el.dom.offsetWidth;var a=this.el.dom.clientWidth;if(!this.resizeButtons||h<1||!a){return}var k=Math.max(Math.min(Math.floor((a-4)/h)-this.buttonMargin,this.buttonWidth),this.minButtonWidth);var e=this.stripWrap.dom.getElementsByTagName("button");this.lastButtonWidth=Ext.get(e[0].id).findParent("li").offsetWidth;for(var f=0,j=e.length;f<j;f++){var b=e[f];var g=Ext.get(e[f].id).findParent("li").offsetWidth;var d=b.offsetWidth;b.style.width=(k-(g-d))+"px"}},autoScroll:function(){var f=this.items.length;var d=this.el.dom.offsetWidth;var c=this.el.dom.clientWidth;var e=this.stripWrap;var b=e.dom.offsetWidth;var g=this.getScrollPos();var a=this.edge.getOffsetsTo(this.stripWrap)[0]+g;if(!this.enableScroll||f<1||b<20){return}e.setWidth(c);if(a<=c){e.dom.scrollLeft=0;if(this.scrolling){this.scrolling=false;this.el.removeClass("x-taskbuttons-scrolling");this.scrollLeft.hide();this.scrollRight.hide()}}else{if(!this.scrolling){this.el.addClass("x-taskbuttons-scrolling")}c-=e.getMargins("lr");e.setWidth(c>20?c:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(g>(a-c)){e.dom.scrollLeft=a-c}else{this.scrollToButton(this.activeButton,true)}this.updateScrollButtons()}},createScrollers:function(){var c=this.el.dom.offsetHeight;var a=this.el.insertFirst({cls:"ux-taskbuttons-scroller-left"});a.setHeight(c);a.addClassOnOver("ux-taskbuttons-scroller-left-over");this.leftRepeater=new Ext.util.ClickRepeater(a,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=a;var b=this.el.insertFirst({cls:"ux-taskbuttons-scroller-right"});b.setHeight(c);b.addClassOnOver("ux-taskbuttons-scroller-right-over");this.rightRepeater=new Ext.util.ClickRepeater(b,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=b},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},getScrollIncrement:function(){return(this.scrollIncrement||this.lastButtonWidth+2)},scrollToButton:function(e,a){e=e.el.dom.parentNode;if(!e){return}var c=e;var g=this.getScrollPos(),d=this.getScrollArea();var f=Ext.fly(c).getOffsetsTo(this.stripWrap)[0]+g;var b=f+c.offsetWidth;if(f<g){this.scrollTo(f,a)}else{if(b>(g+d)){this.scrollTo(b-d,a)}}},scrollTo:function(b,a){this.stripWrap.scrollTo("left",b,a?this.getScrollAnim():false);if(!a){this.updateScrollButtons()}},onScrollRight:function(){var a=this.getScrollWidth()-this.getScrollArea();var c=this.getScrollPos();var b=Math.min(a,c+this.getScrollIncrement());if(b!=c){this.scrollTo(b,this.animScroll)}},onScrollLeft:function(){var b=this.getScrollPos();var a=Math.max(0,b-this.getScrollIncrement());if(a!=b){this.scrollTo(a,this.animScroll)}},updateScrollButtons:function(){var a=this.getScrollPos();this.scrollLeft[a==0?"addClass":"removeClass"]("ux-taskbuttons-scroller-left-disabled");this.scrollRight[a>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("ux-taskbuttons-scroller-right-disabled")}});Ext.ux.TaskBar.TaskButton=function(b,a){this.win=b;Ext.ux.TaskBar.TaskButton.superclass.constructor.call(this,{iconCls:b.iconCls,text:Ext.util.Format.ellipsis(b.title,12),renderTo:a,handler:function(){if(b.minimized||b.hidden){b.show()}else{if(b==b.manager.getActive()){b.minimize()}else{b.toFront()}}},clickEvent:"mousedown",template:new Ext.Template('<table cellspacing="0" class="x-btn {3}"><tbody><tr>','<td class="ux-taskbutton-left"><i>&#160;</i></td>','<td class="ux-taskbutton-center"><em class="{5} unselectable="on">','<button class="x-btn-text {2}" type="{1}" style="height:28px;">{0}</button>',"</em></td>",'<td class="ux-taskbutton-right"><i>&#160;</i></td>',"</tr></tbody></table>")})};Ext.extend(Ext.ux.TaskBar.TaskButton,Ext.Button,{onRender:function(){Ext.ux.TaskBar.TaskButton.superclass.onRender.apply(this,arguments);this.cmenu=new Ext.menu.Menu({items:[{text:"Restaurar",handler:function(){if(!this.win.isVisible()){this.win.show()}else{this.win.restore()}},scope:this},{text:"Minimizar",handler:this.win.minimize,scope:this.win},{text:"Maximizar",handler:this.win.maximize,scope:this.win},"-",{text:"Cerrar",handler:this.closeWin.createDelegate(this,this.win,true),scope:this.win}]});this.cmenu.on("beforeshow",function(){var b=this.cmenu.items.items;var a=this.win;b[0].setDisabled(a.maximized!==true&&a.hidden!==true);b[1].setDisabled(a.minimized===true);b[2].setDisabled(a.maximized===true||a.hidden===true);b[4].setDisabled(a.title==MyDesktop.desktop.getApp("aula").title&&MyDesktop.Icons.data.length==0)},this);this.el.on("contextmenu",function(b){b.stopEvent();if(!this.cmenu.el){this.cmenu.render()}var a=b.getXY();a[1]-=this.cmenu.el.getHeight();this.cmenu.showAt(a)},this)},closeWin:function(a,c,b){if(!b.isVisible()){b.show()}else{b.restore()}b.close()}});
/*
 * Ext JS Library 3.2.0
 * Copyright(c) 2006-2010 Ext JS, Inc.
 * licensing@extjs.com
 * http://www.extjs.com/license
 */
Ext.Desktop=function(a){this.taskbar=new Ext.ux.TaskBar(a);this.xTickSize=this.yTickSize=1;var f=this.taskbar;var m=Ext.get("x-desktop");var c=Ext.get("ux-taskbar");var h=Ext.get("x-shortcuts");var k=new Ext.WindowGroup();var d;function e(o){o.minimized=true;o.hide()}function l(o){if(d&&d!=o){n(d)}f.setActiveButton(o.taskButton);d=o;Ext.fly(o.taskButton.el).addClass("active-win");o.minimized=false}function n(o){if(o==d){d=null;Ext.fly(o.taskButton.el).removeClass("active-win")}}function b(o){f.removeTaskButton(o.taskButton);MyDesktop.Windows.remove(MyDesktop.Windows.getById(o.id));g()}function j(){return Math.floor(Math.random()*99999)}function g(){m.setHeight(Ext.lib.Dom.getViewHeight()-c.getHeight())}Ext.EventManager.onWindowResize(g);this.layout=g;this.createWidget=function(p,o,v,u,q,w){var s;var x=false;var r=(p=="")?"app-win-"+j():p.replace("-win","")+"-win-"+j();Ext.each(MyDesktop.Wins,function(y){var y=y.getById(p);if(typeof(y)!="undefined"){if(y.get("id")==p){wurl=o,wtitle=(v=="")?y.get("title"):v;wpos=(u=="")?y.get("pos"):u;wwidth=(q=="")?parseInt(y.get("width")):q;wheight=(w=="")?parseInt(y.get("height")):w;wid=(p=="")?y.get("id"):p;s=new Array(r,wtitle,wurl,wpos,wwidth,wheight,wid);x=true;return false}}});if(x==false){s=new Array(r,v,o,u,q,w,p)}var t=new Ext.data.ArrayStore({data:new Array(s),fields:[{name:"id",type:"string"},{name:"title",type:"string"},{name:"url",type:"string"},{name:"pos",type:"string"},{name:"width",type:"int"},{name:"height",type:"int"}]});this.createWindow(t)};this.createIWidget=function(p,o,v,u,q,w){var s;var x=false;var r=(p=="")?"app-win-"+j():p.replace("-win","")+"-win-"+j();Ext.each(MyDesktop.Wins,function(y){var y=y.getById(p);if(typeof(y)!="undefined"){if(y.get("id")==p){wurl=o,wtitle=(v=="")?y.get("title"):v;wpos=(u=="")?y.get("pos"):u;wwidth=(q=="")?parseInt(y.get("width")):q;wheight=(w=="")?parseInt(y.get("height")):w;wid=(p=="")?y.get("id"):p;s=new Array(r,wtitle,wurl,wpos,wwidth,wheight,wid);x=true;return false}}});if(x==false){s=new Array(r,v,o,u,q,w,p)}var t=new Ext.data.ArrayStore({data:new Array(s),fields:[{name:"id",type:"string"},{name:"title",type:"string"},{name:"url",type:"string"},{name:"pos",type:"string"},{name:"width",type:"int"},{name:"height",type:"int"}]});this.createFrame(t)};this.createWindow=function(q,o){var q=q.getAt(0);var s=this.getWindow(q.get("id"));if(!s){MyDesktop.Windows.add(new MyDesktop.appRecord({id:q.get("id"),nombre:q.get("title"),app:q.set("app")}));Ext.util.CSS.createStyleSheet("."+q.get("id")+" { background-image: url(images/icons/"+q.get("id").split("-")[0]+"-icon.png) !important; }");var p=(q.get("id").split("-")[0]=="aula")?false:true;var r=((q.get("id").split("-")[0]=="chatroom")||(q.get("id").split("-")[0]=="message"))?false:{msg:"Cargando "+q.get("title")+"..."};var s=new (o||Ext.Window)({manager:k,minimizable:true,maximizable:true,draggable:p,closable:p,resizable:p,shim:false,constrain:true,loadMask:r,layout:"fit",id:q.get("id"),title:q.get("title"),defaultSrc:q.get("url"),alignTo:q.get("pos"),width:q.get("width"),height:q.get("height"),iconCls:q.get("id")});s.render(m);s.taskButton=f.addTaskButton(s);s.animateTarget=s.taskButton.el;s.on({activate:{fn:l},beforeshow:{fn:l},deactivate:{fn:n},minimize:{fn:e},close:{fn:b}});g()}s.show();return s};this.createFrame=function(q,o){var q=q.getAt(0);var s=this.getWindow(q.get("id"));if(!s){MyDesktop.Windows.add(new MyDesktop.appRecord({id:q.get("id"),nombre:q.get("title"),app:q.get("id").split("-")[0]},q.get("id")));Ext.util.CSS.createStyleSheet("."+q.get("id")+" { background-image: url(images/icons/"+q.get("id").split("-")[0]+"-icon.png) !important; }");var p=(q.get("id").split("-")[0]=="aula")?false:true;var r=((q.get("id").split("-")[0]=="chatroom")||(q.get("id").split("-")[0]=="message"))?false:{msg:"Cargando "+q.get("title")+"..."};var s=new (o||Ext.ux.ManagedIFrame.Window)({manager:k,minimizable:true,maximizable:true,draggable:p,closable:p,resizable:p,shim:false,constrain:true,loadMask:r,layout:"fit",id:q.get("id"),title:q.get("title"),defaultSrc:q.get("url"),alignTo:q.get("pos"),width:q.get("width"),height:q.get("height"),iconCls:q.get("id")});s.render(m);s.taskButton=f.addTaskButton(s);s.animateTarget=s.taskButton.el;s.on({activate:{fn:l},beforeshow:{fn:l},deactivate:{fn:n},minimize:{fn:e},close:{fn:b}});g()}s.show();return s};this.getManager=function(){return k};this.getWindow=function(o){return k.get(o)};this.updateFrame=function(p){var o=this.getWindow(p);o.setSrc(o.getFrame().getDocumentURI().split("#")[0])};this.updateApp=function(o){for(i=0;i<MyDesktop.Windows.getCount();i++){if(MyDesktop.Windows.getAt(i).get("app")==o){var p=MyDesktop.Windows.getAt(i).get("id");this.updateFrame(p)}}};this.updateAllFrames=function(){for(i=0;i<MyDesktop.Windows.getCount();i++){var o=MyDesktop.Windows.getAt(i).get("id");this.updateFrame(o)}};this.closeAllWindows=function(){var q=MyDesktop.Windows.getCount();for(i=0;i<q;i++){var p=MyDesktop.Windows.getAt(0).get("id");var o=this.getWindow(p);o.close()}this.loadAula()};this.loadAula=function(){this.createIWidget("aula",MyDesktop.Config.getAt(0).get("url"),"Aula Virtual","c",this.getWinWidth()-40,this.getWinHeight()-20)};this.getApp=function(o){for(i=0;i<MyDesktop.Windows.getCount();i++){if(MyDesktop.Windows.getAt(i).get("app")==o){var p=MyDesktop.Windows.getAt(i).get("id");return this.getWindow(p)}}return null};this.getWinWidth=function(){var o=Ext.lib.Dom.getViewWidth();return o<200?200:o};this.getWinHeight=function(){var o=(Ext.lib.Dom.getViewHeight()-c.getHeight());return o<100?100:o};this.getWinX=function(o){return(Ext.lib.Dom.getViewWidth()-o)/2};this.getWinY=function(o){return(Ext.lib.Dom.getViewHeight()-c.getHeight()-o)/2};this.cascade=function(){var o=0,p=0;k.each(function(q){if(q.isVisible()&&!q.maximized){q.setPosition(o,p);o+=20;p+=20}},this)};this.tile=function(){var r=m.getWidth(true);var o=this.xTickSize;var q=this.yTickSize;var p=q;k.each(function(t){if(t.isVisible()&&!t.maximized){var s=t.el.getWidth();if((o>this.xTickSize)&&(o+s>r)){o=this.xTickSize;q=p}t.setPosition(o,q);o+=s+this.xTickSize;p=Math.max(p,q+t.el.getHeight()+this.yTickSize)}},this)};this.contextMenu=new Ext.menu.Menu({items:[{text:"Mosaico",handler:this.tile,scope:this},{text:"Cascada",handler:this.cascade,scope:this}]});m.on("contextmenu",function(o){o.stopEvent();this.contextMenu.showAt(o.getXY())},this);c.on("contextmenu",function(o){o.stopEvent()},this);g()};