private void buildContractTitle(contractUIObject c, int id, int size, ref Rect r)
        {
            string contractTitle = c.Container.Title;
            GUIStyle cStyle = titleState(c.Container.Contract.ContractState);
            bool active = c.Container.Contract.ContractState == Contract.State.Active || c.Container.Contract.ContractState == Contract.State.Completed;
            bool failed = c.Container.Contract.ContractState == Contract.State.Active || c
                .Container.Contract.ContractState == Contract.State.Cancelled || c.Container.Contract.ContractState == Contract.State.DeadlineExpired || c.Container.Contract.ContractState == Contract.State.Failed;

            //Add in space for the contract title buttons
            GUILayout.Space(23 + size * 4);

            //Draw inactive buttons if any popup window is open
            if (!popup)
            {
                if (GUILayout.Button(contractTitle, cStyle, GUILayout.MaxWidth(225 + size * 30)))
                    c.ShowParams = !c.ShowParams;
            }
            else
                GUILayout.Box(contractTitle, hoverTitleState(c.Container.Contract.ContractState), GUILayout.MaxWidth(225 + size * 30));

            r = GUILayoutUtility.GetLastRect();

            //Only draw the rewards if they are visible in the window
            if (WindowRect.width >= 270 + (size* 30))
            {
                if (r.yMin >= (scroll.y - 20) && r.yMax <= (scroll.y + WindowRect.height - (20 + size * 6)))
                {
                    Rect rewardsRect = r;
                    rewardsRect.x = 230 + (size * 30);
                    rewardsRect.y -= (2 + (size *2));

                    scaledContent(ref rewardsRect, c.Container.FundsRewString, c.Container.FundsPenString, Currency.Funds, size, active, failed);

                    scaledContent(ref rewardsRect, c.Container.SciRewString, "", Currency.Science, size, active, failed);

                    scaledContent(ref rewardsRect, c.Container.RepRewString, c.Container.RepPenString, Currency.Reputation, size, active, failed);
                }
            }

            //Display note
            if (!string.IsNullOrEmpty(c.Container.Notes) && c.Container.ShowNote && c.Container.Contract.ContractState == Contract.State.Active)
            {
                GUILayout.Space(-3);
                GUILayout.Box(c.Container.Notes, GUILayout.MaxWidth(300 + size * 60));

                r.height += GUILayoutUtility.GetLastRect().height;
            }
        }
        private void buildContractTitleBar(contractUIObject c, int id, int size, ref Rect r)
        {
            r.x = 6;
            r.y += (r.height + 2);
            r.width = 54 + (size * 12);
            r.height = 15 + (size * 4);

            if (r.yMin >= (scroll.y - 20) && r.yMax <= (scroll.y + WindowRect.height - (30 + size * 6)))
            {
                //Difficulty icons
                if (c.Container.Contract.Prestige == Contract.ContractPrestige.Trivial)
                    GUI.DrawTexture(r, contractSkins.goldStar);
                else if (c.Container.Contract.Prestige == Contract.ContractPrestige.Significant)
                    GUI.DrawTexture(r, contractSkins.goldStarTwo);
                else
                    GUI.DrawTexture(r, contractSkins.goldStarThree);

                r.x += r.width;
                r.width = 58 + (size * 15);

                //Expiration date
                if (c.Container.Duration >= 2160000)
                    GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerGood);
                else if (c.Container.Duration > 0)
                    GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerBad);
                else if (c.Container.Contract.ContractState == Contract.State.Completed)
                    GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerGood);
                else
                    GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerFinished);

                r.x += 60 + (size * 10);
                r.width = 16 + (size * 4);
                r.height += 1;

                //Draw icon buttons when no popup menus are open
                if (!popup)
                {
                    //Agency Icon
                    if (GUI.Button(r, new GUIContent(contractSkins.agencyIcon, "Agency"), contractSkins.texButtonSmall))
                    {
                        currentAgent = c.Container.Contract.Agent;
                        popup = !popup;
                        agencyPopup = !agencyPopup;
                    }

                    r.x += 22 + (size * 4);

                    //Show and hide icons
                    if (c.Container.Contract.ContractState == Contract.State.Active)
                    {
                        if (currentMission.ShowActiveMissions)
                        {
                            if (GUI.Button(r, new GUIContent(contractSkins.hideIcon, "Hide Contract"), contractSkins.texButtonSmall))
                                nextRemoveList.Add(c);
                        }
                        else
                        {
                            if (GUI.Button(r, new GUIContent(contractSkins.showIcon, "Un-Hide Contract"), contractSkins.texButtonSmall))
                                nextRemoveList.Add(c);
                        }
                    }
                    else
                    {
                        if (GUI.Button(r, new GUIContent(contractSkins.closeIcon, "Remove Contract"), contractSkins.texButtonSmall))
                            nextRemoveMissionList.Add(c);
                    }

                    r.x += 22 + (size * 4);

                    //Pin icon button
                    if (c.Order == null)
                    {
                        if (GUI.Button(r, new GUIContent(contractSkins.pinIcon, "Pin Contract"), contractSkins.texButtonSmall))
                            nextPinnedList.Add(c);
                    }
                    else
                    {
                        r.width -= 2;
                        if (GUI.Button(r, new GUIContent(contractSkins.pinDownIcon, "Un-Pin Contract"), contractSkins.texButtonSmall))
                            nextPinnedList.Add(c);
                    }

                    r.x += 22 + (size * 4);
                    r.width = 16 + (size * 4);

                    //Mission list button
                    if (GUI.Button(r, new GUIContent(contractSkins.missionIcon, "Add To Mission List"),contractSkins.texButtonSmall))
                    {
                        tempContainer = c;
                        popup = true;
                        missionCreator = true;
                    }

                    r.width = 12 + (size * 4);
                    r.x += 18 + (size * 4);

                    //Note icon button
                    if (c.Container.Contract.ContractState == Contract.State.Active && !string.IsNullOrEmpty(c.Container.Notes))
                    {
                        if (!c.Container.ShowNote)
                        {
                            if (GUI.Button(r, new GUIContent(contractSkins.noteIcon, "Show Note"), contractSkins.texButtonSmall))
                                c.Container.ShowNote = !c.Container.ShowNote;
                        }
                        else
                        {
                            if (GUI.Button(r, new GUIContent(contractSkins.noteIconOff, "Hide Note"), contractSkins.texButtonSmall))
                                c.Container.ShowNote = !c.Container.ShowNote;
                        }
                    }
                }
                //Draw inactive icons while any popup menu is active
                else
                {
                    //Agency Icon
                    GUI.Label(r, contractSkins.agencyIcon, contractSkins.texButtonSmall);

                    r.x += 22 + (size * 4);

                    //Show and hide icons
                    if (c.Container.Contract.ContractState == Contract.State.Active)
                    {
                        if (currentMission.ShowActiveMissions)
                            GUI.Label(r, contractSkins.hideIcon, contractSkins.texButtonSmall);
                        else
                            GUI.Label(r, contractSkins.showIcon, contractSkins.texButtonSmall);
                    }
                    else
                        GUI.Label(r, contractSkins.closeIcon, contractSkins.texButtonSmall);

                    r.x += 22 + (size * 4);

                    //Pin icon button
                    if (c.Order == null)
                        GUI.Label(r, contractSkins.pinIcon, contractSkins.texButtonSmall);
                    else
                    {
                        r.width -= 2;
                        GUI.Label(r, contractSkins.pinDownIcon, contractSkins.texButtonSmall);
                    }

                    r.x += 22 + (size * 4);
                    r.width = 16 + (size * 4);

                    //Mission list button
                    GUI.Label(r, contractSkins.missionIcon, contractSkins.texButtonSmall);

                    r.x += 18 + (size * 4);
                    r.width = 12 + (size * 4);

                    //Note icon button
                    if (c.Container.Contract.ContractState == Contract.State.Active && !string.IsNullOrEmpty(c.Container.Notes))
                    {
                        if (!c.Container.ShowNote)
                            GUI.Label(r, contractSkins.noteIcon, contractSkins.texButtonSmall);
                        else
                            GUI.Label(r, contractSkins.noteIconOff, contractSkins.texButtonSmall);
                    }
                }
            }
        }
        //Remove contract from current list and update
        private void showHideContract(contractUIObject c)
        {
            if (currentMission.ShowActiveMissions)
            {
                if (!currentMission.HiddenMissionList.Contains(c.Container.Contract.ContractGuid) && c.Container.Contract.ContractState == Contract.State.Active)
                {
                    currentMission.HiddenMissionList.Add(c.Container.Contract.ContractGuid);
                    c.ShowParams = false;
                }

                contractScenario.ListRemove(currentMission.ActiveMissionList, c.Container.Contract.ContractGuid);

                if (contractScenario.ListRemove(pinnedList, c.Container.Contract.ContractGuid))
                    c.Order = null;

                cList = currentMission.ActiveMissionList;
            }
            else
            {
                if (!currentMission.ActiveMissionList.Contains(c.Container.Contract.ContractGuid) && c.Container.Contract.ContractState == Contract.State.Active)
                {
                    currentMission.ActiveMissionList.Add(c.Container.Contract.ContractGuid);
                    c.ShowParams = true;
                }

                contractScenario.ListRemove(currentMission.HiddenMissionList, c.Container.Contract.ContractGuid);

                if (contractScenario.ListRemove(pinnedList, c.Container.Contract.ContractGuid))
                    c.Order = null;

                cList = currentMission.HiddenMissionList;
            }

            if (c.Container.Contract.ContractState != Contract.State.Active)
            {
                contractScenario.Instance.removeContract(c.Container.Contract.ContractGuid);
                currentMission.removeContract(c.Container);
                foreach (contractMission m in missionList)
                    m.removeContract(c.Container);
            }
        }