void ShowGroupDetailsWindow(int pWindowID)
    {
        GUI.FocusWindow(pWindowID);
        float leadColumnSize = 40;
        float columnWidth = (m_rGuiGroupDetailsWindow.width - leadColumnSize)/ 5;

        GUILayout.BeginVertical();

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("Lead", "label", GUILayout.Width(leadColumnSize));
        GUILayout.Label("Ship Type", "label", GUILayout.Width(columnWidth));
        GUILayout.Label("Hull", "label", GUILayout.Width(columnWidth));
        GUILayout.Label("Fuel", "label", GUILayout.Width(columnWidth));
        GUILayout.EndHorizontal();

        _m_vScroll = GUILayout.BeginScrollView(_m_vScroll);

        foreach(GameObject shipGO in m_liShipGroups[_m_iSelectedGroupDetail].m_liShips)
        {
            GUILayout.BeginHorizontal("box1");
            Ship_Small ship = (Ship_Small)shipGO.GetComponent("Ship_Small");
            Ship_Small leadShip = (Ship_Small)m_liShipGroups[_m_iSelectedGroupDetail].
                m_goLead.GetComponent("Ship_Small");

            if(ship.m_iID != leadShip.m_iID)
            {
                if(GUILayout.Button("Lead", "button", GUILayout.Width(leadColumnSize)))
                {
                    m_liShipGroups[_m_iSelectedGroupDetail].m_goLead = shipGO;
                }
            }
            else
            {
                GUILayout.Label("", "label", GUILayout.Width(leadColumnSize));
            }

            if(ship is Ship_Small_Interceptor)
            {
                GUILayout.Label("Interceptor", "label", GUILayout.Width(columnWidth));
            }
            else if(ship is Ship_Small_Scout)
            {
                GUILayout.Label("Scout", "label", GUILayout.Width(columnWidth));
            }

            GUILayout.Label(ship.m_fHullStrength + "/" + ship.m_fMaxHullStrength, "label",
                GUILayout.Width(columnWidth));
            GUILayout.Label(ship.m_fFuelAmount + "/" + ship.m_fMaxFuelAmount, "label",
                GUILayout.Width(columnWidth));

            GUILayout.EndHorizontal();
        }

        GUILayout.EndScrollView();

        GUILayout.FlexibleSpace();
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if(GUILayout.Button("Close", "button"))
        {
            _m_eWindowState = WINDOWSTATE.None;
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
        GUILayout.EndVertical();
    }
    void GUIFlyingGroupColumn(float pColumnWidth, float pColumnHeight)
    {
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();

        GUILayout.BeginVertical("box1", GUILayout.Width(pColumnWidth), GUILayout.Height(pColumnHeight));
        GUILayout.Label("Flying Groups", "HeaderLabel");

        float tableCellWidth = pColumnWidth / 6;

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("Group", "label", GUILayout.Width(tableCellWidth));
        GUILayout.Label("Group Type", "label", GUILayout.Width(tableCellWidth));
        GUILayout.Label("State", "label", GUILayout.Width(tableCellWidth));
        GUILayout.Label("Command", "label", GUILayout.Width(tableCellWidth));
        GUILayout.EndHorizontal();

        foreach(ShipGroup shipGroup in m_liShipGroups)
        {
            if(shipGroup.m_eState == GROUPSTATE.Flying || shipGroup.m_eState == GROUPSTATE.Landing ||
                shipGroup.m_eState == GROUPSTATE.Landed)
            {
                GUILayout.BeginHorizontal("box1");
                GUILayout.Label(shipGroup.m_iID.ToString(), "label", GUILayout.Width(tableCellWidth));
                GUILayout.Label(shipGroup.m_eType.ToString(), "label", GUILayout.Width(tableCellWidth));
                GUILayout.Label(shipGroup.m_eState.ToString(), "label", GUILayout.Width(tableCellWidth));
                if(shipGroup.m_eState == GROUPSTATE.Flying)
                {
                    if(GUILayout.Button("Land", "button", GUILayout.Width(tableCellWidth)))
                    {
                        shipGroup.LandGroup(true);
                    }
                }
                else if(shipGroup.m_eState == GROUPSTATE.Landing)
                {
                    if(GUILayout.Button("Cancel Landing", "button", GUILayout.Width(tableCellWidth)))
                    {
                        shipGroup.LandGroup(false);
                    }
                }
                else if(shipGroup.m_eState == GROUPSTATE.Landed)
                {
                    GUILayout.Button("Landed", "button", GUILayout.Width(tableCellWidth));
                }

                if(GUILayout.Button("Details", "button", GUILayout.Width(tableCellWidth)))
                {
                    _m_eWindowState = WINDOWSTATE.GroupDetails;
                    _m_iSelectedGroupDetail = shipGroup.m_iID;
                }
                GUILayout.EndHorizontal();
            }
        }
        GUILayout.EndVertical();

        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
    }
    void GUINewGroupColumn(float pColumnWidth, float pColumnHeight)
    {
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();

        GUILayout.BeginVertical("box1", GUILayout.Width(pColumnWidth), GUILayout.Height(pColumnHeight));
        GUILayout.FlexibleSpace();
        GUILayout.Label("New Group", "HeaderLabel");

        string[] types = Enum.GetNames(typeof(GROUPTYPE));
        GUILayout.Label("New Group Type", "box");
        _m_eNextGroupType = (GROUPTYPE)GUILayout.SelectionGrid((int)_m_eNextGroupType, types, types.Length);

        GUILayout.Label("Group Interceptors:", "box");
        GUILayout.BeginHorizontal();
        if(GUILayout.Button("-", "button"))
        {
            _m_iNextGroupInterceptors--;
        }
        GUILayout.Label(_m_iNextGroupInterceptors.ToString(), "label");
        if(GUILayout.Button("+", "button"))
        {
            _m_iNextGroupInterceptors++;
        }
        GUILayout.EndHorizontal();

        GUILayout.Label("Group Scouts:", "box");
        GUILayout.BeginHorizontal();
        if(GUILayout.Button("-", "button"))
        {
            _m_iNextGroupScouts--;
        }
        GUILayout.Label(_m_iNextGroupScouts.ToString(), "label");
        if(GUILayout.Button("+", "button"))
        {
            _m_iNextGroupScouts++;
        }
        GUILayout.EndHorizontal();

        if(GUILayout.Button("Assign Group"))
        {
            bool assignedSuccess = AssignNewGroup(_m_eNextGroupType);
            if(assignedSuccess)
                _m_eWindowState = WINDOWSTATE.GroupCreationSuccess;
            else
                _m_eWindowState = WINDOWSTATE.GroupCreationFailed;
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndVertical();

        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
    }
    void GUIDockedGroupColumn(float pColumnWidth, float pColumnHeight)
    {
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();

        GUILayout.BeginVertical("box1", GUILayout.Width(pColumnWidth), GUILayout.Height(pColumnHeight));
        GUILayout.Label("Docked Groups", "HeaderLabel");

        pColumnWidth -= 5;
        float tableCellWidth = pColumnWidth / 4;

        GUILayout.BeginHorizontal("box");
        GUILayout.Label("Group", "label", GUILayout.Width(tableCellWidth));
        GUILayout.Label("Group Type", "label", GUILayout.Width(tableCellWidth));
        GUILayout.Label("State", "label", GUILayout.Width(tableCellWidth));
        GUILayout.Label("Command", "label", GUILayout.Width(tableCellWidth));
        GUILayout.EndHorizontal();

        _m_vScroll = GUILayout.BeginScrollView(_m_vScroll);
        foreach(ShipGroup shipGroup in m_liShipGroups)
        {
            if(shipGroup.m_eState == GROUPSTATE.Docked || shipGroup.m_eState == GROUPSTATE.Loading ||
                shipGroup.m_eState == GROUPSTATE.Loaded || shipGroup.m_eState == GROUPSTATE.Launching)
            {
                GUILayout.BeginHorizontal("box1", GUILayout.Width(pColumnWidth));
                GUILayout.Label(shipGroup.m_iID.ToString(), "label", GUILayout.Width(tableCellWidth));
                GUILayout.Label(shipGroup.m_eType.ToString(), "label", GUILayout.Width(tableCellWidth));
                GUILayout.Label(shipGroup.m_eState.ToString(), "label", GUILayout.Width(tableCellWidth));

                float buttonWidth = tableCellWidth / 3;

                if(shipGroup.m_eState == GROUPSTATE.Loading)
                {
                    GUILayout.Button("Loading..", "button", GUILayout.Width(buttonWidth));
                    GUILayout.Button("", "label", GUILayout.Width(buttonWidth));
                }
                else if(shipGroup.m_eState == GROUPSTATE.Loaded)
                {
                    if(GUILayout.Button("Launch", "button", GUILayout.Width(buttonWidth)))
                    {
                        LaunchGroup(shipGroup);
                    }
                    if(GUILayout.Button("Disperse", "button", GUILayout.Width(buttonWidth)))
                    {

                    }
                }
                else if(shipGroup.m_eState == GROUPSTATE.Launching)
                {
                    GUILayout.Button("Launching..", "button", GUILayout.Width(buttonWidth));
                    GUILayout.Button("", "label", GUILayout.Width(buttonWidth));
                }

                if(GUILayout.Button("Details", "button", GUILayout.Width(buttonWidth)))
                {
                    _m_eWindowState = WINDOWSTATE.GroupDetails;
                    _m_iSelectedGroupDetail = shipGroup.m_iID;
                }

                GUILayout.EndHorizontal();
            }
        }
        GUILayout.EndScrollView();
        GUILayout.EndVertical();

        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
    }