void FailureWindow(int id)
 {
     GUILayout.BeginVertical();
     pos = GUILayout.BeginScrollView(pos);
     foreach (var part in FlightGlobals.ActiveVessel.Parts)
     {
         // Count all the failures on the part
         foreach (nsDangIt.FailureModule fm in part.Modules.OfType <nsDangIt.FailureModule>())
         {
             if (fm.HasFailed)
             {
                 GUILayout.BeginHorizontal();
                 if (GUILayout.Button(part.partInfo.title))
                 {
                     if (FailureModule.phl.HighlightListContains(failureWinHighlightID, part))
                     {
                         FailureModule.phl.RemovePartFromList(failureWinHighlightID, part);
                     }
                     else
                     {
                         FailureModule.phl.AddPartToHighlight(failureWinHighlightID, part);
                     }
                 }
                 GUILayout.EndHorizontal();
             }
         }
     }
     GUILayout.EndScrollView();
     GUILayout.BeginHorizontal();
     if (GUILayout.Button("Close"))
     {
         isVisible = false;
         FailureModule.phl.PauseHighlighting(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], false);
         foreach (var p in Parts)
         {
             FailureModule.phl.DisablePartHighlighting(failureWinHighlightID, p);
         }
     }
     if (GUILayout.Button("Mute All"))
     {
         AlarmManager alarmManager = FindObjectOfType <AlarmManager>();
         if (alarmManager != null)
         {
             alarmManager.RemoveAllAlarms();
         }
     }
     if (GUILayout.Button("Disable All Highlighting"))
     {
         foreach (var p in FlightGlobals.ActiveVessel.Parts)
         {
             if (FailureModule.phl.HighlightListContains(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], p))
             {
                 FailureModule.phl.PauseHighlighting(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], true);
                 Parts.Add(p);
             }
         }
         FailureModule.phl.EmptyList(failureWinHighlightID);
     }
     GUILayout.EndHorizontal();
     GUILayout.BeginHorizontal();
     if (GUILayout.Button("Permenantly disable current highlighted failures"))
     {
         foreach (var p in FlightGlobals.ActiveVessel.Parts)
         {
             if (FailureModule.phl.HighlightListContains(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], p))
             {
                 Log.Info("Disabling highlighted part: " + p.partInfo.title);
                 if (!FailureModule.phl.RemovePartFromList(FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id], p))
                 {
                     Log.Error("Error removing part from list: " + FailureModule.vesselHighlightDict[FlightGlobals.ActiveVessel.id] +
                               ", part: " + p.partInfo.title);
                 }
                 AlarmManager.RemovePartFailure(p);
                 foreach (FailureModule fm in p.Modules.OfType <FailureModule>())
                 {
                     if (fm.HasFailed)
                     {
                         fm.DisableAlarm();
                     }
                 }
             }
         }
         FailureModule.phl.EmptyList(failureWinHighlightID);
         Parts.Clear();
     }
     GUILayout.EndHorizontal();
     GUILayout.EndVertical();
     UnityEngine.GUI.DragWindow();
 }