  function windowSiteConfig(){
    var slowIEWarning = new Ext.Panel({region: 'south', margins: '5 0 0 0', padding: 6, bodyStyle: 'text-align: center; font-size: 10px', html: '<strong>Tip:</strong> For a better web 2.0 experience try <a href="http://www.mozilla.com/en-US/firefox/" target="_blank" style="color: black;">Firefox</a> or <a href="http://www.google.com/chrome" target="_blank" style="color: black;">Google Chrome</a>.', hidden: !Ext.isIE});

    var generalCompleted = false;
    var navigationCompleted = false;
    var schoolCompleted = false;
    var deptCompleted = false;
    var classCompleted = false;
    var forumCompleted = false;
    var catCompleted = false;
    var legalCompleted = false;
    var userGroupCompleted = false;
    var completeCompleted = false;
    var saveCount = 0;
    var longTimeTimer=0;
    var longTimePassed=false;
    var saveMax=8;
    var maxSouthHeight = 35;
    var maxSouthHeightError = 75;
    var maxHeight=245;
    var curSouthHeight = maxSouthHeight;
    var curMaxHeight=maxHeight+curSouthHeight;

    var statusWindow = new Ext.Window({
      layout: 'border',
      width: 300,
      height: curMaxHeight,
      constrainHeader: true,
      closable: false,
      closeMode: 'hide',
      resizable: false,
      modal: true,
      title: 'Saving Setting... Please Wait',
      /*
      tools: [{
                id: 'pin',
                handler: function(e,t,p,tc){
                  statusWindow.getTool('pin').hide();
                  statusWindow.getTool('unpin').show();
                  statusWindow.setHeight(curMaxHeight);
                },
                hidden: true
              },{
                id: 'unpin',
                handler: function(e,t,p,tc){
                  statusWindow.getTool('pin').show();
                  statusWindow.getTool('unpin').hide();
                  statusWindow.setHeight(80);
                }
              }],*/
      items: [{
                region: 'north',
                height: 30,
                border: false,
                bodyStyle: 'padding: 5px 5px 0',
                items:[
                        new Ext.ProgressBar({
                          ref: '../statProgressBar',
                           text:'Initializing...'
                        })
                      ]
              },{
                region: 'center',
                border: false,
                bodyStyle: 'padding: 10px 5px; text-align: center',
                ref: 'statMsg',
                html: 'Saving Site Config...'
              },{
                region: 'south',
                height: curSouthHeight,
                ref: 'statButtons',
                border: false,
                layout: {
                          type:'vbox',
                          padding:'5',
                          align:'stretch'
                        },
                items:[{
                            xtype:'button',
                            cls: 'bigPrint1',
                            ref: '../retrySave',
                            text: 'Try Again',
                            handler: function(){
                              saveSiteConfig();
                            },
                            hidden: true
                        },{
                            xtype:'spacer',
                            ref: '../retrySaveSpacer',
                            flex: 1,
                            hidden: true
                        },{
                            xtype:'button',
                            cls: 'bigPrint2',
                            text: 'Cancel',
                            handler: function(){
                              cancelSave();
                            }
                        }]
              }
            ]
    
    });
    
    function cancelSave(){
      statusWindow.hide();
      clearTimeout(longTimeTimer);
    }
    
    function makeSaveText(title, saved){
    
      return new Ext.XTemplate(
          '<span class="checkTextHolder <tpl if="slow">checkTextHolderSlow</tpl> <tpl if="saved">checkTextHolderSaved</tpl>">',
            '<span class="checkLeft">',
              '<tpl if="saved"><span class="checkMarkText">&nbsp;&#10004;&nbsp;</span></tpl>',
              '{title}',
            '</span>',
            '<span class="checkRight">',
              '<tpl if="saved">Data Saved</tpl>',
              '<tpl if="!saved">Processing</tpl>',
            '</span>',
            '<br class="clear" />',
          '</span>'
        ).apply({title: title, saved: saved, slow: longTimePassed});
    
    }
    
    function getSaveState(state){
    
      // arrow: #10157
      // check: #10004

      switch (state){
        case "complete":
          completeCompleted=true;
          saveCount++;
          break;
        case "usergroup":
          userGroupCompleted=true;
          saveCount++;
          break;
        case "legal":
          legalCompleted=true;
          saveCount++;
          break;
        case "category":
          catCompleted=true;
          saveCount++;
          break;
        case "forum":
          forumCompleted=true;
          saveCount++;
          break;
        case "class":
          classCompleted=true;
          saveCount++;
          break;
        case "department":
          deptCompleted=true;
          saveCount++;
          break;
        case "school":
          schoolCompleted=true;
          saveCount++;
          break;
        case "navigation":
          navigationCompleted=true;
          saveCount++;
          break;
        case "general":
          generalCompleted=true;
          saveCount++;
          break;
      }
      
      var completeMessage = 'Page will Reload in a moment...<br /><br />';
      var slowMessage = '<span class="slowWarningText">This is taking longer than usual...</span><br /><br />';

      var generalMessage = makeSaveText('General Information', generalCompleted);
      var navigationMessage = makeSaveText('Site Navigation', navigationCompleted);
      var schoolMessage = makeSaveText('School Organization', schoolCompleted);
      var deptMessage = makeSaveText('Department Organization', deptCompleted);
      var classMessage = makeSaveText('Class Organization', classCompleted);
      var forumMessage = makeSaveText('Forum Organization', forumCompleted);
      var legalMessage = makeSaveText('Legal Information', legalCompleted);
      var catMessage = makeSaveText('Category Organization', catCompleted);
      var userGroupMessage = makeSaveText('User Groups', userGroupCompleted);
      
      if (saveCount>=saveMax-1){
        clearTimeout(longTimeTimer);
        statusWindow.statButtons.hide();
        statusWindow.setHeight(maxHeight);
        statusWindow.doLayout(true, true);
        saveCount=saveMax;
        setTimeout(function(){window.location.reload(true);}, 300);
        //Ext.Msg.alert('Saved!', 'Let\'s see if it sticks however...');
        //Ext.Msg.hide();
        //return false;
        completeMessage = '<strong class="allDoneText">Reloading Page... Please Wait</strong><br /><br />';
        if (journeyHelper.isRunning)
          journeyHelper.showText('All Done! Now, I\ll just refresh your browser really quick...', true, 8000);
      }
      
      if (longTimePassed)
        completeMessage = slowMessage;
      var msg = completeMessage + '<div class="checkTextContainer">' + generalMessage + navigationMessage + schoolMessage + deptMessage + classMessage + forumMessage + catMessage + '</div>';
      lastConfigPercent = saveCount * (1 / saveMax);
      lastConfigTitle = saveCount+ ' of '+saveMax;
      
      statusWindow.statProgressBar.updateProgress(lastConfigPercent, lastConfigTitle, true);
      statusWindow.statMsg.body.update(msg);
      
    }

    function saveSiteConfig(){
      saveCount=0;
      generalCompleted = false;
      navigationCompleted = false;
      schoolCompleted = false;
      deptCompleted = false;
      classCompleted = false;
      forumCompleted = false;
      catCompleted = false;
      legalCompleted = false;
      userGroupCompleted = false;
      completeCompleted = false;
      longTimePassed=false;
      curSouthHeight = maxSouthHeight;
      curMaxHeight=maxHeight+curSouthHeight;
      
      statusWindow.show();
      
      statusWindow.retrySave.hide();
      statusWindow.retrySaveSpacer.hide();
      statusWindow.statButtons.setHeight(curSouthHeight);
      statusWindow.setHeight(curMaxHeight);
      statusWindow.doLayout(true, true);

      statusWindow.statProgressBar.updateProgress(0.0, 'Initializing...', true);
      
      getSaveState();
      
      if (journeyHelper.isRunning)
        journeyHelper.showText('Please wait a second while I push a few bits towards the server...', true, 8000);
      
      saveCount=0;
      
      longTimeTimer = setTimeout(function(){
        if (saveCount>=saveMax-1)
          return false;
        longTimePassed=true;
        curSouthHeight = maxSouthHeightError;
        curMaxHeight=maxHeight+curSouthHeight;
        statusWindow.retrySave.show();
        statusWindow.retrySaveSpacer.show();
        statusWindow.statButtons.setHeight(maxSouthHeightError);
        statusWindow.setHeight(curMaxHeight);
        statusWindow.doLayout(true, true);
        getSaveState();
        
      }, 6000);
      
        saveGeneral();
        saveNavigation();
        saveSchoolOrder();
        saveDepartmentOrder();
        saveClassOrder();
        saveForumOrder();
        //saveLegalInfo();
        saveCategoryOrder();
        saveUserGroup();
      //setTimeout(function(){        
      //}, 3000);
      
    }
      
    function saveGeneral(){
      var siteSettings={};
      var generalData = Ext.getCmp('tabSchoolSettingsEditor').getForm().getValues();
      siteSettings = Object.extend(siteSettings, generalData);
      /* -- this can submit a formpaen via prototypejs
      setTimeout(function(){
        new Ajax.Request('/ajax/siteconfig/site/submitConfig.cfm?s='+currentSchool.id, {
            method:'post',
            parameters: Object.toQueryString(siteSettings),
            errorReader : new Ext.data.JsonReader({
                root:'errors',
                successProperty:'success'
              }, ['id', 'msg']),
            success: function(form, action) {
              getSaveState('general');
            },
            failure: function(form, action) {
              Ext.getCmp('siteConfigTabHolder').activate(0);
              Ext.Msg.hide();
              Ext.Msg.alert('Whoops!', 'There was an error saving the General Information. Please verify all form fields are correct.');
              return false;
            }
          });
      }, 500);
      */      
      Ext.getCmp('tabSchoolSettingsEditor').getForm().submit({
        clientValidation: true,            
        url:'/ajax/siteconfig/site/submitConfig.cfm?s='+currentSchool.id, 
        params: {},
        errorReader : new Ext.data.JsonReader({
            root:'errors',
            successProperty:'success'
          }, ['id', 'msg']),
        success: function(form, action) {
          getSaveState('general');
        },
        failure: function(form, action) {
          Ext.getCmp('siteConfigTabHolder').activate(0);
          cancelSave();
          Ext.Msg.hide();
          Ext.Msg.alert('Whoops!', 'There was an error saving the General Information. Please verify all form fields are correct.');
          return false;
        }
      });
    }
    function saveLegalInfo(){
      Ext.getCmp('tabSchoolLegalInfo').getForm().submit({
        clientValidation: true,            
        url:'/ajax/siteconfig/site/submitLegal.cfm?s='+currentSchool.id, 
        params: {},
        errorReader : new Ext.data.JsonReader({
            root:'errors',
            successProperty:'success'
          }, ['id', 'msg']),
        success: function(form, action) {
          getSaveState('legal');
        },
        failure: function(form, action) {
          Ext.getCmp('siteConfigTabHolder').activate(7);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Legal Information. Please verify all form fields are correct.');
          return false;
        }
      });
    }
    function saveNavigation(){
      
      var tmpSerial = new Ext.tree.JsonTreeSerializer(Ext.getCmp('mainNavEditor'), { nodeFilter: function(node) {
          //node.attributes.linkURL = decodeURIComponent(decodeURIComponent(decodeURIComponent(decodeURIComponent(decodeURIComponent(node.attributes.linkURL)))));
          return true;
        }});
      new Ajax.Request('/ajax/siteconfig/nav/updateNav.cfm', {
        postBody: 'navData=' + Base64.encode(tmpSerial.toString()),
        onSuccess: function(transport){
          getSaveState('navigation');
        },
        failure: function(form, action) {
          Ext.getCmp('siteConfigTabHolder').activate(1);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Navigation Nodes.');
        }
      });
    }
    function saveSchoolOrder(){
      
      var tmpSerial = new Ext.tree.JsonTreeSerializer(Ext.getCmp('mainSchoolEditor'), { nodeFilter: function(node) {
          return true;
        }});
      new Ajax.Request('/ajax/siteconfig/schools/updateSchools.cfm', {
        postBody: 'schoolData=' + Base64.encode(tmpSerial.toString()),
        onSuccess: function(transport){
          getSaveState('school');
        },
        failure: function(form, action) {
          Ext.getCmp('siteConfigTabHolder').activate(2);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Schools Configuration.');
        }
      });    
    }
    
    function saveDepartmentOrder(){
      
      var tmpSerial = new Ext.tree.JsonTreeSerializer(Ext.getCmp('mainDepartmentEditor'), { nodeFilter: function(node) {
          return true;
        }});
      Ext.Ajax.request({
        url: '/ajax/siteconfig/gcd/updateGCD.cfm?mode=dept',
        method: 'POST',
        params: { deptData : Base64.encode(tmpSerial.toString())},
        reader : new Ext.data.JsonReader({
        success : '@success'
        }),
        success: function(response, opts) {
          var obj = Ext.decode(response.responseText);
          if (obj.success){
            getSaveState('department');
          }else{
            Ext.getCmp('siteConfigTabHolder').activate(3);
            Ext.Msg.hide();
            cancelSave();
            Ext.Msg.alert('Whoops!', 'There was an error saving the Department Configuration.');
          }
        },
        failure: function(response, opts) {
          Ext.getCmp('siteConfigTabHolder').activate(3);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Department Configuration.');
        }
      });
    }
    
    function saveClassOrder(){
      
      var tmpSerial = new Ext.tree.JsonTreeSerializer(Ext.getCmp('mainClassEditor'), { nodeFilter: function(node) {
          return true;
        }});
      Ext.Ajax.request({
        url: '/ajax/siteconfig/gcd/updateGCD.cfm?mode=class',
        method: 'POST',
        params: { deptData : Base64.encode(tmpSerial.toString())},
        reader : new Ext.data.JsonReader({
        success : '@success'
        }),
        success: function(response, opts) {
          var obj = Ext.decode(response.responseText);
          if (obj.success){
            getSaveState('class');
          }else{
            Ext.getCmp('siteConfigTabHolder').activate(4);
            Ext.Msg.hide();
            cancelSave();
            Ext.Msg.alert('Whoops!', 'There was an error saving the Class Configuration.');
          }
        },
        failure: function(response, opts) {
          Ext.getCmp('siteConfigTabHolder').activate(4);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Class Configuration.');
        }
      });
      
    }
    function saveForumOrder(){
      
      var tmpSerial = new Ext.tree.JsonTreeSerializer(Ext.getCmp('mainForumList'), { nodeFilter: function(node) {
          return true;
        }});
      new Ajax.Request('/ajax/siteconfig/forum/updateForum.cfm', {
        postBody: 'forumData=' + Base64.encode(tmpSerial.toString()),
        onSuccess: function(transport){
          getSaveState('forum');
        },
        failure: function(form, action) {
          Ext.getCmp('siteConfigTabHolder').activate(5);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Forum Configuration.');
        }
      });    
    }

    function saveCategoryOrder(){

      var tmpSerial = new Ext.tree.JsonTreeSerializer(Ext.getCmp('mainCategoryList'), { nodeFilter: function(node) {
          return true;
        }});
      new Ajax.Request('/ajax/siteconfig/cat/updateCategories.cfm', {
        postBody: 'catData=' + Base64.encode(tmpSerial.toString()),
        onSuccess: function(transport){
          getSaveState('category');
        },
        failure: function(form, action) {
          Ext.getCmp('siteConfigTabHolder').activate(6);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Category Configuration.');
        }
      });    
    }
    
    function saveUserGroup(){
      /*
      var tmpSerial = new Ext.tree.JsonTreeSerializer(Ext.getCmp('mainCategoryList'), { nodeFilter: function(node) {
          return true;
        }});
      new Ajax.Request('/ajax/siteconfig/cat/updateCategories.cfm', {
        postBody: 'catData=' + Base64.encode(tmpSerial.toString()),
        onSuccess: function(transport){
          getSaveState('usergroup');
        },
        failure: function(form, action) {
          Ext.getCmp('siteConfigTabHolder').activate(6);
          Ext.Msg.hide();
          cancelSave();
          Ext.Msg.alert('Whoops!', 'There was an error saving the Category Configuration.');
        }
      });    
      */
    }
        
    var winSiteEdit = new Ext.Window({
          /*tools: [{
              id: 'help',
              qtip: {title:'New Help Feature!'},
              handler: function(e, el, p, tc){
                showHelp();
              }
          }],*/
          minWidth:400,
          minHeight:500,
          width:600,
          height:500,
          resizable: false,
          //id: 'siteConfigWinHolder',
          //stateId: 'siteConfigWinHolder',
          title: 'Site Config',
          layout:'fit',
          //closeAction:'close',
          constrainHeader: true,
          modal:true,
          padding: 5,
          border:true,
          closable: false,
          //maximizable:true,
          items: new Ext.TabPanel({
                    activeTab: 0,
                    plain: true,
                    ref: 'tabPanel',
                    region: 'center',
                    id: 'siteConfigTabHolder',
                    enableTabScroll:true,
                    defaults: {autoScroll:true, padding: 5},
                    bodyStyle: 'background: #ddd;',
<<<<<<< .mine
                    items:[windowSchoolSettingsEditor(true,currentSchool.id), windowNavEditor(true), windowSchoolEditor(true), windowGCDEditor(true, 'dept'), windowGCDEditor(true, 'class'), windowForumEditor(true), windowCategoryEditor(true)/*, windowStatViewer(true)*/],
=======
                    items:[
                      windowSchoolSettingsEditor(true,currentSchool.id),
                      windowNavEditor(true)
                      /*
                        

                      
                        windowSchoolEditor(true), 
                        windowGCDEditor(true, 'dept'), 
                        windowGCDEditor(true, 'class'), 
                        windowForumEditor(true), 
                        windowCategoryEditor(true), 
                        windowLDAPEditor(true),
                        windowStatViewer(true)
                      */
                    ],
>>>>>>> .r1370
                    listeners: {
                      tabchange: function(tp, t){
                        /*
                          if (journeyHelper.isRunning){
                            switch(t.id){
                              case 'tabSchoolSettingsEditor':
                                  journeyHelper.setHelpTopic('settings_edit');
                                break;
                              case 'tabNavigationEditor':
                                  journeyHelper.setHelpTopic('navigation_edit');
                                break;
                              case 'tabSchoolEditor':
                                  journeyHelper.setHelpTopic('school_edit');
                                break;
                              case 'tabDepartmentEditor':
                                  journeyHelper.setHelpTopic('department_edit');
                                break;
                              case 'tabClassEditor':
                                  journeyHelper.setHelpTopic('class_edit');
                                break;
                              case 'tabForumEditor':
                                  journeyHelper.setHelpTopic('forum_edit');
                                break;
                              case 'tabCategoryEditor':
                                  journeyHelper.setHelpTopic('category_edit');
                                break;
                            }
                            journeyHelper.showHelpTopic();
                          }
                      */
                      }
                    }
                }),
          buttons: [{
            text: 'Save',
            handler: function(){
              saveSiteConfig(false);              
            }
          },{ text: 'Cancel', handler: function(){ winSiteEdit.close(); } }],
          listeners: {
            afterRender: function(win){
              win.tabPanel.getItem('tabSchoolSettingsEditor').getForm().load({
                url:'/ajax/siteconfig/site/getSiteConfig.cfm?s='+currentSchool.id, 
                waitMsg:'Loading Setting...'
              });
            },
            show: function(win){
              Ext.Msg.hide()
            }
          }
      });
    winSiteEdit.show(this);
    
  }
  
  
reportingIn('siteConfig');
