private void TermFormButton_Click(object sender, EventArgs e)
        {
            switch(m_behTermMdl)
            {
                case BEHTRANS_TERM_MODEL.T50_K_TERM:
                    m_behTermMdl = BEHTRANS_TERM_MODEL.GAUSSIAN_TERM;
                    break;
                case BEHTRANS_TERM_MODEL.GAUSSIAN_TERM:
                    m_behTermMdl = BEHTRANS_TERM_MODEL.T50_K_TERM;
                    break;
                default:
                    m_behTermMdl = BEHTRANS_TERM_MODEL.T50_K_TERM;
                    break;
            }
            SetTransitionFormulaText();

            // Indicate a modification.  
            SetModified();

        }
        //------------------//
        // Class Constructor
        //------------------//
        //public CBehavior() { m_spanMgr = new CSpanListMgr(); }

        /* The Current Behavior Count passed in must include this behavior being added*/
        public CBehavior()
        {
            //Debug.Assert(CurrentBehaviorCnt >= 1);
            // Normal behavior transition.
            m_spanMgr = new CBehaviorTransitionSpanMgr();
            m_spanMgr.AddSpan();
            m_behTermMdl = BEHTRANS_TERM_MODEL.T50_K_TERM;

            // Flat Bottom Dive
            m_flatBottomDive.modelType = MODELTYPE.DISABLED;
            m_flatBottomDive.gauss.mean = MBSDEFAULTS.ASCENT_GAUSS_MEAN;
            m_flatBottomDive.gauss.std = MBSDEFAULTS.ASCENT_GAUSS_STD;
            m_flatBottomDive.gauss.coeff = MBSDEFAULTS.ASCENT_GAUSS_COEFF;
            m_flatBottomDive.randm.max = MBSDEFAULTS.ASCENT_RANDOM_MAX;
            m_flatBottomDive.randm.min = MBSDEFAULTS.ASCENT_RANDOM_MIN;
            m_flatBottomDive.randm.coeff = MBSDEFAULTS.ASCENT_RANDOM_COEFF;
            m_flatBottomDive.vectorMdl.vector.a = null;
            m_flatBottomDive.vectorMdl.step.a = 0;
            m_flatBottomDive.vectorMdl.termination.a = 0;

            // Diving Ascent
            m_ascent.modelType = MBSDEFAULTS.ASCENT_MODEL_TYPE;
            m_ascent.gauss.mean = MBSDEFAULTS.ASCENT_GAUSS_MEAN;
            m_ascent.gauss.std = MBSDEFAULTS.ASCENT_GAUSS_STD;
            m_ascent.gauss.coeff = MBSDEFAULTS.ASCENT_GAUSS_COEFF;
            m_ascent.randm.max = MBSDEFAULTS.ASCENT_RANDOM_MAX;
            m_ascent.randm.min = MBSDEFAULTS.ASCENT_RANDOM_MIN;
            m_ascent.randm.coeff = MBSDEFAULTS.ASCENT_RANDOM_COEFF;
            m_ascent.vectorMdl.vector.a = MBSDEFAULTS.ASCENT_RATE_VECTOR;
            m_ascent.vectorMdl.step.a = MBSDEFAULTS.ASCENT_RATE_STEP;
            m_ascent.vectorMdl.termination.a = MBSDEFAULTS.ASCENT_RATE_TERMINATE;

            // Diving Descent
            m_descent.modelType = MBSDEFAULTS.DESCENT_MODEL_TYPE;
            m_descent.gauss.mean = MBSDEFAULTS.DESCENT_GAUSS_MEAN;
            m_descent.gauss.std = MBSDEFAULTS.DESCENT_GAUSS_STD;
            m_descent.gauss.coeff = MBSDEFAULTS.DESCENT_GAUSS_COEFF;
            m_descent.randm.max = MBSDEFAULTS.DESCENT_RANDOM_MAX;
            m_descent.randm.min = MBSDEFAULTS.DESCENT_RANDOM_MIN;
            m_descent.randm.coeff = MBSDEFAULTS.DESCENT_RANDOM_COEFF;
            m_descent.vectorMdl.vector.a = MBSDEFAULTS.DESCENT_RATE_VECTOR;
            m_descent.vectorMdl.step.a = MBSDEFAULTS.DESCENT_RATE_STEP;
            m_descent.vectorMdl.termination.a = MBSDEFAULTS.DESCENT_RATE_TERMINATE;

            // Diving Depth
            m_depth.type = MBSDEFAULTS.DEPTH_MODEL_TYPE;
            m_depth.gauss.mean = MBSDEFAULTS.DEPTH_GAUSS_MEAN;
            m_depth.gauss.std = MBSDEFAULTS.DEPTH_GAUSS_STD;
            m_depth.randm.max = MBSDEFAULTS.DEPTH_RANDOM_MAX;
            m_depth.vectorMdl.vector.a = MBSDEFAULTS.DEPTH_VECTOR;
            m_depth.vectorMdl.step.a = MBSDEFAULTS.DEPTH_STEP;

            // Diving Reversals
            m_reverse.type = MBSDEFAULTS.REVERSALS_MODEL_TYPE;
            m_reverse.enabled = MBSDEFAULTS.REVERSALS_ENABLED;
            m_reverse.reversalDiveRateType = MBSDEFAULTS.REVERSALS_DIVE_RATE_TYPE;
            m_reverse.diveRate.mean = MBSDEFAULTS.REVERSALS_DIVE_RATE_GAUSS_MEAN;
            m_reverse.diveRate.std = MBSDEFAULTS.REVERSALS_DIVE_RATE_GAUSS_STD;
            m_reverse.diveRate.coeff = MBSDEFAULTS.REVERSALS_DIVE_RATE_GAUSS_TERMCOEFF;
            m_reverse.gauss.meanCnt = MBSDEFAULTS.REVERSALS_GAUSS_MEAN_COUNT;
            m_reverse.gauss.stdCnt = MBSDEFAULTS.REVERSALS_GAUSS_STD_COUNT;
            m_reverse.gauss.prob = MBSDEFAULTS.REVERSALS_GAUSS_PROBABILITY;
            m_reverse.gauss.meanTime = MBSDEFAULTS.REVERSALS_GAUSS_MEAN_TIME;
            m_reverse.gauss.stdTime = MBSDEFAULTS.REVERSALS_GAUSS_STD_TIME;
            m_reverse.randm.maxCnt = MBSDEFAULTS.REVERSALS_RANDOM_MAX_COUNT;
            m_reverse.randm.minCnt = MBSDEFAULTS.REVERSALS_RANDOM_MIN_COUNT;
            m_reverse.randm.prob = MBSDEFAULTS.REVERSALS_RANDOM_PROBABILITY;
            m_reverse.randm.meanTime = MBSDEFAULTS.REVERSALS_RANDOM_MEAN_TIME;
            m_reverse.randm.stdTime = MBSDEFAULTS.REVERSALS_RANDOM_STD_TIME;

            m_reverse.vector.probabilityElement.a = MBSDEFAULTS.REVERSALS_PROBABILITY0;
            m_reverse.vector.countVector.a = MBSDEFAULTS.REVERSALS_COUNT_VECTOR0;
            m_reverse.vector.durationVector.a = MBSDEFAULTS.REVERSALS_TIME_VECTOR0;
            m_reverse.vector.durationStepElement.a = MBSDEFAULTS.REVERSALS_TIME_STEP;

            // Diving Surface Interval
            m_surfintrvl.type = MBSDEFAULTS.SURFACE_INTERVAL_MODEL_TYPE;
            m_surfintrvl.gauss.mean = MBSDEFAULTS.SURFACE_INTERVAL_GAUSS_MEAN;
            m_surfintrvl.gauss.std = MBSDEFAULTS.SURFACE_INTERVAL_GAUSS_STD;
            m_surfintrvl.vectorMdl.vector.a = MBSDEFAULTS.SURFACE_INTERVAL_VECTOR0;
            m_surfintrvl.vectorMdl.step.a = MBSDEFAULTS.SURFACE_INTERVAL_STEP;

            // Travel Direction
            m_direction.type = MBSDEFAULTS.DIRECTION_MODEL_TYPE;
            m_direction.rndmWalk.coeff = MBSDEFAULTS.RANDOM_WALK_COEFFICENT;
            m_direction.correlatedRndmWalk.pert = MBSDEFAULTS.CORRELATED_RANDOM_WALK_PERTURBATION;
            m_direction.correlatedRndmWalk.coeff = MBSDEFAULTS.CORRELATED_RANDOM_WALK_COEFFICENT;
            m_direction.correlatedRndmWalkDirBias.pert = MBSDEFAULTS.CORRELATED_RANDOM_WALK_DIR_BIAS_PERTURBATION;
            m_direction.correlatedRndmWalkDirBias.biasDir = MBSDEFAULTS.CORRELATED_RANDOM_WALK_DIR_BIAS_DIRECTION_OF_BIAS;
            m_direction.correlatedRndmWalkDirBias.bias = MBSDEFAULTS.CORRELATED_RANDOM_WALK_DIR_BIAS_VALUE_OF_BIAS;
            m_direction.correlatedRndmWalkDirBias.arcStep = MBSDEFAULTS.CORRELATED_RANDOM_WALK_DIR_BIAS_ARC_STEP;
            m_direction.correlatedRndmWalkDirBias.coeff = MBSDEFAULTS.CORRELATED_RANDOM_WALK_DIR_BIAS_COEFFICENT;
            m_direction.matrix.SetDefaultModel();

            // Travel Rate
            m_rate.modelType = MBSDEFAULTS.RATE_MODEL_TYPE;
            m_rate.gauss.mean = MBSDEFAULTS.TRAVEL_RATE_GAUSS_MEAN;
            m_rate.gauss.std = MBSDEFAULTS.TRAVEL_RATE_GAUSS_STD;
            m_rate.gauss.coeff = MBSDEFAULTS.TRAVEL_RATE_GAUSS_COEFF;
            m_rate.randm.max = MBSDEFAULTS.TRAVEL_RATE_RANDOM_MAX;
            m_rate.randm.min = MBSDEFAULTS.TRAVEL_RATE_RANDOM_MIN;
            m_rate.randm.coeff = MBSDEFAULTS.TRAVEL_RATE_RANDOM_COEFF;
            m_rate.vectorMdl.vector.a = MBSDEFAULTS.TRAVEL_RATE_VECTOR0;
            m_rate.vectorMdl.step.a = MBSDEFAULTS.TRAVEL_RATE_STEP;
            m_rate.vectorMdl.termination.a = MBSDEFAULTS.TRAVEL_RATE_TERMINATE;

            // General Environmental Attractor
            m_envInfPriority = MBSDEFAULTS.ENVINF_PRIORITY; ;
            m_envAttDirDepth.slopeEnabled = MBSDEFAULTS.ENVINFL_DEPTH_SHALLOW_ENABLED;
            m_envAttDirDepth.basinEnabled = MBSDEFAULTS.ENVINFL_DEPTH_DEEP_ENABLED;
            m_envAttDirDepth.shelfEnabled = MBSDEFAULTS.ENVINFL_DEPTH_SHELF_ENABLED;

            m_envAttDirDepth.shelfDepth = MBSDEFAULTS.ENVINFL_DEPTH_SHELF_BATHYDEPTH_METERS;
            m_envAttDirDepth.basinDepth = MBSDEFAULTS.ENVINFL_DEPTH_BASIN_BATHYDEPTH_METERS;
            m_envAttDirDepth.slopeDepth = MBSDEFAULTS.ENVINFL_DEPTH_SLOPE_BATHYDEPTH_METERS;

            m_envAttDirDepth.shelfSlope = MBSDEFAULTS.ENVINFL_DEPTH_SHELF_BATHYSLOPE_DEGREES;
            m_envAttDirDepth.basinSlope = MBSDEFAULTS.ENVINFL_DEPTH_BASIN_BATHYSLOPE_DEGREES;
            m_envAttDirDepth.slopeSlope = MBSDEFAULTS.ENVINFL_DEPTH_SLOPE_BATHYSLOPE_DEGREES;


            m_envAttDirTemp.coldEnabled = MBSDEFAULTS.ENVINFL_TEMP_COLD_ENABLED;
            m_envAttDirTemp.warmEnabled = MBSDEFAULTS.ENVINFL_TEMP_WARM_ENABLED;
            m_envAttDirTemp.frontEnabled = MBSDEFAULTS.ENVINFL_TEMP_FRONT_ENABLED;
            m_envAttDirTemp.cold = MBSDEFAULTS.ENVINFL_TEMP_COLD;
            m_envAttDirTemp.warm = MBSDEFAULTS.ENVINFL_TEMP_WARM;
            m_envAttDirTemp.front = MBSDEFAULTS.ENVINFL_TEMP_SHELF;

            // Depth Environmental Attractor Behavior Transition
            m_depthEnvAttctrBehTrans.vector.a = new double[1];
            m_depthEnvAttctrBehTrans.vector.a[0] = 1;
            m_depthEnvAttctrBehTrans.element.a = MBSDEFAULTS.BEHAVIOR_TRANS_TERMINATION_COEFF;
            m_depthEnvAttctrBehTrans.meanTimeInBehMinuites = 60;
            m_depthEnvAttctrBehTrans.slopeCoeff_goesAway = 7;

            // Temperature environmental attractor behavior transition
            m_tempEnvAttctrBehTrans.vector.a = new double[1];
            m_tempEnvAttctrBehTrans.vector.a[0] = 1;
            m_tempEnvAttctrBehTrans.element.a = MBSDEFAULTS.BEHAVIOR_TRANS_TERMINATION_COEFF;
            m_tempEnvAttctrBehTrans.meanTimeInBehMinuites = 60;
            m_tempEnvAttctrBehTrans.slopeCoeff_goesAway = 7;
        }
        //------------------------------------------------------------------------------//
        // Class Constructors
        //------------------------------------------------------------------------------//
        public FormBehTrans(CSpanMgr SpanListMgr, BEHTRANS_TERM_MODEL BehavorTerminationMdl, int BehCount,
            string[] BehaviorNames, int BehIndex)
        {
            // This class constructor is for behavior transition matrices.
            m_displayType = MBSDEFAULTS.BITMAPDISPLAYTYPE.BEHAVIOR_TRANSITION;
            m_spanMgr = SpanListMgr;

            m_behTermMdl = BehavorTerminationMdl;

            // Set intial indicies
            m_behaviorIndex = BehIndex;
            m_activeSpanIndex = 0; // start at span index 0
            m_activeMatrixRowIndex = 0;// start at row index 0

            m_numBehaviorsDefined = BehCount;
            m_behaviorNameArray = BehaviorNames;
            ConstructForm();
            SetTransitionFormulaText();
        }