      var catMenu = new Ext.menu.Menu({
                                        items: [
                                                  {
                                                    id: 'mnu_item-edit_catitem',
                                                    text: 'Properties'
                                                  },{
                                                    id: 'mnu_item-edit_catdelete',
                                                    text: 'Delete Item',
                                                    disabled: true
                                                  }
                                                ],
                                        listeners: {
                                          itemclick: function(item) {
                                            var n = item.parentMenu.contextNode;
                                            switch (item.id) {
                                              case 'mnu_item-edit_catitem':
                                                if (n.parentNode) {
                                                  if (n.attributes.data_type=='header'){
                                                  }else{
                                                    setTimeout(function(){
                                                      callEditor({navigationContextNode: n, editorDataID: n.attributes.cat_id, catType: n.attributes.cat_type, editorType: 'Category', editorModal: true});
                                                    }, 100);
                                                  }
                                                }
                                                break;
                                              case 'mnu_item-edit_catdelete':                        
                                                if (n.attributes.data_type=='header'){
                                                  msgTitle = 'Delete Header?';
                                                  msgStr = 'You are about to delete a category. This will also remove sub-menus. Are you sure you want to do this?';
                                                }else{
                                                  msgTitle = 'Delete Page?';
                                                  msgStr = 'You are about to delete an entire department! This will also delete the content. Are you sure you want to do this?';
                                                }
                                                if (n.parentNode) {
                                                  Ext.Msg.show({
                                                    title: msgTitle,
                                                    msg: msgStr,
                                                    buttons: Ext.Msg.YESNO,
                                                    fn: function(btn){
                                                      if (btn == 'yes'){
                                                        n.attributes.deleted=true;
                                                        n.getUI().hide();
                                                      }
                                                    },
                                                    icon: Ext.MessageBox.QUESTION
                                                  });
                                                }
                                                break;
                                            }
                                          }
                                        }
                                      });
      function windowCategoryEditor(loadMode){
        if (!canEdit)
          return false;

        var tree2 = new Ext.tree.TreePanel({
              id : 'mainCategoryList_adder',
              useArrows:true,
              autoScroll:true,
              animate:true,
              height:200,
              region: 'center',
              enableDD:true,
              //tbar: [{text: 'Add'},{text: 'Rename'},{text: 'Delete'}],
              containerScroll: true,
              rootVisible: false,
              root: { nodeType: 'async', allowDrop: false},
              dataUrl : '/ajax/siteconfig/moduleList.cfm?mode=cat',
              listeners: {
                checkchange: function(node, checked){
                  if(checked){
                    node.getUI().addClass('complete');
                  }else{
                    node.getUI().removeClass('complete');
                  }
                }
              }
          });

        var tree = new Ext.tree.TreePanel({                    
              useArrows:true,
              id : 'mainCategoryList',
              autoScroll:true,
              animate:true,
              region: 'center',
              enableDD:true,
              containerScroll: true,
              rootVisible: false,
              root: { nodeType: 'async'},
              dataUrl : '/ajax/siteconfig/cat/categoryNodes.cfm',
              //contextMenu: gcdMenu,
              listeners: {             
                contextmenu: function(node, e) {
                  node.select();
                  var c = catMenu;
                  c.contextNode = node;
                  c.findById('mnu_item-edit_catdelete').setDisabled(node.attributes.dontCreate);
                  c.showAt(e.getXY());
                },
                beforenodedrop: function(e){
                  /*if(e.dropNode.attributes.data_type=="category" && e.target.getDepth() > 1){
                    e.cancel=true;
                    return false;
                  }else*/ if(e.dropNode.attributes.data_type=="category" && e.target.getDepth() == 1 && e.point!="append"){
                    e.cancel=true;
                    return false;
                  }
                  if (e.source.tree.id==e.tree.id){
                    if (!(e.dropNode.attributes.cat_type == e.target.attributes.catAction || e.dropNode.attributes.cat_type == e.target.attributes.cat_type)){
                      e.cancel=true;
                      setTimeout(function(){ Ext.Msg.alert('Cannot Move', 'You cannot move a category outside it\'s associated module.'); }, 50);
                      return false;
                    }
                  }else{
                    
                    var newEl = e.dropNode.clone();
                    newEl.leaf=false;
                    newEl.getUI().toggleCheck(true);                    
                    e.dropNode = newEl;
                    newEl.attributes.cat_type = e.target.attributes.catAction;
                    if (newEl.attributes.data_type=='header'){
                        setTimeout(function(){
                          Ext.Msg.prompt('New Category', 'Please enter a name for this Category:', function(btn, text){
                            if (btn == 'ok' && text.trim()){
                              e.dropNode.setText(text);
                            }else{
                              e.dropNode.remove();
                              //e.target.removeChild(e.dropNode);
                              //if (e.dropNode) // make sure it's gone!
                              //  e.target.removeChild(e.dropNode);
                            }
                          }, this, false, '');
                        }, 100);
                    }else if (newEl.attributes.data_type=='category'){
                        setTimeout(function(){
                          callEditor({navigationContextNode: newEl, editorDataID: 0, catType: newEl.attributes.cat_type, editorType: 'Category', editorModal: true});
                        }, 100);
                    }
                  }
                },
                checkchange: function(node, checked){
                  if(checked){
                    node.getUI().addClass('complete');
                  }else{
                    node.getUI().removeClass('complete');
                  }
                }
              }
          });
        var treeLeft = new Ext.Panel({
          border: false,
          region: 'center',
          layout: 'border',
          margins:'5 0 0 0',
          items: [
            {
              region: 'north', 
              margins:'0 0 -1 0',
              baseCls: 'siteConfigHeaderTab',
              cmargins:'3 3 3 3', 
              border: true, 
              html: '<strong>Current Category Configuration</strong>'
            },tree]
        });
        var treeRight = new Ext.Panel({
          border: false,
          region: 'east',
          layout: 'border',
          margins:'5 0 0 5',
          cmargins:'3 3 3 3',
          width: 230,
          items: [
            {
              region: 'north', 
              margins:'0 0 -1 0',
              baseCls: 'siteConfigHeaderTab',
              cmargins:'3 3 3 3', 
              border: true, 
              html: '<strong>Available Options</strong>'
            },{
              region: 'south', 
              margins:'10 10 10 10',
              cmargins:'3 3 3 3',
              baseCls: 'x-plain', 
              border: true, 
              html: '<strong>Drag & Drop above options</strong> to create and activate them.'
            },tree2]
        });
        var navInfo = 'Changes will be applied when you click \'Save\' below.';
        var treeHolder = new Ext.Panel({
          border: false,          
          layout: 'fit',
          bodyStyle: 'background: #DFE8F6',
          id: 'tabCategoryEditor',
          items: new Ext.Panel({
              border: false,          
              layout: 'border',
              items: [
                {
                  region: 'north',
                  border: true, 
                  html: '<div class="siteConfigInfo"><div class="siteConfigHeader">Organize your Categories here.</div><div class="siteConfigText">'+navInfo+'</div></div>'
                },
                treeLeft,
                treeRight]
            })
        });
        
        if (loadMode){
          treeHolder.title = 'Categories';
          return treeHolder;
        }
        /*
        var winDepartmentEdit = new Ext.Window({
              width:500,
              height:550,
              title: gcdType == 'dept' ? 'Department Editor' : 'Class Editor',
              layout:'fit',
              closeAction:'close',
              modal:true,
              closable:false,
              border:false,
              maximizable:true,
              items: treeHolder,
              buttons: [{
                text: 'Save',
                handler: function(){
                  var tmpSerial = new Ext.tree.JsonTreeSerializer(tree, { nodeFilter: function(node) {
                      return true;
                    }});
                  new Ajax.Request('/ajax/siteconfig/gcd/updateSchools.cfm', {
                    postBody: 'schoolData=' + tmpSerial,
                    onSuccess: function(transport){
                      winDepartmentEdit.close();
                      window.location.reload(true);
                      Ext.Msg.wait('Saving your school configuration. This may take a few seconds.', 'Please wait...');
                    }
                  });
                }
              },{ text: 'Cancel', handler: function(){ winDepartmentEdit.close(); } }]
          });
        tree.getRootNode().expand(true);
        winDepartmentEdit.show(this);
        */
      }
      
reportingIn('catTab');