

var saveTip="Cannot save. Project is read only.";var buildTip="Cannot build. Project is read only.";var treeLoader=new Ext.tree.TreeLoader({dataUrl:"/IDE/handler.php?getProjectFiles&projectId="+pid()});var rootNode=new Ext.tree.AsyncTreeNode({text:pname(),id:"base",draggable:false,cls:"folder",iconCls:"dir"});var displayErrors=true;function allowDragDrop(){return false}function getChildren(){return project.files}function onTabChange(tab){}function doneLoading(){Ext.MessageBox.show({title:"Warning",msg:(guest?"You are currently logged in as a guest.<br />You will be unable to make any changes.":"Your account does not have access to this project.<br />You will be unable to make any changes."),buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.WARNING})}function loadToolbar(tb){tb.add({xtype:"box",style:"padding: 0 5px; margin-top: 2px;",autoEl:{tag:"img",src:"/IDE/images/compilr-small-logo.gif"}},{cls:"x-btn-text",text:"Home",tooltip:"<b>Home</b><br />Returns to the main Compilr website.",handler:function(){window.location.href="/"}},{cls:"x-btn-text",text:"Forum",tooltip:"<b>Forum</b><br />Questions? Comments? Visit the forum!",handler:function(){window.location="/forum"}},{icon:"/assets/images/save.gif",id:"saveBtn",cls:"x-btn-text-icon",text:"Save",tooltip:saveTip,disabled:true},{cls:"x-btn-text",text:"Build",id:"bldBtn",tooltip:buildTip,disabled:true},{cls:"x-btn-text",text:"Download",id:"downBtn",tooltip:"<b>Download</b><br />Downloads the compiled executable.",handler:function(){pageTracker._trackPageview("/IDE/"+pid()+"/download");window.open("/IDE/download.php?projectId="+pid())}},{cls:"x-btn-text",text:"MD5",id:"md5Btn",tooltip:"<b>MD5</b><br />Displays the current MD5 checksum for the application.",handler:function(){pageTracker._trackPageview("/IDE/"+pid()+"/MD5");Ext.MessageBox.show({title:"Checksum",msg:project.checksum,buttons:Ext.MessageBox.OK})}})}Ext.ux.FilesContextMenu=function(){var tree,menu,ctxItem;this.init=function(srcTree){tree=srcTree;tree.on("contextmenu",onContextMenu,this)};function onContextMenu(node,e){node.select();if(!menu){menu=new Ext.menu.Menu([{id:"newFolder",text:"New Folder",disabled:true},{id:"newFile",text:"New File",disabled:true},{id:"delete",text:"Delete",disabled:true}])}menu.showAt(e.getPoint())}};window.onbeforeunload=function(evt){var message="";if(typeof evt=="undefined"){evt=window.event}if(evt){message=mainPanel.hasUnsavedFiles();if(message){evt.returnValue=message}}return message};

var lastMsg=null;var mainPanel;var eds;function fileChanged(Modified){mainPanel.currentTabChanged(Modified)}function displayError(t,m){Ext.MessageBox.show({title:t,msg:m,buttons:Ext.MessageBox.OK,icon:Ext.MessageBox.ERROR})}DocPanel=Ext.extend(Ext.Panel,{closable:true,autoScroll:true,initComponent:function(){DocPanel.superclass.initComponent.call(this)}});Ext.ux.TabCloseMenu=function(){var tabs,menu,ctxItem;this.init=function(tp){tabs=tp;tabs.on("contextmenu",onContextMenu)};function onContextMenu(ts,item,e){if(!menu){menu=new Ext.menu.Menu({items:[{id:tabs.id+"-close",text:"Close Tab",handler:function(){tabs.remove(ctxItem)}},{id:tabs.id+"-close-others",text:"Close Other Tabs",handler:function(){var IsFirst=true;tabs.items.each(function(item){if(item.closable&&item!=ctxItem){if(item.hasChanged){if(IsFirst){IsFirst=false;tabs.remove(item)}else{tabs.closingTabs.push(item)}}else{tabs.remove(item)}}})}}]})}ctxItem=item;var items=menu.items;items.get(tabs.id+"-close").setDisabled(!item.closable);var disableOthers=true;tabs.items.each(function(){if(this!=item&&this.closable){disableOthers=false;return false}});items.get(tabs.id+"-close-others").setDisabled(disableOthers);e.stopEvent();menu.showAt(e.getPoint())}};function removeTabEvent(tabpanel,tab){if(tab.hasChanged){Ext.Msg.confirm("Save Changes?","Are you sure you want to close "+tab.fileName+"? \n You will lose any unsaved changes",function(btn){if(btn=="yes"){tabpanel.un("beforeremove",removeTabEvent);tabpanel.remove(tab);tabpanel.on("beforeremove",removeTabEvent);var NextTab=tabpanel.closingTabs.pop();if(NextTab){tabpanel.remove(NextTab)}}});return false}else{return true}}MainPanel=function(){MainPanel.superclass.constructor.call(this,{id:"doc-body",region:"center",margins:"0 5 5 0",resizeTabs:true,minTabWidth:135,tabWidth:135,plugins:new Ext.ux.TabCloseMenu(),enableTabScroll:true,activeTab:0,autoScroll:false,closingTabs:[]})};Ext.extend(MainPanel,Ext.TabPanel,{initEvents:function(){MainPanel.superclass.initEvents.call(this);this.on("tabchange",onTabChange,this);this.on("beforeremove",removeTabEvent)},hasUnsavedFiles:function(){var changes=false;this.items.each(function(){if(this.hasChanged){changes=true}});if(changes){return"You have unsaved changes. Are you sure you want to quit?"}},currentTabChanged:function(hasChanged){var tab=this.getActiveTab();if(hasChanged&&!tab.hasChanged){tab.hasChanged=true;tab.setTitle(tab.title+"*")}else{if(!hasChanged){tab.hasChanged=false;tab.setTitle(tab.fileName)}}},loadFile:function(fileId,fileName,iconCls){var id="file"+fileId;var tab=this.getComponent(id);if(tab){this.setActiveTab(tab)}else{var autoLoad={url:"/IDE/editor.php?fileId="+fileId,script:true,callback:function(){}};var p=this.add(new DocPanel({id:id,iconCls:iconCls,fileId:fileId,autoLoad:autoLoad,title:fileName,fileName:fileName,hasChanged:false,loadMask:true,loadText:"Loading ...",autoScroll:false}));this.setActiveTab(p)}},loadMisc:function(id,gotoUrl,title){var tab=this.getComponent(id);if(tab){this.setActiveTab(tab)}else{var p=this.add(new Ext.ux.ManagedIFrame.Panel({id:id,iconCls:"leaf",hasChanged:false,closable:true,xtype:"iframepanel",loadMask:true,loadText:"Loading ...",title:title,layoutOnTabChange:true,autoWidth:true,defaultSrc:{url:gotoUrl,discardUrl:true}}));this.setActiveTab(p);p.setSrc(gotoUrl,true)}},closeTab:function(tabName){var tab=this.getComponent(tabName);if(tab){this.remove(tab)}}});function renderPicture(value,p,record){return'<img src="/IDE/images/'+value+'.png" border="0" title="" />'}Ext.onReady(function(){Ext.QuickTips.init();var Tree=Ext.tree;var errorInfo={cm:null,eds:null};mainPanel=new MainPanel();var tb=new Ext.Toolbar();loadToolbar(tb);tb.render("toolbar");var tree=new Tree.TreePanel({id:"filetree",el:"tree",animate:true,useArrows:true,enableDD:false==allowDragDrop(),title:"Files",containerScroll:true,loader:new Ext.tree.TreeLoader({preloadChildren:true,clearOnLoad:false}),root:new Ext.tree.AsyncTreeNode({text:pname(),id:"base",cls:"folder",iconCls:"dir",draggable:false,expanded:true,children:getChildren()}),plugins:new Ext.ux.FilesContextMenu()});tree.on("dblclick",function(node){if(node.attributes.iconCls!="dir"){if(node.attributes.iconCls=="ref"){mainPanel.loadMisc(node.id.substring(4),"http://msdn.microsoft.com/en-us/library/"+node.text+".aspx",node.text)}else{mainPanel.loadFile(node.id.substring(4),node.text,node.attributes.iconCls)}}},this);tree.on("beforenodedrop",function(dropEvent){Ext.Ajax.request({url:"/IDE/handler.php",params:{projectId:pid(),action:"move",targetType:"folder"==dropEvent.target.attributes.cls?"dir":"file",dropType:"folder"==dropEvent.dropNode.attributes.cls?"dir":"file",targetNodeId:dropEvent.target.id,dropNodeId:dropEvent.dropNode.id,point:dropEvent.point},callback:function(opts,suss,resp){var r=Ext.decode(resp.responseText);if(!r.success){displayError("Failure",r.message);dropEvent.cancel=true}}})},this);tree.on("nodedragover",function(dragOverEvent){if(dragOverEvent.target.id=="references"){dragOverEvent.cancel=true}},this);Ext.state.Manager.setProvider(new Ext.state.CookieProvider());if(displayErrors){errorInfo.eds=new Ext.data.JsonStore({fields:["file","line","column","description","error"]});errorInfo.cm=new Ext.grid.ColumnModel([{header:"Type",width:50,dataIndex:"error",renderer:renderPicture},{header:"File",width:120,dataIndex:"file"},{header:"Line",width:50,dataIndex:"line"},{header:"Column",width:50,dataIndex:"column"},{id:"description",header:"Description",width:200,dataIndex:"description"}]);errorInfo.cm.defaultSortable=true;errorInfo.eds.loadData(project.errors);eds=errorInfo.eds;var viewport=new Ext.Viewport({layout:"border",items:[mainPanel,new Ext.BoxComponent({region:"north",el:"north",height:32}),{xtype:"grid",region:"south",title:"Errors",id:"south",ds:errorInfo.eds,cm:errorInfo.cm,autoExpandColumn:"description",loadMask:true,autoWidth:true,height:100,minSize:100,maxSize:200,split:true,collapsible:true,layout:"fit",margins:"0 0 0 0"},{region:"east",collapsible:true,split:true,width:225,minSize:175,maxSize:400,layout:"fit",margins:"0 5 0 0",items:new Ext.TabPanel({border:false,activeTab:0,tabPosition:"bottom",items:[tree]})}]})}else{var viewport=new Ext.Viewport({layout:"border",items:[mainPanel,new Ext.BoxComponent({region:"north",el:"north",height:32}),{region:"east",collapsible:true,split:true,width:225,minSize:175,maxSize:400,layout:"fit",margins:"0 5 0 0",items:new Ext.TabPanel({border:false,activeTab:0,tabPosition:"bottom",items:[tree]})}]})}Ext.get("loading").remove();Ext.get("loading-mask").fadeOut({remove:true});doneLoading()});

Ext.Notify=function(){function createBox(t,s){return['<div class="msg">','<div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>','<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><h3>',t,"</h3>",s,"</div></div></div>",'<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>',"</div>"].join("")}return{msg:function(title,format,id){if(null==id){id="msg-div"}var msgCt=Ext.DomHelper.insertFirst(document.body,{id:id},true);msgCt.addClass("msg-div");msgCt.alignTo(document,"t-t");var s=String.format.apply(String,Array.prototype.slice.call(arguments,1));var m=Ext.DomHelper.append(msgCt,{html:createBox(title,s)},true);return(m.slideIn("t"))},init:function(){var t=Ext.get("exttheme");if(!t){return}var theme=Cookies.get("exttheme")||"aero";if(theme){t.dom.value=theme;Ext.getBody().addClass("x-"+theme)}t.on("change",function(){Cookies.set("exttheme",t.getValue());setTimeout(function(){window.location.reload()},250)});var lb=Ext.get("lib-bar");if(lb){lb.show()}}}}();Ext.onReady(Ext.Notify.init,Ext.Notify);var Cookies={};Cookies.set=function(name,value){var argv=arguments;var argc=arguments.length;var expires=(argc>2)?argv[2]:null;var path=(argc>3)?argv[3]:"/";var domain=(argc>4)?argv[4]:null;var secure=(argc>5)?argv[5]:false;document.cookie=name+"="+escape(value)+((expires==null)?"":("; expires="+expires.toGMTString()))+((path==null)?"":("; path="+path))+((domain==null)?"":("; domain="+domain))+((secure==true)?"; secure":"")};Cookies.get=function(name){var arg=name+"=";var alen=arg.length;var clen=document.cookie.length;var i=0;var j=0;while(i<clen){j=i+alen;if(document.cookie.substring(i,j)==arg){return Cookies.getCookieVal(j)}i=document.cookie.indexOf(" ",i)+1;if(i==0){break}}return null};Cookies.clear=function(name){if(Cookies.get(name)){document.cookie=name+"=; expires=Thu, 01-Jan-70 00:00:01 GMT"}};Cookies.getCookieVal=function(offset){var endstr=document.cookie.indexOf(";",offset);if(endstr==-1){endstr=document.cookie.length}return unescape(document.cookie.substring(offset,endstr))};