ArcObjects Library Reference  

frmNALayerProperties

About the ArcGIS Network Analyst extension Engine application Sample

[C#]

frmNALayerProperties.cs

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using ESRI.ArcGIS.NetworkAnalyst;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.esriSystem;
using System.Collections.Generic;
using System.Linq;


// This form allows users to change the NALayer/NAContext/NASolver properties

namespace NAEngine
{
	/// <summary>
	/// Summary description for frmNALayerProperties.
	/// </summary>
	public class frmNALayerProperties : System.Windows.Forms.Form
	{
		#region Windows Form Designer generated code (defining controls)
		/// <summary>
		/// Required designer variable.
		/// </summary>
		private TabControl tabPropPages;
		private TabPage tabGeneral;
		private TabPage tabRoute;
		private TabPage tabServiceArea;
		private TabPage tabClosestFacility;
		private TabPage tabODCostMatrix;
		private TabPage tabVRP;
		private Button btnOK;
		private Button btnCancel;
		private CheckBox chkRouteIgnoreInvalidLocations;
		private ComboBox cboRouteRestrictUTurns;
		private Label lblRouteRestrictUTurns;
		private Label lblRouteAccumulateAttributeNames;
		private CheckedListBox chklstRouteAccumulateAttributeNames;
		private Label lblRouteRestrictionAttributeNames;
		private CheckedListBox chklstRouteRestrictionAttributeNames;
		private ComboBox cboRouteImpedance;
		private Label lblRouteImpedance;
		private CheckBox chkRouteUseHierarchy;
		private Label labelRouteOutputLines;
		private ComboBox cboRouteOutputLines;
		private CheckBox chkRouteUseTimeWindows;
		private CheckBox chkRoutePreserveLastStop;
		private CheckBox chkRoutePreserveFirstStop;
		private CheckBox chkRouteFindBestSequence;
		private CheckBox chkRouteUseStartTime;
		private TextBox txtRouteStartTime;
		private TextBox txtLayerName;
		private Label lblLayerName;
		private System.ComponentModel.Container components = null;
		private ComboBox cboCFOutputLines;
		private Label lblCFOutputLines;
		private ComboBox cboCFTravelDirection;
		private Label lblCFTravelDirection;
		private TextBox txtCFDefaultTargetFacilityCount;
		private Label lblCFDefaultTargetFacilityCount;
		private TextBox txtCFDefaultCutoff;
		private Label lblCFDefaultCutoff;
		private CheckBox chkCFIgnoreInvalidLocations;
		private ComboBox cboCFRestrictUTurns;
		private Label lblCFRestrictUTurns;
		private Label lblCFAccumulateAttributeNames;
		private CheckedListBox chklstCFAccumulateAttributeNames;
		private Label lblCFRestrictionAttributeNames;
		private CheckedListBox chklstCFRestrictionAttributeNames;
		private ComboBox cboCFImpedance;
		private Label lblCFImpedance;
		private CheckBox chkCFUseHierarchy;
		private CheckBox chkODIgnoreInvalidLocations;
		private ComboBox cboODRestrictUTurns;
		private Label lblODRestrictUTurns;
		private Label lblODAccumulateAttributeNames;
		private CheckedListBox chklstODAccumulateAttributeNames;
		private Label lblODRestrictionAttributeNames;
		private CheckedListBox chklstODRestrictionAttributeNames;
		private ComboBox cboODImpedance;
		private Label lblODImpedance;
		private CheckBox chkODUseHierarchy;
		private ComboBox cboODOutputLines;
		private Label lblODOutputLines;
		private TextBox txtODDefaultTargetDestinationCount;
		private Label lblODDefaultTargetDestinationCount;
		private TextBox txtODDefaultCutoff;
		private Label lblODDefaultCutoff;
		private TextBox txtSADefaultBreaks;
		private Label lblSADefaultBreaks;
		private ComboBox cboSAImpedance;
		private Label lblSAImpedance;
		private Label lblSAOutputPolygons;
		private ComboBox cboSAOutputPolygons;
		private Label lblSAOutputLines;
		private ComboBox cboSAOutputLines;
		private CheckBox chkSAMergeSimilarPolygonRanges;
		private CheckBox chkSAIgnoreInvalidLocations;
		private ComboBox cboSARestrictUTurns;
		private Label lblSARestrictUTurns;
		private Label lblSAAccumulateAttributeNames;
		private CheckedListBox chklstSAAccumulateAttributeNames;
		private Label lblSARestrictionAttributeNames;
		private CheckedListBox chklstSARestrictionAttributeNames;
		private CheckBox chkSAOverlapLines;
		private CheckBox chkSASplitPolygonsAtBreaks;
		private CheckBox chkSAOverlapPolygons;
		private CheckBox chkSASplitLinesAtBreaks;
		private ComboBox cboSATrimPolygonDistanceUnits;
		private TextBox txtSATrimPolygonDistance;
		private CheckBox chkSATrimOuterPolygon;
		private CheckBox chkSAIncludeSourceInformationOnLines;
		private ComboBox cboSATravelDirection;
		private Label lblSATravelDirection;
		private Label lblMaxSearchTolerance;
		private ComboBox cboMaxSearchToleranceUnits;
		private GroupBox gbSettings;
		private CheckBox chkVRPUseHierarchy;
		private ComboBox cboVRPOutputShapeType;
		private ComboBox cboVRPAllowUTurns;
		private ComboBox cboVRPTimeFieldUnits;
		private TextBox txtVRPCapacityCount;
		private TextBox txtVRPDefaultDate;
		private ComboBox cboVRPDistanceAttribute;
		private ComboBox cboVRPTimeAttribute;
		private Label label7;
		private Label label6;
		private Label label5;
		private Label label4;
		private Label label3;
		private Label label2;
		private Label label1;
		private Label lblTimeAttribute;
		private GroupBox gbRestrictions;
		private CheckedListBox chklstVRPRestrictionAttributeNames;
		private ComboBox cboVRPTimeWindow;
		private Label label10;
		private Label label9;
		private ComboBox cboVRPTransitTime;
		private ComboBox cboVRPDistanceFieldUnits;
		private TabPage tabLocationAllocation;
		private Label lblTargetMarketShare;
		private TextBox txtLATargetMarketShare;
		private ComboBox cboLAImpTransformation;
		private Label lblImpParameter;
		private TextBox txtLAImpParameter;
		private Label lblImpTransformation;
		private Label lblCostAttribute;
		private ComboBox cboLAImpedance;
		private Label lblProblemType;
		private ComboBox cboLAProblemType;
		private Label lblCutOff;
		private TextBox txtLACutOff;
		private Label lblNumFacilities;
		private TextBox txtLAFacilitiesToLocate;
		private ComboBox cboLAOutputLines;
		private Label label11;
		private ComboBox cboLATravelDirection;
		private Label label12;
		private Label lblLAAccumulateAttributeNames;
		private CheckedListBox chklstLAAccumulateAttributeNames;
		private Label lblLARestrictionAttributeNames;
		private CheckedListBox chklstLARestrictionAttributeNames;
		private CheckBox chkLAUseHierarchy;
		private GroupBox grpLASettings;
		private CheckBox chkLAIgnoreInvalidLocations;
        private Label label8;
        private ComboBox cboCFTimeUsage;
        private TextBox txtCFUseTime;
        private CheckBox chkODUseTime;
        private TextBox txtODUseTime;
        private CheckBox chkSAUseTime;
        private TextBox txtSAUseTime;
        private CheckBox chkLAUseTime;
        private TextBox txtLAUseTime;
        private Label label13;
        private TabPage tabAttributeParameters;
        private DataGridView attributeParameterGrid;
        private DataGridViewTextBoxColumn dgvcAttribute;
        private DataGridViewTextBoxColumn dgvcParameter;
        private DataGridViewTextBoxColumn dgvcValue;
        private Label label14;
        private Button btnReset;
		private TextBox txtMaxSearchTolerance;

		#endregion

		#region Windows Form Designer generated code (InitializeComponent)
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
            this.tabPropPages = new System.Windows.Forms.TabControl();
            this.tabGeneral = new System.Windows.Forms.TabPage();
            this.lblMaxSearchTolerance = new System.Windows.Forms.Label();
            this.cboMaxSearchToleranceUnits = new System.Windows.Forms.ComboBox();
            this.txtMaxSearchTolerance = new System.Windows.Forms.TextBox();
            this.txtLayerName = new System.Windows.Forms.TextBox();
            this.lblLayerName = new System.Windows.Forms.Label();
            this.tabRoute = new System.Windows.Forms.TabPage();
            this.labelRouteOutputLines = new System.Windows.Forms.Label();
            this.cboRouteOutputLines = new System.Windows.Forms.ComboBox();
            this.chkRouteUseTimeWindows = new System.Windows.Forms.CheckBox();
            this.chkRoutePreserveLastStop = new System.Windows.Forms.CheckBox();
            this.chkRoutePreserveFirstStop = new System.Windows.Forms.CheckBox();
            this.chkRouteFindBestSequence = new System.Windows.Forms.CheckBox();
            this.chkRouteUseStartTime = new System.Windows.Forms.CheckBox();
            this.txtRouteStartTime = new System.Windows.Forms.TextBox();
            this.chkRouteIgnoreInvalidLocations = new System.Windows.Forms.CheckBox();
            this.cboRouteRestrictUTurns = new System.Windows.Forms.ComboBox();
            this.lblRouteRestrictUTurns = new System.Windows.Forms.Label();
            this.lblRouteAccumulateAttributeNames = new System.Windows.Forms.Label();
            this.chklstRouteAccumulateAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.lblRouteRestrictionAttributeNames = new System.Windows.Forms.Label();
            this.chklstRouteRestrictionAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.cboRouteImpedance = new System.Windows.Forms.ComboBox();
            this.lblRouteImpedance = new System.Windows.Forms.Label();
            this.chkRouteUseHierarchy = new System.Windows.Forms.CheckBox();
            this.tabClosestFacility = new System.Windows.Forms.TabPage();
            this.label13 = new System.Windows.Forms.Label();
            this.label8 = new System.Windows.Forms.Label();
            this.cboCFTimeUsage = new System.Windows.Forms.ComboBox();
            this.txtCFUseTime = new System.Windows.Forms.TextBox();
            this.chkCFIgnoreInvalidLocations = new System.Windows.Forms.CheckBox();
            this.cboCFRestrictUTurns = new System.Windows.Forms.ComboBox();
            this.lblCFRestrictUTurns = new System.Windows.Forms.Label();
            this.lblCFAccumulateAttributeNames = new System.Windows.Forms.Label();
            this.chklstCFAccumulateAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.lblCFRestrictionAttributeNames = new System.Windows.Forms.Label();
            this.chklstCFRestrictionAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.cboCFImpedance = new System.Windows.Forms.ComboBox();
            this.lblCFImpedance = new System.Windows.Forms.Label();
            this.chkCFUseHierarchy = new System.Windows.Forms.CheckBox();
            this.cboCFOutputLines = new System.Windows.Forms.ComboBox();
            this.lblCFOutputLines = new System.Windows.Forms.Label();
            this.cboCFTravelDirection = new System.Windows.Forms.ComboBox();
            this.lblCFTravelDirection = new System.Windows.Forms.Label();
            this.txtCFDefaultTargetFacilityCount = new System.Windows.Forms.TextBox();
            this.lblCFDefaultTargetFacilityCount = new System.Windows.Forms.Label();
            this.txtCFDefaultCutoff = new System.Windows.Forms.TextBox();
            this.lblCFDefaultCutoff = new System.Windows.Forms.Label();
            this.tabODCostMatrix = new System.Windows.Forms.TabPage();
            this.chkODUseTime = new System.Windows.Forms.CheckBox();
            this.txtODUseTime = new System.Windows.Forms.TextBox();
            this.chkODIgnoreInvalidLocations = new System.Windows.Forms.CheckBox();
            this.cboODRestrictUTurns = new System.Windows.Forms.ComboBox();
            this.lblODRestrictUTurns = new System.Windows.Forms.Label();
            this.lblODAccumulateAttributeNames = new System.Windows.Forms.Label();
            this.chklstODAccumulateAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.lblODRestrictionAttributeNames = new System.Windows.Forms.Label();
            this.chklstODRestrictionAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.cboODImpedance = new System.Windows.Forms.ComboBox();
            this.lblODImpedance = new System.Windows.Forms.Label();
            this.chkODUseHierarchy = new System.Windows.Forms.CheckBox();
            this.cboODOutputLines = new System.Windows.Forms.ComboBox();
            this.lblODOutputLines = new System.Windows.Forms.Label();
            this.txtODDefaultTargetDestinationCount = new System.Windows.Forms.TextBox();
            this.lblODDefaultTargetDestinationCount = new System.Windows.Forms.Label();
            this.txtODDefaultCutoff = new System.Windows.Forms.TextBox();
            this.lblODDefaultCutoff = new System.Windows.Forms.Label();
            this.tabServiceArea = new System.Windows.Forms.TabPage();
            this.chkSAUseTime = new System.Windows.Forms.CheckBox();
            this.txtSAUseTime = new System.Windows.Forms.TextBox();
            this.cboSATrimPolygonDistanceUnits = new System.Windows.Forms.ComboBox();
            this.txtSATrimPolygonDistance = new System.Windows.Forms.TextBox();
            this.chkSATrimOuterPolygon = new System.Windows.Forms.CheckBox();
            this.chkSAIncludeSourceInformationOnLines = new System.Windows.Forms.CheckBox();
            this.cboSATravelDirection = new System.Windows.Forms.ComboBox();
            this.lblSATravelDirection = new System.Windows.Forms.Label();
            this.chkSASplitPolygonsAtBreaks = new System.Windows.Forms.CheckBox();
            this.chkSAOverlapPolygons = new System.Windows.Forms.CheckBox();
            this.chkSASplitLinesAtBreaks = new System.Windows.Forms.CheckBox();
            this.chkSAOverlapLines = new System.Windows.Forms.CheckBox();
            this.chkSAIgnoreInvalidLocations = new System.Windows.Forms.CheckBox();
            this.cboSARestrictUTurns = new System.Windows.Forms.ComboBox();
            this.lblSARestrictUTurns = new System.Windows.Forms.Label();
            this.lblSAAccumulateAttributeNames = new System.Windows.Forms.Label();
            this.chklstSAAccumulateAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.lblSARestrictionAttributeNames = new System.Windows.Forms.Label();
            this.chklstSARestrictionAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.lblSAOutputPolygons = new System.Windows.Forms.Label();
            this.cboSAOutputPolygons = new System.Windows.Forms.ComboBox();
            this.lblSAOutputLines = new System.Windows.Forms.Label();
            this.cboSAOutputLines = new System.Windows.Forms.ComboBox();
            this.chkSAMergeSimilarPolygonRanges = new System.Windows.Forms.CheckBox();
            this.txtSADefaultBreaks = new System.Windows.Forms.TextBox();
            this.lblSADefaultBreaks = new System.Windows.Forms.Label();
            this.cboSAImpedance = new System.Windows.Forms.ComboBox();
            this.lblSAImpedance = new System.Windows.Forms.Label();
            this.tabVRP = new System.Windows.Forms.TabPage();
            this.gbRestrictions = new System.Windows.Forms.GroupBox();
            this.chklstVRPRestrictionAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.gbSettings = new System.Windows.Forms.GroupBox();
            this.cboVRPDistanceFieldUnits = new System.Windows.Forms.ComboBox();
            this.cboVRPTransitTime = new System.Windows.Forms.ComboBox();
            this.cboVRPTimeWindow = new System.Windows.Forms.ComboBox();
            this.label10 = new System.Windows.Forms.Label();
            this.label9 = new System.Windows.Forms.Label();
            this.chkVRPUseHierarchy = new System.Windows.Forms.CheckBox();
            this.cboVRPOutputShapeType = new System.Windows.Forms.ComboBox();
            this.cboVRPAllowUTurns = new System.Windows.Forms.ComboBox();
            this.cboVRPTimeFieldUnits = new System.Windows.Forms.ComboBox();
            this.txtVRPCapacityCount = new System.Windows.Forms.TextBox();
            this.txtVRPDefaultDate = new System.Windows.Forms.TextBox();
            this.cboVRPDistanceAttribute = new System.Windows.Forms.ComboBox();
            this.cboVRPTimeAttribute = new System.Windows.Forms.ComboBox();
            this.label7 = new System.Windows.Forms.Label();
            this.label6 = new System.Windows.Forms.Label();
            this.label5 = new System.Windows.Forms.Label();
            this.label4 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.label1 = new System.Windows.Forms.Label();
            this.lblTimeAttribute = new System.Windows.Forms.Label();
            this.tabLocationAllocation = new System.Windows.Forms.TabPage();
            this.chkLAUseTime = new System.Windows.Forms.CheckBox();
            this.txtLAUseTime = new System.Windows.Forms.TextBox();
            this.chkLAIgnoreInvalidLocations = new System.Windows.Forms.CheckBox();
            this.grpLASettings = new System.Windows.Forms.GroupBox();
            this.lblTargetMarketShare = new System.Windows.Forms.Label();
            this.txtLATargetMarketShare = new System.Windows.Forms.TextBox();
            this.cboLAImpTransformation = new System.Windows.Forms.ComboBox();
            this.lblImpParameter = new System.Windows.Forms.Label();
            this.txtLAImpParameter = new System.Windows.Forms.TextBox();
            this.lblImpTransformation = new System.Windows.Forms.Label();
            this.lblProblemType = new System.Windows.Forms.Label();
            this.cboLAProblemType = new System.Windows.Forms.ComboBox();
            this.lblCutOff = new System.Windows.Forms.Label();
            this.txtLACutOff = new System.Windows.Forms.TextBox();
            this.lblNumFacilities = new System.Windows.Forms.Label();
            this.txtLAFacilitiesToLocate = new System.Windows.Forms.TextBox();
            this.chkLAUseHierarchy = new System.Windows.Forms.CheckBox();
            this.lblLAAccumulateAttributeNames = new System.Windows.Forms.Label();
            this.chklstLAAccumulateAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.lblLARestrictionAttributeNames = new System.Windows.Forms.Label();
            this.chklstLARestrictionAttributeNames = new System.Windows.Forms.CheckedListBox();
            this.cboLAOutputLines = new System.Windows.Forms.ComboBox();
            this.label11 = new System.Windows.Forms.Label();
            this.cboLATravelDirection = new System.Windows.Forms.ComboBox();
            this.label12 = new System.Windows.Forms.Label();
            this.lblCostAttribute = new System.Windows.Forms.Label();
            this.cboLAImpedance = new System.Windows.Forms.ComboBox();
            this.tabAttributeParameters = new System.Windows.Forms.TabPage();
            this.btnReset = new System.Windows.Forms.Button();
            this.attributeParameterGrid = new System.Windows.Forms.DataGridView();
            this.dgvcAttribute = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.dgvcParameter = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.dgvcValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.label14 = new System.Windows.Forms.Label();
            this.btnOK = new System.Windows.Forms.Button();
            this.btnCancel = new System.Windows.Forms.Button();
            this.tabPropPages.SuspendLayout();
            this.tabGeneral.SuspendLayout();
            this.tabRoute.SuspendLayout();
            this.tabClosestFacility.SuspendLayout();
            this.tabODCostMatrix.SuspendLayout();
            this.tabServiceArea.SuspendLayout();
            this.tabVRP.SuspendLayout();
            this.gbRestrictions.SuspendLayout();
            this.gbSettings.SuspendLayout();
            this.tabLocationAllocation.SuspendLayout();
            this.grpLASettings.SuspendLayout();
            this.tabAttributeParameters.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.attributeParameterGrid)).BeginInit();
            this.SuspendLayout();
            // 
            // tabPropPages
            // 
            this.tabPropPages.Controls.Add(this.tabGeneral);
            this.tabPropPages.Controls.Add(this.tabRoute);
            this.tabPropPages.Controls.Add(this.tabClosestFacility);
            this.tabPropPages.Controls.Add(this.tabODCostMatrix);
            this.tabPropPages.Controls.Add(this.tabServiceArea);
            this.tabPropPages.Controls.Add(this.tabVRP);
            this.tabPropPages.Controls.Add(this.tabLocationAllocation);
            this.tabPropPages.Controls.Add(this.tabAttributeParameters);
            this.tabPropPages.Location = new System.Drawing.Point(8, 8);
            this.tabPropPages.Name = "tabPropPages";
            this.tabPropPages.SelectedIndex = 0;
            this.tabPropPages.Size = new System.Drawing.Size(719, 499);
            this.tabPropPages.TabIndex = 0;
            // 
            // tabGeneral
            // 
            this.tabGeneral.Controls.Add(this.lblMaxSearchTolerance);
            this.tabGeneral.Controls.Add(this.cboMaxSearchToleranceUnits);
            this.tabGeneral.Controls.Add(this.txtMaxSearchTolerance);
            this.tabGeneral.Controls.Add(this.txtLayerName);
            this.tabGeneral.Controls.Add(this.lblLayerName);
            this.tabGeneral.Location = new System.Drawing.Point(4, 22);
            this.tabGeneral.Name = "tabGeneral";
            this.tabGeneral.Size = new System.Drawing.Size(711, 473);
            this.tabGeneral.TabIndex = 0;
            this.tabGeneral.Text = "General";
            this.tabGeneral.UseVisualStyleBackColor = true;
            // 
            // lblMaxSearchTolerance
            // 
            this.lblMaxSearchTolerance.Location = new System.Drawing.Point(24, 64);
            this.lblMaxSearchTolerance.Name = "lblMaxSearchTolerance";
            this.lblMaxSearchTolerance.Size = new System.Drawing.Size(100, 24);
            this.lblMaxSearchTolerance.TabIndex = 123;
            this.lblMaxSearchTolerance.Text = "Search Tolerance";
            // 
            // cboMaxSearchToleranceUnits
            // 
            this.cboMaxSearchToleranceUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboMaxSearchToleranceUnits.ItemHeight = 13;
            this.cboMaxSearchToleranceUnits.Items.AddRange(new object[] {
            "Unknown Units",
            "Inches",
            "Points",
            "Feet",
            "Yards",
            "Miles",
            "Nautical Miles",
            "Millimeters",
            "Centimeters",
            "Meters",
            "Kilometers",
            "DecimalDegrees",
            "Decimeters"});
            this.cboMaxSearchToleranceUnits.Location = new System.Drawing.Point(258, 61);
            this.cboMaxSearchToleranceUnits.Name = "cboMaxSearchToleranceUnits";
            this.cboMaxSearchToleranceUnits.Size = new System.Drawing.Size(130, 21);
            this.cboMaxSearchToleranceUnits.TabIndex = 122;
            // 
            // txtMaxSearchTolerance
            // 
            this.txtMaxSearchTolerance.Location = new System.Drawing.Point(130, 62);
            this.txtMaxSearchTolerance.Name = "txtMaxSearchTolerance";
            this.txtMaxSearchTolerance.Size = new System.Drawing.Size(122, 20);
            this.txtMaxSearchTolerance.TabIndex = 121;
            // 
            // txtLayerName
            // 
            this.txtLayerName.Location = new System.Drawing.Point(130, 32);
            this.txtLayerName.Name = "txtLayerName";
            this.txtLayerName.Size = new System.Drawing.Size(258, 20);
            this.txtLayerName.TabIndex = 1;
            // 
            // lblLayerName
            // 
            this.lblLayerName.Location = new System.Drawing.Point(24, 35);
            this.lblLayerName.Name = "lblLayerName";
            this.lblLayerName.Size = new System.Drawing.Size(88, 24);
            this.lblLayerName.TabIndex = 0;
            this.lblLayerName.Text = "Layer Name";
            // 
            // tabRoute
            // 
            this.tabRoute.Controls.Add(this.labelRouteOutputLines);
            this.tabRoute.Controls.Add(this.cboRouteOutputLines);
            this.tabRoute.Controls.Add(this.chkRouteUseTimeWindows);
            this.tabRoute.Controls.Add(this.chkRoutePreserveLastStop);
            this.tabRoute.Controls.Add(this.chkRoutePreserveFirstStop);
            this.tabRoute.Controls.Add(this.chkRouteFindBestSequence);
            this.tabRoute.Controls.Add(this.chkRouteUseStartTime);
            this.tabRoute.Controls.Add(this.txtRouteStartTime);
            this.tabRoute.Controls.Add(this.chkRouteIgnoreInvalidLocations);
            this.tabRoute.Controls.Add(this.cboRouteRestrictUTurns);
            this.tabRoute.Controls.Add(this.lblRouteRestrictUTurns);
            this.tabRoute.Controls.Add(this.lblRouteAccumulateAttributeNames);
            this.tabRoute.Controls.Add(this.chklstRouteAccumulateAttributeNames);
            this.tabRoute.Controls.Add(this.lblRouteRestrictionAttributeNames);
            this.tabRoute.Controls.Add(this.chklstRouteRestrictionAttributeNames);
            this.tabRoute.Controls.Add(this.cboRouteImpedance);
            this.tabRoute.Controls.Add(this.lblRouteImpedance);
            this.tabRoute.Controls.Add(this.chkRouteUseHierarchy);
            this.tabRoute.Location = new System.Drawing.Point(4, 22);
            this.tabRoute.Name = "tabRoute";
            this.tabRoute.Size = new System.Drawing.Size(711, 473);
            this.tabRoute.TabIndex = 1;
            this.tabRoute.Text = "Route";
            this.tabRoute.UseVisualStyleBackColor = true;
            // 
            // labelRouteOutputLines
            // 
            this.labelRouteOutputLines.Location = new System.Drawing.Point(20, 209);
            this.labelRouteOutputLines.Name = "labelRouteOutputLines";
            this.labelRouteOutputLines.Size = new System.Drawing.Size(40, 16);
            this.labelRouteOutputLines.TabIndex = 96;
            this.labelRouteOutputLines.Text = "Shape";
            // 
            // cboRouteOutputLines
            // 
            this.cboRouteOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboRouteOutputLines.ItemHeight = 13;
            this.cboRouteOutputLines.Items.AddRange(new object[] {
            "No Lines",
            "Straight Lines",
            "True Shape",
            "True Shape With Measures"});
            this.cboRouteOutputLines.Location = new System.Drawing.Point(148, 204);
            this.cboRouteOutputLines.Name = "cboRouteOutputLines";
            this.cboRouteOutputLines.Size = new System.Drawing.Size(200, 21);
            this.cboRouteOutputLines.TabIndex = 95;
            // 
            // chkRouteUseTimeWindows
            // 
            this.chkRouteUseTimeWindows.Location = new System.Drawing.Point(20, 76);
            this.chkRouteUseTimeWindows.Name = "chkRouteUseTimeWindows";
            this.chkRouteUseTimeWindows.Size = new System.Drawing.Size(128, 16);
            this.chkRouteUseTimeWindows.TabIndex = 92;
            this.chkRouteUseTimeWindows.Text = "Use Time Windows";
            // 
            // chkRoutePreserveLastStop
            // 
            this.chkRoutePreserveLastStop.Location = new System.Drawing.Point(39, 151);
            this.chkRoutePreserveLastStop.Name = "chkRoutePreserveLastStop";
            this.chkRoutePreserveLastStop.Size = new System.Drawing.Size(331, 23);
            this.chkRoutePreserveLastStop.TabIndex = 91;
            this.chkRoutePreserveLastStop.Text = "Preserve Last Stop";
            // 
            // chkRoutePreserveFirstStop
            // 
            this.chkRoutePreserveFirstStop.Location = new System.Drawing.Point(39, 123);
            this.chkRoutePreserveFirstStop.Name = "chkRoutePreserveFirstStop";
            this.chkRoutePreserveFirstStop.Size = new System.Drawing.Size(331, 28);
            this.chkRoutePreserveFirstStop.TabIndex = 90;
            this.chkRoutePreserveFirstStop.Text = "Preserve First Stop";
            // 
            // chkRouteFindBestSequence
            // 
            this.chkRouteFindBestSequence.Checked = true;
            this.chkRouteFindBestSequence.CheckState = System.Windows.Forms.CheckState.Checked;
            this.chkRouteFindBestSequence.Location = new System.Drawing.Point(20, 98);
            this.chkRouteFindBestSequence.Name = "chkRouteFindBestSequence";
            this.chkRouteFindBestSequence.Size = new System.Drawing.Size(336, 32);
            this.chkRouteFindBestSequence.TabIndex = 89;
            this.chkRouteFindBestSequence.Text = "Find Best Sequence";
            this.chkRouteFindBestSequence.CheckedChanged += new System.EventHandler(this.chkRouteFindBestSequence_CheckedChanged);
            // 
            // chkRouteUseStartTime
            // 
            this.chkRouteUseStartTime.Checked = true;
            this.chkRouteUseStartTime.CheckState = System.Windows.Forms.CheckState.Checked;
            this.chkRouteUseStartTime.Location = new System.Drawing.Point(20, 54);
            this.chkRouteUseStartTime.Name = "chkRouteUseStartTime";
            this.chkRouteUseStartTime.Size = new System.Drawing.Size(104, 16);
            this.chkRouteUseStartTime.TabIndex = 93;
            this.chkRouteUseStartTime.Text = "Use Start Time";
            this.chkRouteUseStartTime.CheckedChanged += new System.EventHandler(this.chkRouteUseStartTime_CheckedChanged);
            // 
            // txtRouteStartTime
            // 
            this.txtRouteStartTime.Location = new System.Drawing.Point(151, 50);
            this.txtRouteStartTime.Name = "txtRouteStartTime";
            this.txtRouteStartTime.Size = new System.Drawing.Size(200, 20);
            this.txtRouteStartTime.TabIndex = 94;
            // 
            // chkRouteIgnoreInvalidLocations
            // 
            this.chkRouteIgnoreInvalidLocations.Location = new System.Drawing.Point(20, 252);
            this.chkRouteIgnoreInvalidLocations.Name = "chkRouteIgnoreInvalidLocations";
            this.chkRouteIgnoreInvalidLocations.Size = new System.Drawing.Size(144, 29);
            this.chkRouteIgnoreInvalidLocations.TabIndex = 81;
            this.chkRouteIgnoreInvalidLocations.Text = "Ignore Invalid Locations";
            // 
            // cboRouteRestrictUTurns
            // 
            this.cboRouteRestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboRouteRestrictUTurns.ItemHeight = 13;
            this.cboRouteRestrictUTurns.Items.AddRange(new object[] {
            "No U-Turns",
            "Allow U-Turns",
            "Only At Dead Ends"});
            this.cboRouteRestrictUTurns.Location = new System.Drawing.Point(148, 177);
            this.cboRouteRestrictUTurns.Name = "cboRouteRestrictUTurns";
            this.cboRouteRestrictUTurns.Size = new System.Drawing.Size(200, 21);
            this.cboRouteRestrictUTurns.TabIndex = 80;
            // 
            // lblRouteRestrictUTurns
            // 
            this.lblRouteRestrictUTurns.Location = new System.Drawing.Point(20, 182);
            this.lblRouteRestrictUTurns.Name = "lblRouteRestrictUTurns";
            this.lblRouteRestrictUTurns.Size = new System.Drawing.Size(88, 16);
            this.lblRouteRestrictUTurns.TabIndex = 88;
            this.lblRouteRestrictUTurns.Text = "UTurn Policy";
            // 
            // lblRouteAccumulateAttributeNames
            // 
            this.lblRouteAccumulateAttributeNames.Location = new System.Drawing.Point(236, 284);
            this.lblRouteAccumulateAttributeNames.Name = "lblRouteAccumulateAttributeNames";
            this.lblRouteAccumulateAttributeNames.Size = new System.Drawing.Size(120, 16);
            this.lblRouteAccumulateAttributeNames.TabIndex = 87;
            this.lblRouteAccumulateAttributeNames.Text = "Accumulate Attributes";
            // 
            // chklstRouteAccumulateAttributeNames
            // 
            this.chklstRouteAccumulateAttributeNames.CheckOnClick = true;
            this.chklstRouteAccumulateAttributeNames.Location = new System.Drawing.Point(236, 300);
            this.chklstRouteAccumulateAttributeNames.Name = "chklstRouteAccumulateAttributeNames";
            this.chklstRouteAccumulateAttributeNames.ScrollAlwaysVisible = true;
            this.chklstRouteAccumulateAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstRouteAccumulateAttributeNames.TabIndex = 84;
            // 
            // lblRouteRestrictionAttributeNames
            // 
            this.lblRouteRestrictionAttributeNames.Location = new System.Drawing.Point(20, 284);
            this.lblRouteRestrictionAttributeNames.Name = "lblRouteRestrictionAttributeNames";
            this.lblRouteRestrictionAttributeNames.Size = new System.Drawing.Size(72, 16);
            this.lblRouteRestrictionAttributeNames.TabIndex = 86;
            this.lblRouteRestrictionAttributeNames.Text = "Restrictions";
            // 
            // chklstRouteRestrictionAttributeNames
            // 
            this.chklstRouteRestrictionAttributeNames.CheckOnClick = true;
            this.chklstRouteRestrictionAttributeNames.Location = new System.Drawing.Point(20, 300);
            this.chklstRouteRestrictionAttributeNames.Name = "chklstRouteRestrictionAttributeNames";
            this.chklstRouteRestrictionAttributeNames.ScrollAlwaysVisible = true;
            this.chklstRouteRestrictionAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstRouteRestrictionAttributeNames.TabIndex = 83;
            // 
            // cboRouteImpedance
            // 
            this.cboRouteImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboRouteImpedance.ItemHeight = 13;
            this.cboRouteImpedance.Location = new System.Drawing.Point(151, 23);
            this.cboRouteImpedance.Name = "cboRouteImpedance";
            this.cboRouteImpedance.Size = new System.Drawing.Size(200, 21);
            this.cboRouteImpedance.TabIndex = 79;
            // 
            // lblRouteImpedance
            // 
            this.lblRouteImpedance.Location = new System.Drawing.Point(20, 28);
            this.lblRouteImpedance.Name = "lblRouteImpedance";
            this.lblRouteImpedance.Size = new System.Drawing.Size(64, 16);
            this.lblRouteImpedance.TabIndex = 85;
            this.lblRouteImpedance.Text = "Impedance";
            // 
            // chkRouteUseHierarchy
            // 
            this.chkRouteUseHierarchy.Location = new System.Drawing.Point(20, 228);
            this.chkRouteUseHierarchy.Name = "chkRouteUseHierarchy";
            this.chkRouteUseHierarchy.Size = new System.Drawing.Size(96, 26);
            this.chkRouteUseHierarchy.TabIndex = 82;
            this.chkRouteUseHierarchy.Text = "Use Hierarchy";
            // 
            // tabClosestFacility
            // 
            this.tabClosestFacility.Controls.Add(this.label13);
            this.tabClosestFacility.Controls.Add(this.label8);
            this.tabClosestFacility.Controls.Add(this.cboCFTimeUsage);
            this.tabClosestFacility.Controls.Add(this.txtCFUseTime);
            this.tabClosestFacility.Controls.Add(this.chkCFIgnoreInvalidLocations);
            this.tabClosestFacility.Controls.Add(this.cboCFRestrictUTurns);
            this.tabClosestFacility.Controls.Add(this.lblCFRestrictUTurns);
            this.tabClosestFacility.Controls.Add(this.lblCFAccumulateAttributeNames);
            this.tabClosestFacility.Controls.Add(this.chklstCFAccumulateAttributeNames);
            this.tabClosestFacility.Controls.Add(this.lblCFRestrictionAttributeNames);
            this.tabClosestFacility.Controls.Add(this.chklstCFRestrictionAttributeNames);
            this.tabClosestFacility.Controls.Add(this.cboCFImpedance);
            this.tabClosestFacility.Controls.Add(this.lblCFImpedance);
            this.tabClosestFacility.Controls.Add(this.chkCFUseHierarchy);
            this.tabClosestFacility.Controls.Add(this.cboCFOutputLines);
            this.tabClosestFacility.Controls.Add(this.lblCFOutputLines);
            this.tabClosestFacility.Controls.Add(this.cboCFTravelDirection);
            this.tabClosestFacility.Controls.Add(this.lblCFTravelDirection);
            this.tabClosestFacility.Controls.Add(this.txtCFDefaultTargetFacilityCount);
            this.tabClosestFacility.Controls.Add(this.lblCFDefaultTargetFacilityCount);
            this.tabClosestFacility.Controls.Add(this.txtCFDefaultCutoff);
            this.tabClosestFacility.Controls.Add(this.lblCFDefaultCutoff);
            this.tabClosestFacility.Location = new System.Drawing.Point(4, 22);
            this.tabClosestFacility.Name = "tabClosestFacility";
            this.tabClosestFacility.Size = new System.Drawing.Size(711, 473);
            this.tabClosestFacility.TabIndex = 3;
            this.tabClosestFacility.Text = "Closest Facility";
            this.tabClosestFacility.UseVisualStyleBackColor = true;
            // 
            // label13
            // 
            this.label13.Location = new System.Drawing.Point(20, 78);
            this.label13.Name = "label13";
            this.label13.Size = new System.Drawing.Size(114, 16);
            this.label13.TabIndex = 117;
            this.label13.Text = "Time";
            // 
            // label8
            // 
            this.label8.Location = new System.Drawing.Point(20, 52);
            this.label8.Name = "label8";
            this.label8.Size = new System.Drawing.Size(114, 16);
            this.label8.TabIndex = 116;
            this.label8.Text = "Time Usage";
            // 
            // cboCFTimeUsage
            // 
            this.cboCFTimeUsage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboCFTimeUsage.ItemHeight = 13;
            this.cboCFTimeUsage.Items.AddRange(new object[] {
            "Not used",
            "End time",
            "Start time"});
            this.cboCFTimeUsage.Location = new System.Drawing.Point(151, 49);
            this.cboCFTimeUsage.Name = "cboCFTimeUsage";
            this.cboCFTimeUsage.Size = new System.Drawing.Size(200, 21);
            this.cboCFTimeUsage.TabIndex = 115;
            // 
            // txtCFUseTime
            // 
            this.txtCFUseTime.Location = new System.Drawing.Point(151, 75);
            this.txtCFUseTime.Name = "txtCFUseTime";
            this.txtCFUseTime.Size = new System.Drawing.Size(200, 20);
            this.txtCFUseTime.TabIndex = 114;
            // 
            // chkCFIgnoreInvalidLocations
            // 
            this.chkCFIgnoreInvalidLocations.Location = new System.Drawing.Point(20, 270);
            this.chkCFIgnoreInvalidLocations.Name = "chkCFIgnoreInvalidLocations";
            this.chkCFIgnoreInvalidLocations.Size = new System.Drawing.Size(144, 29);
            this.chkCFIgnoreInvalidLocations.TabIndex = 105;
            this.chkCFIgnoreInvalidLocations.Text = "Ignore Invalid Locations";
            // 
            // cboCFRestrictUTurns
            // 
            this.cboCFRestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboCFRestrictUTurns.ItemHeight = 13;
            this.cboCFRestrictUTurns.Items.AddRange(new object[] {
            "No U-Turns",
            "Allow U-Turns",
            "Only At Dead Ends"});
            this.cboCFRestrictUTurns.Location = new System.Drawing.Point(151, 179);
            this.cboCFRestrictUTurns.Name = "cboCFRestrictUTurns";
            this.cboCFRestrictUTurns.Size = new System.Drawing.Size(200, 21);
            this.cboCFRestrictUTurns.TabIndex = 104;
            // 
            // lblCFRestrictUTurns
            // 
            this.lblCFRestrictUTurns.Location = new System.Drawing.Point(20, 184);
            this.lblCFRestrictUTurns.Name = "lblCFRestrictUTurns";
            this.lblCFRestrictUTurns.Size = new System.Drawing.Size(88, 16);
            this.lblCFRestrictUTurns.TabIndex = 112;
            this.lblCFRestrictUTurns.Text = "UTurn Policy";
            // 
            // lblCFAccumulateAttributeNames
            // 
            this.lblCFAccumulateAttributeNames.Location = new System.Drawing.Point(236, 302);
            this.lblCFAccumulateAttributeNames.Name = "lblCFAccumulateAttributeNames";
            this.lblCFAccumulateAttributeNames.Size = new System.Drawing.Size(120, 16);
            this.lblCFAccumulateAttributeNames.TabIndex = 111;
            this.lblCFAccumulateAttributeNames.Text = "Accumulate Attributes";
            // 
            // chklstCFAccumulateAttributeNames
            // 
            this.chklstCFAccumulateAttributeNames.CheckOnClick = true;
            this.chklstCFAccumulateAttributeNames.Location = new System.Drawing.Point(236, 318);
            this.chklstCFAccumulateAttributeNames.Name = "chklstCFAccumulateAttributeNames";
            this.chklstCFAccumulateAttributeNames.ScrollAlwaysVisible = true;
            this.chklstCFAccumulateAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstCFAccumulateAttributeNames.TabIndex = 108;
            // 
            // lblCFRestrictionAttributeNames
            // 
            this.lblCFRestrictionAttributeNames.Location = new System.Drawing.Point(20, 302);
            this.lblCFRestrictionAttributeNames.Name = "lblCFRestrictionAttributeNames";
            this.lblCFRestrictionAttributeNames.Size = new System.Drawing.Size(72, 16);
            this.lblCFRestrictionAttributeNames.TabIndex = 110;
            this.lblCFRestrictionAttributeNames.Text = "Restrictions";
            // 
            // chklstCFRestrictionAttributeNames
            // 
            this.chklstCFRestrictionAttributeNames.CheckOnClick = true;
            this.chklstCFRestrictionAttributeNames.Location = new System.Drawing.Point(20, 318);
            this.chklstCFRestrictionAttributeNames.Name = "chklstCFRestrictionAttributeNames";
            this.chklstCFRestrictionAttributeNames.ScrollAlwaysVisible = true;
            this.chklstCFRestrictionAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstCFRestrictionAttributeNames.TabIndex = 107;
            // 
            // cboCFImpedance
            // 
            this.cboCFImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboCFImpedance.ItemHeight = 13;
            this.cboCFImpedance.Location = new System.Drawing.Point(151, 23);
            this.cboCFImpedance.Name = "cboCFImpedance";
            this.cboCFImpedance.Size = new System.Drawing.Size(200, 21);
            this.cboCFImpedance.TabIndex = 103;
            // 
            // lblCFImpedance
            // 
            this.lblCFImpedance.Location = new System.Drawing.Point(20, 28);
            this.lblCFImpedance.Name = "lblCFImpedance";
            this.lblCFImpedance.Size = new System.Drawing.Size(64, 16);
            this.lblCFImpedance.TabIndex = 109;
            this.lblCFImpedance.Text = "Impedance";
            // 
            // chkCFUseHierarchy
            // 
            this.chkCFUseHierarchy.Location = new System.Drawing.Point(20, 238);
            this.chkCFUseHierarchy.Name = "chkCFUseHierarchy";
            this.chkCFUseHierarchy.Size = new System.Drawing.Size(96, 26);
            this.chkCFUseHierarchy.TabIndex = 106;
            this.chkCFUseHierarchy.Text = "Use Hierarchy";
            // 
            // cboCFOutputLines
            // 
            this.cboCFOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboCFOutputLines.ItemHeight = 13;
            this.cboCFOutputLines.Items.AddRange(new object[] {
            "No Lines",
            "Straight Lines",
            "True Shape",
            "True Shape With Measures"});
            this.cboCFOutputLines.Location = new System.Drawing.Point(151, 206);
            this.cboCFOutputLines.Name = "cboCFOutputLines";
            this.cboCFOutputLines.Size = new System.Drawing.Size(200, 21);
            this.cboCFOutputLines.TabIndex = 101;
            // 
            // lblCFOutputLines
            // 
            this.lblCFOutputLines.Location = new System.Drawing.Point(20, 211);
            this.lblCFOutputLines.Name = "lblCFOutputLines";
            this.lblCFOutputLines.Size = new System.Drawing.Size(114, 16);
            this.lblCFOutputLines.TabIndex = 102;
            this.lblCFOutputLines.Text = "Shape";
            // 
            // cboCFTravelDirection
            // 
            this.cboCFTravelDirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboCFTravelDirection.ItemHeight = 13;
            this.cboCFTravelDirection.Items.AddRange(new object[] {
            "From Facility",
            "To Facility"});
            this.cboCFTravelDirection.Location = new System.Drawing.Point(151, 152);
            this.cboCFTravelDirection.Name = "cboCFTravelDirection";
            this.cboCFTravelDirection.Size = new System.Drawing.Size(200, 21);
            this.cboCFTravelDirection.TabIndex = 99;
            // 
            // lblCFTravelDirection
            // 
            this.lblCFTravelDirection.Location = new System.Drawing.Point(20, 157);
            this.lblCFTravelDirection.Name = "lblCFTravelDirection";
            this.lblCFTravelDirection.Size = new System.Drawing.Size(114, 16);
            this.lblCFTravelDirection.TabIndex = 100;
            this.lblCFTravelDirection.Text = "Travel Direction";
            // 
            // txtCFDefaultTargetFacilityCount
            // 
            this.txtCFDefaultTargetFacilityCount.Location = new System.Drawing.Point(151, 126);
            this.txtCFDefaultTargetFacilityCount.Name = "txtCFDefaultTargetFacilityCount";
            this.txtCFDefaultTargetFacilityCount.Size = new System.Drawing.Size(200, 20);
            this.txtCFDefaultTargetFacilityCount.TabIndex = 98;
            // 
            // lblCFDefaultTargetFacilityCount
            // 
            this.lblCFDefaultTargetFacilityCount.Location = new System.Drawing.Point(20, 130);
            this.lblCFDefaultTargetFacilityCount.Name = "lblCFDefaultTargetFacilityCount";
            this.lblCFDefaultTargetFacilityCount.Size = new System.Drawing.Size(114, 16);
            this.lblCFDefaultTargetFacilityCount.TabIndex = 97;
            this.lblCFDefaultTargetFacilityCount.Text = "Number of Facilities";
            // 
            // txtCFDefaultCutoff
            // 
            this.txtCFDefaultCutoff.Location = new System.Drawing.Point(151, 100);
            this.txtCFDefaultCutoff.Name = "txtCFDefaultCutoff";
            this.txtCFDefaultCutoff.Size = new System.Drawing.Size(200, 20);
            this.txtCFDefaultCutoff.TabIndex = 96;
            // 
            // lblCFDefaultCutoff
            // 
            this.lblCFDefaultCutoff.Location = new System.Drawing.Point(20, 104);
            this.lblCFDefaultCutoff.Name = "lblCFDefaultCutoff";
            this.lblCFDefaultCutoff.Size = new System.Drawing.Size(114, 16);
            this.lblCFDefaultCutoff.TabIndex = 95;
            this.lblCFDefaultCutoff.Text = "Default Cutoff";
            // 
            // tabODCostMatrix
            // 
            this.tabODCostMatrix.Controls.Add(this.chkODUseTime);
            this.tabODCostMatrix.Controls.Add(this.txtODUseTime);
            this.tabODCostMatrix.Controls.Add(this.chkODIgnoreInvalidLocations);
            this.tabODCostMatrix.Controls.Add(this.cboODRestrictUTurns);
            this.tabODCostMatrix.Controls.Add(this.lblODRestrictUTurns);
            this.tabODCostMatrix.Controls.Add(this.lblODAccumulateAttributeNames);
            this.tabODCostMatrix.Controls.Add(this.chklstODAccumulateAttributeNames);
            this.tabODCostMatrix.Controls.Add(this.lblODRestrictionAttributeNames);
            this.tabODCostMatrix.Controls.Add(this.chklstODRestrictionAttributeNames);
            this.tabODCostMatrix.Controls.Add(this.cboODImpedance);
            this.tabODCostMatrix.Controls.Add(this.lblODImpedance);
            this.tabODCostMatrix.Controls.Add(this.chkODUseHierarchy);
            this.tabODCostMatrix.Controls.Add(this.cboODOutputLines);
            this.tabODCostMatrix.Controls.Add(this.lblODOutputLines);
            this.tabODCostMatrix.Controls.Add(this.txtODDefaultTargetDestinationCount);
            this.tabODCostMatrix.Controls.Add(this.lblODDefaultTargetDestinationCount);
            this.tabODCostMatrix.Controls.Add(this.txtODDefaultCutoff);
            this.tabODCostMatrix.Controls.Add(this.lblODDefaultCutoff);
            this.tabODCostMatrix.Location = new System.Drawing.Point(4, 22);
            this.tabODCostMatrix.Name = "tabODCostMatrix";
            this.tabODCostMatrix.Size = new System.Drawing.Size(711, 473);
            this.tabODCostMatrix.TabIndex = 4;
            this.tabODCostMatrix.Text = "Origin-Destination Cost Matrix";
            this.tabODCostMatrix.UseVisualStyleBackColor = true;
            // 
            // chkODUseTime
            // 
            this.chkODUseTime.Location = new System.Drawing.Point(20, 54);
            this.chkODUseTime.Name = "chkODUseTime";
            this.chkODUseTime.Size = new System.Drawing.Size(104, 16);
            this.chkODUseTime.TabIndex = 131;
            this.chkODUseTime.Text = "Use Time";
            // 
            // txtODUseTime
            // 
            this.txtODUseTime.Location = new System.Drawing.Point(151, 50);
            this.txtODUseTime.Name = "txtODUseTime";
            this.txtODUseTime.Size = new System.Drawing.Size(200, 20);
            this.txtODUseTime.TabIndex = 132;
            // 
            // chkODIgnoreInvalidLocations
            // 
            this.chkODIgnoreInvalidLocations.Location = new System.Drawing.Point(20, 223);
            this.chkODIgnoreInvalidLocations.Name = "chkODIgnoreInvalidLocations";
            this.chkODIgnoreInvalidLocations.Size = new System.Drawing.Size(144, 29);
            this.chkODIgnoreInvalidLocations.TabIndex = 123;
            this.chkODIgnoreInvalidLocations.Text = "Ignore Invalid Locations";
            // 
            // cboODRestrictUTurns
            // 
            this.cboODRestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboODRestrictUTurns.ItemHeight = 13;
            this.cboODRestrictUTurns.Items.AddRange(new object[] {
            "No U-Turns",
            "Allow U-Turns",
            "Only At Dead Ends"});
            this.cboODRestrictUTurns.Location = new System.Drawing.Point(151, 132);
            this.cboODRestrictUTurns.Name = "cboODRestrictUTurns";
            this.cboODRestrictUTurns.Size = new System.Drawing.Size(200, 21);
            this.cboODRestrictUTurns.TabIndex = 122;
            // 
            // lblODRestrictUTurns
            // 
            this.lblODRestrictUTurns.Location = new System.Drawing.Point(20, 137);
            this.lblODRestrictUTurns.Name = "lblODRestrictUTurns";
            this.lblODRestrictUTurns.Size = new System.Drawing.Size(88, 16);
            this.lblODRestrictUTurns.TabIndex = 130;
            this.lblODRestrictUTurns.Text = "UTurn Policy";
            // 
            // lblODAccumulateAttributeNames
            // 
            this.lblODAccumulateAttributeNames.Location = new System.Drawing.Point(236, 255);
            this.lblODAccumulateAttributeNames.Name = "lblODAccumulateAttributeNames";
            this.lblODAccumulateAttributeNames.Size = new System.Drawing.Size(120, 16);
            this.lblODAccumulateAttributeNames.TabIndex = 129;
            this.lblODAccumulateAttributeNames.Text = "Accumulate Attributes";
            // 
            // chklstODAccumulateAttributeNames
            // 
            this.chklstODAccumulateAttributeNames.CheckOnClick = true;
            this.chklstODAccumulateAttributeNames.Location = new System.Drawing.Point(236, 271);
            this.chklstODAccumulateAttributeNames.Name = "chklstODAccumulateAttributeNames";
            this.chklstODAccumulateAttributeNames.ScrollAlwaysVisible = true;
            this.chklstODAccumulateAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstODAccumulateAttributeNames.TabIndex = 126;
            // 
            // lblODRestrictionAttributeNames
            // 
            this.lblODRestrictionAttributeNames.Location = new System.Drawing.Point(20, 255);
            this.lblODRestrictionAttributeNames.Name = "lblODRestrictionAttributeNames";
            this.lblODRestrictionAttributeNames.Size = new System.Drawing.Size(72, 16);
            this.lblODRestrictionAttributeNames.TabIndex = 128;
            this.lblODRestrictionAttributeNames.Text = "Restrictions";
            // 
            // chklstODRestrictionAttributeNames
            // 
            this.chklstODRestrictionAttributeNames.CheckOnClick = true;
            this.chklstODRestrictionAttributeNames.Location = new System.Drawing.Point(20, 271);
            this.chklstODRestrictionAttributeNames.Name = "chklstODRestrictionAttributeNames";
            this.chklstODRestrictionAttributeNames.ScrollAlwaysVisible = true;
            this.chklstODRestrictionAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstODRestrictionAttributeNames.TabIndex = 125;
            // 
            // cboODImpedance
            // 
            this.cboODImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboODImpedance.ItemHeight = 13;
            this.cboODImpedance.Location = new System.Drawing.Point(151, 23);
            this.cboODImpedance.Name = "cboODImpedance";
            this.cboODImpedance.Size = new System.Drawing.Size(200, 21);
            this.cboODImpedance.TabIndex = 121;
            // 
            // lblODImpedance
            // 
            this.lblODImpedance.Location = new System.Drawing.Point(20, 28);
            this.lblODImpedance.Name = "lblODImpedance";
            this.lblODImpedance.Size = new System.Drawing.Size(64, 16);
            this.lblODImpedance.TabIndex = 127;
            this.lblODImpedance.Text = "Impedance";
            // 
            // chkODUseHierarchy
            // 
            this.chkODUseHierarchy.Location = new System.Drawing.Point(20, 191);
            this.chkODUseHierarchy.Name = "chkODUseHierarchy";
            this.chkODUseHierarchy.Size = new System.Drawing.Size(96, 26);
            this.chkODUseHierarchy.TabIndex = 124;
            this.chkODUseHierarchy.Text = "Use Hierarchy";
            // 
            // cboODOutputLines
            // 
            this.cboODOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboODOutputLines.ItemHeight = 13;
            this.cboODOutputLines.Items.AddRange(new object[] {
            "No Lines",
            "Straight Lines"});
            this.cboODOutputLines.Location = new System.Drawing.Point(151, 159);
            this.cboODOutputLines.Name = "cboODOutputLines";
            this.cboODOutputLines.Size = new System.Drawing.Size(200, 21);
            this.cboODOutputLines.TabIndex = 119;
            // 
            // lblODOutputLines
            // 
            this.lblODOutputLines.Location = new System.Drawing.Point(20, 164);
            this.lblODOutputLines.Name = "lblODOutputLines";
            this.lblODOutputLines.Size = new System.Drawing.Size(114, 16);
            this.lblODOutputLines.TabIndex = 120;
            this.lblODOutputLines.Text = "Shape";
            // 
            // txtODDefaultTargetDestinationCount
            // 
            this.txtODDefaultTargetDestinationCount.Location = new System.Drawing.Point(151, 103);
            this.txtODDefaultTargetDestinationCount.Name = "txtODDefaultTargetDestinationCount";
            this.txtODDefaultTargetDestinationCount.Size = new System.Drawing.Size(200, 20);
            this.txtODDefaultTargetDestinationCount.TabIndex = 116;
            // 
            // lblODDefaultTargetDestinationCount
            // 
            this.lblODDefaultTargetDestinationCount.Location = new System.Drawing.Point(20, 107);
            this.lblODDefaultTargetDestinationCount.Name = "lblODDefaultTargetDestinationCount";
            this.lblODDefaultTargetDestinationCount.Size = new System.Drawing.Size(125, 16);
            this.lblODDefaultTargetDestinationCount.TabIndex = 115;
            this.lblODDefaultTargetDestinationCount.Text = "Number of Destinations";
            // 
            // txtODDefaultCutoff
            // 
            this.txtODDefaultCutoff.Location = new System.Drawing.Point(151, 77);
            this.txtODDefaultCutoff.Name = "txtODDefaultCutoff";
            this.txtODDefaultCutoff.Size = new System.Drawing.Size(200, 20);
            this.txtODDefaultCutoff.TabIndex = 114;
            // 
            // lblODDefaultCutoff
            // 
            this.lblODDefaultCutoff.Location = new System.Drawing.Point(20, 81);
            this.lblODDefaultCutoff.Name = "lblODDefaultCutoff";
            this.lblODDefaultCutoff.Size = new System.Drawing.Size(114, 16);
            this.lblODDefaultCutoff.TabIndex = 113;
            this.lblODDefaultCutoff.Text = "Default Cutoff";
            // 
            // tabServiceArea
            // 
            this.tabServiceArea.Controls.Add(this.chkSAUseTime);
            this.tabServiceArea.Controls.Add(this.txtSAUseTime);
            this.tabServiceArea.Controls.Add(this.cboSATrimPolygonDistanceUnits);
            this.tabServiceArea.Controls.Add(this.txtSATrimPolygonDistance);
            this.tabServiceArea.Controls.Add(this.chkSATrimOuterPolygon);
            this.tabServiceArea.Controls.Add(this.chkSAIncludeSourceInformationOnLines);
            this.tabServiceArea.Controls.Add(this.cboSATravelDirection);
            this.tabServiceArea.Controls.Add(this.lblSATravelDirection);
            this.tabServiceArea.Controls.Add(this.chkSASplitPolygonsAtBreaks);
            this.tabServiceArea.Controls.Add(this.chkSAOverlapPolygons);
            this.tabServiceArea.Controls.Add(this.chkSASplitLinesAtBreaks);
            this.tabServiceArea.Controls.Add(this.chkSAOverlapLines);
            this.tabServiceArea.Controls.Add(this.chkSAIgnoreInvalidLocations);
            this.tabServiceArea.Controls.Add(this.cboSARestrictUTurns);
            this.tabServiceArea.Controls.Add(this.lblSARestrictUTurns);
            this.tabServiceArea.Controls.Add(this.lblSAAccumulateAttributeNames);
            this.tabServiceArea.Controls.Add(this.chklstSAAccumulateAttributeNames);
            this.tabServiceArea.Controls.Add(this.lblSARestrictionAttributeNames);
            this.tabServiceArea.Controls.Add(this.chklstSARestrictionAttributeNames);
            this.tabServiceArea.Controls.Add(this.lblSAOutputPolygons);
            this.tabServiceArea.Controls.Add(this.cboSAOutputPolygons);
            this.tabServiceArea.Controls.Add(this.lblSAOutputLines);
            this.tabServiceArea.Controls.Add(this.cboSAOutputLines);
            this.tabServiceArea.Controls.Add(this.chkSAMergeSimilarPolygonRanges);
            this.tabServiceArea.Controls.Add(this.txtSADefaultBreaks);
            this.tabServiceArea.Controls.Add(this.lblSADefaultBreaks);
            this.tabServiceArea.Controls.Add(this.cboSAImpedance);
            this.tabServiceArea.Controls.Add(this.lblSAImpedance);
            this.tabServiceArea.Location = new System.Drawing.Point(4, 22);
            this.tabServiceArea.Name = "tabServiceArea";
            this.tabServiceArea.Size = new System.Drawing.Size(711, 473);
            this.tabServiceArea.TabIndex = 2;
            this.tabServiceArea.Text = "Service Area";
            this.tabServiceArea.UseVisualStyleBackColor = true;
            // 
            // chkSAUseTime
            // 
            this.chkSAUseTime.Location = new System.Drawing.Point(20, 52);
            this.chkSAUseTime.Name = "chkSAUseTime";
            this.chkSAUseTime.Size = new System.Drawing.Size(104, 16);
            this.chkSAUseTime.TabIndex = 133;
            this.chkSAUseTime.Text = "Use Time";
            // 
            // txtSAUseTime
            // 
            this.txtSAUseTime.Location = new System.Drawing.Point(151, 48);
            this.txtSAUseTime.Name = "txtSAUseTime";
            this.txtSAUseTime.Size = new System.Drawing.Size(200, 20);
            this.txtSAUseTime.TabIndex = 134;
            // 
            // cboSATrimPolygonDistanceUnits
            // 
            this.cboSATrimPolygonDistanceUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboSATrimPolygonDistanceUnits.ItemHeight = 13;
            this.cboSATrimPolygonDistanceUnits.Items.AddRange(new object[] {
            "Unknown Units",
            "Inches",
            "Points",
            "Feet",
            "Yards",
            "Miles",
            "Nautical Miles",
            "Millimeters",
            "Centimeters",
            "Meters",
            "Kilometers",
            "DecimalDegrees",
            "Decimeters"});
            this.cboSATrimPolygonDistanceUnits.Location = new System.Drawing.Point(241, 176);
            this.cboSATrimPolygonDistanceUnits.Name = "cboSATrimPolygonDistanceUnits";
            this.cboSATrimPolygonDistanceUnits.Size = new System.Drawing.Size(110, 21);
            this.cboSATrimPolygonDistanceUnits.TabIndex = 120;
            // 
            // txtSATrimPolygonDistance
            // 
            this.txtSATrimPolygonDistance.Location = new System.Drawing.Point(169, 177);
            this.txtSATrimPolygonDistance.Name = "txtSATrimPolygonDistance";
            this.txtSATrimPolygonDistance.Size = new System.Drawing.Size(66, 20);
            this.txtSATrimPolygonDistance.TabIndex = 119;
            // 
            // chkSATrimOuterPolygon
            // 
            this.chkSATrimOuterPolygon.Location = new System.Drawing.Point(41, 177);
            this.chkSATrimOuterPolygon.Name = "chkSATrimOuterPolygon";
            this.chkSATrimOuterPolygon.Size = new System.Drawing.Size(122, 22);
            this.chkSATrimOuterPolygon.TabIndex = 118;
            this.chkSATrimOuterPolygon.Text = "Trim Outer Polygon";
            // 
            // chkSAIncludeSourceInformationOnLines
            // 
            this.chkSAIncludeSourceInformationOnLines.Location = new System.Drawing.Point(329, 232);
            this.chkSAIncludeSourceInformationOnLines.Name = "chkSAIncludeSourceInformationOnLines";
            this.chkSAIncludeSourceInformationOnLines.Size = new System.Drawing.Size(215, 22);
            this.chkSAIncludeSourceInformationOnLines.TabIndex = 117;
            this.chkSAIncludeSourceInformationOnLines.Text = "Include Source Information On Lines";
            // 
            // cboSATravelDirection
            // 
            this.cboSATravelDirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboSATravelDirection.ItemHeight = 13;
            this.cboSATravelDirection.Items.AddRange(new object[] {
            "From Facility",
            "To Facility"});
            this.cboSATravelDirection.Location = new System.Drawing.Point(151, 98);
            this.cboSATravelDirection.Name = "cboSATravelDirection";
            this.cboSATravelDirection.Size = new System.Drawing.Size(200, 21);
            this.cboSATravelDirection.TabIndex = 115;
            // 
            // lblSATravelDirection
            // 
            this.lblSATravelDirection.Location = new System.Drawing.Point(20, 103);
            this.lblSATravelDirection.Name = "lblSATravelDirection";
            this.lblSATravelDirection.Size = new System.Drawing.Size(114, 16);
            this.lblSATravelDirection.TabIndex = 116;
            this.lblSATravelDirection.Text = "Travel Direction";
            // 
            // chkSASplitPolygonsAtBreaks
            // 
            this.chkSASplitPolygonsAtBreaks.Location = new System.Drawing.Point(169, 153);
            this.chkSASplitPolygonsAtBreaks.Name = "chkSASplitPolygonsAtBreaks";
            this.chkSASplitPolygonsAtBreaks.Size = new System.Drawing.Size(154, 22);
            this.chkSASplitPolygonsAtBreaks.TabIndex = 114;
            this.chkSASplitPolygonsAtBreaks.Text = "Split Polygons At Breaks";
            // 
            // chkSAOverlapPolygons
            // 
            this.chkSAOverlapPolygons.Location = new System.Drawing.Point(41, 152);
            this.chkSAOverlapPolygons.Name = "chkSAOverlapPolygons";
            this.chkSAOverlapPolygons.Size = new System.Drawing.Size(122, 22);
            this.chkSAOverlapPolygons.TabIndex = 113;
            this.chkSAOverlapPolygons.Text = "Overlap Polygons";
            // 
            // chkSASplitLinesAtBreaks
            // 
            this.chkSASplitLinesAtBreaks.Location = new System.Drawing.Point(169, 232);
            this.chkSASplitLinesAtBreaks.Name = "chkSASplitLinesAtBreaks";
            this.chkSASplitLinesAtBreaks.Size = new System.Drawing.Size(154, 22);
            this.chkSASplitLinesAtBreaks.TabIndex = 112;
            this.chkSASplitLinesAtBreaks.Text = "Split Lines At Breaks";
            // 
            // chkSAOverlapLines
            // 
            this.chkSAOverlapLines.Location = new System.Drawing.Point(41, 232);
            this.chkSAOverlapLines.Name = "chkSAOverlapLines";
            this.chkSAOverlapLines.Size = new System.Drawing.Size(122, 22);
            this.chkSAOverlapLines.TabIndex = 111;
            this.chkSAOverlapLines.Text = "Overlap Lines";
            // 
            // chkSAIgnoreInvalidLocations
            // 
            this.chkSAIgnoreInvalidLocations.Location = new System.Drawing.Point(23, 286);
            this.chkSAIgnoreInvalidLocations.Name = "chkSAIgnoreInvalidLocations";
            this.chkSAIgnoreInvalidLocations.Size = new System.Drawing.Size(144, 29);
            this.chkSAIgnoreInvalidLocations.TabIndex = 105;
            this.chkSAIgnoreInvalidLocations.Text = "Ignore Invalid Locations";
            // 
            // cboSARestrictUTurns
            // 
            this.cboSARestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboSARestrictUTurns.ItemHeight = 13;
            this.cboSARestrictUTurns.Items.AddRange(new object[] {
            "No U-Turns",
            "Allow U-Turns",
            "Only At Dead Ends"});
            this.cboSARestrictUTurns.Location = new System.Drawing.Point(151, 262);
            this.cboSARestrictUTurns.Name = "cboSARestrictUTurns";
            this.cboSARestrictUTurns.Size = new System.Drawing.Size(200, 21);
            this.cboSARestrictUTurns.TabIndex = 104;
            // 
            // lblSARestrictUTurns
            // 
            this.lblSARestrictUTurns.Location = new System.Drawing.Point(20, 267);
            this.lblSARestrictUTurns.Name = "lblSARestrictUTurns";
            this.lblSARestrictUTurns.Size = new System.Drawing.Size(88, 16);
            this.lblSARestrictUTurns.TabIndex = 110;
            this.lblSARestrictUTurns.Text = "UTurn Policy";
            // 
            // lblSAAccumulateAttributeNames
            // 
            this.lblSAAccumulateAttributeNames.Location = new System.Drawing.Point(238, 317);
            this.lblSAAccumulateAttributeNames.Name = "lblSAAccumulateAttributeNames";
            this.lblSAAccumulateAttributeNames.Size = new System.Drawing.Size(120, 16);
            this.lblSAAccumulateAttributeNames.TabIndex = 109;
            this.lblSAAccumulateAttributeNames.Text = "Accumulate Attributes";
            // 
            // chklstSAAccumulateAttributeNames
            // 
            this.chklstSAAccumulateAttributeNames.CheckOnClick = true;
            this.chklstSAAccumulateAttributeNames.Location = new System.Drawing.Point(238, 333);
            this.chklstSAAccumulateAttributeNames.Name = "chklstSAAccumulateAttributeNames";
            this.chklstSAAccumulateAttributeNames.ScrollAlwaysVisible = true;
            this.chklstSAAccumulateAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstSAAccumulateAttributeNames.TabIndex = 107;
            // 
            // lblSARestrictionAttributeNames
            // 
            this.lblSARestrictionAttributeNames.Location = new System.Drawing.Point(22, 317);
            this.lblSARestrictionAttributeNames.Name = "lblSARestrictionAttributeNames";
            this.lblSARestrictionAttributeNames.Size = new System.Drawing.Size(72, 16);
            this.lblSARestrictionAttributeNames.TabIndex = 108;
            this.lblSARestrictionAttributeNames.Text = "Restrictions";
            // 
            // chklstSARestrictionAttributeNames
            // 
            this.chklstSARestrictionAttributeNames.CheckOnClick = true;
            this.chklstSARestrictionAttributeNames.Location = new System.Drawing.Point(22, 333);
            this.chklstSARestrictionAttributeNames.Name = "chklstSARestrictionAttributeNames";
            this.chklstSARestrictionAttributeNames.ScrollAlwaysVisible = true;
            this.chklstSARestrictionAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstSARestrictionAttributeNames.TabIndex = 106;
            // 
            // lblSAOutputPolygons
            // 
            this.lblSAOutputPolygons.Location = new System.Drawing.Point(20, 130);
            this.lblSAOutputPolygons.Name = "lblSAOutputPolygons";
            this.lblSAOutputPolygons.Size = new System.Drawing.Size(122, 16);
            this.lblSAOutputPolygons.TabIndex = 103;
            this.lblSAOutputPolygons.Text = "Output Polygons";
            // 
            // cboSAOutputPolygons
            // 
            this.cboSAOutputPolygons.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboSAOutputPolygons.ItemHeight = 13;
            this.cboSAOutputPolygons.Items.AddRange(new object[] {
            "No Polygons",
            "Simplified Polygons",
            "Detailed Polygons"});
            this.cboSAOutputPolygons.Location = new System.Drawing.Point(151, 125);
            this.cboSAOutputPolygons.Name = "cboSAOutputPolygons";
            this.cboSAOutputPolygons.Size = new System.Drawing.Size(200, 21);
            this.cboSAOutputPolygons.TabIndex = 102;
            this.cboSAOutputPolygons.SelectedIndexChanged += new System.EventHandler(this.cboSAOutputPolygons_SelectedIndexChanged);
            // 
            // lblSAOutputLines
            // 
            this.lblSAOutputLines.Location = new System.Drawing.Point(20, 210);
            this.lblSAOutputLines.Name = "lblSAOutputLines";
            this.lblSAOutputLines.Size = new System.Drawing.Size(122, 16);
            this.lblSAOutputLines.TabIndex = 101;
            this.lblSAOutputLines.Text = "Output Lines";
            // 
            // cboSAOutputLines
            // 
            this.cboSAOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboSAOutputLines.ItemHeight = 13;
            this.cboSAOutputLines.Items.AddRange(new object[] {
            "No Lines",
            "True Shape",
            "True Shape With Measures"});
            this.cboSAOutputLines.Location = new System.Drawing.Point(151, 205);
            this.cboSAOutputLines.Name = "cboSAOutputLines";
            this.cboSAOutputLines.Size = new System.Drawing.Size(200, 21);
            this.cboSAOutputLines.TabIndex = 100;
            this.cboSAOutputLines.SelectedIndexChanged += new System.EventHandler(this.cboSAOutputLines_SelectedIndexChanged);
            // 
            // chkSAMergeSimilarPolygonRanges
            // 
            this.chkSAMergeSimilarPolygonRanges.Location = new System.Drawing.Point(329, 152);
            this.chkSAMergeSimilarPolygonRanges.Name = "chkSAMergeSimilarPolygonRanges";
            this.chkSAMergeSimilarPolygonRanges.Size = new System.Drawing.Size(192, 22);
            this.chkSAMergeSimilarPolygonRanges.TabIndex = 99;
            this.chkSAMergeSimilarPolygonRanges.Text = "Merge Similar Polygon Ranges";
            // 
            // txtSADefaultBreaks
            // 
            this.txtSADefaultBreaks.Location = new System.Drawing.Point(151, 72);
            this.txtSADefaultBreaks.Name = "txtSADefaultBreaks";
            this.txtSADefaultBreaks.Size = new System.Drawing.Size(200, 20);
            this.txtSADefaultBreaks.TabIndex = 98;
            // 
            // lblSADefaultBreaks
            // 
            this.lblSADefaultBreaks.Location = new System.Drawing.Point(20, 76);
            this.lblSADefaultBreaks.Name = "lblSADefaultBreaks";
            this.lblSADefaultBreaks.Size = new System.Drawing.Size(114, 16);
            this.lblSADefaultBreaks.TabIndex = 97;
            this.lblSADefaultBreaks.Text = "Default Breaks";
            // 
            // cboSAImpedance
            // 
            this.cboSAImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboSAImpedance.ItemHeight = 13;
            this.cboSAImpedance.Location = new System.Drawing.Point(151, 23);
            this.cboSAImpedance.Name = "cboSAImpedance";
            this.cboSAImpedance.Size = new System.Drawing.Size(200, 21);
            this.cboSAImpedance.TabIndex = 86;
            // 
            // lblSAImpedance
            // 
            this.lblSAImpedance.Location = new System.Drawing.Point(20, 28);
            this.lblSAImpedance.Name = "lblSAImpedance";
            this.lblSAImpedance.Size = new System.Drawing.Size(64, 16);
            this.lblSAImpedance.TabIndex = 87;
            this.lblSAImpedance.Text = "Impedance";
            // 
            // tabVRP
            // 
            this.tabVRP.Controls.Add(this.gbRestrictions);
            this.tabVRP.Controls.Add(this.gbSettings);
            this.tabVRP.Location = new System.Drawing.Point(4, 22);
            this.tabVRP.Name = "tabVRP";
            this.tabVRP.Size = new System.Drawing.Size(711, 473);
            this.tabVRP.TabIndex = 5;
            this.tabVRP.Text = "VRP";
            this.tabVRP.UseVisualStyleBackColor = true;
            // 
            // gbRestrictions
            // 
            this.gbRestrictions.Controls.Add(this.chklstVRPRestrictionAttributeNames);
            this.gbRestrictions.Location = new System.Drawing.Point(349, 3);
            this.gbRestrictions.Name = "gbRestrictions";
            this.gbRestrictions.Size = new System.Drawing.Size(206, 90);
            this.gbRestrictions.TabIndex = 1;
            this.gbRestrictions.TabStop = false;
            this.gbRestrictions.Text = "Restrictions";
            // 
            // chklstVRPRestrictionAttributeNames
            // 
            this.chklstVRPRestrictionAttributeNames.CheckOnClick = true;
            this.chklstVRPRestrictionAttributeNames.Location = new System.Drawing.Point(6, 14);
            this.chklstVRPRestrictionAttributeNames.Name = "chklstVRPRestrictionAttributeNames";
            this.chklstVRPRestrictionAttributeNames.ScrollAlwaysVisible = true;
            this.chklstVRPRestrictionAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstVRPRestrictionAttributeNames.TabIndex = 109;
            // 
            // gbSettings
            // 
            this.gbSettings.Controls.Add(this.cboVRPDistanceFieldUnits);
            this.gbSettings.Controls.Add(this.cboVRPTransitTime);
            this.gbSettings.Controls.Add(this.cboVRPTimeWindow);
            this.gbSettings.Controls.Add(this.label10);
            this.gbSettings.Controls.Add(this.label9);
            this.gbSettings.Controls.Add(this.chkVRPUseHierarchy);
            this.gbSettings.Controls.Add(this.cboVRPOutputShapeType);
            this.gbSettings.Controls.Add(this.cboVRPAllowUTurns);
            this.gbSettings.Controls.Add(this.cboVRPTimeFieldUnits);
            this.gbSettings.Controls.Add(this.txtVRPCapacityCount);
            this.gbSettings.Controls.Add(this.txtVRPDefaultDate);
            this.gbSettings.Controls.Add(this.cboVRPDistanceAttribute);
            this.gbSettings.Controls.Add(this.cboVRPTimeAttribute);
            this.gbSettings.Controls.Add(this.label7);
            this.gbSettings.Controls.Add(this.label6);
            this.gbSettings.Controls.Add(this.label5);
            this.gbSettings.Controls.Add(this.label4);
            this.gbSettings.Controls.Add(this.label3);
            this.gbSettings.Controls.Add(this.label2);
            this.gbSettings.Controls.Add(this.label1);
            this.gbSettings.Controls.Add(this.lblTimeAttribute);
            this.gbSettings.Location = new System.Drawing.Point(3, 3);
            this.gbSettings.Name = "gbSettings";
            this.gbSettings.Size = new System.Drawing.Size(340, 321);
            this.gbSettings.TabIndex = 0;
            this.gbSettings.TabStop = false;
            this.gbSettings.Text = "Settings";
            // 
            // cboVRPDistanceFieldUnits
            // 
            this.cboVRPDistanceFieldUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPDistanceFieldUnits.ItemHeight = 13;
            this.cboVRPDistanceFieldUnits.Items.AddRange(new object[] {
            "Inches",
            "Points",
            "Feet",
            "Yards",
            "Miles",
            "Nautical Miles",
            "Millimeters",
            "Centimeters",
            "Meters",
            "Kilometers",
            "DecimalDegrees",
            "Decimeters"});
            this.cboVRPDistanceFieldUnits.Location = new System.Drawing.Point(189, 151);
            this.cboVRPDistanceFieldUnits.Name = "cboVRPDistanceFieldUnits";
            this.cboVRPDistanceFieldUnits.Size = new System.Drawing.Size(136, 21);
            this.cboVRPDistanceFieldUnits.TabIndex = 123;
            // 
            // cboVRPTransitTime
            // 
            this.cboVRPTransitTime.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPTransitTime.FormattingEnabled = true;
            this.cboVRPTransitTime.Items.AddRange(new object[] {
            "High",
            "Medium",
            "Low"});
            this.cboVRPTransitTime.Location = new System.Drawing.Point(189, 265);
            this.cboVRPTransitTime.Name = "cboVRPTransitTime";
            this.cboVRPTransitTime.Size = new System.Drawing.Size(136, 21);
            this.cboVRPTransitTime.TabIndex = 20;
            // 
            // cboVRPTimeWindow
            // 
            this.cboVRPTimeWindow.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPTimeWindow.FormattingEnabled = true;
            this.cboVRPTimeWindow.Items.AddRange(new object[] {
            "High",
            "Medium",
            "Low"});
            this.cboVRPTimeWindow.Location = new System.Drawing.Point(189, 238);
            this.cboVRPTimeWindow.Name = "cboVRPTimeWindow";
            this.cboVRPTimeWindow.Size = new System.Drawing.Size(136, 21);
            this.cboVRPTimeWindow.TabIndex = 19;
            // 
            // label10
            // 
            this.label10.AutoSize = true;
            this.label10.Location = new System.Drawing.Point(8, 268);
            this.label10.Name = "label10";
            this.label10.Size = new System.Drawing.Size(161, 13);
            this.label10.TabIndex = 18;
            this.label10.Text = "Excess Transit Time Importance:";
            // 
            // label9
            // 
            this.label9.AutoSize = true;
            this.label9.Location = new System.Drawing.Point(9, 241);
            this.label9.Name = "label9";
            this.label9.Size = new System.Drawing.Size(174, 13);
            this.label9.TabIndex = 17;
            this.label9.Text = "Time Window Violation Importance:";
            // 
            // chkVRPUseHierarchy
            // 
            this.chkVRPUseHierarchy.AutoSize = true;
            this.chkVRPUseHierarchy.Location = new System.Drawing.Point(12, 294);
            this.chkVRPUseHierarchy.Name = "chkVRPUseHierarchy";
            this.chkVRPUseHierarchy.Size = new System.Drawing.Size(93, 17);
            this.chkVRPUseHierarchy.TabIndex = 16;
            this.chkVRPUseHierarchy.Text = "Use Hierarchy";
            this.chkVRPUseHierarchy.UseVisualStyleBackColor = true;
            // 
            // cboVRPOutputShapeType
            // 
            this.cboVRPOutputShapeType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPOutputShapeType.FormattingEnabled = true;
            this.cboVRPOutputShapeType.Items.AddRange(new object[] {
            "None",
            "Straight Line",
            "True Shape",
            "True Shape with Measure"});
            this.cboVRPOutputShapeType.Location = new System.Drawing.Point(189, 208);
            this.cboVRPOutputShapeType.Name = "cboVRPOutputShapeType";
            this.cboVRPOutputShapeType.Size = new System.Drawing.Size(136, 21);
            this.cboVRPOutputShapeType.TabIndex = 15;
            // 
            // cboVRPAllowUTurns
            // 
            this.cboVRPAllowUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPAllowUTurns.FormattingEnabled = true;
            this.cboVRPAllowUTurns.Items.AddRange(new object[] {
            "No U-Turns",
            "Allow U-Turns",
            "Only At Dead Ends"});
            this.cboVRPAllowUTurns.Location = new System.Drawing.Point(189, 180);
            this.cboVRPAllowUTurns.Name = "cboVRPAllowUTurns";
            this.cboVRPAllowUTurns.Size = new System.Drawing.Size(136, 21);
            this.cboVRPAllowUTurns.TabIndex = 14;
            // 
            // cboVRPTimeFieldUnits
            // 
            this.cboVRPTimeFieldUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPTimeFieldUnits.FormattingEnabled = true;
            this.cboVRPTimeFieldUnits.Items.AddRange(new object[] {
            "Seconds",
            "Minutes",
            "Hours",
            "Days"});
            this.cboVRPTimeFieldUnits.Location = new System.Drawing.Point(189, 124);
            this.cboVRPTimeFieldUnits.Name = "cboVRPTimeFieldUnits";
            this.cboVRPTimeFieldUnits.Size = new System.Drawing.Size(136, 21);
            this.cboVRPTimeFieldUnits.TabIndex = 12;
            // 
            // txtVRPCapacityCount
            // 
            this.txtVRPCapacityCount.Location = new System.Drawing.Point(189, 97);
            this.txtVRPCapacityCount.Name = "txtVRPCapacityCount";
            this.txtVRPCapacityCount.Size = new System.Drawing.Size(136, 20);
            this.txtVRPCapacityCount.TabIndex = 11;
            // 
            // txtVRPDefaultDate
            // 
            this.txtVRPDefaultDate.Location = new System.Drawing.Point(189, 70);
            this.txtVRPDefaultDate.Name = "txtVRPDefaultDate";
            this.txtVRPDefaultDate.Size = new System.Drawing.Size(136, 20);
            this.txtVRPDefaultDate.TabIndex = 10;
            // 
            // cboVRPDistanceAttribute
            // 
            this.cboVRPDistanceAttribute.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPDistanceAttribute.FormattingEnabled = true;
            this.cboVRPDistanceAttribute.Items.AddRange(new object[] {
            "",
            "Meters (Meters)"});
            this.cboVRPDistanceAttribute.Location = new System.Drawing.Point(189, 42);
            this.cboVRPDistanceAttribute.Name = "cboVRPDistanceAttribute";
            this.cboVRPDistanceAttribute.Size = new System.Drawing.Size(136, 21);
            this.cboVRPDistanceAttribute.TabIndex = 9;
            // 
            // cboVRPTimeAttribute
            // 
            this.cboVRPTimeAttribute.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboVRPTimeAttribute.FormattingEnabled = true;
            this.cboVRPTimeAttribute.Location = new System.Drawing.Point(189, 14);
            this.cboVRPTimeAttribute.Name = "cboVRPTimeAttribute";
            this.cboVRPTimeAttribute.Size = new System.Drawing.Size(136, 21);
            this.cboVRPTimeAttribute.TabIndex = 8;
            // 
            // label7
            // 
            this.label7.AutoSize = true;
            this.label7.Location = new System.Drawing.Point(9, 50);
            this.label7.Name = "label7";
            this.label7.Size = new System.Drawing.Size(94, 13);
            this.label7.TabIndex = 7;
            this.label7.Text = "Distance Attribute:";
            // 
            // label6
            // 
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(9, 78);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(70, 13);
            this.label6.TabIndex = 6;
            this.label6.Text = "Default Date:";
            // 
            // label5
            // 
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(9, 105);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(82, 13);
            this.label5.TabIndex = 5;
            this.label5.Text = "Capacity Count:";
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(9, 132);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(85, 13);
            this.label4.TabIndex = 4;
            this.label4.Text = "Time Field Units:";
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(8, 160);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(104, 13);
            this.label3.TabIndex = 3;
            this.label3.Text = "Distance Field Units:";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(9, 188);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(74, 13);
            this.label2.TabIndex = 2;
            this.label2.Text = "U-Turn Policy:";
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(9, 216);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(103, 13);
            this.label1.TabIndex = 1;
            this.label1.Text = "Output Shape Type:";
            // 
            // lblTimeAttribute
            // 
            this.lblTimeAttribute.AutoSize = true;
            this.lblTimeAttribute.Location = new System.Drawing.Point(9, 22);
            this.lblTimeAttribute.Name = "lblTimeAttribute";
            this.lblTimeAttribute.Size = new System.Drawing.Size(75, 13);
            this.lblTimeAttribute.TabIndex = 0;
            this.lblTimeAttribute.Text = "Time Attribute:";
            // 
            // tabLocationAllocation
            // 
            this.tabLocationAllocation.Controls.Add(this.chkLAUseTime);
            this.tabLocationAllocation.Controls.Add(this.txtLAUseTime);
            this.tabLocationAllocation.Controls.Add(this.chkLAIgnoreInvalidLocations);
            this.tabLocationAllocation.Controls.Add(this.grpLASettings);
            this.tabLocationAllocation.Controls.Add(this.chkLAUseHierarchy);
            this.tabLocationAllocation.Controls.Add(this.lblLAAccumulateAttributeNames);
            this.tabLocationAllocation.Controls.Add(this.chklstLAAccumulateAttributeNames);
            this.tabLocationAllocation.Controls.Add(this.lblLARestrictionAttributeNames);
            this.tabLocationAllocation.Controls.Add(this.chklstLARestrictionAttributeNames);
            this.tabLocationAllocation.Controls.Add(this.cboLAOutputLines);
            this.tabLocationAllocation.Controls.Add(this.label11);
            this.tabLocationAllocation.Controls.Add(this.cboLATravelDirection);
            this.tabLocationAllocation.Controls.Add(this.label12);
            this.tabLocationAllocation.Controls.Add(this.lblCostAttribute);
            this.tabLocationAllocation.Controls.Add(this.cboLAImpedance);
            this.tabLocationAllocation.Location = new System.Drawing.Point(4, 22);
            this.tabLocationAllocation.Name = "tabLocationAllocation";
            this.tabLocationAllocation.Padding = new System.Windows.Forms.Padding(3);
            this.tabLocationAllocation.Size = new System.Drawing.Size(711, 473);
            this.tabLocationAllocation.TabIndex = 6;
            this.tabLocationAllocation.Text = "Location-Allocation";
            this.tabLocationAllocation.UseVisualStyleBackColor = true;
            // 
            // chkLAUseTime
            // 
            this.chkLAUseTime.Location = new System.Drawing.Point(10, 51);
            this.chkLAUseTime.Name = "chkLAUseTime";
            this.chkLAUseTime.Size = new System.Drawing.Size(104, 16);
            this.chkLAUseTime.TabIndex = 133;
            this.chkLAUseTime.Text = "Use Time";
            // 
            // txtLAUseTime
            // 
            this.txtLAUseTime.Location = new System.Drawing.Point(141, 47);
            this.txtLAUseTime.Name = "txtLAUseTime";
            this.txtLAUseTime.Size = new System.Drawing.Size(179, 20);
            this.txtLAUseTime.TabIndex = 134;
            // 
            // chkLAIgnoreInvalidLocations
            // 
            this.chkLAIgnoreInvalidLocations.Location = new System.Drawing.Point(13, 149);
            this.chkLAIgnoreInvalidLocations.Name = "chkLAIgnoreInvalidLocations";
            this.chkLAIgnoreInvalidLocations.Size = new System.Drawing.Size(144, 29);
            this.chkLAIgnoreInvalidLocations.TabIndex = 123;
            this.chkLAIgnoreInvalidLocations.Text = "Ignore Invalid Locations";
            // 
            // grpLASettings
            // 
            this.grpLASettings.Controls.Add(this.lblTargetMarketShare);
            this.grpLASettings.Controls.Add(this.txtLATargetMarketShare);
            this.grpLASettings.Controls.Add(this.cboLAImpTransformation);
            this.grpLASettings.Controls.Add(this.lblImpParameter);
            this.grpLASettings.Controls.Add(this.txtLAImpParameter);
            this.grpLASettings.Controls.Add(this.lblImpTransformation);
            this.grpLASettings.Controls.Add(this.lblProblemType);
            this.grpLASettings.Controls.Add(this.cboLAProblemType);
            this.grpLASettings.Controls.Add(this.lblCutOff);
            this.grpLASettings.Controls.Add(this.txtLACutOff);
            this.grpLASettings.Controls.Add(this.lblNumFacilities);
            this.grpLASettings.Controls.Add(this.txtLAFacilitiesToLocate);
            this.grpLASettings.Location = new System.Drawing.Point(230, 129);
            this.grpLASettings.Name = "grpLASettings";
            this.grpLASettings.Size = new System.Drawing.Size(342, 241);
            this.grpLASettings.TabIndex = 122;
            this.grpLASettings.TabStop = false;
            this.grpLASettings.Text = "Advanced Settings";
            // 
            // lblTargetMarketShare
            // 
            this.lblTargetMarketShare.AccessibleDescription = "grpLA";
            this.lblTargetMarketShare.AutoSize = true;
            this.lblTargetMarketShare.Location = new System.Drawing.Point(20, 205);
            this.lblTargetMarketShare.Name = "lblTargetMarketShare";
            this.lblTargetMarketShare.Size = new System.Drawing.Size(122, 13);
            this.lblTargetMarketShare.TabIndex = 31;
            this.lblTargetMarketShare.Text = "Target Market Share (%)";
            // 
            // txtLATargetMarketShare
            // 
            this.txtLATargetMarketShare.AccessibleDescription = "grpLA";
            this.txtLATargetMarketShare.Location = new System.Drawing.Point(199, 201);
            this.txtLATargetMarketShare.Name = "txtLATargetMarketShare";
            this.txtLATargetMarketShare.Size = new System.Drawing.Size(129, 20);
            this.txtLATargetMarketShare.TabIndex = 30;
            this.txtLATargetMarketShare.Text = "10.0";
            // 
            // cboLAImpTransformation
            // 
            this.cboLAImpTransformation.AccessibleDescription = "grpLA";
            this.cboLAImpTransformation.FormattingEnabled = true;
            this.cboLAImpTransformation.Items.AddRange(new object[] {
            "Linear",
            "Power",
            "Exponential"});
            this.cboLAImpTransformation.Location = new System.Drawing.Point(202, 135);
            this.cboLAImpTransformation.Name = "cboLAImpTransformation";
            this.cboLAImpTransformation.Size = new System.Drawing.Size(128, 21);
            this.cboLAImpTransformation.TabIndex = 29;
            this.cboLAImpTransformation.Text = "Linear";
            // 
            // lblImpParameter
            // 
            this.lblImpParameter.AccessibleDescription = "grpLA";
            this.lblImpParameter.AutoSize = true;
            this.lblImpParameter.Location = new System.Drawing.Point(19, 171);
            this.lblImpParameter.Name = "lblImpParameter";
            this.lblImpParameter.Size = new System.Drawing.Size(111, 13);
            this.lblImpParameter.TabIndex = 28;
            this.lblImpParameter.Text = "Impedance Parameter";
            // 
            // txtLAImpParameter
            // 
            this.txtLAImpParameter.AccessibleDescription = "grpLA";
            this.txtLAImpParameter.Location = new System.Drawing.Point(200, 166);
            this.txtLAImpParameter.Name = "txtLAImpParameter";
            this.txtLAImpParameter.Size = new System.Drawing.Size(129, 20);
            this.txtLAImpParameter.TabIndex = 27;
            this.txtLAImpParameter.Text = "1.0";
            // 
            // lblImpTransformation
            // 
            this.lblImpTransformation.AccessibleDescription = "grpLA";
            this.lblImpTransformation.AutoSize = true;
            this.lblImpTransformation.Location = new System.Drawing.Point(19, 135);
            this.lblImpTransformation.Name = "lblImpTransformation";
            this.lblImpTransformation.Size = new System.Drawing.Size(133, 13);
            this.lblImpTransformation.TabIndex = 26;
            this.lblImpTransformation.Text = "Impedance Transformation";
            // 
            // lblProblemType
            // 
            this.lblProblemType.AccessibleDescription = "grpLA";
            this.lblProblemType.AutoSize = true;
            this.lblProblemType.Location = new System.Drawing.Point(19, 30);
            this.lblProblemType.Name = "lblProblemType";
            this.lblProblemType.Size = new System.Drawing.Size(72, 13);
            this.lblProblemType.TabIndex = 23;
            this.lblProblemType.Text = "Problem Type";
            // 
            // cboLAProblemType
            // 
            this.cboLAProblemType.AccessibleDescription = "grpLA";
            this.cboLAProblemType.FormattingEnabled = true;
            this.cboLAProblemType.Items.AddRange(new object[] {
            "Minimize Impedance",
            "Maximize Coverage",
            "Minimize Facilities",
            "Maximize Attendance",
            "Maximize Market Share",
            "Target Market Share"});
            this.cboLAProblemType.Location = new System.Drawing.Point(202, 24);
            this.cboLAProblemType.Name = "cboLAProblemType";
            this.cboLAProblemType.Size = new System.Drawing.Size(128, 21);
            this.cboLAProblemType.TabIndex = 22;
            this.cboLAProblemType.Text = "Minimize Impedance";
            this.cboLAProblemType.SelectedIndexChanged += new System.EventHandler(this.cboLAProblemType_SelectedIndexChanged);
            // 
            // lblCutOff
            // 
            this.lblCutOff.AccessibleDescription = "grpLA";
            this.lblCutOff.AutoSize = true;
            this.lblCutOff.Location = new System.Drawing.Point(20, 98);
            this.lblCutOff.Name = "lblCutOff";
            this.lblCutOff.Size = new System.Drawing.Size(91, 13);
            this.lblCutOff.TabIndex = 21;
            this.lblCutOff.Text = "Impedance Cutoff";
            // 
            // txtLACutOff
            // 
            this.txtLACutOff.AccessibleDescription = "grpLA";
            this.txtLACutOff.Location = new System.Drawing.Point(202, 98);
            this.txtLACutOff.Name = "txtLACutOff";
            this.txtLACutOff.Size = new System.Drawing.Size(129, 20);
            this.txtLACutOff.TabIndex = 20;
            this.txtLACutOff.Text = "<None>";
            // 
            // lblNumFacilities
            // 
            this.lblNumFacilities.AccessibleDescription = "grpLA";
            this.lblNumFacilities.AutoSize = true;
            this.lblNumFacilities.Location = new System.Drawing.Point(20, 63);
            this.lblNumFacilities.Name = "lblNumFacilities";
            this.lblNumFacilities.Size = new System.Drawing.Size(102, 13);
            this.lblNumFacilities.TabIndex = 19;
            this.lblNumFacilities.Text = "Facilities To Choose";
            // 
            // txtLAFacilitiesToLocate
            // 
            this.txtLAFacilitiesToLocate.AccessibleDescription = "grpLA";
            this.txtLAFacilitiesToLocate.Location = new System.Drawing.Point(202, 63);
            this.txtLAFacilitiesToLocate.Name = "txtLAFacilitiesToLocate";
            this.txtLAFacilitiesToLocate.Size = new System.Drawing.Size(130, 20);
            this.txtLAFacilitiesToLocate.TabIndex = 18;
            this.txtLAFacilitiesToLocate.Text = "1";
            // 
            // chkLAUseHierarchy
            // 
            this.chkLAUseHierarchy.AutoSize = true;
            this.chkLAUseHierarchy.Location = new System.Drawing.Point(13, 120);
            this.chkLAUseHierarchy.Name = "chkLAUseHierarchy";
            this.chkLAUseHierarchy.Size = new System.Drawing.Size(93, 17);
            this.chkLAUseHierarchy.TabIndex = 121;
            this.chkLAUseHierarchy.Text = "Use Hierarchy";
            this.chkLAUseHierarchy.UseVisualStyleBackColor = true;
            // 
            // lblLAAccumulateAttributeNames
            // 
            this.lblLAAccumulateAttributeNames.Location = new System.Drawing.Point(11, 280);
            this.lblLAAccumulateAttributeNames.Name = "lblLAAccumulateAttributeNames";
            this.lblLAAccumulateAttributeNames.Size = new System.Drawing.Size(120, 16);
            this.lblLAAccumulateAttributeNames.TabIndex = 120;
            this.lblLAAccumulateAttributeNames.Text = "Accumulate Attributes";
            // 
            // chklstLAAccumulateAttributeNames
            // 
            this.chklstLAAccumulateAttributeNames.CheckOnClick = true;
            this.chklstLAAccumulateAttributeNames.Location = new System.Drawing.Point(11, 296);
            this.chklstLAAccumulateAttributeNames.Name = "chklstLAAccumulateAttributeNames";
            this.chklstLAAccumulateAttributeNames.ScrollAlwaysVisible = true;
            this.chklstLAAccumulateAttributeNames.Size = new System.Drawing.Size(192, 34);
            this.chklstLAAccumulateAttributeNames.TabIndex = 119;
            // 
            // lblLARestrictionAttributeNames
            // 
            this.lblLARestrictionAttributeNames.Location = new System.Drawing.Point(11, 192);
            this.lblLARestrictionAttributeNames.Name = "lblLARestrictionAttributeNames";
            this.lblLARestrictionAttributeNames.Size = new System.Drawing.Size(71, 15);
            this.lblLARestrictionAttributeNames.TabIndex = 118;
            this.lblLARestrictionAttributeNames.Text = "Restrictions";
            // 
            // chklstLARestrictionAttributeNames
            // 
            this.chklstLARestrictionAttributeNames.CheckOnClick = true;
            this.chklstLARestrictionAttributeNames.Location = new System.Drawing.Point(11, 210);
            this.chklstLARestrictionAttributeNames.Name = "chklstLARestrictionAttributeNames";
            this.chklstLARestrictionAttributeNames.ScrollAlwaysVisible = true;
            this.chklstLARestrictionAttributeNames.Size = new System.Drawing.Size(191, 34);
            this.chklstLARestrictionAttributeNames.TabIndex = 117;
            // 
            // cboLAOutputLines
            // 
            this.cboLAOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboLAOutputLines.ItemHeight = 13;
            this.cboLAOutputLines.Items.AddRange(new object[] {
            "Straight Lines",
            "None"});
            this.cboLAOutputLines.Location = new System.Drawing.Point(142, 95);
            this.cboLAOutputLines.Name = "cboLAOutputLines";
            this.cboLAOutputLines.Size = new System.Drawing.Size(178, 21);
            this.cboLAOutputLines.TabIndex = 115;
            // 
            // label11
            // 
            this.label11.Location = new System.Drawing.Point(11, 100);
            this.label11.Name = "label11";
            this.label11.Size = new System.Drawing.Size(114, 15);
            this.label11.TabIndex = 116;
            this.label11.Text = "Shape";
            // 
            // cboLATravelDirection
            // 
            this.cboLATravelDirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboLATravelDirection.ItemHeight = 13;
            this.cboLATravelDirection.Items.AddRange(new object[] {
            "Facility To Demand",
            "Demand To Facility"});
            this.cboLATravelDirection.Location = new System.Drawing.Point(142, 70);
            this.cboLATravelDirection.Name = "cboLATravelDirection";
            this.cboLATravelDirection.Size = new System.Drawing.Size(178, 21);
            this.cboLATravelDirection.TabIndex = 113;
            // 
            // label12
            // 
            this.label12.Location = new System.Drawing.Point(11, 75);
            this.label12.Name = "label12";
            this.label12.Size = new System.Drawing.Size(114, 16);
            this.label12.TabIndex = 114;
            this.label12.Text = "Travel Direction";
            // 
            // lblCostAttribute
            // 
            this.lblCostAttribute.AutoSize = true;
            this.lblCostAttribute.Location = new System.Drawing.Point(8, 25);
            this.lblCostAttribute.Name = "lblCostAttribute";
            this.lblCostAttribute.Size = new System.Drawing.Size(70, 13);
            this.lblCostAttribute.TabIndex = 25;
            this.lblCostAttribute.Text = "Cost Attribute";
            // 
            // cboLAImpedance
            // 
            this.cboLAImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.cboLAImpedance.FormattingEnabled = true;
            this.cboLAImpedance.Location = new System.Drawing.Point(142, 25);
            this.cboLAImpedance.Name = "cboLAImpedance";
            this.cboLAImpedance.Size = new System.Drawing.Size(176, 21);
            this.cboLAImpedance.TabIndex = 24;
            // 
            // tabAttributeParameters
            // 
            this.tabAttributeParameters.Controls.Add(this.btnReset);
            this.tabAttributeParameters.Controls.Add(this.attributeParameterGrid);
            this.tabAttributeParameters.Controls.Add(this.label14);
            this.tabAttributeParameters.Location = new System.Drawing.Point(4, 22);
            this.tabAttributeParameters.Name = "tabAttributeParameters";
            this.tabAttributeParameters.Size = new System.Drawing.Size(711, 473);
            this.tabAttributeParameters.TabIndex = 7;
            this.tabAttributeParameters.Text = "Attribute Parameters";
            this.tabAttributeParameters.UseVisualStyleBackColor = true;
            // 
            // btnReset
            // 
            this.btnReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            this.btnReset.Location = new System.Drawing.Point(638, 445);
            this.btnReset.Name = "btnReset";
            this.btnReset.Size = new System.Drawing.Size(70, 21);
            this.btnReset.TabIndex = 28;
            this.btnReset.Text = "&Reset";
            this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
            // 
            // attributeParameterGrid
            // 
            this.attributeParameterGrid.AllowUserToAddRows = false;
            this.attributeParameterGrid.AllowUserToDeleteRows = false;
            this.attributeParameterGrid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
            this.attributeParameterGrid.BackgroundColor = System.Drawing.Color.White;
            this.attributeParameterGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.attributeParameterGrid.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.dgvcAttribute,
            this.dgvcParameter,
            this.dgvcValue});
            this.attributeParameterGrid.Location = new System.Drawing.Point(15, 38);
            this.attributeParameterGrid.Name = "attributeParameterGrid";
            this.attributeParameterGrid.RowHeadersVisible = false;
            this.attributeParameterGrid.Size = new System.Drawing.Size(693, 401);
            this.attributeParameterGrid.TabIndex = 27;
            // 
            // dgvcAttribute
            // 
            this.dgvcAttribute.HeaderText = "Attribute";
            this.dgvcAttribute.Name = "dgvcAttribute";
            this.dgvcAttribute.ReadOnly = true;
            // 
            // dgvcParameter
            // 
            this.dgvcParameter.HeaderText = "Parameter";
            this.dgvcParameter.Name = "dgvcParameter";
            this.dgvcParameter.ReadOnly = true;
            // 
            // dgvcValue
            // 
            this.dgvcValue.HeaderText = "Value";
            this.dgvcValue.Name = "dgvcValue";
            // 
            // label14
            // 
            this.label14.AutoSize = true;
            this.label14.Location = new System.Drawing.Point(12, 13);
            this.label14.Name = "label14";
            this.label14.Size = new System.Drawing.Size(267, 13);
            this.label14.TabIndex = 26;
            this.label14.Text = "Specify the parameter values for the network attributes.";
            // 
            // btnOK
            // 
            this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            this.btnOK.Location = new System.Drawing.Point(578, 524);
            this.btnOK.Name = "btnOK";
            this.btnOK.Size = new System.Drawing.Size(70, 21);
            this.btnOK.TabIndex = 1;
            this.btnOK.Text = "&OK";
            this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
            // 
            // btnCancel
            // 
            this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            this.btnCancel.Location = new System.Drawing.Point(657, 524);
            this.btnCancel.Name = "btnCancel";
            this.btnCancel.Size = new System.Drawing.Size(71, 21);
            this.btnCancel.TabIndex = 2;
            this.btnCancel.Text = "&Cancel";
            this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
            // 
            // frmNALayerProperties
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(739, 563);
            this.Controls.Add(this.btnCancel);
            this.Controls.Add(this.btnOK);
            this.Controls.Add(this.tabPropPages);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "frmNALayerProperties";
            this.ShowInTaskbar = false;
            this.Text = "Properties";
            this.tabPropPages.ResumeLayout(false);
            this.tabGeneral.ResumeLayout(false);
            this.tabGeneral.PerformLayout();
            this.tabRoute.ResumeLayout(false);
            this.tabRoute.PerformLayout();
            this.tabClosestFacility.ResumeLayout(false);
            this.tabClosestFacility.PerformLayout();
            this.tabODCostMatrix.ResumeLayout(false);
            this.tabODCostMatrix.PerformLayout();
            this.tabServiceArea.ResumeLayout(false);
            this.tabServiceArea.PerformLayout();
            this.tabVRP.ResumeLayout(false);
            this.gbRestrictions.ResumeLayout(false);
            this.gbSettings.ResumeLayout(false);
            this.gbSettings.PerformLayout();
            this.tabLocationAllocation.ResumeLayout(false);
            this.tabLocationAllocation.PerformLayout();
            this.grpLASettings.ResumeLayout(false);
            this.grpLASettings.PerformLayout();
            this.tabAttributeParameters.ResumeLayout(false);
            this.tabAttributeParameters.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.attributeParameterGrid)).EndInit();
            this.ResumeLayout(false);

		}
		#endregion

		bool m_okClicked;
        INALayer3 m_naLayer;

        enum VARTYPE
        {
            VT_EMPTY = 0, // uninitialized (null)
            VT_NULL = 1, // System.DBNull.Value
            VT_I2 = 2, // short
            VT_I4 = 3, // int
            VT_R4 = 4, // float
            VT_R8 = 5, // double
            VT_DATE = 7, // DateTime
            VT_BSTR = 8, // string
            VT_BOOL = 11, // boolean
            VT_UNKNOWN = 13, // COM object
            VT_ARRAY = 0x2000 // array bitmask
        }

        enum AttributeParameterGridColumnType
        {
            ATTRIBUTE_NAME = 0,
            PARAMETER_NAME = 1,
            PARAMETER_VALUE = 2
        }

        Dictionary<string, double> m_restrictionParameterValues = new Dictionary<string, double> 
        { 
            {"Prohibit", -1},
            {"Avoid: High",5}, {"Avoid: Medium",2}, {"Avoid: Low",1.3},
            {"Prefer: Low",0.8}, {"Prefer: Medium",0.5}, {"Prefer: High",0.2}
        };

		public frmNALayerProperties()
		{
			InitializeComponent();
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose(bool disposing)
		{
			if (disposing)
			{
				if (components != null)
				{
					components.Dispose();
				}
			}
			base.Dispose(disposing);

            m_naLayer = null;
		}

		/// <summary>
		/// Called by clients to show the properties window and respond to changes made when OK is clicked.
		/// </summary>
		public bool ShowModal(INALayer3 naLayer)
		{
			m_okClicked = false;

            m_naLayer = naLayer;

			// Setup the window based on the current NALayer settings
            PopulateControls(m_naLayer);
			tabPropPages.SelectedIndex = 1;
            this.Text = ((ILayer)m_naLayer).Name + " Properties";

			this.ShowDialog();
			return m_okClicked;
		}

		/// <summary>
		/// Set controls based on the current NALayer settings
		/// This function takes the current NALayer and determines what type of solver it's pointing to
		/// and populates the corresponding controls and hides the tabs for the other solvers.
		/// </summary>
		private void PopulateControls(INALayer naLayer)
		{
            var layer = naLayer as ILayer;
			INAContext naContext = naLayer.Context;
			INetworkDataset networkDataset = naContext.NetworkDataset;
            var naLocator = naContext.Locator as INALocator2;

			INASolver naSolver = naContext.Solver;
            var naSolverSettings = naSolver as INASolverSettings2;
            var naTimeAwareSolverSettings = naSolver as INATimeAwareSolverSettings;

            var routeSolver = naSolver as INARouteSolver2;
            var cfSolver = naSolver as INAClosestFacilitySolver;
            var odSolver = naSolver as INAODCostMatrixSolver;
            var saSolver = naSolver as INAServiceAreaSolver2;
            var vrpSolver = naSolver as INAVRPSolver;
            var laSolver = naSolver as INALocationAllocationSolver;

			// Populate general Layer controls
			txtLayerName.Text = layer.Name;
			txtMaxSearchTolerance.Text = naLocator.MaxSnapTolerance.ToString();
			cboMaxSearchToleranceUnits.SelectedIndex = Convert.ToInt32(naLocator.SnapToleranceUnits);

            PopulateAttributeParameterControl(networkDataset);

			// Populate controls for the particular solver

			if (routeSolver != null)  // ROUTE LAYER
			{
				// Remove unnecessary tabs
				tabPropPages.TabPages.Remove(tabClosestFacility);
				tabPropPages.TabPages.Remove(tabODCostMatrix);
				tabPropPages.TabPages.Remove(tabServiceArea);
				tabPropPages.TabPages.Remove(tabVRP);
				tabPropPages.TabPages.Remove(tabLocationAllocation);

				// INARouteSolver2
				chkRouteFindBestSequence.Checked = routeSolver.FindBestSequence;
				chkRoutePreserveFirstStop.Checked = routeSolver.PreserveFirstStop;
				chkRoutePreserveLastStop.Checked = routeSolver.PreserveLastStop;
				chkRouteUseTimeWindows.Checked = routeSolver.UseTimeWindows;
				chkRouteUseStartTime.Checked = routeSolver.UseStartTime;
				txtRouteStartTime.Text = routeSolver.StartTime.ToShortTimeString();
				cboRouteOutputLines.SelectedIndex = System.Convert.ToInt32(routeSolver.OutputLines);

				// INASolverSettings
				PopulateImpedanceNameControl(cboRouteImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName);
				chkRouteUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0);
				chkRouteUseHierarchy.Checked = (chkRouteUseHierarchy.Enabled && naSolverSettings.UseHierarchy);
				chkRouteIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations;
				cboRouteRestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns);
				PopulateAttributeControl(chklstRouteAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost);
				PopulateAttributeControl(chklstRouteRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction);
			}
			else if (cfSolver != null)  // CLOSEST FACILITY LAYER
			{
				// Remove unnecessary tabs
				tabPropPages.TabPages.Remove(tabRoute);
				tabPropPages.TabPages.Remove(tabODCostMatrix);
				tabPropPages.TabPages.Remove(tabServiceArea);
				tabPropPages.TabPages.Remove(tabVRP);
				tabPropPages.TabPages.Remove(tabLocationAllocation);

				// INAClosestFacilitySolver
				txtCFDefaultCutoff.Text = GetStringFromObject(cfSolver.DefaultCutoff);
				txtCFDefaultTargetFacilityCount.Text = cfSolver.DefaultTargetFacilityCount.ToString();
				cboCFTravelDirection.SelectedIndex = Convert.ToInt32(cfSolver.TravelDirection);
				cboCFOutputLines.SelectedIndex = Convert.ToInt32(cfSolver.OutputLines);

				// INASolverSettings
				PopulateImpedanceNameControl(cboCFImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName);
				chkCFUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0);
				chkCFUseHierarchy.Checked = (chkCFUseHierarchy.Enabled && naSolverSettings.UseHierarchy);
				chkCFIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations;
				cboCFRestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns);
				PopulateAttributeControl(chklstCFAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost);
				PopulateAttributeControl(chklstCFRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction);

                // INATimeAwareSolverSettings
                cboCFTimeUsage.SelectedIndex = System.Convert.ToInt32(naTimeAwareSolverSettings.TimeOfDayUsage);
                txtCFUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString(@"HH:mm:ss MM/dd/yyyy");
            }
			else if (odSolver != null) // OD COST MATRIX LAYER
			{
				// Remove unnecessary tabs
				tabPropPages.TabPages.Remove(tabRoute);
				tabPropPages.TabPages.Remove(tabClosestFacility);
				tabPropPages.TabPages.Remove(tabServiceArea);
				tabPropPages.TabPages.Remove(tabVRP);
				tabPropPages.TabPages.Remove(tabLocationAllocation);

				// INAODCostMatrixSolver
				txtODDefaultCutoff.Text = GetStringFromObject(odSolver.DefaultCutoff);
				txtODDefaultTargetDestinationCount.Text = GetStringFromObject(odSolver.DefaultTargetDestinationCount);
				cboODOutputLines.SelectedIndex = Convert.ToInt32(odSolver.OutputLines);

				// INASolverSettings
				PopulateImpedanceNameControl(cboODImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName);
				chkODUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0);
				chkODUseHierarchy.Checked = (chkODUseHierarchy.Enabled && naSolverSettings.UseHierarchy);
				chkODIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations;
				cboODRestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns);
				PopulateAttributeControl(chklstODAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost);
				PopulateAttributeControl(chklstODRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction);

                // INATimeAwareSolverSettings
                if (naTimeAwareSolverSettings.TimeOfDayUsage == esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime)
                    chkODUseTime.Checked = true;
                txtODUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString(@"HH:mm:ss MM/dd/yyyy");
            }
			else if (saSolver != null)  //SERVICE AREA SOLVER
			{
				// Remove unnecessary tabs
				tabPropPages.TabPages.Remove(tabRoute);
				tabPropPages.TabPages.Remove(tabClosestFacility);
				tabPropPages.TabPages.Remove(tabODCostMatrix);
				tabPropPages.TabPages.Remove(tabVRP);
				tabPropPages.TabPages.Remove(tabLocationAllocation);

				// INAServiceAreaSolver2
				txtSADefaultBreaks.Text = "";
				for (int iBreak = 0; iBreak < saSolver.DefaultBreaks.Count; iBreak++)
					txtSADefaultBreaks.Text = txtSADefaultBreaks.Text + " " + saSolver.DefaultBreaks.get_Element(iBreak).ToString();
				cboSATravelDirection.SelectedIndex = Convert.ToInt32(saSolver.TravelDirection);

				cboSAOutputPolygons.SelectedIndex = -1;
				cboSAOutputPolygons.SelectedIndex = Convert.ToInt32(saSolver.OutputPolygons);
				chkSAOverlapPolygons.Checked = saSolver.OverlapPolygons;
				chkSASplitPolygonsAtBreaks.Checked = saSolver.SplitPolygonsAtBreaks;
				chkSAMergeSimilarPolygonRanges.Checked = saSolver.MergeSimilarPolygonRanges;
				chkSATrimOuterPolygon.Checked = saSolver.TrimOuterPolygon;
				txtSATrimPolygonDistance.Text = saSolver.TrimPolygonDistance.ToString();
				cboSATrimPolygonDistanceUnits.SelectedIndex = Convert.ToInt32(saSolver.TrimPolygonDistanceUnits);

				cboSAOutputLines.SelectedIndex = -1;
				cboSAOutputLines.SelectedIndex = Convert.ToInt32(saSolver.OutputLines);
				chkSAOverlapLines.Checked = saSolver.OverlapLines;
				chkSASplitLinesAtBreaks.Checked = saSolver.SplitLinesAtBreaks;
				chkSAIncludeSourceInformationOnLines.Checked = saSolver.IncludeSourceInformationOnLines;

				// INASolverSettings
				PopulateImpedanceNameControl(cboSAImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName);
				chkSAIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations;
				cboSARestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns);
				PopulateAttributeControl(chklstSAAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost);
				PopulateAttributeControl(chklstSARestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction);

                // INATimeAwareSolverSettings
                if (naTimeAwareSolverSettings.TimeOfDayUsage == esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime)
                    chkSAUseTime.Checked = true;
                txtSAUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString(@"HH:mm:ss MM/dd/yyyy");
            }
			else if (vrpSolver != null) // VRP Solver
			{
				// Remove unnecessary tabs
				tabPropPages.TabPages.Remove(tabRoute);
				tabPropPages.TabPages.Remove(tabClosestFacility);
				tabPropPages.TabPages.Remove(tabODCostMatrix);
				tabPropPages.TabPages.Remove(tabServiceArea);
				tabPropPages.TabPages.Remove(tabLocationAllocation);

				cboVRPOutputShapeType.SelectedIndex = Convert.ToInt32(vrpSolver.OutputLines);
				cboVRPAllowUTurns.SelectedIndex = Convert.ToInt32(naSolverSettings.RestrictUTurns);
				// VRP cannot have unknown units, so the index is offset by 1 from the solver field units
				cboVRPDistanceFieldUnits.SelectedIndex = Convert.ToInt32(vrpSolver.DistanceFieldUnits) - 1;
				cboVRPTransitTime.SelectedIndex = Convert.ToInt32(vrpSolver.ExcessTransitTimePenaltyFactor);
				cboVRPTimeWindow.SelectedIndex = Convert.ToInt32(vrpSolver.TimeWindowViolationPenaltyFactor);
				cboVRPTimeFieldUnits.SelectedIndex = Convert.ToInt32(vrpSolver.TimeFieldUnits - 20);

				txtVRPCapacityCount.Text = vrpSolver.CapacityCount.ToString();
				txtVRPDefaultDate.Text = vrpSolver.DefaultDate.ToShortDateString();

				chkVRPUseHierarchy.Checked = naSolverSettings.UseHierarchy;

				PopulateAttributeControl(chklstVRPRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction);

				//populate the time attribute combo box
				cboVRPTimeAttribute.Items.Clear();

				for (int i = 0; i < networkDataset.AttributeCount; i++)
				{
					INetworkAttribute networkAttribute = networkDataset.get_Attribute(i);

					if (networkAttribute.UsageType == esriNetworkAttributeUsageType.esriNAUTCost &&
						networkAttribute.Units >= esriNetworkAttributeUnits.esriNAUSeconds)
						cboVRPTimeAttribute.Items.Add(networkAttribute.Name);
				}

				if (cboVRPTimeAttribute.Items.Count > 0)
					cboVRPTimeAttribute.Text = naSolverSettings.ImpedanceAttributeName;


				// for VRP, the AccumulateAttributeNames hold the length, and it can only hold one length.
				//  Loop through the network dataset attributes
				cboVRPDistanceAttribute.Items.Clear();
				cboVRPDistanceAttribute.SelectedIndex = cboVRPDistanceAttribute.Items.Add("");

				for (int i = 0; i < networkDataset.AttributeCount; i++)
				{
					INetworkAttribute networkAttribute = networkDataset.get_Attribute(i);
					if (networkAttribute.UsageType == esriNetworkAttributeUsageType.esriNAUTCost &&
						networkAttribute.Units < esriNetworkAttributeUnits.esriNAUSeconds)
					{
						string attributeName = networkAttribute.Name;

						int cboindex = cboVRPDistanceAttribute.Items.Add(networkAttribute.Name);

						// If the attribute is in the strArray, it should be the selected one
						for (int j = 0; j < naSolverSettings.AccumulateAttributeNames.Count; j++)
							if (naSolverSettings.AccumulateAttributeNames.get_Element(j) == attributeName)
								cboVRPDistanceAttribute.SelectedIndex = cboindex;
					}
				}
			}
			else if (laSolver != null)  // Location-Allocation LAYER
			{
				// Remove unnecessary tabs
				tabPropPages.TabPages.Remove(tabRoute);
				tabPropPages.TabPages.Remove(tabClosestFacility);
				tabPropPages.TabPages.Remove(tabODCostMatrix);
				tabPropPages.TabPages.Remove(tabServiceArea);
				tabPropPages.TabPages.Remove(tabVRP);

				// INALocationAllocationSolver
				txtLACutOff.Text = GetStringFromObject(laSolver.DefaultCutoff);
				txtLAFacilitiesToLocate.Text = laSolver.NumberFacilitiesToLocate.ToString();
				txtLAImpParameter.Text = laSolver.TransformationParameter.ToString();
				txtLATargetMarketShare.Text = laSolver.TargetMarketSharePercentage.ToString();

				cboLAImpTransformation.SelectedIndex = Convert.ToInt32(laSolver.ImpedanceTransformation);
				cboLAProblemType.SelectedIndex = Convert.ToInt32(laSolver.ProblemType);
				cboLAOutputLines.SelectedIndex = Convert.ToInt32(laSolver.OutputLines);
				cboLATravelDirection.SelectedIndex = Convert.ToInt32(laSolver.TravelDirection);

				//// INASolverSettings
				PopulateImpedanceNameControl(cboLAImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName);
				PopulateAttributeControl(chklstLAAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost);
				PopulateAttributeControl(chklstLARestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction);
				chkLAUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0);
				chkLAUseHierarchy.Checked = (chkCFUseHierarchy.Enabled && naSolverSettings.UseHierarchy);
				chkLAIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations;

                // INATimeAwareSolverSettings
                if (naTimeAwareSolverSettings.TimeOfDayUsage == esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime)
                    chkLAUseTime.Checked = true;
                txtLAUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString(@"HH:mm:ss MM/dd/yyyy");
            }
			else  // Unknown type of layer
			{
				// Remove unnecessary tabs
				tabPropPages.TabPages.Remove(tabRoute);
				tabPropPages.TabPages.Remove(tabClosestFacility);
				tabPropPages.TabPages.Remove(tabODCostMatrix);
				tabPropPages.TabPages.Remove(tabServiceArea);
				tabPropPages.TabPages.Remove(tabVRP);
				tabPropPages.TabPages.Remove(tabLocationAllocation);
                tabPropPages.TabPages.Remove(tabAttributeParameters);
            }
		}

        /// <summary>
        /// Interrogate the layer's network dataset attributes to populate a list of attribute parameters
        /// </summary>
        private void PopulateAttributeParameterControl(INetworkDataset networkDataset)
        {
            var solverSettings = m_naLayer.Context.Solver as INASolverSettings2;

            // Track if there are attribute parameters, to decide if the attribute parameter tab should be displayed
            bool hasAttributeParameters = false;

            // Iterate over all of the network attributes to search for parameters
            for (int attrIndex = 0; attrIndex < networkDataset.AttributeCount; attrIndex++)
            {
                var networkAttribute = networkDataset.get_Attribute(attrIndex) as INetworkAttribute2;
                string attributeName = networkAttribute.Name;

                // Iterate over all of the parameters, to find their values
                for (int paramIndex = 0; paramIndex < networkAttribute.Parameters.Count; paramIndex++)
                {
                    hasAttributeParameters = true;

                    // Find the current attribute parameter value for this layer
                    var attributeParameter = networkAttribute.Parameters.get_Element(paramIndex) as INetworkAttributeParameter2;
                    object paramValue = solverSettings.get_AttributeParameterValue(attributeName, attributeParameter.Name);

                    int rowID = attributeParameterGrid.Rows.Add();
                    attributeParameterGrid[(int)AttributeParameterGridColumnType.ATTRIBUTE_NAME, rowID].Value = networkAttribute.Name;
                    attributeParameterGrid[(int)AttributeParameterGridColumnType.PARAMETER_NAME, rowID].Value = attributeParameter.Name;

                    UpdateAttributeParameterValueCell(rowID, paramValue, (VARTYPE)attributeParameter.VarType, attributeParameter.ParameterUsageType);
                }
            }

            // Don't display the attribute parameters tab, if there are no attribute parameters
            if (!hasAttributeParameters)
                tabPropPages.TabPages.Remove(tabAttributeParameters);
        }

        private void UpdateAttributeParameterValueCell(int rowID, object paramValue, VARTYPE paramVarType, esriNetworkAttributeParameterUsageType paramUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral)
        {
            string cellText = ConvertAttributeParameterValueToString(paramValue, paramVarType, paramUsageType);

            // Set up the combo box choices for restriction attribute parameters
            if (paramUsageType == esriNetworkAttributeParameterUsageType.esriNAPUTRestriction)
                attributeParameterGrid[(int)AttributeParameterGridColumnType.PARAMETER_VALUE, rowID] = CreateRestrictionParameterCell(paramValue, cellText, rowID);

            attributeParameterGrid[(int)AttributeParameterGridColumnType.PARAMETER_VALUE, rowID].Value = cellText;
        }

        private DataGridViewComboBoxCell CreateStandardRestrictionParameterCell(int rowID)
        {
            DataGridViewComboBoxCell cbcRestriction = new DataGridViewComboBoxCell();
            cbcRestriction.Items.AddRange(m_restrictionParameterValues.Keys.ToArray());

            cbcRestriction.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
            return cbcRestriction;
        }

        private DataGridViewComboBoxCell CreateRestrictionParameterCell(object paramValue, string cellText, int rowID)
        {
            DataGridViewComboBoxCell comboBoxCell = CreateStandardRestrictionParameterCell(rowID);

            bool isCustomRestrictionParamValue = !m_restrictionParameterValues.ContainsValue((double)paramValue);
            if (isCustomRestrictionParamValue)
                comboBoxCell.Items.Add(cellText);
            
            return comboBoxCell;
        }

        private string ConvertAttributeParameterValueToString(object paramValue, VARTYPE paramVarType, esriNetworkAttributeParameterUsageType paramUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral)
        {
            string paramValueString = "";

            // Use bitwise arithmetic to determine if this parameter is an array.
            VARTYPE vtBase = (VARTYPE)((int)paramVarType & ~(int)VARTYPE.VT_ARRAY);
            bool isArrayType = (vtBase != paramVarType); 

            // Null and DBNull should be represented as an empty string
            if (!System.DBNull.Value.Equals(paramValue) && paramValue != null)
            {
                // For restriction attribute parameters, try to match the parameter double value with its associated
                //  text representation
                bool isStandardRestrictionParamValue = (paramUsageType == esriNetworkAttributeParameterUsageType.esriNAPUTRestriction &&
                                                        m_restrictionParameterValues.ContainsValue((double)paramValue));
                if (isStandardRestrictionParamValue)
                {
                    if (isStandardRestrictionParamValue)
                    {
                        // Assign celltext to a key name matching the paramValue
                        IEnumerable<string> matchingKeys = from KeyValuePair<string, double> pair in m_restrictionParameterValues
                                                           where (((double)paramValue).Equals(pair.Value))
                                                           select pair.Key;

                        paramValueString = matchingKeys.First();
                    }
                }

                // For attribute parameters that are array types, determine the type of array, 
                //   then convert the array to a string for display purposes.
                else if (isArrayType)
                {
                    switch (vtBase)
                    {
                        case VARTYPE.VT_I2:
                            paramValueString = ConvertGenericArrayToString((short[])paramValue);
                            break;
                        case VARTYPE.VT_I4:
                            paramValueString = ConvertGenericArrayToString((int[])paramValue);
                            break;
                        case VARTYPE.VT_R4:
                            paramValueString = ConvertGenericArrayToString((float[])paramValue);
                            break;
                        case VARTYPE.VT_R8:
                            paramValueString = ConvertGenericArrayToString((double[])paramValue);
                            break;
                        case VARTYPE.VT_DATE:
                            paramValueString = ConvertGenericArrayToString((DateTime[])paramValue);
                            break;
                        case VARTYPE.VT_BSTR:
                            paramValueString = ConvertGenericArrayToString((string[])paramValue);
                            break;
                        case VARTYPE.VT_BOOL:
                            paramValueString = ConvertGenericArrayToString((bool[])paramValue);
                            break;
                        default:
                            throw new Exception("Unexpected array base type");
                    }
                }
                else
                    paramValueString = paramValue.ToString();
            }

            return paramValueString;
        }

        /// <summary>
        /// Take generic arrays and convert them to a string
        /// </summary>
        private static string ConvertGenericArrayToString<T>(T[] values)
        {
            string[] sValues = System.Array.ConvertAll(values, p => p.ToString());
            return String.Join(",", sValues);
        }

        /// <summary>
        /// Take string values and convert them to generic arrays
        /// </summary>
        private static T[] ConvertStringToGenericArray<T>(string cellValue)
        {
            List<T> list = new List<T>();

            string[] values = cellValue.Split(',');
            foreach (string value in values)
                list.Add((T)Convert.ChangeType(value, typeof(T)));

            return list.ToArray();
        }

		/// <summary>
		/// Updates the NALayer based on the current controls.
		/// This will update the solver settings for the solver referenced by the NALayer.
		/// </summary>
		private void UpdateNALayer(INALayer naLayer)
		{
			ILayer layer = naLayer as ILayer;
			INAContext naContext = naLayer.Context;
			INetworkDataset networkDataset = naContext.NetworkDataset;
			var naLocator = naContext.Locator as INALocator2;

            INASolver naSolver = naContext.Solver;
			var naSolverSettings = naSolver as INASolverSettings2;
            var naTimeAwareSolverSettings = naSolver as INATimeAwareSolverSettings;

            var routeSolver = naSolver as INARouteSolver2;
			var cfSolver = naSolver as INAClosestFacilitySolver;
			var odSolver = naSolver as INAODCostMatrixSolver;
			var saSolver = naSolver as INAServiceAreaSolver2;
			var vrpSolver = naSolver as INAVRPSolver;
			var laSolver = naSolver as INALocationAllocationSolver;

			// Set Layer properties
			layer.Name = txtLayerName.Text;
			naLocator.MaxSnapTolerance = Convert.ToDouble(txtMaxSearchTolerance.Text);
			naLocator.SnapToleranceUnits = (esriUnits)cboMaxSearchToleranceUnits.SelectedIndex;

            SetAttributeParameters(networkDataset);

			// Set Solver properties
			if (routeSolver != null)  // ROUTE LAYER
			{
				// INARouteSolver
				routeSolver.FindBestSequence = chkRouteFindBestSequence.Checked;
				routeSolver.PreserveFirstStop = chkRoutePreserveFirstStop.Checked;
				routeSolver.PreserveLastStop = chkRoutePreserveLastStop.Checked;
				routeSolver.UseTimeWindows = chkRouteUseTimeWindows.Checked;
				routeSolver.UseStartTime = chkRouteUseStartTime.Checked;
                try 
                {
				    routeSolver.StartTime = System.Convert.ToDateTime(txtRouteStartTime.Text);
                }
                catch (Exception)
                {
                    throw new Exception(@"Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.");
                }
				routeSolver.OutputLines = (esriNAOutputLineType)cboRouteOutputLines.SelectedIndex;

				// INASolverSettings
				naSolverSettings.ImpedanceAttributeName = cboRouteImpedance.Text;
				naSolverSettings.UseHierarchy = chkRouteUseHierarchy.Checked;
				naSolverSettings.IgnoreInvalidLocations = chkRouteIgnoreInvalidLocations.Checked;
				naSolverSettings.RestrictUTurns = (esriNetworkForwardStarBacktrack)cboRouteRestrictUTurns.SelectedIndex;
				naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstRouteAccumulateAttributeNames);
				naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstRouteRestrictionAttributeNames);
			}

			else if (cfSolver != null)  // CLOSEST FACILITY LAYER
			{
				if (txtCFDefaultCutoff.Text.Length == 0)
					cfSolver.DefaultCutoff = null;
				else
					cfSolver.DefaultCutoff = Convert.ToDouble(txtCFDefaultCutoff.Text);

				if (txtCFDefaultTargetFacilityCount.Text.Length == 0)
					cfSolver.DefaultTargetFacilityCount = 1;
				else
					cfSolver.DefaultTargetFacilityCount = Convert.ToInt32(txtCFDefaultTargetFacilityCount.Text);

				cfSolver.TravelDirection = (esriNATravelDirection)cboCFTravelDirection.SelectedIndex;
				cfSolver.OutputLines = (esriNAOutputLineType)cboCFOutputLines.SelectedIndex;

				// INASolverSettings
				naSolverSettings.ImpedanceAttributeName = cboCFImpedance.Text;
				naSolverSettings.UseHierarchy = chkCFUseHierarchy.Checked;
				naSolverSettings.IgnoreInvalidLocations = chkCFIgnoreInvalidLocations.Checked;
				naSolverSettings.RestrictUTurns = (esriNetworkForwardStarBacktrack)cboCFRestrictUTurns.SelectedIndex;
				naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstCFAccumulateAttributeNames);
				naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstCFRestrictionAttributeNames);

                // INATimeAwareSolverSettings
                try
                {
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtCFUseTime.Text);
                }
                catch (Exception)
                {
                    throw new Exception(@"Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.");
                }
                naTimeAwareSolverSettings.TimeOfDayUsage = (esriNATimeOfDayUsage)cboCFTimeUsage.SelectedIndex;
			}

			else if (odSolver != null)  // OD COST MATRIX LAYER
			{
				if (txtODDefaultCutoff.Text.Length == 0)
					odSolver.DefaultCutoff = null;
				else
					odSolver.DefaultCutoff = Convert.ToDouble(txtODDefaultCutoff.Text);

				if (txtODDefaultTargetDestinationCount.Text.Length == 0)
					odSolver.DefaultTargetDestinationCount = null;
				else
					odSolver.DefaultTargetDestinationCount = Convert.ToInt32(txtODDefaultTargetDestinationCount.Text);

				odSolver.OutputLines = (esriNAOutputLineType)cboODOutputLines.SelectedIndex;

				// INASolverSettings
				naSolverSettings.ImpedanceAttributeName = cboODImpedance.Text;
				naSolverSettings.UseHierarchy = chkODUseHierarchy.Checked;
				naSolverSettings.IgnoreInvalidLocations = chkODIgnoreInvalidLocations.Checked;
				naSolverSettings.RestrictUTurns = (esriNetworkForwardStarBacktrack)cboODRestrictUTurns.SelectedIndex;
				naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstODAccumulateAttributeNames);
				naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstODRestrictionAttributeNames);

                // INATimeAwareSolverSettings
                try 
                {
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtODUseTime.Text);
                }
                catch (Exception)
                {
                    throw new Exception(@"Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.");
                }
                if (chkODUseTime.Checked)
                    naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime;
            }

			else if (saSolver != null)  // SERVICE AREA SOLVER
			{
				IDoubleArray defaultBreaks = saSolver.DefaultBreaks;
				defaultBreaks.RemoveAll();
				string breaks = txtSADefaultBreaks.Text.Trim();
				breaks.Replace("  ", " ");
				string[] values = breaks.Split(' ');
				for (int iBreak = values.GetLowerBound(0); iBreak <= values.GetUpperBound(0); iBreak++)
					defaultBreaks.Add(System.Convert.ToDouble(values.GetValue(iBreak)));
				saSolver.DefaultBreaks = defaultBreaks;
				saSolver.TravelDirection = (esriNATravelDirection)cboSATravelDirection.SelectedIndex;

				saSolver.OutputPolygons = (esriNAOutputPolygonType)cboSAOutputPolygons.SelectedIndex;
				saSolver.OverlapPolygons = chkSAOverlapPolygons.Checked;
				saSolver.SplitPolygonsAtBreaks = chkSASplitPolygonsAtBreaks.Checked;
				saSolver.MergeSimilarPolygonRanges = chkSAMergeSimilarPolygonRanges.Checked;
				saSolver.TrimOuterPolygon = chkSATrimOuterPolygon.Checked;
				saSolver.TrimPolygonDistance = Convert.ToDouble(this.txtSATrimPolygonDistance.Text);
				saSolver.TrimPolygonDistanceUnits = (esriUnits)cboSATrimPolygonDistanceUnits.SelectedIndex;

				if (cboSAOutputLines.SelectedIndex == 0)
					saSolver.OutputLines = (esriNAOutputLineType)cboSAOutputLines.SelectedIndex;
				else // Does not support Straight lines, so not in combobox, up by one to account for this
					saSolver.OutputLines = (esriNAOutputLineType)(cboSAOutputLines.SelectedIndex + 1);

				saSolver.OverlapLines = chkSAOverlapLines.Checked;
				saSolver.SplitLinesAtBreaks = chkSASplitLinesAtBreaks.Checked;
				saSolver.IncludeSourceInformationOnLines = this.chkSAIncludeSourceInformationOnLines.Checked;

				// INASolverSettings
				naSolverSettings.ImpedanceAttributeName = cboSAImpedance.Text;
				naSolverSettings.IgnoreInvalidLocations = chkSAIgnoreInvalidLocations.Checked;
				naSolverSettings.RestrictUTurns = (esriNetworkForwardStarBacktrack)cboSARestrictUTurns.SelectedIndex;
				naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstSAAccumulateAttributeNames);
				naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstSARestrictionAttributeNames);

                // INATimeAwareSolverSettings
                try 
                {
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtSAUseTime.Text);
                }
                catch (Exception)
                {
                    throw new Exception(@"Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.");
                }
                if (chkSAUseTime.Checked)
                    naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime;
            }
			else if (vrpSolver != null)
			{
				naSolverSettings.ImpedanceAttributeName = cboVRPTimeAttribute.Text;
				naSolverSettings.AccumulateAttributeNames.RemoveAll();
				IStringArray strArray = naSolverSettings.AccumulateAttributeNames;
				strArray.RemoveAll();
				strArray.Add(cboVRPDistanceAttribute.Text);
				naSolverSettings.AccumulateAttributeNames = strArray;

				vrpSolver.CapacityCount = Convert.ToInt32(txtVRPCapacityCount.Text);
                try 
                {
				    vrpSolver.DefaultDate = Convert.ToDateTime(txtVRPDefaultDate.Text);
                }
                catch (Exception)
                {
                    throw new Exception(@"Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.");
                }
				vrpSolver.TimeFieldUnits = ((esriNetworkAttributeUnits)cboVRPTimeFieldUnits.SelectedIndex) + 20;

				// there cannot be unknown units for a VRP, so the index is offset by 1
				vrpSolver.DistanceFieldUnits = (esriNetworkAttributeUnits)cboVRPDistanceFieldUnits.SelectedIndex + 1;
				naSolverSettings.RestrictUTurns = (esriNetworkForwardStarBacktrack)cboVRPAllowUTurns.SelectedIndex;
				vrpSolver.OutputLines = (esriNAOutputLineType)cboVRPOutputShapeType.SelectedIndex;
				vrpSolver.TimeWindowViolationPenaltyFactor = cboVRPTimeWindow.SelectedIndex;
				vrpSolver.ExcessTransitTimePenaltyFactor = cboVRPTransitTime.SelectedIndex;

				naSolverSettings.UseHierarchy = chkVRPUseHierarchy.Checked;

				naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstVRPRestrictionAttributeNames);
			}
			else if (laSolver != null)  // Location-Allocation LAYER
			{
				if (txtLACutOff.Text.Length == 0)
					laSolver.DefaultCutoff = null;
				else if (Convert.ToDouble(txtLACutOff.Text) == 0.0)
					laSolver.DefaultCutoff = null;
				else
					laSolver.DefaultCutoff = Convert.ToDouble(txtLACutOff.Text);

				if (txtLAFacilitiesToLocate.Text.Length == 0)
					laSolver.NumberFacilitiesToLocate = 1;
				else
					laSolver.NumberFacilitiesToLocate = Convert.ToInt32(txtLAFacilitiesToLocate.Text);

				laSolver.ProblemType = (esriNALocationAllocationProblemType)cboLAProblemType.SelectedIndex;
				laSolver.ImpedanceTransformation = (esriNAImpedanceTransformationType)cboLAImpTransformation.SelectedIndex;
				laSolver.TransformationParameter = Convert.ToDouble(txtLAImpParameter.Text);
				laSolver.TargetMarketSharePercentage = Convert.ToDouble(txtLATargetMarketShare.Text);
				laSolver.TravelDirection = (esriNATravelDirection)cboLATravelDirection.SelectedIndex;
				laSolver.OutputLines = (esriNAOutputLineType)cboLAOutputLines.SelectedIndex;

				//// INASolverSettings
				naSolverSettings.ImpedanceAttributeName = cboLAImpedance.Text;
				naSolverSettings.UseHierarchy = chkLAUseHierarchy.Checked;
				naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstLAAccumulateAttributeNames);
				naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstLARestrictionAttributeNames);
				naSolverSettings.IgnoreInvalidLocations = chkLAIgnoreInvalidLocations.Checked;

                // INATimeAwareSolverSettings
                try 
                {
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtLAUseTime.Text);
                }
                catch (Exception)
                {
                    throw new Exception(@"Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.");
                }
                if (chkLAUseTime.Checked)
                    naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime;
            }
		}

        /// <summary>
        /// Populate the attribute parameter values based on the data grid rows.
        /// </summary>
        private void SetAttributeParameters(INetworkDataset networkDataset)
        {
            var solverSettings = m_naLayer.Context.Solver as INASolverSettings2;

            // The parameter values will be updated for every row in the data grid view
            for (int rowIndex = 0; rowIndex < attributeParameterGrid.Rows.Count; rowIndex++)
            {
                DataGridViewRow row = attributeParameterGrid.Rows[rowIndex];

                // Use the first cell value to find the appropriate network attribute
                var netAttribute = networkDataset.get_AttributeByName(row.Cells[(int)AttributeParameterGridColumnType.ATTRIBUTE_NAME].Value.ToString()) as INetworkAttribute3;
                string attributeName = netAttribute.Name;

                for (int paramIndex = 0; paramIndex < netAttribute.Parameters.Count; paramIndex++)
                {
                    var parameter = netAttribute.Parameters.get_Element(paramIndex) as INetworkAttributeParameter2;
                    string paramName = parameter.Name;
                    try
                    {
                        // Get the base type for the parameter.  For example, if the type is a double array,
                        //  then the base type is double.
                        VARTYPE vt = (VARTYPE)parameter.VarType;
                        VARTYPE vtBase = (VARTYPE)((int)vt & ~(int)VARTYPE.VT_ARRAY);

                        // Determine if the parameter is an array
                        bool isArrayType = (vtBase != vt);

                        // Use the second cell value to find the appropriate parameter
                        if (parameter.Name == row.Cells[(int)AttributeParameterGridColumnType.PARAMETER_NAME].Value.ToString())
                        {
                            object paramValue = System.DBNull.Value;
                            
                            object cellValue = row.Cells[(int)AttributeParameterGridColumnType.PARAMETER_VALUE].Value;                            
                            if (!System.DBNull.Value.Equals(cellValue) && cellValue != null)
                              paramValue = ConvertStringToAttributeParameterValue(cellValue.ToString(), (VARTYPE)parameter.VarType, parameter.ParameterUsageType);
                            
                            solverSettings.set_AttributeParameterValue(attributeName, paramName, paramValue);
                        }
                    }
                    catch (Exception e)
                    {
                        throw new Exception("Invalid attribute parameter value.\nAttribute: " + attributeName + "\nParameter: " + paramName + "\nError Message: " + e.Message);
                    }
                }
            }
        }

        private object ConvertStringToAttributeParameterValue(string paramValueText, VARTYPE paramVarType, esriNetworkAttributeParameterUsageType paramUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral)
        {
            object paramValue = System.DBNull.Value; // Regardless of the VarType, the parameter value can be DBNull

            // Use bitwise arithmetic to determine if this parameter is an array.
            VARTYPE vtBase = (VARTYPE)((int)paramVarType & ~(int)VARTYPE.VT_ARRAY);
            bool isArrayType = (vtBase != paramVarType); 

            if (paramValueText != "")
            {
                // Restriction parameters are specially handled, due to the conversion between displayed text values
                //  and stored double values
                bool isRestrictionParm = (paramUsageType == esriNetworkAttributeParameterUsageType.esriNAPUTRestriction);

                // For restriction parameters that have text values in the list, use the associated double values
                if (isRestrictionParm && m_restrictionParameterValues.ContainsKey(paramValueText))
                    paramValue = m_restrictionParameterValues[paramValueText];

                // For attribute parameters that are array types, determine the type of array, 
                //   then convert the string to the appropriate array type.
                else if (isArrayType)
                {
                    switch (vtBase)
                    {
                        case VARTYPE.VT_I2:
                            paramValue = ConvertStringToGenericArray<short>(paramValueText);
                            break;
                        case VARTYPE.VT_I4:
                            paramValue = ConvertStringToGenericArray<int>(paramValueText);
                            break;
                        case VARTYPE.VT_R4:
                            paramValue = ConvertStringToGenericArray<float>(paramValueText);
                            break;
                        case VARTYPE.VT_R8:
                            paramValue = ConvertStringToGenericArray<double>(paramValueText);
                            break;
                        case VARTYPE.VT_DATE:
                            paramValue = ConvertStringToGenericArray<DateTime>(paramValueText);
                            break;
                        case VARTYPE.VT_BSTR:
                            paramValue = ConvertStringToGenericArray<string>(paramValueText);
                            break;
                        case VARTYPE.VT_BOOL:
                            paramValue = ConvertStringToGenericArray<bool>(paramValueText);
                            break;
                        default:
                            throw new Exception("Unexpected array base type");
                    }
                }
                else // Simple type
                {
                    // Conversion for simple types is handled automatically, if the string can be converted to the VARTYPE
                    paramValue = paramValueText;
                }
            }
            return paramValue;
        }

		/// <summary>
		/// Update the Impedance control based on the network dataset cost attributes
		/// </summary>
		private void PopulateImpedanceNameControl(ComboBox cboImpedance, INetworkDataset networkDataset, string impedanceName)
		{
			cboImpedance.Items.Clear();

			for (int i = 0; i < networkDataset.AttributeCount; i++)
			{
				INetworkAttribute networkAttribute = networkDataset.get_Attribute(i);
				if (networkAttribute.UsageType == esriNetworkAttributeUsageType.esriNAUTCost)
					cboImpedance.Items.Add(networkAttribute.Name);
			}

			if (cboImpedance.Items.Count > 0)
				cboImpedance.Text = impedanceName;
		}

		/// <summary>
		/// Update the CheckedListBox control based on the network dataset attributes (checking the ones currently chosen by the solver)
		/// </summary>
		private void PopulateAttributeControl(CheckedListBox chklstBox, INetworkDataset networkDataset, IStringArray strArray, esriNetworkAttributeUsageType usageType)
		{
			chklstBox.Items.Clear();

			//  Loop through the network dataset attributes
			for (int i = 0; i < networkDataset.AttributeCount; i++)
			{
				var networkAttribute = networkDataset.get_Attribute(i) as INetworkAttribute2;
				if (networkAttribute.UsageType == usageType)
				{
					string attributeName = networkAttribute.Name;
					CheckState checkState = CheckState.Unchecked;

					// If the attribute is in the strArray, it should be checked
					for (int j = 0; j < strArray.Count; j++)
						if (strArray.get_Element(j) == attributeName)
							checkState = CheckState.Checked;

					// Add the attribute to the control
					chklstBox.Items.Add(attributeName, checkState);

				}
			}
		}

		/// <summary>
		/// Returns the attribute names checked.
		/// </summary>
		private IStringArray GetCheckedAttributeNamesFromControl(CheckedListBox chklstBox)
		{
			IStringArray attributeNames = new StrArrayClass();

			for (int i = 0; i < chklstBox.CheckedItems.Count; i++)
				attributeNames.Add(chklstBox.Items[chklstBox.CheckedIndices[i]].ToString());

			return attributeNames;
		}

		/// <summary>
		/// Encapsulates returning an empty string if the object is NULL.
		/// </summary>
		private string GetStringFromObject(object value)
		{
			if (value == null)
				return "";
			else
				return value.ToString();
		}

		private void chkRouteUseStartTime_CheckedChanged(object sender, EventArgs e)
		{
			txtRouteStartTime.Enabled = chkRouteUseStartTime.Checked;
		}

		private void chkRouteFindBestSequence_CheckedChanged(object sender, EventArgs e)
		{
			chkRoutePreserveFirstStop.Enabled = chkRouteFindBestSequence.Checked;
			chkRoutePreserveLastStop.Enabled = chkRouteFindBestSequence.Checked;
		}

		// Enable/Disable SA Polygon controls if not generating polygons
		private void cboSAOutputPolygons_SelectedIndexChanged(object sender, EventArgs e)
		{
			bool bOutputPolygons = (cboSAOutputPolygons.SelectedIndex > 0);
			chkSAOverlapPolygons.Enabled = bOutputPolygons;
			chkSASplitPolygonsAtBreaks.Enabled = bOutputPolygons;
			chkSAMergeSimilarPolygonRanges.Enabled = bOutputPolygons;
			chkSATrimOuterPolygon.Enabled = bOutputPolygons;
			txtSATrimPolygonDistance.Enabled = bOutputPolygons;
			cboSATrimPolygonDistanceUnits.Enabled = bOutputPolygons;
		}

		// Enable/Disable SA Line controls if not generating lines
		private void cboSAOutputLines_SelectedIndexChanged(object sender, EventArgs e)
		{
			bool bOutputLines = (cboSAOutputLines.SelectedIndex > 0);
			chkSAOverlapLines.Enabled = bOutputLines;
			chkSASplitLinesAtBreaks.Enabled = bOutputLines;
			chkSAIncludeSourceInformationOnLines.Enabled = bOutputLines;
		}

		private void cboLAProblemType_SelectedIndexChanged(object sender, EventArgs e)
		{
			if ((cboLAProblemType.SelectedIndex == 5) || (cboLAProblemType.SelectedIndex == 2))
				txtLAFacilitiesToLocate.Enabled = false;
			else
				txtLAFacilitiesToLocate.Enabled = true;

			if (cboLAProblemType.SelectedIndex == 5)
				txtLATargetMarketShare.Enabled = true;
			else
				txtLATargetMarketShare.Enabled = false;
		}

        private void btnOK_Click(object sender, System.EventArgs e)
        {
            m_okClicked = true;

            try
            {
                // Get the NAContext and NetworkDataset
                INAContext naContext = m_naLayer.Context;
                INetworkDataset networkDataset = naContext.NetworkDataset;

                UpdateNALayer(m_naLayer);

                // Update the Context so it can respond to changes made to the solver settings
                IGPMessages gpMessages = new GPMessagesClass();
                IDENetworkDataset deNetworkDataset = ((IDatasetComponent)networkDataset).DataElement as IDENetworkDataset;
                naContext.Solver.UpdateContext(naContext, deNetworkDataset, gpMessages);

                // Only close the form if the update happens successfully
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to update the layer. " + ex.Message);
            }
        }

        private void btnCancel_Click(object sender, System.EventArgs e)
        {
            m_okClicked = false;
            this.Close();
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            INetworkDataset networkDataset = m_naLayer.Context.NetworkDataset;
            var solverSettings = m_naLayer.Context.Solver as INASolverSettings2;

            // The parameter values will be reset for every row in the data grid view
            for (int rowID = 0; rowID < attributeParameterGrid.Rows.Count; rowID++)
            {
                DataGridViewRow row = attributeParameterGrid.Rows[rowID];

                // Use the first cell value to find the appropriate network attribute
                var netAttribute = networkDataset.get_AttributeByName(row.Cells[(int)AttributeParameterGridColumnType.ATTRIBUTE_NAME].Value.ToString()) as INetworkAttribute3;
                IArray attributeParameters = netAttribute.Parameters;
                string attributeName = netAttribute.Name;

                // Check every parameter to find the matching one
                for (int paramIndex = 0; paramIndex < netAttribute.Parameters.Count; paramIndex++)
                {
                    var attributeParameter = attributeParameters.get_Element(paramIndex) as INetworkAttributeParameter2;
                    if (attributeParameter.Name == row.Cells[(int)AttributeParameterGridColumnType.PARAMETER_NAME].Value.ToString())
                    {
                        solverSettings.set_AttributeParameterValue(attributeName, attributeParameter.Name, attributeParameter.DefaultValue);
                        UpdateAttributeParameterValueCell(rowID, attributeParameter.DefaultValue, (VARTYPE)attributeParameter.VarType, attributeParameter.ParameterUsageType);
                    }
                }
            }
        }
	}
}

[Visual Basic .NET]

frmNALayerProperties.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports ESRI.ArcGIS.NetworkAnalyst
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.esriSystem
Imports System.Collections.Generic

' This form allows users to change the NALayer/NAContext/NASolver properties

Namespace NAEngine
	''' <summary>
	''' Summary description for frmNALayerProperties.
	''' </summary>
	Public Class frmNALayerProperties
		Inherits System.Windows.Forms.Form
		#Region "Windows Form Designer generated code (defining controls)"
		''' <summary>
		''' Required designer variable.
		''' </summary>
		Private tabPropPages As TabControl
		Private tabGeneral As TabPage
		Private tabRoute As TabPage
		Private tabServiceArea As TabPage
		Private tabClosestFacility As TabPage
		Private tabODCostMatrix As TabPage
		Private tabVRP As TabPage
		Private WithEvents btnOK As Button
		Private WithEvents btnCancel As Button
		Private chkRouteIgnoreInvalidLocations As CheckBox
		Private cboRouteRestrictUTurns As ComboBox
		Private lblRouteRestrictUTurns As Label
		Private lblRouteAccumulateAttributeNames As Label
		Private chklstRouteAccumulateAttributeNames As CheckedListBox
		Private lblRouteRestrictionAttributeNames As Label
		Private chklstRouteRestrictionAttributeNames As CheckedListBox
		Private cboRouteImpedance As ComboBox
		Private lblRouteImpedance As Label
		Private chkRouteUseHierarchy As CheckBox
		Private labelRouteOutputLines As Label
		Private cboRouteOutputLines As ComboBox
		Private chkRouteUseTimeWindows As CheckBox
		Private chkRoutePreserveLastStop As CheckBox
		Private chkRoutePreserveFirstStop As CheckBox
		Private WithEvents chkRouteFindBestSequence As CheckBox
		Private WithEvents chkRouteUseStartTime As CheckBox
		Private txtRouteStartTime As TextBox
		Private txtLayerName As TextBox
		Private lblLayerName As Label
		Private components As System.ComponentModel.Container = Nothing
		Private cboCFOutputLines As ComboBox
		Private lblCFOutputLines As Label
		Private cboCFTravelDirection As ComboBox
		Private lblCFTravelDirection As Label
		Private txtCFDefaultTargetFacilityCount As TextBox
		Private lblCFDefaultTargetFacilityCount As Label
		Private txtCFDefaultCutoff As TextBox
		Private lblCFDefaultCutoff As Label
		Private chkCFIgnoreInvalidLocations As CheckBox
		Private cboCFRestrictUTurns As ComboBox
		Private lblCFRestrictUTurns As Label
		Private lblCFAccumulateAttributeNames As Label
		Private chklstCFAccumulateAttributeNames As CheckedListBox
		Private lblCFRestrictionAttributeNames As Label
		Private chklstCFRestrictionAttributeNames As CheckedListBox
		Private cboCFImpedance As ComboBox
		Private lblCFImpedance As Label
		Private chkCFUseHierarchy As CheckBox
		Private chkODIgnoreInvalidLocations As CheckBox
		Private cboODRestrictUTurns As ComboBox
		Private lblODRestrictUTurns As Label
		Private lblODAccumulateAttributeNames As Label
		Private chklstODAccumulateAttributeNames As CheckedListBox
		Private lblODRestrictionAttributeNames As Label
		Private chklstODRestrictionAttributeNames As CheckedListBox
		Private cboODImpedance As ComboBox
		Private lblODImpedance As Label
		Private chkODUseHierarchy As CheckBox
		Private cboODOutputLines As ComboBox
		Private lblODOutputLines As Label
		Private txtODDefaultTargetDestinationCount As TextBox
		Private lblODDefaultTargetDestinationCount As Label
		Private txtODDefaultCutoff As TextBox
		Private lblODDefaultCutoff As Label
		Private txtSADefaultBreaks As TextBox
		Private lblSADefaultBreaks As Label
		Private cboSAImpedance As ComboBox
		Private lblSAImpedance As Label
		Private lblSAOutputPolygons As Label
		Private WithEvents cboSAOutputPolygons As ComboBox
		Private lblSAOutputLines As Label
		Private WithEvents cboSAOutputLines As ComboBox
		Private chkSAMergeSimilarPolygonRanges As CheckBox
		Private chkSAIgnoreInvalidLocations As CheckBox
		Private cboSARestrictUTurns As ComboBox
		Private lblSARestrictUTurns As Label
		Private lblSAAccumulateAttributeNames As Label
		Private chklstSAAccumulateAttributeNames As CheckedListBox
		Private lblSARestrictionAttributeNames As Label
		Private chklstSARestrictionAttributeNames As CheckedListBox
		Private chkSAOverlapLines As CheckBox
		Private chkSASplitPolygonsAtBreaks As CheckBox
		Private chkSAOverlapPolygons As CheckBox
		Private chkSASplitLinesAtBreaks As CheckBox
		Private cboSATrimPolygonDistanceUnits As ComboBox
		Private txtSATrimPolygonDistance As TextBox
		Private chkSATrimOuterPolygon As CheckBox
		Private chkSAIncludeSourceInformationOnLines As CheckBox
		Private cboSATravelDirection As ComboBox
		Private lblSATravelDirection As Label
		Private lblMaxSearchTolerance As Label
		Private cboMaxSearchToleranceUnits As ComboBox
		Private gbSettings As GroupBox
		Private chkVRPUseHierarchy As CheckBox
		Private cboVRPOutputShapeType As ComboBox
		Private cboVRPAllowUTurns As ComboBox
		Private cboVRPTimeFieldUnits As ComboBox
		Private txtVRPCapacityCount As TextBox
		Private txtVRPDefaultDate As TextBox
		Private cboVRPDistanceAttribute As ComboBox
		Private cboVRPTimeAttribute As ComboBox
		Private label7 As Label
		Private label6 As Label
		Private label5 As Label
		Private label4 As Label
		Private label3 As Label
		Private label2 As Label
		Private label1 As Label
		Private lblTimeAttribute As Label
		Private gbRestrictions As GroupBox
		Private chklstVRPRestrictionAttributeNames As CheckedListBox
		Private cboVRPTimeWindow As ComboBox
		Private label10 As Label
		Private label9 As Label
		Private cboVRPTransitTime As ComboBox
		Private cboVRPDistanceFieldUnits As ComboBox
		Private tabLocationAllocation As TabPage
		Private lblTargetMarketShare As Label
		Private txtLATargetMarketShare As TextBox
		Private cboLAImpTransformation As ComboBox
		Private lblImpParameter As Label
		Private txtLAImpParameter As TextBox
		Private lblImpTransformation As Label
		Private lblCostAttribute As Label
		Private cboLAImpedance As ComboBox
		Private lblProblemType As Label
		Private WithEvents cboLAProblemType As ComboBox
		Private lblCutOff As Label
		Private txtLACutOff As TextBox
		Private lblNumFacilities As Label
		Private txtLAFacilitiesToLocate As TextBox
		Private cboLAOutputLines As ComboBox
		Private label11 As Label
		Private cboLATravelDirection As ComboBox
		Private label12 As Label
		Private lblLAAccumulateAttributeNames As Label
		Private chklstLAAccumulateAttributeNames As CheckedListBox
		Private lblLARestrictionAttributeNames As Label
		Private chklstLARestrictionAttributeNames As CheckedListBox
		Private chkLAUseHierarchy As CheckBox
		Private grpLASettings As GroupBox
        Private chkLAIgnoreInvalidLocations As CheckBox
        Private WithEvents label13 As System.Windows.Forms.Label
        Private WithEvents label8 As System.Windows.Forms.Label
        Private WithEvents cboCFTimeUsage As System.Windows.Forms.ComboBox
        Private WithEvents txtCFUseTime As System.Windows.Forms.TextBox
        Private WithEvents chkODUseTime As System.Windows.Forms.CheckBox
        Private WithEvents txtODUseTime As System.Windows.Forms.TextBox
        Private WithEvents chkSAUseTime As System.Windows.Forms.CheckBox
        Private WithEvents txtSAUseTime As System.Windows.Forms.TextBox
        Private WithEvents chkLAUseTime As System.Windows.Forms.CheckBox
        Private WithEvents txtLAUseTime As System.Windows.Forms.TextBox
        Friend WithEvents tabAttributeParameters As System.Windows.Forms.TabPage
        Private WithEvents attributeParameterGrid As System.Windows.Forms.DataGridView
        Private WithEvents dgvcAttribute As System.Windows.Forms.DataGridViewTextBoxColumn
        Private WithEvents dgvcParameter As System.Windows.Forms.DataGridViewTextBoxColumn
        Private WithEvents dgvcValue As System.Windows.Forms.DataGridViewTextBoxColumn
        Private WithEvents label14 As System.Windows.Forms.Label
        Private WithEvents btnReset As System.Windows.Forms.Button
        Private txtMaxSearchTolerance As TextBox

#End Region

#Region "Windows Form Designer generated code (InitializeComponent)"
        ''' <summary>
        ''' Required method for Designer support - do not modify
        ''' the contents of this method with the code editor.
        ''' </summary>
        Private Sub InitializeComponent()
            Me.tabPropPages = New System.Windows.Forms.TabControl()
            Me.tabGeneral = New System.Windows.Forms.TabPage()
            Me.lblMaxSearchTolerance = New System.Windows.Forms.Label()
            Me.cboMaxSearchToleranceUnits = New System.Windows.Forms.ComboBox()
            Me.txtMaxSearchTolerance = New System.Windows.Forms.TextBox()
            Me.txtLayerName = New System.Windows.Forms.TextBox()
            Me.lblLayerName = New System.Windows.Forms.Label()
            Me.tabRoute = New System.Windows.Forms.TabPage()
            Me.labelRouteOutputLines = New System.Windows.Forms.Label()
            Me.cboRouteOutputLines = New System.Windows.Forms.ComboBox()
            Me.chkRouteUseTimeWindows = New System.Windows.Forms.CheckBox()
            Me.chkRoutePreserveLastStop = New System.Windows.Forms.CheckBox()
            Me.chkRoutePreserveFirstStop = New System.Windows.Forms.CheckBox()
            Me.chkRouteFindBestSequence = New System.Windows.Forms.CheckBox()
            Me.chkRouteUseStartTime = New System.Windows.Forms.CheckBox()
            Me.txtRouteStartTime = New System.Windows.Forms.TextBox()
            Me.chkRouteIgnoreInvalidLocations = New System.Windows.Forms.CheckBox()
            Me.cboRouteRestrictUTurns = New System.Windows.Forms.ComboBox()
            Me.lblRouteRestrictUTurns = New System.Windows.Forms.Label()
            Me.lblRouteAccumulateAttributeNames = New System.Windows.Forms.Label()
            Me.chklstRouteAccumulateAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.lblRouteRestrictionAttributeNames = New System.Windows.Forms.Label()
            Me.chklstRouteRestrictionAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.cboRouteImpedance = New System.Windows.Forms.ComboBox()
            Me.lblRouteImpedance = New System.Windows.Forms.Label()
            Me.chkRouteUseHierarchy = New System.Windows.Forms.CheckBox()
            Me.tabClosestFacility = New System.Windows.Forms.TabPage()
            Me.label13 = New System.Windows.Forms.Label()
            Me.label8 = New System.Windows.Forms.Label()
            Me.cboCFTimeUsage = New System.Windows.Forms.ComboBox()
            Me.txtCFUseTime = New System.Windows.Forms.TextBox()
            Me.chkCFIgnoreInvalidLocations = New System.Windows.Forms.CheckBox()
            Me.cboCFRestrictUTurns = New System.Windows.Forms.ComboBox()
            Me.lblCFRestrictUTurns = New System.Windows.Forms.Label()
            Me.lblCFAccumulateAttributeNames = New System.Windows.Forms.Label()
            Me.chklstCFAccumulateAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.lblCFRestrictionAttributeNames = New System.Windows.Forms.Label()
            Me.chklstCFRestrictionAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.cboCFImpedance = New System.Windows.Forms.ComboBox()
            Me.lblCFImpedance = New System.Windows.Forms.Label()
            Me.chkCFUseHierarchy = New System.Windows.Forms.CheckBox()
            Me.cboCFOutputLines = New System.Windows.Forms.ComboBox()
            Me.lblCFOutputLines = New System.Windows.Forms.Label()
            Me.cboCFTravelDirection = New System.Windows.Forms.ComboBox()
            Me.lblCFTravelDirection = New System.Windows.Forms.Label()
            Me.txtCFDefaultTargetFacilityCount = New System.Windows.Forms.TextBox()
            Me.lblCFDefaultTargetFacilityCount = New System.Windows.Forms.Label()
            Me.txtCFDefaultCutoff = New System.Windows.Forms.TextBox()
            Me.lblCFDefaultCutoff = New System.Windows.Forms.Label()
            Me.tabODCostMatrix = New System.Windows.Forms.TabPage()
            Me.chkODUseTime = New System.Windows.Forms.CheckBox()
            Me.txtODUseTime = New System.Windows.Forms.TextBox()
            Me.chkODIgnoreInvalidLocations = New System.Windows.Forms.CheckBox()
            Me.cboODRestrictUTurns = New System.Windows.Forms.ComboBox()
            Me.lblODRestrictUTurns = New System.Windows.Forms.Label()
            Me.lblODAccumulateAttributeNames = New System.Windows.Forms.Label()
            Me.chklstODAccumulateAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.lblODRestrictionAttributeNames = New System.Windows.Forms.Label()
            Me.chklstODRestrictionAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.cboODImpedance = New System.Windows.Forms.ComboBox()
            Me.lblODImpedance = New System.Windows.Forms.Label()
            Me.chkODUseHierarchy = New System.Windows.Forms.CheckBox()
            Me.cboODOutputLines = New System.Windows.Forms.ComboBox()
            Me.lblODOutputLines = New System.Windows.Forms.Label()
            Me.txtODDefaultTargetDestinationCount = New System.Windows.Forms.TextBox()
            Me.lblODDefaultTargetDestinationCount = New System.Windows.Forms.Label()
            Me.txtODDefaultCutoff = New System.Windows.Forms.TextBox()
            Me.lblODDefaultCutoff = New System.Windows.Forms.Label()
            Me.tabServiceArea = New System.Windows.Forms.TabPage()
            Me.chkSAUseTime = New System.Windows.Forms.CheckBox()
            Me.txtSAUseTime = New System.Windows.Forms.TextBox()
            Me.cboSATrimPolygonDistanceUnits = New System.Windows.Forms.ComboBox()
            Me.txtSATrimPolygonDistance = New System.Windows.Forms.TextBox()
            Me.chkSATrimOuterPolygon = New System.Windows.Forms.CheckBox()
            Me.chkSAIncludeSourceInformationOnLines = New System.Windows.Forms.CheckBox()
            Me.cboSATravelDirection = New System.Windows.Forms.ComboBox()
            Me.lblSATravelDirection = New System.Windows.Forms.Label()
            Me.chkSASplitPolygonsAtBreaks = New System.Windows.Forms.CheckBox()
            Me.chkSAOverlapPolygons = New System.Windows.Forms.CheckBox()
            Me.chkSASplitLinesAtBreaks = New System.Windows.Forms.CheckBox()
            Me.chkSAOverlapLines = New System.Windows.Forms.CheckBox()
            Me.chkSAIgnoreInvalidLocations = New System.Windows.Forms.CheckBox()
            Me.cboSARestrictUTurns = New System.Windows.Forms.ComboBox()
            Me.lblSARestrictUTurns = New System.Windows.Forms.Label()
            Me.lblSAAccumulateAttributeNames = New System.Windows.Forms.Label()
            Me.chklstSAAccumulateAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.lblSARestrictionAttributeNames = New System.Windows.Forms.Label()
            Me.chklstSARestrictionAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.lblSAOutputPolygons = New System.Windows.Forms.Label()
            Me.cboSAOutputPolygons = New System.Windows.Forms.ComboBox()
            Me.lblSAOutputLines = New System.Windows.Forms.Label()
            Me.cboSAOutputLines = New System.Windows.Forms.ComboBox()
            Me.chkSAMergeSimilarPolygonRanges = New System.Windows.Forms.CheckBox()
            Me.txtSADefaultBreaks = New System.Windows.Forms.TextBox()
            Me.lblSADefaultBreaks = New System.Windows.Forms.Label()
            Me.cboSAImpedance = New System.Windows.Forms.ComboBox()
            Me.lblSAImpedance = New System.Windows.Forms.Label()
            Me.tabVRP = New System.Windows.Forms.TabPage()
            Me.gbRestrictions = New System.Windows.Forms.GroupBox()
            Me.chklstVRPRestrictionAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.gbSettings = New System.Windows.Forms.GroupBox()
            Me.cboVRPDistanceFieldUnits = New System.Windows.Forms.ComboBox()
            Me.cboVRPTransitTime = New System.Windows.Forms.ComboBox()
            Me.cboVRPTimeWindow = New System.Windows.Forms.ComboBox()
            Me.label10 = New System.Windows.Forms.Label()
            Me.label9 = New System.Windows.Forms.Label()
            Me.chkVRPUseHierarchy = New System.Windows.Forms.CheckBox()
            Me.cboVRPOutputShapeType = New System.Windows.Forms.ComboBox()
            Me.cboVRPAllowUTurns = New System.Windows.Forms.ComboBox()
            Me.cboVRPTimeFieldUnits = New System.Windows.Forms.ComboBox()
            Me.txtVRPCapacityCount = New System.Windows.Forms.TextBox()
            Me.txtVRPDefaultDate = New System.Windows.Forms.TextBox()
            Me.cboVRPDistanceAttribute = New System.Windows.Forms.ComboBox()
            Me.cboVRPTimeAttribute = New System.Windows.Forms.ComboBox()
            Me.label7 = New System.Windows.Forms.Label()
            Me.label6 = New System.Windows.Forms.Label()
            Me.label5 = New System.Windows.Forms.Label()
            Me.label4 = New System.Windows.Forms.Label()
            Me.label3 = New System.Windows.Forms.Label()
            Me.label2 = New System.Windows.Forms.Label()
            Me.label1 = New System.Windows.Forms.Label()
            Me.lblTimeAttribute = New System.Windows.Forms.Label()
            Me.tabLocationAllocation = New System.Windows.Forms.TabPage()
            Me.chkLAUseTime = New System.Windows.Forms.CheckBox()
            Me.txtLAUseTime = New System.Windows.Forms.TextBox()
            Me.chkLAIgnoreInvalidLocations = New System.Windows.Forms.CheckBox()
            Me.grpLASettings = New System.Windows.Forms.GroupBox()
            Me.lblTargetMarketShare = New System.Windows.Forms.Label()
            Me.txtLATargetMarketShare = New System.Windows.Forms.TextBox()
            Me.cboLAImpTransformation = New System.Windows.Forms.ComboBox()
            Me.lblImpParameter = New System.Windows.Forms.Label()
            Me.txtLAImpParameter = New System.Windows.Forms.TextBox()
            Me.lblImpTransformation = New System.Windows.Forms.Label()
            Me.lblProblemType = New System.Windows.Forms.Label()
            Me.cboLAProblemType = New System.Windows.Forms.ComboBox()
            Me.lblCutOff = New System.Windows.Forms.Label()
            Me.txtLACutOff = New System.Windows.Forms.TextBox()
            Me.lblNumFacilities = New System.Windows.Forms.Label()
            Me.txtLAFacilitiesToLocate = New System.Windows.Forms.TextBox()
            Me.chkLAUseHierarchy = New System.Windows.Forms.CheckBox()
            Me.lblLAAccumulateAttributeNames = New System.Windows.Forms.Label()
            Me.chklstLAAccumulateAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.lblLARestrictionAttributeNames = New System.Windows.Forms.Label()
            Me.chklstLARestrictionAttributeNames = New System.Windows.Forms.CheckedListBox()
            Me.cboLAOutputLines = New System.Windows.Forms.ComboBox()
            Me.label11 = New System.Windows.Forms.Label()
            Me.cboLATravelDirection = New System.Windows.Forms.ComboBox()
            Me.label12 = New System.Windows.Forms.Label()
            Me.lblCostAttribute = New System.Windows.Forms.Label()
            Me.cboLAImpedance = New System.Windows.Forms.ComboBox()
            Me.tabAttributeParameters = New System.Windows.Forms.TabPage()
            Me.btnReset = New System.Windows.Forms.Button()
            Me.attributeParameterGrid = New System.Windows.Forms.DataGridView()
            Me.dgvcAttribute = New System.Windows.Forms.DataGridViewTextBoxColumn()
            Me.dgvcParameter = New System.Windows.Forms.DataGridViewTextBoxColumn()
            Me.dgvcValue = New System.Windows.Forms.DataGridViewTextBoxColumn()
            Me.label14 = New System.Windows.Forms.Label()
            Me.btnOK = New System.Windows.Forms.Button()
            Me.btnCancel = New System.Windows.Forms.Button()
            Me.tabPropPages.SuspendLayout()
            Me.tabGeneral.SuspendLayout()
            Me.tabRoute.SuspendLayout()
            Me.tabClosestFacility.SuspendLayout()
            Me.tabODCostMatrix.SuspendLayout()
            Me.tabServiceArea.SuspendLayout()
            Me.tabVRP.SuspendLayout()
            Me.gbRestrictions.SuspendLayout()
            Me.gbSettings.SuspendLayout()
            Me.tabLocationAllocation.SuspendLayout()
            Me.grpLASettings.SuspendLayout()
            Me.tabAttributeParameters.SuspendLayout()
            CType(Me.attributeParameterGrid, System.ComponentModel.ISupportInitialize).BeginInit()
            Me.SuspendLayout()
            '
            'tabPropPages
            '
            Me.tabPropPages.Controls.Add(Me.tabGeneral)
            Me.tabPropPages.Controls.Add(Me.tabRoute)
            Me.tabPropPages.Controls.Add(Me.tabClosestFacility)
            Me.tabPropPages.Controls.Add(Me.tabODCostMatrix)
            Me.tabPropPages.Controls.Add(Me.tabServiceArea)
            Me.tabPropPages.Controls.Add(Me.tabVRP)
            Me.tabPropPages.Controls.Add(Me.tabLocationAllocation)
            Me.tabPropPages.Controls.Add(Me.tabAttributeParameters)
            Me.tabPropPages.Location = New System.Drawing.Point(8, 8)
            Me.tabPropPages.Name = "tabPropPages"
            Me.tabPropPages.SelectedIndex = 0
            Me.tabPropPages.Size = New System.Drawing.Size(720, 499)
            Me.tabPropPages.TabIndex = 0
            '
            'tabGeneral
            '
            Me.tabGeneral.Controls.Add(Me.lblMaxSearchTolerance)
            Me.tabGeneral.Controls.Add(Me.cboMaxSearchToleranceUnits)
            Me.tabGeneral.Controls.Add(Me.txtMaxSearchTolerance)
            Me.tabGeneral.Controls.Add(Me.txtLayerName)
            Me.tabGeneral.Controls.Add(Me.lblLayerName)
            Me.tabGeneral.Location = New System.Drawing.Point(4, 22)
            Me.tabGeneral.Name = "tabGeneral"
            Me.tabGeneral.Size = New System.Drawing.Size(712, 473)
            Me.tabGeneral.TabIndex = 0
            Me.tabGeneral.Text = "General"
            Me.tabGeneral.UseVisualStyleBackColor = True
            '
            'lblMaxSearchTolerance
            '
            Me.lblMaxSearchTolerance.Location = New System.Drawing.Point(24, 64)
            Me.lblMaxSearchTolerance.Name = "lblMaxSearchTolerance"
            Me.lblMaxSearchTolerance.Size = New System.Drawing.Size(100, 24)
            Me.lblMaxSearchTolerance.TabIndex = 123
            Me.lblMaxSearchTolerance.Text = "Search Tolerance"
            '
            'cboMaxSearchToleranceUnits
            '
            Me.cboMaxSearchToleranceUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboMaxSearchToleranceUnits.ItemHeight = 13
            Me.cboMaxSearchToleranceUnits.Items.AddRange(New Object() {"Unknown Units", "Inches", "Points", "Feet", "Yards", "Miles", "Nautical Miles", "Millimeters", "Centimeters", "Meters", "Kilometers", "DecimalDegrees", "Decimeters"})
            Me.cboMaxSearchToleranceUnits.Location = New System.Drawing.Point(258, 61)
            Me.cboMaxSearchToleranceUnits.Name = "cboMaxSearchToleranceUnits"
            Me.cboMaxSearchToleranceUnits.Size = New System.Drawing.Size(130, 21)
            Me.cboMaxSearchToleranceUnits.TabIndex = 122
            '
            'txtMaxSearchTolerance
            '
            Me.txtMaxSearchTolerance.Location = New System.Drawing.Point(130, 62)
            Me.txtMaxSearchTolerance.Name = "txtMaxSearchTolerance"
            Me.txtMaxSearchTolerance.Size = New System.Drawing.Size(122, 20)
            Me.txtMaxSearchTolerance.TabIndex = 121
            '
            'txtLayerName
            '
            Me.txtLayerName.Location = New System.Drawing.Point(130, 32)
            Me.txtLayerName.Name = "txtLayerName"
            Me.txtLayerName.Size = New System.Drawing.Size(258, 20)
            Me.txtLayerName.TabIndex = 1
            '
            'lblLayerName
            '
            Me.lblLayerName.Location = New System.Drawing.Point(24, 35)
            Me.lblLayerName.Name = "lblLayerName"
            Me.lblLayerName.Size = New System.Drawing.Size(88, 24)
            Me.lblLayerName.TabIndex = 0
            Me.lblLayerName.Text = "Layer Name"
            '
            'tabRoute
            '
            Me.tabRoute.Controls.Add(Me.labelRouteOutputLines)
            Me.tabRoute.Controls.Add(Me.cboRouteOutputLines)
            Me.tabRoute.Controls.Add(Me.chkRouteUseTimeWindows)
            Me.tabRoute.Controls.Add(Me.chkRoutePreserveLastStop)
            Me.tabRoute.Controls.Add(Me.chkRoutePreserveFirstStop)
            Me.tabRoute.Controls.Add(Me.chkRouteFindBestSequence)
            Me.tabRoute.Controls.Add(Me.chkRouteUseStartTime)
            Me.tabRoute.Controls.Add(Me.txtRouteStartTime)
            Me.tabRoute.Controls.Add(Me.chkRouteIgnoreInvalidLocations)
            Me.tabRoute.Controls.Add(Me.cboRouteRestrictUTurns)
            Me.tabRoute.Controls.Add(Me.lblRouteRestrictUTurns)
            Me.tabRoute.Controls.Add(Me.lblRouteAccumulateAttributeNames)
            Me.tabRoute.Controls.Add(Me.chklstRouteAccumulateAttributeNames)
            Me.tabRoute.Controls.Add(Me.lblRouteRestrictionAttributeNames)
            Me.tabRoute.Controls.Add(Me.chklstRouteRestrictionAttributeNames)
            Me.tabRoute.Controls.Add(Me.cboRouteImpedance)
            Me.tabRoute.Controls.Add(Me.lblRouteImpedance)
            Me.tabRoute.Controls.Add(Me.chkRouteUseHierarchy)
            Me.tabRoute.Location = New System.Drawing.Point(4, 22)
            Me.tabRoute.Name = "tabRoute"
            Me.tabRoute.Size = New System.Drawing.Size(712, 473)
            Me.tabRoute.TabIndex = 1
            Me.tabRoute.Text = "Route"
            Me.tabRoute.UseVisualStyleBackColor = True
            '
            'labelRouteOutputLines
            '
            Me.labelRouteOutputLines.Location = New System.Drawing.Point(20, 209)
            Me.labelRouteOutputLines.Name = "labelRouteOutputLines"
            Me.labelRouteOutputLines.Size = New System.Drawing.Size(40, 16)
            Me.labelRouteOutputLines.TabIndex = 96
            Me.labelRouteOutputLines.Text = "Shape"
            '
            'cboRouteOutputLines
            '
            Me.cboRouteOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboRouteOutputLines.ItemHeight = 13
            Me.cboRouteOutputLines.Items.AddRange(New Object() {"No Lines", "Straight Lines", "True Shape", "True Shape With Measures"})
            Me.cboRouteOutputLines.Location = New System.Drawing.Point(148, 204)
            Me.cboRouteOutputLines.Name = "cboRouteOutputLines"
            Me.cboRouteOutputLines.Size = New System.Drawing.Size(200, 21)
            Me.cboRouteOutputLines.TabIndex = 95
            '
            'chkRouteUseTimeWindows
            '
            Me.chkRouteUseTimeWindows.Location = New System.Drawing.Point(20, 76)
            Me.chkRouteUseTimeWindows.Name = "chkRouteUseTimeWindows"
            Me.chkRouteUseTimeWindows.Size = New System.Drawing.Size(128, 16)
            Me.chkRouteUseTimeWindows.TabIndex = 92
            Me.chkRouteUseTimeWindows.Text = "Use Time Windows"
            '
            'chkRoutePreserveLastStop
            '
            Me.chkRoutePreserveLastStop.Location = New System.Drawing.Point(39, 151)
            Me.chkRoutePreserveLastStop.Name = "chkRoutePreserveLastStop"
            Me.chkRoutePreserveLastStop.Size = New System.Drawing.Size(331, 23)
            Me.chkRoutePreserveLastStop.TabIndex = 91
            Me.chkRoutePreserveLastStop.Text = "Preserve Last Stop"
            '
            'chkRoutePreserveFirstStop
            '
            Me.chkRoutePreserveFirstStop.Location = New System.Drawing.Point(39, 123)
            Me.chkRoutePreserveFirstStop.Name = "chkRoutePreserveFirstStop"
            Me.chkRoutePreserveFirstStop.Size = New System.Drawing.Size(331, 28)
            Me.chkRoutePreserveFirstStop.TabIndex = 90
            Me.chkRoutePreserveFirstStop.Text = "Preserve First Stop"
            '
            'chkRouteFindBestSequence
            '
            Me.chkRouteFindBestSequence.Checked = True
            Me.chkRouteFindBestSequence.CheckState = System.Windows.Forms.CheckState.Checked
            Me.chkRouteFindBestSequence.Location = New System.Drawing.Point(20, 98)
            Me.chkRouteFindBestSequence.Name = "chkRouteFindBestSequence"
            Me.chkRouteFindBestSequence.Size = New System.Drawing.Size(336, 32)
            Me.chkRouteFindBestSequence.TabIndex = 89
            Me.chkRouteFindBestSequence.Text = "Find Best Sequence"
            '
            'chkRouteUseStartTime
            '
            Me.chkRouteUseStartTime.Checked = True
            Me.chkRouteUseStartTime.CheckState = System.Windows.Forms.CheckState.Checked
            Me.chkRouteUseStartTime.Location = New System.Drawing.Point(20, 54)
            Me.chkRouteUseStartTime.Name = "chkRouteUseStartTime"
            Me.chkRouteUseStartTime.Size = New System.Drawing.Size(104, 16)
            Me.chkRouteUseStartTime.TabIndex = 93
            Me.chkRouteUseStartTime.Text = "Use Start Time"
            '
            'txtRouteStartTime
            '
            Me.txtRouteStartTime.Location = New System.Drawing.Point(151, 50)
            Me.txtRouteStartTime.Name = "txtRouteStartTime"
            Me.txtRouteStartTime.Size = New System.Drawing.Size(200, 20)
            Me.txtRouteStartTime.TabIndex = 94
            '
            'chkRouteIgnoreInvalidLocations
            '
            Me.chkRouteIgnoreInvalidLocations.Location = New System.Drawing.Point(20, 252)
            Me.chkRouteIgnoreInvalidLocations.Name = "chkRouteIgnoreInvalidLocations"
            Me.chkRouteIgnoreInvalidLocations.Size = New System.Drawing.Size(144, 29)
            Me.chkRouteIgnoreInvalidLocations.TabIndex = 81
            Me.chkRouteIgnoreInvalidLocations.Text = "Ignore Invalid Locations"
            '
            'cboRouteRestrictUTurns
            '
            Me.cboRouteRestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboRouteRestrictUTurns.ItemHeight = 13
            Me.cboRouteRestrictUTurns.Items.AddRange(New Object() {"No U-Turns", "Allow U-Turns", "Only At Dead Ends"})
            Me.cboRouteRestrictUTurns.Location = New System.Drawing.Point(148, 177)
            Me.cboRouteRestrictUTurns.Name = "cboRouteRestrictUTurns"
            Me.cboRouteRestrictUTurns.Size = New System.Drawing.Size(200, 21)
            Me.cboRouteRestrictUTurns.TabIndex = 80
            '
            'lblRouteRestrictUTurns
            '
            Me.lblRouteRestrictUTurns.Location = New System.Drawing.Point(20, 182)
            Me.lblRouteRestrictUTurns.Name = "lblRouteRestrictUTurns"
            Me.lblRouteRestrictUTurns.Size = New System.Drawing.Size(88, 16)
            Me.lblRouteRestrictUTurns.TabIndex = 88
            Me.lblRouteRestrictUTurns.Text = "UTurn Policy"
            '
            'lblRouteAccumulateAttributeNames
            '
            Me.lblRouteAccumulateAttributeNames.Location = New System.Drawing.Point(236, 284)
            Me.lblRouteAccumulateAttributeNames.Name = "lblRouteAccumulateAttributeNames"
            Me.lblRouteAccumulateAttributeNames.Size = New System.Drawing.Size(120, 16)
            Me.lblRouteAccumulateAttributeNames.TabIndex = 87
            Me.lblRouteAccumulateAttributeNames.Text = "Accumulate Attributes"
            '
            'chklstRouteAccumulateAttributeNames
            '
            Me.chklstRouteAccumulateAttributeNames.CheckOnClick = True
            Me.chklstRouteAccumulateAttributeNames.Location = New System.Drawing.Point(236, 300)
            Me.chklstRouteAccumulateAttributeNames.Name = "chklstRouteAccumulateAttributeNames"
            Me.chklstRouteAccumulateAttributeNames.ScrollAlwaysVisible = True
            Me.chklstRouteAccumulateAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstRouteAccumulateAttributeNames.TabIndex = 84
            '
            'lblRouteRestrictionAttributeNames
            '
            Me.lblRouteRestrictionAttributeNames.Location = New System.Drawing.Point(20, 284)
            Me.lblRouteRestrictionAttributeNames.Name = "lblRouteRestrictionAttributeNames"
            Me.lblRouteRestrictionAttributeNames.Size = New System.Drawing.Size(72, 16)
            Me.lblRouteRestrictionAttributeNames.TabIndex = 86
            Me.lblRouteRestrictionAttributeNames.Text = "Restrictions"
            '
            'chklstRouteRestrictionAttributeNames
            '
            Me.chklstRouteRestrictionAttributeNames.CheckOnClick = True
            Me.chklstRouteRestrictionAttributeNames.Location = New System.Drawing.Point(20, 300)
            Me.chklstRouteRestrictionAttributeNames.Name = "chklstRouteRestrictionAttributeNames"
            Me.chklstRouteRestrictionAttributeNames.ScrollAlwaysVisible = True
            Me.chklstRouteRestrictionAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstRouteRestrictionAttributeNames.TabIndex = 83
            '
            'cboRouteImpedance
            '
            Me.cboRouteImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboRouteImpedance.ItemHeight = 13
            Me.cboRouteImpedance.Location = New System.Drawing.Point(151, 23)
            Me.cboRouteImpedance.Name = "cboRouteImpedance"
            Me.cboRouteImpedance.Size = New System.Drawing.Size(200, 21)
            Me.cboRouteImpedance.TabIndex = 79
            '
            'lblRouteImpedance
            '
            Me.lblRouteImpedance.Location = New System.Drawing.Point(20, 28)
            Me.lblRouteImpedance.Name = "lblRouteImpedance"
            Me.lblRouteImpedance.Size = New System.Drawing.Size(64, 16)
            Me.lblRouteImpedance.TabIndex = 85
            Me.lblRouteImpedance.Text = "Impedance"
            '
            'chkRouteUseHierarchy
            '
            Me.chkRouteUseHierarchy.Location = New System.Drawing.Point(20, 228)
            Me.chkRouteUseHierarchy.Name = "chkRouteUseHierarchy"
            Me.chkRouteUseHierarchy.Size = New System.Drawing.Size(96, 26)
            Me.chkRouteUseHierarchy.TabIndex = 82
            Me.chkRouteUseHierarchy.Text = "Use Hierarchy"
            '
            'tabClosestFacility
            '
            Me.tabClosestFacility.Controls.Add(Me.label13)
            Me.tabClosestFacility.Controls.Add(Me.label8)
            Me.tabClosestFacility.Controls.Add(Me.cboCFTimeUsage)
            Me.tabClosestFacility.Controls.Add(Me.txtCFUseTime)
            Me.tabClosestFacility.Controls.Add(Me.chkCFIgnoreInvalidLocations)
            Me.tabClosestFacility.Controls.Add(Me.cboCFRestrictUTurns)
            Me.tabClosestFacility.Controls.Add(Me.lblCFRestrictUTurns)
            Me.tabClosestFacility.Controls.Add(Me.lblCFAccumulateAttributeNames)
            Me.tabClosestFacility.Controls.Add(Me.chklstCFAccumulateAttributeNames)
            Me.tabClosestFacility.Controls.Add(Me.lblCFRestrictionAttributeNames)
            Me.tabClosestFacility.Controls.Add(Me.chklstCFRestrictionAttributeNames)
            Me.tabClosestFacility.Controls.Add(Me.cboCFImpedance)
            Me.tabClosestFacility.Controls.Add(Me.lblCFImpedance)
            Me.tabClosestFacility.Controls.Add(Me.chkCFUseHierarchy)
            Me.tabClosestFacility.Controls.Add(Me.cboCFOutputLines)
            Me.tabClosestFacility.Controls.Add(Me.lblCFOutputLines)
            Me.tabClosestFacility.Controls.Add(Me.cboCFTravelDirection)
            Me.tabClosestFacility.Controls.Add(Me.lblCFTravelDirection)
            Me.tabClosestFacility.Controls.Add(Me.txtCFDefaultTargetFacilityCount)
            Me.tabClosestFacility.Controls.Add(Me.lblCFDefaultTargetFacilityCount)
            Me.tabClosestFacility.Controls.Add(Me.txtCFDefaultCutoff)
            Me.tabClosestFacility.Controls.Add(Me.lblCFDefaultCutoff)
            Me.tabClosestFacility.Location = New System.Drawing.Point(4, 22)
            Me.tabClosestFacility.Name = "tabClosestFacility"
            Me.tabClosestFacility.Size = New System.Drawing.Size(712, 473)
            Me.tabClosestFacility.TabIndex = 3
            Me.tabClosestFacility.Text = "Closest Facility"
            Me.tabClosestFacility.UseVisualStyleBackColor = True
            '
            'label13
            '
            Me.label13.Location = New System.Drawing.Point(20, 77)
            Me.label13.Name = "label13"
            Me.label13.Size = New System.Drawing.Size(114, 16)
            Me.label13.TabIndex = 121
            Me.label13.Text = "Time"
            '
            'label8
            '
            Me.label8.Location = New System.Drawing.Point(20, 51)
            Me.label8.Name = "label8"
            Me.label8.Size = New System.Drawing.Size(114, 16)
            Me.label8.TabIndex = 120
            Me.label8.Text = "Time Usage"
            '
            'cboCFTimeUsage
            '
            Me.cboCFTimeUsage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboCFTimeUsage.ItemHeight = 13
            Me.cboCFTimeUsage.Items.AddRange(New Object() {"Not used", "End time", "Start time"})
            Me.cboCFTimeUsage.Location = New System.Drawing.Point(151, 48)
            Me.cboCFTimeUsage.Name = "cboCFTimeUsage"
            Me.cboCFTimeUsage.Size = New System.Drawing.Size(200, 21)
            Me.cboCFTimeUsage.TabIndex = 119
            '
            'txtCFUseTime
            '
            Me.txtCFUseTime.Location = New System.Drawing.Point(151, 74)
            Me.txtCFUseTime.Name = "txtCFUseTime"
            Me.txtCFUseTime.Size = New System.Drawing.Size(200, 20)
            Me.txtCFUseTime.TabIndex = 118
            '
            'chkCFIgnoreInvalidLocations
            '
            Me.chkCFIgnoreInvalidLocations.Location = New System.Drawing.Point(20, 269)
            Me.chkCFIgnoreInvalidLocations.Name = "chkCFIgnoreInvalidLocations"
            Me.chkCFIgnoreInvalidLocations.Size = New System.Drawing.Size(144, 29)
            Me.chkCFIgnoreInvalidLocations.TabIndex = 105
            Me.chkCFIgnoreInvalidLocations.Text = "Ignore Invalid Locations"
            '
            'cboCFRestrictUTurns
            '
            Me.cboCFRestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboCFRestrictUTurns.ItemHeight = 13
            Me.cboCFRestrictUTurns.Items.AddRange(New Object() {"No U-Turns", "Allow U-Turns", "Only At Dead Ends"})
            Me.cboCFRestrictUTurns.Location = New System.Drawing.Point(151, 178)
            Me.cboCFRestrictUTurns.Name = "cboCFRestrictUTurns"
            Me.cboCFRestrictUTurns.Size = New System.Drawing.Size(200, 21)
            Me.cboCFRestrictUTurns.TabIndex = 104
            '
            'lblCFRestrictUTurns
            '
            Me.lblCFRestrictUTurns.Location = New System.Drawing.Point(20, 183)
            Me.lblCFRestrictUTurns.Name = "lblCFRestrictUTurns"
            Me.lblCFRestrictUTurns.Size = New System.Drawing.Size(88, 16)
            Me.lblCFRestrictUTurns.TabIndex = 112
            Me.lblCFRestrictUTurns.Text = "UTurn Policy"
            '
            'lblCFAccumulateAttributeNames
            '
            Me.lblCFAccumulateAttributeNames.Location = New System.Drawing.Point(236, 301)
            Me.lblCFAccumulateAttributeNames.Name = "lblCFAccumulateAttributeNames"
            Me.lblCFAccumulateAttributeNames.Size = New System.Drawing.Size(120, 16)
            Me.lblCFAccumulateAttributeNames.TabIndex = 111
            Me.lblCFAccumulateAttributeNames.Text = "Accumulate Attributes"
            '
            'chklstCFAccumulateAttributeNames
            '
            Me.chklstCFAccumulateAttributeNames.CheckOnClick = True
            Me.chklstCFAccumulateAttributeNames.Location = New System.Drawing.Point(236, 317)
            Me.chklstCFAccumulateAttributeNames.Name = "chklstCFAccumulateAttributeNames"
            Me.chklstCFAccumulateAttributeNames.ScrollAlwaysVisible = True
            Me.chklstCFAccumulateAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstCFAccumulateAttributeNames.TabIndex = 108
            '
            'lblCFRestrictionAttributeNames
            '
            Me.lblCFRestrictionAttributeNames.Location = New System.Drawing.Point(20, 301)
            Me.lblCFRestrictionAttributeNames.Name = "lblCFRestrictionAttributeNames"
            Me.lblCFRestrictionAttributeNames.Size = New System.Drawing.Size(72, 16)
            Me.lblCFRestrictionAttributeNames.TabIndex = 110
            Me.lblCFRestrictionAttributeNames.Text = "Restrictions"
            '
            'chklstCFRestrictionAttributeNames
            '
            Me.chklstCFRestrictionAttributeNames.CheckOnClick = True
            Me.chklstCFRestrictionAttributeNames.Location = New System.Drawing.Point(20, 317)
            Me.chklstCFRestrictionAttributeNames.Name = "chklstCFRestrictionAttributeNames"
            Me.chklstCFRestrictionAttributeNames.ScrollAlwaysVisible = True
            Me.chklstCFRestrictionAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstCFRestrictionAttributeNames.TabIndex = 107
            '
            'cboCFImpedance
            '
            Me.cboCFImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboCFImpedance.ItemHeight = 13
            Me.cboCFImpedance.Location = New System.Drawing.Point(151, 23)
            Me.cboCFImpedance.Name = "cboCFImpedance"
            Me.cboCFImpedance.Size = New System.Drawing.Size(200, 21)
            Me.cboCFImpedance.TabIndex = 103
            '
            'lblCFImpedance
            '
            Me.lblCFImpedance.Location = New System.Drawing.Point(20, 28)
            Me.lblCFImpedance.Name = "lblCFImpedance"
            Me.lblCFImpedance.Size = New System.Drawing.Size(64, 16)
            Me.lblCFImpedance.TabIndex = 109
            Me.lblCFImpedance.Text = "Impedance"
            '
            'chkCFUseHierarchy
            '
            Me.chkCFUseHierarchy.Location = New System.Drawing.Point(20, 237)
            Me.chkCFUseHierarchy.Name = "chkCFUseHierarchy"
            Me.chkCFUseHierarchy.Size = New System.Drawing.Size(96, 26)
            Me.chkCFUseHierarchy.TabIndex = 106
            Me.chkCFUseHierarchy.Text = "Use Hierarchy"
            '
            'cboCFOutputLines
            '
            Me.cboCFOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboCFOutputLines.ItemHeight = 13
            Me.cboCFOutputLines.Items.AddRange(New Object() {"No Lines", "Straight Lines", "True Shape", "True Shape With Measures"})
            Me.cboCFOutputLines.Location = New System.Drawing.Point(151, 205)
            Me.cboCFOutputLines.Name = "cboCFOutputLines"
            Me.cboCFOutputLines.Size = New System.Drawing.Size(200, 21)
            Me.cboCFOutputLines.TabIndex = 101
            '
            'lblCFOutputLines
            '
            Me.lblCFOutputLines.Location = New System.Drawing.Point(20, 210)
            Me.lblCFOutputLines.Name = "lblCFOutputLines"
            Me.lblCFOutputLines.Size = New System.Drawing.Size(114, 16)
            Me.lblCFOutputLines.TabIndex = 102
            Me.lblCFOutputLines.Text = "Shape"
            '
            'cboCFTravelDirection
            '
            Me.cboCFTravelDirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboCFTravelDirection.ItemHeight = 13
            Me.cboCFTravelDirection.Items.AddRange(New Object() {"From Facility", "To Facility"})
            Me.cboCFTravelDirection.Location = New System.Drawing.Point(151, 151)
            Me.cboCFTravelDirection.Name = "cboCFTravelDirection"
            Me.cboCFTravelDirection.Size = New System.Drawing.Size(200, 21)
            Me.cboCFTravelDirection.TabIndex = 99
            '
            'lblCFTravelDirection
            '
            Me.lblCFTravelDirection.Location = New System.Drawing.Point(20, 156)
            Me.lblCFTravelDirection.Name = "lblCFTravelDirection"
            Me.lblCFTravelDirection.Size = New System.Drawing.Size(114, 16)
            Me.lblCFTravelDirection.TabIndex = 100
            Me.lblCFTravelDirection.Text = "Travel Direction"
            '
            'txtCFDefaultTargetFacilityCount
            '
            Me.txtCFDefaultTargetFacilityCount.Location = New System.Drawing.Point(151, 125)
            Me.txtCFDefaultTargetFacilityCount.Name = "txtCFDefaultTargetFacilityCount"
            Me.txtCFDefaultTargetFacilityCount.Size = New System.Drawing.Size(200, 20)
            Me.txtCFDefaultTargetFacilityCount.TabIndex = 98
            '
            'lblCFDefaultTargetFacilityCount
            '
            Me.lblCFDefaultTargetFacilityCount.Location = New System.Drawing.Point(20, 129)
            Me.lblCFDefaultTargetFacilityCount.Name = "lblCFDefaultTargetFacilityCount"
            Me.lblCFDefaultTargetFacilityCount.Size = New System.Drawing.Size(114, 16)
            Me.lblCFDefaultTargetFacilityCount.TabIndex = 97
            Me.lblCFDefaultTargetFacilityCount.Text = "Number of Facilities"
            '
            'txtCFDefaultCutoff
            '
            Me.txtCFDefaultCutoff.Location = New System.Drawing.Point(151, 99)
            Me.txtCFDefaultCutoff.Name = "txtCFDefaultCutoff"
            Me.txtCFDefaultCutoff.Size = New System.Drawing.Size(200, 20)
            Me.txtCFDefaultCutoff.TabIndex = 96
            '
            'lblCFDefaultCutoff
            '
            Me.lblCFDefaultCutoff.Location = New System.Drawing.Point(20, 103)
            Me.lblCFDefaultCutoff.Name = "lblCFDefaultCutoff"
            Me.lblCFDefaultCutoff.Size = New System.Drawing.Size(114, 16)
            Me.lblCFDefaultCutoff.TabIndex = 95
            Me.lblCFDefaultCutoff.Text = "Default Cutoff"
            '
            'tabODCostMatrix
            '
            Me.tabODCostMatrix.Controls.Add(Me.chkODUseTime)
            Me.tabODCostMatrix.Controls.Add(Me.txtODUseTime)
            Me.tabODCostMatrix.Controls.Add(Me.chkODIgnoreInvalidLocations)
            Me.tabODCostMatrix.Controls.Add(Me.cboODRestrictUTurns)
            Me.tabODCostMatrix.Controls.Add(Me.lblODRestrictUTurns)
            Me.tabODCostMatrix.Controls.Add(Me.lblODAccumulateAttributeNames)
            Me.tabODCostMatrix.Controls.Add(Me.chklstODAccumulateAttributeNames)
            Me.tabODCostMatrix.Controls.Add(Me.lblODRestrictionAttributeNames)
            Me.tabODCostMatrix.Controls.Add(Me.chklstODRestrictionAttributeNames)
            Me.tabODCostMatrix.Controls.Add(Me.cboODImpedance)
            Me.tabODCostMatrix.Controls.Add(Me.lblODImpedance)
            Me.tabODCostMatrix.Controls.Add(Me.chkODUseHierarchy)
            Me.tabODCostMatrix.Controls.Add(Me.cboODOutputLines)
            Me.tabODCostMatrix.Controls.Add(Me.lblODOutputLines)
            Me.tabODCostMatrix.Controls.Add(Me.txtODDefaultTargetDestinationCount)
            Me.tabODCostMatrix.Controls.Add(Me.lblODDefaultTargetDestinationCount)
            Me.tabODCostMatrix.Controls.Add(Me.txtODDefaultCutoff)
            Me.tabODCostMatrix.Controls.Add(Me.lblODDefaultCutoff)
            Me.tabODCostMatrix.Location = New System.Drawing.Point(4, 22)
            Me.tabODCostMatrix.Name = "tabODCostMatrix"
            Me.tabODCostMatrix.Size = New System.Drawing.Size(712, 473)
            Me.tabODCostMatrix.TabIndex = 4
            Me.tabODCostMatrix.Text = "Origin-Destination Cost Matrix"
            Me.tabODCostMatrix.UseVisualStyleBackColor = True
            '
            'chkODUseTime
            '
            Me.chkODUseTime.Location = New System.Drawing.Point(20, 50)
            Me.chkODUseTime.Name = "chkODUseTime"
            Me.chkODUseTime.Size = New System.Drawing.Size(104, 16)
            Me.chkODUseTime.TabIndex = 133
            Me.chkODUseTime.Text = "Use Time"
            '
            'txtODUseTime
            '
            Me.txtODUseTime.Location = New System.Drawing.Point(151, 46)
            Me.txtODUseTime.Name = "txtODUseTime"
            Me.txtODUseTime.Size = New System.Drawing.Size(200, 20)
            Me.txtODUseTime.TabIndex = 134
            '
            'chkODIgnoreInvalidLocations
            '
            Me.chkODIgnoreInvalidLocations.Location = New System.Drawing.Point(20, 216)
            Me.chkODIgnoreInvalidLocations.Name = "chkODIgnoreInvalidLocations"
            Me.chkODIgnoreInvalidLocations.Size = New System.Drawing.Size(144, 29)
            Me.chkODIgnoreInvalidLocations.TabIndex = 123
            Me.chkODIgnoreInvalidLocations.Text = "Ignore Invalid Locations"
            '
            'cboODRestrictUTurns
            '
            Me.cboODRestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboODRestrictUTurns.ItemHeight = 13
            Me.cboODRestrictUTurns.Items.AddRange(New Object() {"No U-Turns", "Allow U-Turns", "Only At Dead Ends"})
            Me.cboODRestrictUTurns.Location = New System.Drawing.Point(151, 125)
            Me.cboODRestrictUTurns.Name = "cboODRestrictUTurns"
            Me.cboODRestrictUTurns.Size = New System.Drawing.Size(200, 21)
            Me.cboODRestrictUTurns.TabIndex = 122
            '
            'lblODRestrictUTurns
            '
            Me.lblODRestrictUTurns.Location = New System.Drawing.Point(20, 130)
            Me.lblODRestrictUTurns.Name = "lblODRestrictUTurns"
            Me.lblODRestrictUTurns.Size = New System.Drawing.Size(88, 16)
            Me.lblODRestrictUTurns.TabIndex = 130
            Me.lblODRestrictUTurns.Text = "UTurn Policy"
            '
            'lblODAccumulateAttributeNames
            '
            Me.lblODAccumulateAttributeNames.Location = New System.Drawing.Point(236, 248)
            Me.lblODAccumulateAttributeNames.Name = "lblODAccumulateAttributeNames"
            Me.lblODAccumulateAttributeNames.Size = New System.Drawing.Size(120, 16)
            Me.lblODAccumulateAttributeNames.TabIndex = 129
            Me.lblODAccumulateAttributeNames.Text = "Accumulate Attributes"
            '
            'chklstODAccumulateAttributeNames
            '
            Me.chklstODAccumulateAttributeNames.CheckOnClick = True
            Me.chklstODAccumulateAttributeNames.Location = New System.Drawing.Point(236, 264)
            Me.chklstODAccumulateAttributeNames.Name = "chklstODAccumulateAttributeNames"
            Me.chklstODAccumulateAttributeNames.ScrollAlwaysVisible = True
            Me.chklstODAccumulateAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstODAccumulateAttributeNames.TabIndex = 126
            '
            'lblODRestrictionAttributeNames
            '
            Me.lblODRestrictionAttributeNames.Location = New System.Drawing.Point(20, 248)
            Me.lblODRestrictionAttributeNames.Name = "lblODRestrictionAttributeNames"
            Me.lblODRestrictionAttributeNames.Size = New System.Drawing.Size(72, 16)
            Me.lblODRestrictionAttributeNames.TabIndex = 128
            Me.lblODRestrictionAttributeNames.Text = "Restrictions"
            '
            'chklstODRestrictionAttributeNames
            '
            Me.chklstODRestrictionAttributeNames.CheckOnClick = True
            Me.chklstODRestrictionAttributeNames.Location = New System.Drawing.Point(20, 264)
            Me.chklstODRestrictionAttributeNames.Name = "chklstODRestrictionAttributeNames"
            Me.chklstODRestrictionAttributeNames.ScrollAlwaysVisible = True
            Me.chklstODRestrictionAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstODRestrictionAttributeNames.TabIndex = 125
            '
            'cboODImpedance
            '
            Me.cboODImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboODImpedance.ItemHeight = 13
            Me.cboODImpedance.Location = New System.Drawing.Point(151, 23)
            Me.cboODImpedance.Name = "cboODImpedance"
            Me.cboODImpedance.Size = New System.Drawing.Size(200, 21)
            Me.cboODImpedance.TabIndex = 121
            '
            'lblODImpedance
            '
            Me.lblODImpedance.Location = New System.Drawing.Point(20, 28)
            Me.lblODImpedance.Name = "lblODImpedance"
            Me.lblODImpedance.Size = New System.Drawing.Size(64, 16)
            Me.lblODImpedance.TabIndex = 127
            Me.lblODImpedance.Text = "Impedance"
            '
            'chkODUseHierarchy
            '
            Me.chkODUseHierarchy.Location = New System.Drawing.Point(20, 184)
            Me.chkODUseHierarchy.Name = "chkODUseHierarchy"
            Me.chkODUseHierarchy.Size = New System.Drawing.Size(96, 26)
            Me.chkODUseHierarchy.TabIndex = 124
            Me.chkODUseHierarchy.Text = "Use Hierarchy"
            '
            'cboODOutputLines
            '
            Me.cboODOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboODOutputLines.ItemHeight = 13
            Me.cboODOutputLines.Items.AddRange(New Object() {"No Lines", "Straight Lines"})
            Me.cboODOutputLines.Location = New System.Drawing.Point(151, 152)
            Me.cboODOutputLines.Name = "cboODOutputLines"
            Me.cboODOutputLines.Size = New System.Drawing.Size(200, 21)
            Me.cboODOutputLines.TabIndex = 119
            '
            'lblODOutputLines
            '
            Me.lblODOutputLines.Location = New System.Drawing.Point(20, 157)
            Me.lblODOutputLines.Name = "lblODOutputLines"
            Me.lblODOutputLines.Size = New System.Drawing.Size(114, 16)
            Me.lblODOutputLines.TabIndex = 120
            Me.lblODOutputLines.Text = "Shape"
            '
            'txtODDefaultTargetDestinationCount
            '
            Me.txtODDefaultTargetDestinationCount.Location = New System.Drawing.Point(151, 96)
            Me.txtODDefaultTargetDestinationCount.Name = "txtODDefaultTargetDestinationCount"
            Me.txtODDefaultTargetDestinationCount.Size = New System.Drawing.Size(200, 20)
            Me.txtODDefaultTargetDestinationCount.TabIndex = 116
            '
            'lblODDefaultTargetDestinationCount
            '
            Me.lblODDefaultTargetDestinationCount.Location = New System.Drawing.Point(20, 100)
            Me.lblODDefaultTargetDestinationCount.Name = "lblODDefaultTargetDestinationCount"
            Me.lblODDefaultTargetDestinationCount.Size = New System.Drawing.Size(125, 16)
            Me.lblODDefaultTargetDestinationCount.TabIndex = 115
            Me.lblODDefaultTargetDestinationCount.Text = "Number of Destinations"
            '
            'txtODDefaultCutoff
            '
            Me.txtODDefaultCutoff.Location = New System.Drawing.Point(151, 70)
            Me.txtODDefaultCutoff.Name = "txtODDefaultCutoff"
            Me.txtODDefaultCutoff.Size = New System.Drawing.Size(200, 20)
            Me.txtODDefaultCutoff.TabIndex = 114
            '
            'lblODDefaultCutoff
            '
            Me.lblODDefaultCutoff.Location = New System.Drawing.Point(20, 74)
            Me.lblODDefaultCutoff.Name = "lblODDefaultCutoff"
            Me.lblODDefaultCutoff.Size = New System.Drawing.Size(114, 16)
            Me.lblODDefaultCutoff.TabIndex = 113
            Me.lblODDefaultCutoff.Text = "Default Cutoff"
            '
            'tabServiceArea
            '
            Me.tabServiceArea.Controls.Add(Me.chkSAUseTime)
            Me.tabServiceArea.Controls.Add(Me.txtSAUseTime)
            Me.tabServiceArea.Controls.Add(Me.cboSATrimPolygonDistanceUnits)
            Me.tabServiceArea.Controls.Add(Me.txtSATrimPolygonDistance)
            Me.tabServiceArea.Controls.Add(Me.chkSATrimOuterPolygon)
            Me.tabServiceArea.Controls.Add(Me.chkSAIncludeSourceInformationOnLines)
            Me.tabServiceArea.Controls.Add(Me.cboSATravelDirection)
            Me.tabServiceArea.Controls.Add(Me.lblSATravelDirection)
            Me.tabServiceArea.Controls.Add(Me.chkSASplitPolygonsAtBreaks)
            Me.tabServiceArea.Controls.Add(Me.chkSAOverlapPolygons)
            Me.tabServiceArea.Controls.Add(Me.chkSASplitLinesAtBreaks)
            Me.tabServiceArea.Controls.Add(Me.chkSAOverlapLines)
            Me.tabServiceArea.Controls.Add(Me.chkSAIgnoreInvalidLocations)
            Me.tabServiceArea.Controls.Add(Me.cboSARestrictUTurns)
            Me.tabServiceArea.Controls.Add(Me.lblSARestrictUTurns)
            Me.tabServiceArea.Controls.Add(Me.lblSAAccumulateAttributeNames)
            Me.tabServiceArea.Controls.Add(Me.chklstSAAccumulateAttributeNames)
            Me.tabServiceArea.Controls.Add(Me.lblSARestrictionAttributeNames)
            Me.tabServiceArea.Controls.Add(Me.chklstSARestrictionAttributeNames)
            Me.tabServiceArea.Controls.Add(Me.lblSAOutputPolygons)
            Me.tabServiceArea.Controls.Add(Me.cboSAOutputPolygons)
            Me.tabServiceArea.Controls.Add(Me.lblSAOutputLines)
            Me.tabServiceArea.Controls.Add(Me.cboSAOutputLines)
            Me.tabServiceArea.Controls.Add(Me.chkSAMergeSimilarPolygonRanges)
            Me.tabServiceArea.Controls.Add(Me.txtSADefaultBreaks)
            Me.tabServiceArea.Controls.Add(Me.lblSADefaultBreaks)
            Me.tabServiceArea.Controls.Add(Me.cboSAImpedance)
            Me.tabServiceArea.Controls.Add(Me.lblSAImpedance)
            Me.tabServiceArea.Location = New System.Drawing.Point(4, 22)
            Me.tabServiceArea.Name = "tabServiceArea"
            Me.tabServiceArea.Size = New System.Drawing.Size(712, 473)
            Me.tabServiceArea.TabIndex = 2
            Me.tabServiceArea.Text = "Service Area"
            Me.tabServiceArea.UseVisualStyleBackColor = True
            '
            'chkSAUseTime
            '
            Me.chkSAUseTime.Location = New System.Drawing.Point(20, 51)
            Me.chkSAUseTime.Name = "chkSAUseTime"
            Me.chkSAUseTime.Size = New System.Drawing.Size(104, 16)
            Me.chkSAUseTime.TabIndex = 135
            Me.chkSAUseTime.Text = "Use Time"
            '
            'txtSAUseTime
            '
            Me.txtSAUseTime.Location = New System.Drawing.Point(151, 47)
            Me.txtSAUseTime.Name = "txtSAUseTime"
            Me.txtSAUseTime.Size = New System.Drawing.Size(200, 20)
            Me.txtSAUseTime.TabIndex = 136
            '
            'cboSATrimPolygonDistanceUnits
            '
            Me.cboSATrimPolygonDistanceUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboSATrimPolygonDistanceUnits.ItemHeight = 13
            Me.cboSATrimPolygonDistanceUnits.Items.AddRange(New Object() {"Unknown Units", "Inches", "Points", "Feet", "Yards", "Miles", "Nautical Miles", "Millimeters", "Centimeters", "Meters", "Kilometers", "DecimalDegrees", "Decimeters"})
            Me.cboSATrimPolygonDistanceUnits.Location = New System.Drawing.Point(241, 173)
            Me.cboSATrimPolygonDistanceUnits.Name = "cboSATrimPolygonDistanceUnits"
            Me.cboSATrimPolygonDistanceUnits.Size = New System.Drawing.Size(110, 21)
            Me.cboSATrimPolygonDistanceUnits.TabIndex = 120
            '
            'txtSATrimPolygonDistance
            '
            Me.txtSATrimPolygonDistance.Location = New System.Drawing.Point(169, 174)
            Me.txtSATrimPolygonDistance.Name = "txtSATrimPolygonDistance"
            Me.txtSATrimPolygonDistance.Size = New System.Drawing.Size(66, 20)
            Me.txtSATrimPolygonDistance.TabIndex = 119
            '
            'chkSATrimOuterPolygon
            '
            Me.chkSATrimOuterPolygon.Location = New System.Drawing.Point(41, 174)
            Me.chkSATrimOuterPolygon.Name = "chkSATrimOuterPolygon"
            Me.chkSATrimOuterPolygon.Size = New System.Drawing.Size(122, 22)
            Me.chkSATrimOuterPolygon.TabIndex = 118
            Me.chkSATrimOuterPolygon.Text = "Trim Outer Polygon"
            '
            'chkSAIncludeSourceInformationOnLines
            '
            Me.chkSAIncludeSourceInformationOnLines.Location = New System.Drawing.Point(329, 229)
            Me.chkSAIncludeSourceInformationOnLines.Name = "chkSAIncludeSourceInformationOnLines"
            Me.chkSAIncludeSourceInformationOnLines.Size = New System.Drawing.Size(215, 22)
            Me.chkSAIncludeSourceInformationOnLines.TabIndex = 117
            Me.chkSAIncludeSourceInformationOnLines.Text = "Include Source Information On Lines"
            '
            'cboSATravelDirection
            '
            Me.cboSATravelDirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboSATravelDirection.ItemHeight = 13
            Me.cboSATravelDirection.Items.AddRange(New Object() {"From Facility", "To Facility"})
            Me.cboSATravelDirection.Location = New System.Drawing.Point(151, 95)
            Me.cboSATravelDirection.Name = "cboSATravelDirection"
            Me.cboSATravelDirection.Size = New System.Drawing.Size(200, 21)
            Me.cboSATravelDirection.TabIndex = 115
            '
            'lblSATravelDirection
            '
            Me.lblSATravelDirection.Location = New System.Drawing.Point(20, 100)
            Me.lblSATravelDirection.Name = "lblSATravelDirection"
            Me.lblSATravelDirection.Size = New System.Drawing.Size(114, 16)
            Me.lblSATravelDirection.TabIndex = 116
            Me.lblSATravelDirection.Text = "Travel Direction"
            '
            'chkSASplitPolygonsAtBreaks
            '
            Me.chkSASplitPolygonsAtBreaks.Location = New System.Drawing.Point(169, 150)
            Me.chkSASplitPolygonsAtBreaks.Name = "chkSASplitPolygonsAtBreaks"
            Me.chkSASplitPolygonsAtBreaks.Size = New System.Drawing.Size(154, 22)
            Me.chkSASplitPolygonsAtBreaks.TabIndex = 114
            Me.chkSASplitPolygonsAtBreaks.Text = "Split Polygons At Breaks"
            '
            'chkSAOverlapPolygons
            '
            Me.chkSAOverlapPolygons.Location = New System.Drawing.Point(41, 149)
            Me.chkSAOverlapPolygons.Name = "chkSAOverlapPolygons"
            Me.chkSAOverlapPolygons.Size = New System.Drawing.Size(122, 22)
            Me.chkSAOverlapPolygons.TabIndex = 113
            Me.chkSAOverlapPolygons.Text = "Overlap Polygons"
            '
            'chkSASplitLinesAtBreaks
            '
            Me.chkSASplitLinesAtBreaks.Location = New System.Drawing.Point(169, 229)
            Me.chkSASplitLinesAtBreaks.Name = "chkSASplitLinesAtBreaks"
            Me.chkSASplitLinesAtBreaks.Size = New System.Drawing.Size(154, 22)
            Me.chkSASplitLinesAtBreaks.TabIndex = 112
            Me.chkSASplitLinesAtBreaks.Text = "Split Lines At Breaks"
            '
            'chkSAOverlapLines
            '
            Me.chkSAOverlapLines.Location = New System.Drawing.Point(41, 229)
            Me.chkSAOverlapLines.Name = "chkSAOverlapLines"
            Me.chkSAOverlapLines.Size = New System.Drawing.Size(122, 22)
            Me.chkSAOverlapLines.TabIndex = 111
            Me.chkSAOverlapLines.Text = "Overlap Lines"
            '
            'chkSAIgnoreInvalidLocations
            '
            Me.chkSAIgnoreInvalidLocations.Location = New System.Drawing.Point(23, 283)
            Me.chkSAIgnoreInvalidLocations.Name = "chkSAIgnoreInvalidLocations"
            Me.chkSAIgnoreInvalidLocations.Size = New System.Drawing.Size(144, 29)
            Me.chkSAIgnoreInvalidLocations.TabIndex = 105
            Me.chkSAIgnoreInvalidLocations.Text = "Ignore Invalid Locations"
            '
            'cboSARestrictUTurns
            '
            Me.cboSARestrictUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboSARestrictUTurns.ItemHeight = 13
            Me.cboSARestrictUTurns.Items.AddRange(New Object() {"No U-Turns", "Allow U-Turns", "Only At Dead Ends"})
            Me.cboSARestrictUTurns.Location = New System.Drawing.Point(151, 259)
            Me.cboSARestrictUTurns.Name = "cboSARestrictUTurns"
            Me.cboSARestrictUTurns.Size = New System.Drawing.Size(200, 21)
            Me.cboSARestrictUTurns.TabIndex = 104
            '
            'lblSARestrictUTurns
            '
            Me.lblSARestrictUTurns.Location = New System.Drawing.Point(20, 264)
            Me.lblSARestrictUTurns.Name = "lblSARestrictUTurns"
            Me.lblSARestrictUTurns.Size = New System.Drawing.Size(88, 16)
            Me.lblSARestrictUTurns.TabIndex = 110
            Me.lblSARestrictUTurns.Text = "UTurn Policy"
            '
            'lblSAAccumulateAttributeNames
            '
            Me.lblSAAccumulateAttributeNames.Location = New System.Drawing.Point(238, 314)
            Me.lblSAAccumulateAttributeNames.Name = "lblSAAccumulateAttributeNames"
            Me.lblSAAccumulateAttributeNames.Size = New System.Drawing.Size(120, 16)
            Me.lblSAAccumulateAttributeNames.TabIndex = 109
            Me.lblSAAccumulateAttributeNames.Text = "Accumulate Attributes"
            '
            'chklstSAAccumulateAttributeNames
            '
            Me.chklstSAAccumulateAttributeNames.CheckOnClick = True
            Me.chklstSAAccumulateAttributeNames.Location = New System.Drawing.Point(238, 330)
            Me.chklstSAAccumulateAttributeNames.Name = "chklstSAAccumulateAttributeNames"
            Me.chklstSAAccumulateAttributeNames.ScrollAlwaysVisible = True
            Me.chklstSAAccumulateAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstSAAccumulateAttributeNames.TabIndex = 107
            '
            'lblSARestrictionAttributeNames
            '
            Me.lblSARestrictionAttributeNames.Location = New System.Drawing.Point(22, 314)
            Me.lblSARestrictionAttributeNames.Name = "lblSARestrictionAttributeNames"
            Me.lblSARestrictionAttributeNames.Size = New System.Drawing.Size(72, 16)
            Me.lblSARestrictionAttributeNames.TabIndex = 108
            Me.lblSARestrictionAttributeNames.Text = "Restrictions"
            '
            'chklstSARestrictionAttributeNames
            '
            Me.chklstSARestrictionAttributeNames.CheckOnClick = True
            Me.chklstSARestrictionAttributeNames.Location = New System.Drawing.Point(22, 330)
            Me.chklstSARestrictionAttributeNames.Name = "chklstSARestrictionAttributeNames"
            Me.chklstSARestrictionAttributeNames.ScrollAlwaysVisible = True
            Me.chklstSARestrictionAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstSARestrictionAttributeNames.TabIndex = 106
            '
            'lblSAOutputPolygons
            '
            Me.lblSAOutputPolygons.Location = New System.Drawing.Point(20, 127)
            Me.lblSAOutputPolygons.Name = "lblSAOutputPolygons"
            Me.lblSAOutputPolygons.Size = New System.Drawing.Size(122, 16)
            Me.lblSAOutputPolygons.TabIndex = 103
            Me.lblSAOutputPolygons.Text = "Output Polygons"
            '
            'cboSAOutputPolygons
            '
            Me.cboSAOutputPolygons.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboSAOutputPolygons.ItemHeight = 13
            Me.cboSAOutputPolygons.Items.AddRange(New Object() {"No Polygons", "Simplified Polygons", "Detailed Polygons"})
            Me.cboSAOutputPolygons.Location = New System.Drawing.Point(151, 122)
            Me.cboSAOutputPolygons.Name = "cboSAOutputPolygons"
            Me.cboSAOutputPolygons.Size = New System.Drawing.Size(200, 21)
            Me.cboSAOutputPolygons.TabIndex = 102
            '
            'lblSAOutputLines
            '
            Me.lblSAOutputLines.Location = New System.Drawing.Point(20, 207)
            Me.lblSAOutputLines.Name = "lblSAOutputLines"
            Me.lblSAOutputLines.Size = New System.Drawing.Size(122, 16)
            Me.lblSAOutputLines.TabIndex = 101
            Me.lblSAOutputLines.Text = "Output Lines"
            '
            'cboSAOutputLines
            '
            Me.cboSAOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboSAOutputLines.ItemHeight = 13
            Me.cboSAOutputLines.Items.AddRange(New Object() {"No Lines", "True Shape", "True Shape With Measures"})
            Me.cboSAOutputLines.Location = New System.Drawing.Point(151, 202)
            Me.cboSAOutputLines.Name = "cboSAOutputLines"
            Me.cboSAOutputLines.Size = New System.Drawing.Size(200, 21)
            Me.cboSAOutputLines.TabIndex = 100
            '
            'chkSAMergeSimilarPolygonRanges
            '
            Me.chkSAMergeSimilarPolygonRanges.Location = New System.Drawing.Point(329, 149)
            Me.chkSAMergeSimilarPolygonRanges.Name = "chkSAMergeSimilarPolygonRanges"
            Me.chkSAMergeSimilarPolygonRanges.Size = New System.Drawing.Size(192, 22)
            Me.chkSAMergeSimilarPolygonRanges.TabIndex = 99
            Me.chkSAMergeSimilarPolygonRanges.Text = "Merge Similar Polygon Ranges"
            '
            'txtSADefaultBreaks
            '
            Me.txtSADefaultBreaks.Location = New System.Drawing.Point(151, 69)
            Me.txtSADefaultBreaks.Name = "txtSADefaultBreaks"
            Me.txtSADefaultBreaks.Size = New System.Drawing.Size(200, 20)
            Me.txtSADefaultBreaks.TabIndex = 98
            '
            'lblSADefaultBreaks
            '
            Me.lblSADefaultBreaks.Location = New System.Drawing.Point(20, 73)
            Me.lblSADefaultBreaks.Name = "lblSADefaultBreaks"
            Me.lblSADefaultBreaks.Size = New System.Drawing.Size(114, 16)
            Me.lblSADefaultBreaks.TabIndex = 97
            Me.lblSADefaultBreaks.Text = "Default Breaks"
            '
            'cboSAImpedance
            '
            Me.cboSAImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboSAImpedance.ItemHeight = 13
            Me.cboSAImpedance.Location = New System.Drawing.Point(151, 23)
            Me.cboSAImpedance.Name = "cboSAImpedance"
            Me.cboSAImpedance.Size = New System.Drawing.Size(200, 21)
            Me.cboSAImpedance.TabIndex = 86
            '
            'lblSAImpedance
            '
            Me.lblSAImpedance.Location = New System.Drawing.Point(20, 28)
            Me.lblSAImpedance.Name = "lblSAImpedance"
            Me.lblSAImpedance.Size = New System.Drawing.Size(64, 16)
            Me.lblSAImpedance.TabIndex = 87
            Me.lblSAImpedance.Text = "Impedance"
            '
            'tabVRP
            '
            Me.tabVRP.Controls.Add(Me.gbRestrictions)
            Me.tabVRP.Controls.Add(Me.gbSettings)
            Me.tabVRP.Location = New System.Drawing.Point(4, 22)
            Me.tabVRP.Name = "tabVRP"
            Me.tabVRP.Size = New System.Drawing.Size(712, 473)
            Me.tabVRP.TabIndex = 5
            Me.tabVRP.Text = "VRP"
            Me.tabVRP.UseVisualStyleBackColor = True
            '
            'gbRestrictions
            '
            Me.gbRestrictions.Controls.Add(Me.chklstVRPRestrictionAttributeNames)
            Me.gbRestrictions.Location = New System.Drawing.Point(349, 3)
            Me.gbRestrictions.Name = "gbRestrictions"
            Me.gbRestrictions.Size = New System.Drawing.Size(206, 90)
            Me.gbRestrictions.TabIndex = 1
            Me.gbRestrictions.TabStop = False
            Me.gbRestrictions.Text = "Restrictions"
            '
            'chklstVRPRestrictionAttributeNames
            '
            Me.chklstVRPRestrictionAttributeNames.CheckOnClick = True
            Me.chklstVRPRestrictionAttributeNames.Location = New System.Drawing.Point(6, 14)
            Me.chklstVRPRestrictionAttributeNames.Name = "chklstVRPRestrictionAttributeNames"
            Me.chklstVRPRestrictionAttributeNames.ScrollAlwaysVisible = True
            Me.chklstVRPRestrictionAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstVRPRestrictionAttributeNames.TabIndex = 109
            '
            'gbSettings
            '
            Me.gbSettings.Controls.Add(Me.cboVRPDistanceFieldUnits)
            Me.gbSettings.Controls.Add(Me.cboVRPTransitTime)
            Me.gbSettings.Controls.Add(Me.cboVRPTimeWindow)
            Me.gbSettings.Controls.Add(Me.label10)
            Me.gbSettings.Controls.Add(Me.label9)
            Me.gbSettings.Controls.Add(Me.chkVRPUseHierarchy)
            Me.gbSettings.Controls.Add(Me.cboVRPOutputShapeType)
            Me.gbSettings.Controls.Add(Me.cboVRPAllowUTurns)
            Me.gbSettings.Controls.Add(Me.cboVRPTimeFieldUnits)
            Me.gbSettings.Controls.Add(Me.txtVRPCapacityCount)
            Me.gbSettings.Controls.Add(Me.txtVRPDefaultDate)
            Me.gbSettings.Controls.Add(Me.cboVRPDistanceAttribute)
            Me.gbSettings.Controls.Add(Me.cboVRPTimeAttribute)
            Me.gbSettings.Controls.Add(Me.label7)
            Me.gbSettings.Controls.Add(Me.label6)
            Me.gbSettings.Controls.Add(Me.label5)
            Me.gbSettings.Controls.Add(Me.label4)
            Me.gbSettings.Controls.Add(Me.label3)
            Me.gbSettings.Controls.Add(Me.label2)
            Me.gbSettings.Controls.Add(Me.label1)
            Me.gbSettings.Controls.Add(Me.lblTimeAttribute)
            Me.gbSettings.Location = New System.Drawing.Point(3, 3)
            Me.gbSettings.Name = "gbSettings"
            Me.gbSettings.Size = New System.Drawing.Size(340, 321)
            Me.gbSettings.TabIndex = 0
            Me.gbSettings.TabStop = False
            Me.gbSettings.Text = "Settings"
            '
            'cboVRPDistanceFieldUnits
            '
            Me.cboVRPDistanceFieldUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPDistanceFieldUnits.ItemHeight = 13
            Me.cboVRPDistanceFieldUnits.Items.AddRange(New Object() {"Inches", "Points", "Feet", "Yards", "Miles", "Nautical Miles", "Millimeters", "Centimeters", "Meters", "Kilometers", "DecimalDegrees", "Decimeters"})
            Me.cboVRPDistanceFieldUnits.Location = New System.Drawing.Point(189, 151)
            Me.cboVRPDistanceFieldUnits.Name = "cboVRPDistanceFieldUnits"
            Me.cboVRPDistanceFieldUnits.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPDistanceFieldUnits.TabIndex = 123
            '
            'cboVRPTransitTime
            '
            Me.cboVRPTransitTime.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPTransitTime.FormattingEnabled = True
            Me.cboVRPTransitTime.Items.AddRange(New Object() {"High", "Medium", "Low"})
            Me.cboVRPTransitTime.Location = New System.Drawing.Point(189, 265)
            Me.cboVRPTransitTime.Name = "cboVRPTransitTime"
            Me.cboVRPTransitTime.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPTransitTime.TabIndex = 20
            '
            'cboVRPTimeWindow
            '
            Me.cboVRPTimeWindow.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPTimeWindow.FormattingEnabled = True
            Me.cboVRPTimeWindow.Items.AddRange(New Object() {"High", "Medium", "Low"})
            Me.cboVRPTimeWindow.Location = New System.Drawing.Point(189, 238)
            Me.cboVRPTimeWindow.Name = "cboVRPTimeWindow"
            Me.cboVRPTimeWindow.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPTimeWindow.TabIndex = 19
            '
            'label10
            '
            Me.label10.AutoSize = True
            Me.label10.Location = New System.Drawing.Point(8, 268)
            Me.label10.Name = "label10"
            Me.label10.Size = New System.Drawing.Size(161, 13)
            Me.label10.TabIndex = 18
            Me.label10.Text = "Excess Transit Time Importance:"
            '
            'label9
            '
            Me.label9.AutoSize = True
            Me.label9.Location = New System.Drawing.Point(9, 241)
            Me.label9.Name = "label9"
            Me.label9.Size = New System.Drawing.Size(174, 13)
            Me.label9.TabIndex = 17
            Me.label9.Text = "Time Window Violation Importance:"
            '
            'chkVRPUseHierarchy
            '
            Me.chkVRPUseHierarchy.AutoSize = True
            Me.chkVRPUseHierarchy.Location = New System.Drawing.Point(12, 294)
            Me.chkVRPUseHierarchy.Name = "chkVRPUseHierarchy"
            Me.chkVRPUseHierarchy.Size = New System.Drawing.Size(93, 17)
            Me.chkVRPUseHierarchy.TabIndex = 16
            Me.chkVRPUseHierarchy.Text = "Use Hierarchy"
            Me.chkVRPUseHierarchy.UseVisualStyleBackColor = True
            '
            'cboVRPOutputShapeType
            '
            Me.cboVRPOutputShapeType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPOutputShapeType.FormattingEnabled = True
            Me.cboVRPOutputShapeType.Items.AddRange(New Object() {"None", "Straight Line", "True Shape", "True Shape with Measure"})
            Me.cboVRPOutputShapeType.Location = New System.Drawing.Point(189, 208)
            Me.cboVRPOutputShapeType.Name = "cboVRPOutputShapeType"
            Me.cboVRPOutputShapeType.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPOutputShapeType.TabIndex = 15
            '
            'cboVRPAllowUTurns
            '
            Me.cboVRPAllowUTurns.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPAllowUTurns.FormattingEnabled = True
            Me.cboVRPAllowUTurns.Items.AddRange(New Object() {"No U-Turns", "Allow U-Turns", "Only At Dead Ends"})
            Me.cboVRPAllowUTurns.Location = New System.Drawing.Point(189, 180)
            Me.cboVRPAllowUTurns.Name = "cboVRPAllowUTurns"
            Me.cboVRPAllowUTurns.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPAllowUTurns.TabIndex = 14
            '
            'cboVRPTimeFieldUnits
            '
            Me.cboVRPTimeFieldUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPTimeFieldUnits.FormattingEnabled = True
            Me.cboVRPTimeFieldUnits.Items.AddRange(New Object() {"Seconds", "Minutes", "Hours", "Days"})
            Me.cboVRPTimeFieldUnits.Location = New System.Drawing.Point(189, 124)
            Me.cboVRPTimeFieldUnits.Name = "cboVRPTimeFieldUnits"
            Me.cboVRPTimeFieldUnits.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPTimeFieldUnits.TabIndex = 12
            '
            'txtVRPCapacityCount
            '
            Me.txtVRPCapacityCount.Location = New System.Drawing.Point(189, 97)
            Me.txtVRPCapacityCount.Name = "txtVRPCapacityCount"
            Me.txtVRPCapacityCount.Size = New System.Drawing.Size(136, 20)
            Me.txtVRPCapacityCount.TabIndex = 11
            '
            'txtVRPDefaultDate
            '
            Me.txtVRPDefaultDate.Location = New System.Drawing.Point(189, 70)
            Me.txtVRPDefaultDate.Name = "txtVRPDefaultDate"
            Me.txtVRPDefaultDate.Size = New System.Drawing.Size(136, 20)
            Me.txtVRPDefaultDate.TabIndex = 10
            '
            'cboVRPDistanceAttribute
            '
            Me.cboVRPDistanceAttribute.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPDistanceAttribute.FormattingEnabled = True
            Me.cboVRPDistanceAttribute.Items.AddRange(New Object() {"", "Meters (Meters)"})
            Me.cboVRPDistanceAttribute.Location = New System.Drawing.Point(189, 42)
            Me.cboVRPDistanceAttribute.Name = "cboVRPDistanceAttribute"
            Me.cboVRPDistanceAttribute.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPDistanceAttribute.TabIndex = 9
            '
            'cboVRPTimeAttribute
            '
            Me.cboVRPTimeAttribute.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboVRPTimeAttribute.FormattingEnabled = True
            Me.cboVRPTimeAttribute.Location = New System.Drawing.Point(189, 14)
            Me.cboVRPTimeAttribute.Name = "cboVRPTimeAttribute"
            Me.cboVRPTimeAttribute.Size = New System.Drawing.Size(136, 21)
            Me.cboVRPTimeAttribute.TabIndex = 8
            '
            'label7
            '
            Me.label7.AutoSize = True
            Me.label7.Location = New System.Drawing.Point(9, 50)
            Me.label7.Name = "label7"
            Me.label7.Size = New System.Drawing.Size(94, 13)
            Me.label7.TabIndex = 7
            Me.label7.Text = "Distance Attribute:"
            '
            'label6
            '
            Me.label6.AutoSize = True
            Me.label6.Location = New System.Drawing.Point(9, 78)
            Me.label6.Name = "label6"
            Me.label6.Size = New System.Drawing.Size(70, 13)
            Me.label6.TabIndex = 6
            Me.label6.Text = "Default Date:"
            '
            'label5
            '
            Me.label5.AutoSize = True
            Me.label5.Location = New System.Drawing.Point(9, 105)
            Me.label5.Name = "label5"
            Me.label5.Size = New System.Drawing.Size(82, 13)
            Me.label5.TabIndex = 5
            Me.label5.Text = "Capacity Count:"
            '
            'label4
            '
            Me.label4.AutoSize = True
            Me.label4.Location = New System.Drawing.Point(9, 132)
            Me.label4.Name = "label4"
            Me.label4.Size = New System.Drawing.Size(85, 13)
            Me.label4.TabIndex = 4
            Me.label4.Text = "Time Field Units:"
            '
            'label3
            '
            Me.label3.AutoSize = True
            Me.label3.Location = New System.Drawing.Point(8, 160)
            Me.label3.Name = "label3"
            Me.label3.Size = New System.Drawing.Size(104, 13)
            Me.label3.TabIndex = 3
            Me.label3.Text = "Distance Field Units:"
            '
            'label2
            '
            Me.label2.AutoSize = True
            Me.label2.Location = New System.Drawing.Point(9, 188)
            Me.label2.Name = "label2"
            Me.label2.Size = New System.Drawing.Size(74, 13)
            Me.label2.TabIndex = 2
            Me.label2.Text = "U-Turn Policy:"
            '
            'label1
            '
            Me.label1.AutoSize = True
            Me.label1.Location = New System.Drawing.Point(9, 216)
            Me.label1.Name = "label1"
            Me.label1.Size = New System.Drawing.Size(103, 13)
            Me.label1.TabIndex = 1
            Me.label1.Text = "Output Shape Type:"
            '
            'lblTimeAttribute
            '
            Me.lblTimeAttribute.AutoSize = True
            Me.lblTimeAttribute.Location = New System.Drawing.Point(9, 22)
            Me.lblTimeAttribute.Name = "lblTimeAttribute"
            Me.lblTimeAttribute.Size = New System.Drawing.Size(75, 13)
            Me.lblTimeAttribute.TabIndex = 0
            Me.lblTimeAttribute.Text = "Time Attribute:"
            '
            'tabLocationAllocation
            '
            Me.tabLocationAllocation.Controls.Add(Me.chkLAUseTime)
            Me.tabLocationAllocation.Controls.Add(Me.txtLAUseTime)
            Me.tabLocationAllocation.Controls.Add(Me.chkLAIgnoreInvalidLocations)
            Me.tabLocationAllocation.Controls.Add(Me.grpLASettings)
            Me.tabLocationAllocation.Controls.Add(Me.chkLAUseHierarchy)
            Me.tabLocationAllocation.Controls.Add(Me.lblLAAccumulateAttributeNames)
            Me.tabLocationAllocation.Controls.Add(Me.chklstLAAccumulateAttributeNames)
            Me.tabLocationAllocation.Controls.Add(Me.lblLARestrictionAttributeNames)
            Me.tabLocationAllocation.Controls.Add(Me.chklstLARestrictionAttributeNames)
            Me.tabLocationAllocation.Controls.Add(Me.cboLAOutputLines)
            Me.tabLocationAllocation.Controls.Add(Me.label11)
            Me.tabLocationAllocation.Controls.Add(Me.cboLATravelDirection)
            Me.tabLocationAllocation.Controls.Add(Me.label12)
            Me.tabLocationAllocation.Controls.Add(Me.lblCostAttribute)
            Me.tabLocationAllocation.Controls.Add(Me.cboLAImpedance)
            Me.tabLocationAllocation.Location = New System.Drawing.Point(4, 22)
            Me.tabLocationAllocation.Name = "tabLocationAllocation"
            Me.tabLocationAllocation.Padding = New System.Windows.Forms.Padding(3)
            Me.tabLocationAllocation.Size = New System.Drawing.Size(712, 473)
            Me.tabLocationAllocation.TabIndex = 6
            Me.tabLocationAllocation.Text = "Location-Allocation"
            Me.tabLocationAllocation.UseVisualStyleBackColor = True
            '
            'chkLAUseTime
            '
            Me.chkLAUseTime.Location = New System.Drawing.Point(11, 52)
            Me.chkLAUseTime.Name = "chkLAUseTime"
            Me.chkLAUseTime.Size = New System.Drawing.Size(104, 16)
            Me.chkLAUseTime.TabIndex = 135
            Me.chkLAUseTime.Text = "Use Time"
            '
            'txtLAUseTime
            '
            Me.txtLAUseTime.Location = New System.Drawing.Point(142, 48)
            Me.txtLAUseTime.Name = "txtLAUseTime"
            Me.txtLAUseTime.Size = New System.Drawing.Size(179, 20)
            Me.txtLAUseTime.TabIndex = 136
            '
            'chkLAIgnoreInvalidLocations
            '
            Me.chkLAIgnoreInvalidLocations.Location = New System.Drawing.Point(13, 149)
            Me.chkLAIgnoreInvalidLocations.Name = "chkLAIgnoreInvalidLocations"
            Me.chkLAIgnoreInvalidLocations.Size = New System.Drawing.Size(144, 29)
            Me.chkLAIgnoreInvalidLocations.TabIndex = 123
            Me.chkLAIgnoreInvalidLocations.Text = "Ignore Invalid Locations"
            '
            'grpLASettings
            '
            Me.grpLASettings.Controls.Add(Me.lblTargetMarketShare)
            Me.grpLASettings.Controls.Add(Me.txtLATargetMarketShare)
            Me.grpLASettings.Controls.Add(Me.cboLAImpTransformation)
            Me.grpLASettings.Controls.Add(Me.lblImpParameter)
            Me.grpLASettings.Controls.Add(Me.txtLAImpParameter)
            Me.grpLASettings.Controls.Add(Me.lblImpTransformation)
            Me.grpLASettings.Controls.Add(Me.lblProblemType)
            Me.grpLASettings.Controls.Add(Me.cboLAProblemType)
            Me.grpLASettings.Controls.Add(Me.lblCutOff)
            Me.grpLASettings.Controls.Add(Me.txtLACutOff)
            Me.grpLASettings.Controls.Add(Me.lblNumFacilities)
            Me.grpLASettings.Controls.Add(Me.txtLAFacilitiesToLocate)
            Me.grpLASettings.Location = New System.Drawing.Point(230, 129)
            Me.grpLASettings.Name = "grpLASettings"
            Me.grpLASettings.Size = New System.Drawing.Size(342, 241)
            Me.grpLASettings.TabIndex = 122
            Me.grpLASettings.TabStop = False
            Me.grpLASettings.Text = "Advanced Settings"
            '
            'lblTargetMarketShare
            '
            Me.lblTargetMarketShare.AccessibleDescription = "grpLA"
            Me.lblTargetMarketShare.AutoSize = True
            Me.lblTargetMarketShare.Location = New System.Drawing.Point(20, 205)
            Me.lblTargetMarketShare.Name = "lblTargetMarketShare"
            Me.lblTargetMarketShare.Size = New System.Drawing.Size(122, 13)
            Me.lblTargetMarketShare.TabIndex = 31
            Me.lblTargetMarketShare.Text = "Target Market Share (%)"
            '
            'txtLATargetMarketShare
            '
            Me.txtLATargetMarketShare.AccessibleDescription = "grpLA"
            Me.txtLATargetMarketShare.Location = New System.Drawing.Point(199, 201)
            Me.txtLATargetMarketShare.Name = "txtLATargetMarketShare"
            Me.txtLATargetMarketShare.Size = New System.Drawing.Size(129, 20)
            Me.txtLATargetMarketShare.TabIndex = 30
            Me.txtLATargetMarketShare.Text = "10.0"
            '
            'cboLAImpTransformation
            '
            Me.cboLAImpTransformation.AccessibleDescription = "grpLA"
            Me.cboLAImpTransformation.FormattingEnabled = True
            Me.cboLAImpTransformation.Items.AddRange(New Object() {"Linear", "Power", "Exponential"})
            Me.cboLAImpTransformation.Location = New System.Drawing.Point(202, 135)
            Me.cboLAImpTransformation.Name = "cboLAImpTransformation"
            Me.cboLAImpTransformation.Size = New System.Drawing.Size(128, 21)
            Me.cboLAImpTransformation.TabIndex = 29
            Me.cboLAImpTransformation.Text = "Linear"
            '
            'lblImpParameter
            '
            Me.lblImpParameter.AccessibleDescription = "grpLA"
            Me.lblImpParameter.AutoSize = True
            Me.lblImpParameter.Location = New System.Drawing.Point(19, 171)
            Me.lblImpParameter.Name = "lblImpParameter"
            Me.lblImpParameter.Size = New System.Drawing.Size(111, 13)
            Me.lblImpParameter.TabIndex = 28
            Me.lblImpParameter.Text = "Impedance Parameter"
            '
            'txtLAImpParameter
            '
            Me.txtLAImpParameter.AccessibleDescription = "grpLA"
            Me.txtLAImpParameter.Location = New System.Drawing.Point(200, 166)
            Me.txtLAImpParameter.Name = "txtLAImpParameter"
            Me.txtLAImpParameter.Size = New System.Drawing.Size(129, 20)
            Me.txtLAImpParameter.TabIndex = 27
            Me.txtLAImpParameter.Text = "1.0"
            '
            'lblImpTransformation
            '
            Me.lblImpTransformation.AccessibleDescription = "grpLA"
            Me.lblImpTransformation.AutoSize = True
            Me.lblImpTransformation.Location = New System.Drawing.Point(19, 135)
            Me.lblImpTransformation.Name = "lblImpTransformation"
            Me.lblImpTransformation.Size = New System.Drawing.Size(133, 13)
            Me.lblImpTransformation.TabIndex = 26
            Me.lblImpTransformation.Text = "Impedance Transformation"
            '
            'lblProblemType
            '
            Me.lblProblemType.AccessibleDescription = "grpLA"
            Me.lblProblemType.AutoSize = True
            Me.lblProblemType.Location = New System.Drawing.Point(19, 30)
            Me.lblProblemType.Name = "lblProblemType"
            Me.lblProblemType.Size = New System.Drawing.Size(72, 13)
            Me.lblProblemType.TabIndex = 23
            Me.lblProblemType.Text = "Problem Type"
            '
            'cboLAProblemType
            '
            Me.cboLAProblemType.AccessibleDescription = "grpLA"
            Me.cboLAProblemType.FormattingEnabled = True
            Me.cboLAProblemType.Items.AddRange(New Object() {"Minimize Impedance", "Maximize Coverage", "Minimize Facilities", "Maximize Attendance", "Maximize Market Share", "Target Market Share"})
            Me.cboLAProblemType.Location = New System.Drawing.Point(202, 24)
            Me.cboLAProblemType.Name = "cboLAProblemType"
            Me.cboLAProblemType.Size = New System.Drawing.Size(128, 21)
            Me.cboLAProblemType.TabIndex = 22
            Me.cboLAProblemType.Text = "Minimize Impedance"
            '
            'lblCutOff
            '
            Me.lblCutOff.AccessibleDescription = "grpLA"
            Me.lblCutOff.AutoSize = True
            Me.lblCutOff.Location = New System.Drawing.Point(20, 98)
            Me.lblCutOff.Name = "lblCutOff"
            Me.lblCutOff.Size = New System.Drawing.Size(91, 13)
            Me.lblCutOff.TabIndex = 21
            Me.lblCutOff.Text = "Impedance Cutoff"
            '
            'txtLACutOff
            '
            Me.txtLACutOff.AccessibleDescription = "grpLA"
            Me.txtLACutOff.Location = New System.Drawing.Point(202, 98)
            Me.txtLACutOff.Name = "txtLACutOff"
            Me.txtLACutOff.Size = New System.Drawing.Size(129, 20)
            Me.txtLACutOff.TabIndex = 20
            Me.txtLACutOff.Text = "<None>"
            '
            'lblNumFacilities
            '
            Me.lblNumFacilities.AccessibleDescription = "grpLA"
            Me.lblNumFacilities.AutoSize = True
            Me.lblNumFacilities.Location = New System.Drawing.Point(20, 63)
            Me.lblNumFacilities.Name = "lblNumFacilities"
            Me.lblNumFacilities.Size = New System.Drawing.Size(102, 13)
            Me.lblNumFacilities.TabIndex = 19
            Me.lblNumFacilities.Text = "Facilities To Choose"
            '
            'txtLAFacilitiesToLocate
            '
            Me.txtLAFacilitiesToLocate.AccessibleDescription = "grpLA"
            Me.txtLAFacilitiesToLocate.Location = New System.Drawing.Point(202, 63)
            Me.txtLAFacilitiesToLocate.Name = "txtLAFacilitiesToLocate"
            Me.txtLAFacilitiesToLocate.Size = New System.Drawing.Size(130, 20)
            Me.txtLAFacilitiesToLocate.TabIndex = 18
            Me.txtLAFacilitiesToLocate.Text = "1"
            '
            'chkLAUseHierarchy
            '
            Me.chkLAUseHierarchy.AutoSize = True
            Me.chkLAUseHierarchy.Location = New System.Drawing.Point(13, 120)
            Me.chkLAUseHierarchy.Name = "chkLAUseHierarchy"
            Me.chkLAUseHierarchy.Size = New System.Drawing.Size(93, 17)
            Me.chkLAUseHierarchy.TabIndex = 121
            Me.chkLAUseHierarchy.Text = "Use Hierarchy"
            Me.chkLAUseHierarchy.UseVisualStyleBackColor = True
            '
            'lblLAAccumulateAttributeNames
            '
            Me.lblLAAccumulateAttributeNames.Location = New System.Drawing.Point(11, 280)
            Me.lblLAAccumulateAttributeNames.Name = "lblLAAccumulateAttributeNames"
            Me.lblLAAccumulateAttributeNames.Size = New System.Drawing.Size(120, 16)
            Me.lblLAAccumulateAttributeNames.TabIndex = 120
            Me.lblLAAccumulateAttributeNames.Text = "Accumulate Attributes"
            '
            'chklstLAAccumulateAttributeNames
            '
            Me.chklstLAAccumulateAttributeNames.CheckOnClick = True
            Me.chklstLAAccumulateAttributeNames.Location = New System.Drawing.Point(11, 296)
            Me.chklstLAAccumulateAttributeNames.Name = "chklstLAAccumulateAttributeNames"
            Me.chklstLAAccumulateAttributeNames.ScrollAlwaysVisible = True
            Me.chklstLAAccumulateAttributeNames.Size = New System.Drawing.Size(192, 34)
            Me.chklstLAAccumulateAttributeNames.TabIndex = 119
            '
            'lblLARestrictionAttributeNames
            '
            Me.lblLARestrictionAttributeNames.Location = New System.Drawing.Point(11, 192)
            Me.lblLARestrictionAttributeNames.Name = "lblLARestrictionAttributeNames"
            Me.lblLARestrictionAttributeNames.Size = New System.Drawing.Size(71, 15)
            Me.lblLARestrictionAttributeNames.TabIndex = 118
            Me.lblLARestrictionAttributeNames.Text = "Restrictions"
            '
            'chklstLARestrictionAttributeNames
            '
            Me.chklstLARestrictionAttributeNames.CheckOnClick = True
            Me.chklstLARestrictionAttributeNames.Location = New System.Drawing.Point(11, 210)
            Me.chklstLARestrictionAttributeNames.Name = "chklstLARestrictionAttributeNames"
            Me.chklstLARestrictionAttributeNames.ScrollAlwaysVisible = True
            Me.chklstLARestrictionAttributeNames.Size = New System.Drawing.Size(191, 34)
            Me.chklstLARestrictionAttributeNames.TabIndex = 117
            '
            'cboLAOutputLines
            '
            Me.cboLAOutputLines.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboLAOutputLines.ItemHeight = 13
            Me.cboLAOutputLines.Items.AddRange(New Object() {"Straight Lines", "None"})
            Me.cboLAOutputLines.Location = New System.Drawing.Point(142, 93)
            Me.cboLAOutputLines.Name = "cboLAOutputLines"
            Me.cboLAOutputLines.Size = New System.Drawing.Size(178, 21)
            Me.cboLAOutputLines.TabIndex = 115
            '
            'label11
            '
            Me.label11.Location = New System.Drawing.Point(11, 98)
            Me.label11.Name = "label11"
            Me.label11.Size = New System.Drawing.Size(114, 15)
            Me.label11.TabIndex = 116
            Me.label11.Text = "Shape"
            '
            'cboLATravelDirection
            '
            Me.cboLATravelDirection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboLATravelDirection.ItemHeight = 13
            Me.cboLATravelDirection.Items.AddRange(New Object() {"Facility To Demand", "Demand To Facility"})
            Me.cboLATravelDirection.Location = New System.Drawing.Point(142, 69)
            Me.cboLATravelDirection.Name = "cboLATravelDirection"
            Me.cboLATravelDirection.Size = New System.Drawing.Size(178, 21)
            Me.cboLATravelDirection.TabIndex = 113
            '
            'label12
            '
            Me.label12.Location = New System.Drawing.Point(11, 74)
            Me.label12.Name = "label12"
            Me.label12.Size = New System.Drawing.Size(114, 16)
            Me.label12.TabIndex = 114
            Me.label12.Text = "Travel Direction"
            '
            'lblCostAttribute
            '
            Me.lblCostAttribute.AutoSize = True
            Me.lblCostAttribute.Location = New System.Drawing.Point(8, 25)
            Me.lblCostAttribute.Name = "lblCostAttribute"
            Me.lblCostAttribute.Size = New System.Drawing.Size(70, 13)
            Me.lblCostAttribute.TabIndex = 25
            Me.lblCostAttribute.Text = "Cost Attribute"
            '
            'cboLAImpedance
            '
            Me.cboLAImpedance.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
            Me.cboLAImpedance.FormattingEnabled = True
            Me.cboLAImpedance.Location = New System.Drawing.Point(142, 25)
            Me.cboLAImpedance.Name = "cboLAImpedance"
            Me.cboLAImpedance.Size = New System.Drawing.Size(176, 21)
            Me.cboLAImpedance.TabIndex = 24
            '
            'tabAttributeParameters
            '
            Me.tabAttributeParameters.Controls.Add(Me.btnReset)
            Me.tabAttributeParameters.Controls.Add(Me.attributeParameterGrid)
            Me.tabAttributeParameters.Controls.Add(Me.label14)
            Me.tabAttributeParameters.Location = New System.Drawing.Point(4, 22)
            Me.tabAttributeParameters.Name = "tabAttributeParameters"
            Me.tabAttributeParameters.Padding = New System.Windows.Forms.Padding(3)
            Me.tabAttributeParameters.Size = New System.Drawing.Size(712, 473)
            Me.tabAttributeParameters.TabIndex = 7
            Me.tabAttributeParameters.Text = "Attribute Parameters"
            Me.tabAttributeParameters.UseVisualStyleBackColor = True
            '
            'btnReset
            '
            Me.btnReset.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
            Me.btnReset.Location = New System.Drawing.Point(636, 446)
            Me.btnReset.Name = "btnReset"
            Me.btnReset.Size = New System.Drawing.Size(70, 21)
            Me.btnReset.TabIndex = 29
            Me.btnReset.Text = "&Reset"
            '
            'attributeParameterGrid
            '
            Me.attributeParameterGrid.AllowUserToAddRows = False
            Me.attributeParameterGrid.AllowUserToDeleteRows = False
            Me.attributeParameterGrid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill
            Me.attributeParameterGrid.BackgroundColor = System.Drawing.Color.White
            Me.attributeParameterGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
            Me.attributeParameterGrid.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.dgvcAttribute, Me.dgvcParameter, Me.dgvcValue})
            Me.attributeParameterGrid.Location = New System.Drawing.Point(13, 36)
            Me.attributeParameterGrid.Name = "attributeParameterGrid"
            Me.attributeParameterGrid.RowHeadersVisible = False
            Me.attributeParameterGrid.Size = New System.Drawing.Size(693, 404)
            Me.attributeParameterGrid.TabIndex = 28
            '
            'dgvcAttribute
            '
            Me.dgvcAttribute.HeaderText = "Attribute"
            Me.dgvcAttribute.Name = "dgvcAttribute"
            Me.dgvcAttribute.ReadOnly = True
            '
            'dgvcParameter
            '
            Me.dgvcParameter.HeaderText = "Parameter"
            Me.dgvcParameter.Name = "dgvcParameter"
            Me.dgvcParameter.ReadOnly = True
            '
            'dgvcValue
            '
            Me.dgvcValue.HeaderText = "Value"
            Me.dgvcValue.Name = "dgvcValue"
            '
            'label14
            '
            Me.label14.AutoSize = True
            Me.label14.Location = New System.Drawing.Point(6, 13)
            Me.label14.Name = "label14"
            Me.label14.Size = New System.Drawing.Size(267, 13)
            Me.label14.TabIndex = 27
            Me.label14.Text = "Specify the parameter values for the network attributes."
            '
            'btnOK
            '
            Me.btnOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
            Me.btnOK.Location = New System.Drawing.Point(598, 523)
            Me.btnOK.Name = "btnOK"
            Me.btnOK.Size = New System.Drawing.Size(58, 22)
            Me.btnOK.TabIndex = 1
            Me.btnOK.Text = "&OK"
            '
            'btnCancel
            '
            Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
            Me.btnCancel.Location = New System.Drawing.Point(666, 523)
            Me.btnCancel.Name = "btnCancel"
            Me.btnCancel.Size = New System.Drawing.Size(62, 22)
            Me.btnCancel.TabIndex = 2
            Me.btnCancel.Text = "&Cancel"
            '
            'frmNALayerProperties
            '
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(739, 563)
            Me.Controls.Add(Me.btnCancel)
            Me.Controls.Add(Me.btnOK)
            Me.Controls.Add(Me.tabPropPages)
            Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
            Me.MaximizeBox = False
            Me.MinimizeBox = False
            Me.Name = "frmNALayerProperties"
            Me.ShowInTaskbar = False
            Me.Text = "Properties"
            Me.tabPropPages.ResumeLayout(False)
            Me.tabGeneral.ResumeLayout(False)
            Me.tabGeneral.PerformLayout()
            Me.tabRoute.ResumeLayout(False)
            Me.tabRoute.PerformLayout()
            Me.tabClosestFacility.ResumeLayout(False)
            Me.tabClosestFacility.PerformLayout()
            Me.tabODCostMatrix.ResumeLayout(False)
            Me.tabODCostMatrix.PerformLayout()
            Me.tabServiceArea.ResumeLayout(False)
            Me.tabServiceArea.PerformLayout()
            Me.tabVRP.ResumeLayout(False)
            Me.gbRestrictions.ResumeLayout(False)
            Me.gbSettings.ResumeLayout(False)
            Me.gbSettings.PerformLayout()
            Me.tabLocationAllocation.ResumeLayout(False)
            Me.tabLocationAllocation.PerformLayout()
            Me.grpLASettings.ResumeLayout(False)
            Me.grpLASettings.PerformLayout()
            Me.tabAttributeParameters.ResumeLayout(False)
            Me.tabAttributeParameters.PerformLayout()
            CType(Me.attributeParameterGrid, System.ComponentModel.ISupportInitialize).EndInit()
            Me.ResumeLayout(False)

        End Sub
#End Region

        Private m_okClicked As Boolean
        Private m_naLayer As INALayer3

        Private Enum VARTYPE
            VT_EMPTY = 0 ' uninitialized (null)
            VT_NULL = 1 ' System.DBNull.Value
            VT_I2 = 2 ' short
            VT_I4 = 3 ' int
            VT_R4 = 4 ' float
            VT_R8 = 5 ' double
            VT_DATE = 7 ' DateTime
            VT_BSTR = 8 ' string
            VT_BOOL = 11 ' boolean
            VT_UNKNOWN = 13 ' COM object
            VT_ARRAY = 8192 ' array bitmask
        End Enum

        Private Enum AttributeParameterGridColumnType
            ATTRIBUTE_NAME = 0
            PARAMETER_NAME = 1
            PARAMETER_VALUE = 2
        End Enum

        Private m_restrictionParameterValues As Dictionary(Of String, Double) = New Dictionary(Of String, Double) From
        {
            {"Prohibit", -1},
            {"Avoid: High", 5}, {"Avoid: Medium", 2}, {"Avoid: Low", 1.3},
            {"Prefer: Low", 0.8}, {"Prefer: Medium", 0.5}, {"Prefer: High", 0.2}
        }

        Public Sub New()
            InitializeComponent()
        End Sub

        ''' <summary>
        ''' Clean up any resources being used.
        ''' </summary>
        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If components IsNot Nothing Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
            m_naLayer = Nothing
        End Sub

        ''' <summary>
        ''' Called by clients to show the properties window and respond to changes made when OK is clicked.
        ''' </summary>
        Public Function ShowModal(ByVal naLayer As INALayer3) As Boolean
            m_okClicked = False

            If (naLayer Is Nothing) Then
                MessageBox.Show("Null NALayer")
            Else
                m_naLayer = naLayer
            End If

            ' Setup the window based on the current NALayer settings
            PopulateControls(naLayer)
            tabPropPages.SelectedIndex = 1
            Me.Text = (CType(naLayer, ILayer)).Name & " Properties"

            Me.ShowDialog()
            Return m_okClicked
        End Function

        ''' <summary>
        ''' Set controls based on the current NALayer settings
        ''' This function takes the current NALayer and determines what type of solver it's pointing to
        ''' and populates the corresponding controls and hides the tabs for the other solvers.
        ''' </summary>
        Private Sub PopulateControls(ByVal naLayer As INALayer)
            Dim layer As ILayer = TryCast(naLayer, ILayer)
            Dim naContext As INAContext = naLayer.Context
            Dim networkDataset As INetworkDataset = naContext.NetworkDataset
            Dim naLocator As INALocator2 = TryCast(naContext.Locator, INALocator2)

            Dim naSolver As INASolver = naContext.Solver
            Dim naSolverSettings As INASolverSettings = TryCast(naSolver, INASolverSettings2)
            Dim naTimeAwareSolverSettings As INATimeAwareSolverSettings = TryCast(naSolver, INATimeAwareSolverSettings)

            Dim routeSolver As INARouteSolver2 = TryCast(naSolver, INARouteSolver2)
            Dim cfSolver As INAClosestFacilitySolver = TryCast(naSolver, INAClosestFacilitySolver)
            Dim odSolver As INAODCostMatrixSolver = TryCast(naSolver, INAODCostMatrixSolver)
            Dim saSolver As INAServiceAreaSolver2 = TryCast(naSolver, INAServiceAreaSolver2)
            Dim vrpSolver As INAVRPSolver = TryCast(naSolver, INAVRPSolver)
            Dim laSolver As INALocationAllocationSolver = TryCast(naSolver, INALocationAllocationSolver)

            ' Populate general Layer controls
            txtLayerName.Text = layer.Name
            txtMaxSearchTolerance.Text = naLocator.MaxSnapTolerance.ToString()
            cboMaxSearchToleranceUnits.SelectedIndex = Convert.ToInt32(naLocator.SnapToleranceUnits)

            PopulateAttributeParameterControl(networkDataset)

            ' Populate controls for the particular solver

            If routeSolver IsNot Nothing Then ' ROUTE LAYER
                ' Remove unnecessary tabs
                tabPropPages.TabPages.Remove(tabClosestFacility)
                tabPropPages.TabPages.Remove(tabODCostMatrix)
                tabPropPages.TabPages.Remove(tabServiceArea)
                tabPropPages.TabPages.Remove(tabVRP)
                tabPropPages.TabPages.Remove(tabLocationAllocation)

                ' INARouteSolver2
                chkRouteFindBestSequence.Checked = routeSolver.FindBestSequence
                chkRoutePreserveFirstStop.Checked = routeSolver.PreserveFirstStop
                chkRoutePreserveLastStop.Checked = routeSolver.PreserveLastStop
                chkRouteUseTimeWindows.Checked = routeSolver.UseTimeWindows
                chkRouteUseStartTime.Checked = routeSolver.UseStartTime
                txtRouteStartTime.Text = routeSolver.StartTime.ToShortTimeString()
                cboRouteOutputLines.SelectedIndex = System.Convert.ToInt32(routeSolver.OutputLines)

                ' INASolverSettings
                PopulateImpedanceNameControl(cboRouteImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName)
                chkRouteUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0)
                chkRouteUseHierarchy.Checked = (chkRouteUseHierarchy.Enabled AndAlso naSolverSettings.UseHierarchy)
                chkRouteIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations
                cboRouteRestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns)
                PopulateAttributeControl(chklstRouteAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost)
                PopulateAttributeControl(chklstRouteRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction)
            ElseIf cfSolver IsNot Nothing Then ' CLOSEST FACILITY LAYER
                ' Remove unnecessary tabs
                tabPropPages.TabPages.Remove(tabRoute)
                tabPropPages.TabPages.Remove(tabODCostMatrix)
                tabPropPages.TabPages.Remove(tabServiceArea)
                tabPropPages.TabPages.Remove(tabVRP)
                tabPropPages.TabPages.Remove(tabLocationAllocation)

                ' INAClosestFacilitySolver
                txtCFDefaultCutoff.Text = GetStringFromObject(cfSolver.DefaultCutoff)
                txtCFDefaultTargetFacilityCount.Text = cfSolver.DefaultTargetFacilityCount.ToString()
                cboCFTravelDirection.SelectedIndex = Convert.ToInt32(cfSolver.TravelDirection)
                cboCFOutputLines.SelectedIndex = Convert.ToInt32(cfSolver.OutputLines)

                ' INASolverSettings
                PopulateImpedanceNameControl(cboCFImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName)
                chkCFUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0)
                chkCFUseHierarchy.Checked = (chkCFUseHierarchy.Enabled AndAlso naSolverSettings.UseHierarchy)
                chkCFIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations
                cboCFRestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns)
                PopulateAttributeControl(chklstCFAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost)
                PopulateAttributeControl(chklstCFRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction)

                ' INATimeAwareSolverSettings
                cboCFTimeUsage.SelectedIndex = System.Convert.ToInt32(naTimeAwareSolverSettings.TimeOfDayUsage)
                txtCFUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString("HH:mm:ss MM/dd/yyyy")

            ElseIf odSolver IsNot Nothing Then ' OD COST MATRIX LAYER
                ' Remove unnecessary tabs
                tabPropPages.TabPages.Remove(tabRoute)
                tabPropPages.TabPages.Remove(tabClosestFacility)
                tabPropPages.TabPages.Remove(tabServiceArea)
                tabPropPages.TabPages.Remove(tabVRP)
                tabPropPages.TabPages.Remove(tabLocationAllocation)

                ' INAODCostMatrixSolver
                txtODDefaultCutoff.Text = GetStringFromObject(odSolver.DefaultCutoff)
                txtODDefaultTargetDestinationCount.Text = GetStringFromObject(odSolver.DefaultTargetDestinationCount)
                cboODOutputLines.SelectedIndex = Convert.ToInt32(odSolver.OutputLines)

                ' INASolverSettings
                PopulateImpedanceNameControl(cboODImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName)
                chkODUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0)
                chkODUseHierarchy.Checked = (chkODUseHierarchy.Enabled AndAlso naSolverSettings.UseHierarchy)
                chkODIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations
                cboODRestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns)
                PopulateAttributeControl(chklstODAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost)
                PopulateAttributeControl(chklstODRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction)

                ' INATimeAwareSolverSettings
                If (naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime) Then
                    chkODUseTime.Checked = True
                End If
                txtODUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString("HH:mm:ss MM/dd/yyyy")

            ElseIf saSolver IsNot Nothing Then 'SERVICE AREA SOLVER
                ' Remove unnecessary tabs
                tabPropPages.TabPages.Remove(tabRoute)
                tabPropPages.TabPages.Remove(tabClosestFacility)
                tabPropPages.TabPages.Remove(tabODCostMatrix)
                tabPropPages.TabPages.Remove(tabVRP)
                tabPropPages.TabPages.Remove(tabLocationAllocation)

                ' INAServiceAreaSolver2
                txtSADefaultBreaks.Text = ""
                For iBreak As Integer = 0 To saSolver.DefaultBreaks.Count - 1
                    txtSADefaultBreaks.Text = txtSADefaultBreaks.Text & " " & saSolver.DefaultBreaks.Element(iBreak).ToString()
                Next iBreak
                cboSATravelDirection.SelectedIndex = Convert.ToInt32(saSolver.TravelDirection)

                cboSAOutputPolygons.SelectedIndex = -1
                cboSAOutputPolygons.SelectedIndex = Convert.ToInt32(saSolver.OutputPolygons)
                chkSAOverlapPolygons.Checked = saSolver.OverlapPolygons
                chkSASplitPolygonsAtBreaks.Checked = saSolver.SplitPolygonsAtBreaks
                chkSAMergeSimilarPolygonRanges.Checked = saSolver.MergeSimilarPolygonRanges
                chkSATrimOuterPolygon.Checked = saSolver.TrimOuterPolygon
                txtSATrimPolygonDistance.Text = saSolver.TrimPolygonDistance.ToString()
                cboSATrimPolygonDistanceUnits.SelectedIndex = Convert.ToInt32(saSolver.TrimPolygonDistanceUnits)

                cboSAOutputLines.SelectedIndex = -1
                cboSAOutputLines.SelectedIndex = Convert.ToInt32(saSolver.OutputLines)
                chkSAOverlapLines.Checked = saSolver.OverlapLines
                chkSASplitLinesAtBreaks.Checked = saSolver.SplitLinesAtBreaks
                chkSAIncludeSourceInformationOnLines.Checked = saSolver.IncludeSourceInformationOnLines

                ' INASolverSettings
                PopulateImpedanceNameControl(cboSAImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName)
                chkSAIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations
                cboSARestrictUTurns.SelectedIndex = System.Convert.ToInt32(naSolverSettings.RestrictUTurns)
                PopulateAttributeControl(chklstSAAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost)
                PopulateAttributeControl(chklstSARestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction)

                ' INATimeAwareSolverSettings
                If (naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime) Then
                    chkSAUseTime.Checked = True
                End If
                txtSAUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString("HH:mm:ss MM/dd/yyyy")

            ElseIf vrpSolver IsNot Nothing Then ' VRP Solver
                ' Remove unnecessary tabs
                tabPropPages.TabPages.Remove(tabRoute)
                tabPropPages.TabPages.Remove(tabClosestFacility)
                tabPropPages.TabPages.Remove(tabODCostMatrix)
                tabPropPages.TabPages.Remove(tabServiceArea)
                tabPropPages.TabPages.Remove(tabLocationAllocation)

                cboVRPOutputShapeType.SelectedIndex = Convert.ToInt32(vrpSolver.OutputLines)
                cboVRPAllowUTurns.SelectedIndex = Convert.ToInt32(naSolverSettings.RestrictUTurns)
                ' VRP cannot have unknown units, so the index is offset by 1 from the solver field units
                cboVRPDistanceFieldUnits.SelectedIndex = Convert.ToInt32(vrpSolver.DistanceFieldUnits) - 1
                cboVRPTransitTime.SelectedIndex = Convert.ToInt32(vrpSolver.ExcessTransitTimePenaltyFactor)
                cboVRPTimeWindow.SelectedIndex = Convert.ToInt32(vrpSolver.TimeWindowViolationPenaltyFactor)
                cboVRPTimeFieldUnits.SelectedIndex = Convert.ToInt32(vrpSolver.TimeFieldUnits - 20)

                txtVRPCapacityCount.Text = vrpSolver.CapacityCount.ToString()
                txtVRPDefaultDate.Text = vrpSolver.DefaultDate.ToShortDateString()

                chkVRPUseHierarchy.Checked = naSolverSettings.UseHierarchy

                PopulateAttributeControl(chklstVRPRestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction)

                'populate the time attribute combo box
                cboVRPTimeAttribute.Items.Clear()

                For i As Integer = 0 To networkDataset.AttributeCount - 1
                    Dim networkAttribute As INetworkAttribute = networkDataset.Attribute(i)

                    If networkAttribute.UsageType = esriNetworkAttributeUsageType.esriNAUTCost AndAlso networkAttribute.Units >= esriNetworkAttributeUnits.esriNAUSeconds Then
                        cboVRPTimeAttribute.Items.Add(networkAttribute.Name)
                    End If
                Next i

                If cboVRPTimeAttribute.Items.Count > 0 Then
                    cboVRPTimeAttribute.Text = naSolverSettings.ImpedanceAttributeName
                End If


                ' for VRP, the AccumulateAttributeNames hold the length, and it can only hold one length.
                '  Loop through the network dataset attributes
                cboVRPDistanceAttribute.Items.Clear()
                cboVRPDistanceAttribute.SelectedIndex = cboVRPDistanceAttribute.Items.Add("")

                For i As Integer = 0 To networkDataset.AttributeCount - 1
                    Dim networkAttribute As INetworkAttribute = networkDataset.Attribute(i)
                    If networkAttribute.UsageType = esriNetworkAttributeUsageType.esriNAUTCost AndAlso networkAttribute.Units < esriNetworkAttributeUnits.esriNAUSeconds Then
                        Dim attributeName As String = networkAttribute.Name

                        Dim cboindex As Integer = cboVRPDistanceAttribute.Items.Add(networkAttribute.Name)

                        ' If the attribute is in the strArray, it should be the selected one
                        For j As Integer = 0 To naSolverSettings.AccumulateAttributeNames.Count - 1
                            If naSolverSettings.AccumulateAttributeNames.Element(j) = attributeName Then
                                cboVRPDistanceAttribute.SelectedIndex = cboindex
                            End If
                        Next j
                    End If
                Next i
            ElseIf laSolver IsNot Nothing Then ' Location-Allocation LAYER
                ' Remove unnecessary tabs
                tabPropPages.TabPages.Remove(tabRoute)
                tabPropPages.TabPages.Remove(tabClosestFacility)
                tabPropPages.TabPages.Remove(tabODCostMatrix)
                tabPropPages.TabPages.Remove(tabServiceArea)
                tabPropPages.TabPages.Remove(tabVRP)

                ' INALocationAllocationSolver
                txtLACutOff.Text = GetStringFromObject(laSolver.DefaultCutoff)
                txtLAFacilitiesToLocate.Text = laSolver.NumberFacilitiesToLocate.ToString()
                txtLAImpParameter.Text = laSolver.TransformationParameter.ToString()
                txtLATargetMarketShare.Text = laSolver.TargetMarketSharePercentage.ToString()

                cboLAImpTransformation.SelectedIndex = Convert.ToInt32(laSolver.ImpedanceTransformation)
                cboLAProblemType.SelectedIndex = Convert.ToInt32(laSolver.ProblemType)
                cboLAOutputLines.SelectedIndex = Convert.ToInt32(laSolver.OutputLines)
                cboLATravelDirection.SelectedIndex = Convert.ToInt32(laSolver.TravelDirection)

                '// INASolverSettings
                PopulateImpedanceNameControl(cboLAImpedance, networkDataset, naSolverSettings.ImpedanceAttributeName)
                PopulateAttributeControl(chklstLAAccumulateAttributeNames, networkDataset, naSolverSettings.AccumulateAttributeNames, esriNetworkAttributeUsageType.esriNAUTCost)
                PopulateAttributeControl(chklstLARestrictionAttributeNames, networkDataset, naSolverSettings.RestrictionAttributeNames, esriNetworkAttributeUsageType.esriNAUTRestriction)
                chkLAUseHierarchy.Enabled = (naSolverSettings.HierarchyAttributeName.Length > 0)
                chkLAUseHierarchy.Checked = (chkCFUseHierarchy.Enabled AndAlso naSolverSettings.UseHierarchy)
                chkLAIgnoreInvalidLocations.Checked = naSolverSettings.IgnoreInvalidLocations

                ' INATimeAwareSolverSettings
                If (naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime) Then
                    chkLAUseTime.Checked = True
                End If
                txtLAUseTime.Text = naTimeAwareSolverSettings.TimeOfDay.ToString("HH:mm:ss MM/dd/yyyy")
            Else ' Unknown type of layer
                ' Remove unnecessary tabs
                tabPropPages.TabPages.Remove(tabRoute)
                tabPropPages.TabPages.Remove(tabClosestFacility)
                tabPropPages.TabPages.Remove(tabODCostMatrix)
                tabPropPages.TabPages.Remove(tabServiceArea)
                tabPropPages.TabPages.Remove(tabVRP)
                tabPropPages.TabPages.Remove(tabLocationAllocation)
            End If
        End Sub

        ''' <summary>
        ''' Interrogate the network dataset attributes to populate a list of attribute parameters
        ''' </summary>
        Private Sub PopulateAttributeParameterControl(ByVal networkDataset As INetworkDataset)
            Dim solverSettings As INASolverSettings2 = TryCast(m_naLayer.Context.Solver, INASolverSettings2)

            ' Track if there are attribute parameters, to decide if the attribute parameter tab should be displayed
            Dim hasAttributeParameters As Boolean = False

            ' Iterate over all of the network attributes to search for parameters
            For attrIndex As Integer = 0 To networkDataset.AttributeCount - 1
                Dim networkAttribute As INetworkAttribute3 = TryCast(networkDataset.Attribute(attrIndex), INetworkAttribute3)
                Dim attributeName As String = networkAttribute.Name

                ' Iterate over all of the parameters, to find their values
                For paramIndex As Integer = 0 To networkAttribute.Parameters.Count - 1
                    hasAttributeParameters = True

                    ' Find the current attribute parameter value for this layer
                    Dim attributeParameter As INetworkAttributeParameter2 = TryCast(networkAttribute.Parameters.Element(paramIndex), INetworkAttributeParameter2)
                    Dim paramValue As Object = solverSettings.AttributeParameterValue(attributeName, attributeParameter.Name)

                    Dim rowID As Integer = attributeParameterGrid.Rows.Add()
                    attributeParameterGrid(CInt(AttributeParameterGridColumnType.ATTRIBUTE_NAME), rowID).Value = networkAttribute.Name
                    attributeParameterGrid(CInt(AttributeParameterGridColumnType.PARAMETER_NAME), rowID).Value = attributeParameter.Name

                    UpdateAttributeParameterValueCell(rowID, paramValue, DirectCast(attributeParameter.VarType, VARTYPE), attributeParameter.ParameterUsageType)
                Next
            Next

            ' Don't display the attribute parameters tab, if there are no attribute parameters
            If Not hasAttributeParameters Then
                tabPropPages.TabPages.Remove(tabAttributeParameters)
            End If
        End Sub

        Private Sub UpdateAttributeParameterValueCell(ByVal rowID As Integer, ByVal paramValue As Object, ByVal paramVarType As VARTYPE, Optional ByVal paramUsageType As esriNetworkAttributeParameterUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral)
            Dim cellText As String = ConvertAttributeParameterValueToString(paramValue, paramVarType, paramUsageType)

            ' Set up the combo box choices for restriction attribute parameters
            If paramUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTRestriction Then
                attributeParameterGrid(CInt(AttributeParameterGridColumnType.PARAMETER_VALUE), rowID) = CreateRestrictionParameterCell(paramValue, cellText, rowID)
            End If

            attributeParameterGrid(CInt(AttributeParameterGridColumnType.PARAMETER_VALUE), rowID).Value = cellText
        End Sub

        Private Function CreateStandardRestrictionParameterCell(ByVal rowID As Integer) As DataGridViewComboBoxCell
            Dim cbcRestriction As New DataGridViewComboBoxCell()
            cbcRestriction.Items.AddRange(m_restrictionParameterValues.Keys.ToArray())

            cbcRestriction.DisplayStyle = DataGridViewComboBoxDisplayStyle.[Nothing]
            Return cbcRestriction
        End Function

        Private Function CreateRestrictionParameterCell(ByVal paramValue As Object, ByVal cellText As String, ByVal rowID As Integer) As DataGridViewComboBoxCell
            Dim comboBoxCell As DataGridViewComboBoxCell = CreateStandardRestrictionParameterCell(rowID)

            Dim isCustomRestrictionParamValue As Boolean = Not m_restrictionParameterValues.ContainsValue(CDbl(paramValue))
            If isCustomRestrictionParamValue Then
                comboBoxCell.Items.Add(cellText)
            End If

            Return comboBoxCell
        End Function

        Private Function ConvertAttributeParameterValueToString(ByVal paramValue As Object, ByVal paramVarType As VARTYPE, Optional ByVal paramUsageType As esriNetworkAttributeParameterUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral) As String
            Dim paramValueString As String = ""

            ' Use bitwise arithmetic to determine if this parameter is an array.
            Dim vtBase As VARTYPE = DirectCast(CInt(paramVarType) And Not CInt(VARTYPE.VT_ARRAY), VARTYPE)
            Dim isArrayType As Boolean = (vtBase <> paramVarType)

            ' Null and DBNull should be represented as an empty string
            If Not System.DBNull.Value.Equals(paramValue) AndAlso paramValue IsNot Nothing Then
                ' For restriction attribute parameters, try to match the parameter double value with its associated
                '  text representation
                Dim isStandardRestrictionParamValue As Boolean = (paramUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTRestriction AndAlso m_restrictionParameterValues.ContainsValue(CDbl(paramValue)))
                If isStandardRestrictionParamValue Then
                    If isStandardRestrictionParamValue Then
                        ' Assign celltext to a key name matching the paramValue
                        Dim matchingKeys As IEnumerable(Of String) = From pair In m_restrictionParameterValues _
                                             Where (CDbl(paramValue).Equals(pair.Value)) _
                                             Select pair.Key

                        paramValueString = matchingKeys.First()
                    End If

                    ' For attribute parameters that are array types, determine the type of array, 
                    '   then convert the array to a string for display purposes.
                ElseIf isArrayType Then
                    Select Case vtBase
                        Case VARTYPE.VT_I2
                            paramValueString = ConvertGenericArrayToString(DirectCast(paramValue, Short()))
                            Exit Select
                        Case VARTYPE.VT_I4
                            paramValueString = ConvertGenericArrayToString(DirectCast(paramValue, Integer()))
                            Exit Select
                        Case VARTYPE.VT_R4
                            paramValueString = ConvertGenericArrayToString(DirectCast(paramValue, Single()))
                            Exit Select
                        Case VARTYPE.VT_R8
                            paramValueString = ConvertGenericArrayToString(DirectCast(paramValue, Double()))
                            Exit Select
                        Case VARTYPE.VT_DATE
                            paramValueString = ConvertGenericArrayToString(DirectCast(paramValue, DateTime()))
                            Exit Select
                        Case VARTYPE.VT_BSTR
                            paramValueString = ConvertGenericArrayToString(DirectCast(paramValue, String()))
                            Exit Select
                        Case VARTYPE.VT_BOOL
                            paramValueString = ConvertGenericArrayToString(DirectCast(paramValue, Boolean()))
                            Exit Select
                        Case Else
                            Throw New Exception("Unexpected array base type")
                    End Select
                Else
                    paramValueString = paramValue.ToString()
                End If
            End If

            Return paramValueString
        End Function

        ''' <summary>
        ''' Take generic arrays and convert them to a string
        ''' </summary>
        Private Shared Function ConvertGenericArrayToString(Of T)(ByVal values As T()) As String
            Dim sValues As String() = System.Array.ConvertAll(values, Function(p) p.ToString())
            Return [String].Join(",", sValues)
        End Function

        ''' <summary>
        ''' Take string values and convert them to generic arrays
        ''' </summary>
        Private Shared Function ConvertStringToGenericArray(Of T)(ByVal cellValue As String) As T()
            Dim list As New List(Of T)()

            Dim values As String() = cellValue.Split(","c)
            For Each value As String In values
                list.Add(DirectCast(Convert.ChangeType(value, GetType(T)), T))
            Next

            Return list.ToArray()
        End Function

        ''' <summary>
        ''' Updates the NALayer based on the current controls.
        ''' This will update the solver settings for the solver referenced by the NALayer.
        ''' </summary>
        Private Sub UpdateNALayer(ByVal naLayer As INALayer)
            Dim layer As ILayer = TryCast(naLayer, ILayer)
            Dim naContext As INAContext = naLayer.Context
            Dim networkDataset As INetworkDataset = naContext.NetworkDataset
            Dim naLocator As INALocator2 = TryCast(naContext.Locator, INALocator2)

            Dim naSolver As INASolver = naContext.Solver
            Dim naSolverSettings As INASolverSettings = TryCast(naSolver, INASolverSettings2)
            Dim naTimeAwareSolverSettings As INATimeAwareSolverSettings = TryCast(naSolver, INATimeAwareSolverSettings)

            Dim routeSolver As INARouteSolver2 = TryCast(naSolver, INARouteSolver2)
            Dim cfSolver As INAClosestFacilitySolver = TryCast(naSolver, INAClosestFacilitySolver)
            Dim odSolver As INAODCostMatrixSolver = TryCast(naSolver, INAODCostMatrixSolver)
            Dim saSolver As INAServiceAreaSolver2 = TryCast(naSolver, INAServiceAreaSolver2)
            Dim vrpSolver As INAVRPSolver = TryCast(naSolver, INAVRPSolver)
            Dim laSolver As INALocationAllocationSolver = TryCast(naSolver, INALocationAllocationSolver)

            ' Set Layer properties
            layer.Name = txtLayerName.Text
            naLocator.MaxSnapTolerance = Convert.ToDouble(txtMaxSearchTolerance.Text)
            naLocator.SnapToleranceUnits = CType(cboMaxSearchToleranceUnits.SelectedIndex, esriUnits)

            SetAttributeParameters(networkDataset)

            ' Set Solver properties
            If routeSolver IsNot Nothing Then ' ROUTE LAYER
                ' INARouteSolver
                routeSolver.FindBestSequence = chkRouteFindBestSequence.Checked
                routeSolver.PreserveFirstStop = chkRoutePreserveFirstStop.Checked
                routeSolver.PreserveLastStop = chkRoutePreserveLastStop.Checked
                routeSolver.UseTimeWindows = chkRouteUseTimeWindows.Checked
                routeSolver.UseStartTime = chkRouteUseStartTime.Checked
                Try
                    routeSolver.StartTime = System.Convert.ToDateTime(txtRouteStartTime.Text)
                Catch e As Exception
                    MessageBox.Show("Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.")
                End Try
                routeSolver.OutputLines = CType(cboRouteOutputLines.SelectedIndex, esriNAOutputLineType)

                ' INASolverSettings
                naSolverSettings.ImpedanceAttributeName = cboRouteImpedance.Text
                naSolverSettings.UseHierarchy = chkRouteUseHierarchy.Checked
                naSolverSettings.IgnoreInvalidLocations = chkRouteIgnoreInvalidLocations.Checked
                naSolverSettings.RestrictUTurns = CType(cboRouteRestrictUTurns.SelectedIndex, esriNetworkForwardStarBacktrack)
                naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstRouteAccumulateAttributeNames)
                naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstRouteRestrictionAttributeNames)

            ElseIf cfSolver IsNot Nothing Then ' CLOSEST FACILITY LAYER
                If txtCFDefaultCutoff.Text.Length = 0 Then
                    cfSolver.DefaultCutoff = Nothing
                Else
                    cfSolver.DefaultCutoff = Convert.ToDouble(txtCFDefaultCutoff.Text)
                End If

                If txtCFDefaultTargetFacilityCount.Text.Length = 0 Then
                    cfSolver.DefaultTargetFacilityCount = 1
                Else
                    cfSolver.DefaultTargetFacilityCount = Convert.ToInt32(txtCFDefaultTargetFacilityCount.Text)
                End If

                cfSolver.TravelDirection = CType(cboCFTravelDirection.SelectedIndex, esriNATravelDirection)
                cfSolver.OutputLines = CType(cboCFOutputLines.SelectedIndex, esriNAOutputLineType)

                ' INASolverSettings
                naSolverSettings.ImpedanceAttributeName = cboCFImpedance.Text
                naSolverSettings.UseHierarchy = chkCFUseHierarchy.Checked
                naSolverSettings.IgnoreInvalidLocations = chkCFIgnoreInvalidLocations.Checked
                naSolverSettings.RestrictUTurns = CType(cboCFRestrictUTurns.SelectedIndex, esriNetworkForwardStarBacktrack)
                naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstCFAccumulateAttributeNames)
                naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstCFRestrictionAttributeNames)

                ' INATimeAwareSolverSettings
                Try
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtCFUseTime.Text)
                Catch e As Exception
                    MessageBox.Show("Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.")
                End Try
                naTimeAwareSolverSettings.TimeOfDayUsage = CType(cboCFTimeUsage.SelectedIndex, esriNATimeOfDayUsage)

            ElseIf odSolver IsNot Nothing Then ' OD COST MATRIX LAYER
                If txtODDefaultCutoff.Text.Length = 0 Then
                    odSolver.DefaultCutoff = Nothing
                Else
                    odSolver.DefaultCutoff = Convert.ToDouble(txtODDefaultCutoff.Text)
                End If

                If txtODDefaultTargetDestinationCount.Text.Length = 0 Then
                    odSolver.DefaultTargetDestinationCount = Nothing
                Else
                    odSolver.DefaultTargetDestinationCount = Convert.ToInt32(txtODDefaultTargetDestinationCount.Text)
                End If

                odSolver.OutputLines = CType(cboODOutputLines.SelectedIndex, esriNAOutputLineType)

                ' INASolverSettings
                naSolverSettings.ImpedanceAttributeName = cboODImpedance.Text
                naSolverSettings.UseHierarchy = chkODUseHierarchy.Checked
                naSolverSettings.IgnoreInvalidLocations = chkODIgnoreInvalidLocations.Checked
                naSolverSettings.RestrictUTurns = CType(cboODRestrictUTurns.SelectedIndex, esriNetworkForwardStarBacktrack)
                naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstODAccumulateAttributeNames)
                naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstODRestrictionAttributeNames)

                ' INATimeAwareSolverSettings
                Try
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtODUseTime.Text)
                Catch e As Exception
                    MessageBox.Show("Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.")
                End Try
                If (chkODUseTime.Checked) Then
                    naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime
                End If

            ElseIf saSolver IsNot Nothing Then ' SERVICE AREA SOLVER
                Dim defaultBreaks As IDoubleArray = saSolver.DefaultBreaks
                defaultBreaks.RemoveAll()
                Dim breaks As String = txtSADefaultBreaks.Text.Trim()
                breaks.Replace("  ", " ")
                Dim values() As String = breaks.Split(" "c)
                For iBreak As Integer = values.GetLowerBound(0) To values.GetUpperBound(0)
                    defaultBreaks.Add(System.Convert.ToDouble(values.GetValue(iBreak)))
                Next iBreak
                saSolver.DefaultBreaks = defaultBreaks
                saSolver.TravelDirection = CType(cboSATravelDirection.SelectedIndex, esriNATravelDirection)

                saSolver.OutputPolygons = CType(cboSAOutputPolygons.SelectedIndex, esriNAOutputPolygonType)
                saSolver.OverlapPolygons = chkSAOverlapPolygons.Checked
                saSolver.SplitPolygonsAtBreaks = chkSASplitPolygonsAtBreaks.Checked
                saSolver.MergeSimilarPolygonRanges = chkSAMergeSimilarPolygonRanges.Checked
                saSolver.TrimOuterPolygon = chkSATrimOuterPolygon.Checked
                saSolver.TrimPolygonDistance = Convert.ToDouble(Me.txtSATrimPolygonDistance.Text)
                saSolver.TrimPolygonDistanceUnits = CType(cboSATrimPolygonDistanceUnits.SelectedIndex, esriUnits)

                If cboSAOutputLines.SelectedIndex = 0 Then
                    saSolver.OutputLines = CType(cboSAOutputLines.SelectedIndex, esriNAOutputLineType)
                Else ' Does not support Straight lines, so not in combobox, up by one to account for this
                    saSolver.OutputLines = CType(cboSAOutputLines.SelectedIndex + 1, esriNAOutputLineType)
                End If

                saSolver.OverlapLines = chkSAOverlapLines.Checked
                saSolver.SplitLinesAtBreaks = chkSASplitLinesAtBreaks.Checked
                saSolver.IncludeSourceInformationOnLines = Me.chkSAIncludeSourceInformationOnLines.Checked

                ' INASolverSettings
                naSolverSettings.ImpedanceAttributeName = cboSAImpedance.Text
                naSolverSettings.IgnoreInvalidLocations = chkSAIgnoreInvalidLocations.Checked
                naSolverSettings.RestrictUTurns = CType(cboSARestrictUTurns.SelectedIndex, esriNetworkForwardStarBacktrack)
                naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstSAAccumulateAttributeNames)
                naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstSARestrictionAttributeNames)

                ' INATimeAwareSolverSettings
                Try
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtSAUseTime.Text)
                Catch e As Exception
                    MessageBox.Show("Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.")
                End Try
                If (chkSAUseTime.Checked) Then
                    naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime
                End If
            ElseIf vrpSolver IsNot Nothing Then
                naSolverSettings.ImpedanceAttributeName = cboVRPTimeAttribute.Text
                naSolverSettings.AccumulateAttributeNames.RemoveAll()
                Dim strArray As IStringArray = naSolverSettings.AccumulateAttributeNames
                strArray.RemoveAll()
                strArray.Add(cboVRPDistanceAttribute.Text)
                naSolverSettings.AccumulateAttributeNames = strArray

                vrpSolver.CapacityCount = Convert.ToInt32(txtVRPCapacityCount.Text)
                Try
                    vrpSolver.DefaultDate = Convert.ToDateTime(txtVRPDefaultDate.Text)
                Catch e As Exception
                    MessageBox.Show("Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.")
                End Try
                vrpSolver.TimeFieldUnits = CType((cboVRPTimeFieldUnits.SelectedIndex + 20), esriNetworkAttributeUnits)

                ' there cannot be unknown units for a VRP, so the index is offset by 1
                vrpSolver.DistanceFieldUnits = CType((cboVRPDistanceFieldUnits.SelectedIndex + 1), esriNetworkAttributeUnits)
                naSolverSettings.RestrictUTurns = CType(cboVRPAllowUTurns.SelectedIndex, esriNetworkForwardStarBacktrack)
                vrpSolver.OutputLines = CType(cboVRPOutputShapeType.SelectedIndex, esriNAOutputLineType)
                vrpSolver.TimeWindowViolationPenaltyFactor = cboVRPTimeWindow.SelectedIndex
                vrpSolver.ExcessTransitTimePenaltyFactor = cboVRPTransitTime.SelectedIndex

                naSolverSettings.UseHierarchy = chkVRPUseHierarchy.Checked

                naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstVRPRestrictionAttributeNames)
            ElseIf laSolver IsNot Nothing Then ' Location-Allocation LAYER
                If txtLACutOff.Text.Length = 0 Then
                    laSolver.DefaultCutoff = Nothing
                ElseIf Convert.ToDouble(txtLACutOff.Text) = 0.0 Then
                    laSolver.DefaultCutoff = Nothing
                Else
                    laSolver.DefaultCutoff = Convert.ToDouble(txtLACutOff.Text)
                End If

                If txtLAFacilitiesToLocate.Text.Length = 0 Then
                    laSolver.NumberFacilitiesToLocate = 1
                Else
                    laSolver.NumberFacilitiesToLocate = Convert.ToInt32(txtLAFacilitiesToLocate.Text)
                End If

                laSolver.ProblemType = CType(cboLAProblemType.SelectedIndex, esriNALocationAllocationProblemType)
                laSolver.ImpedanceTransformation = CType(cboLAImpTransformation.SelectedIndex, esriNAImpedanceTransformationType)
                laSolver.TransformationParameter = Convert.ToDouble(txtLAImpParameter.Text)
                laSolver.TargetMarketSharePercentage = Convert.ToDouble(txtLATargetMarketShare.Text)
                laSolver.TravelDirection = CType(cboLATravelDirection.SelectedIndex, esriNATravelDirection)
                laSolver.OutputLines = CType(cboLAOutputLines.SelectedIndex, esriNAOutputLineType)

                '// INASolverSettings
                naSolverSettings.ImpedanceAttributeName = cboLAImpedance.Text
                naSolverSettings.UseHierarchy = chkLAUseHierarchy.Checked
                naSolverSettings.AccumulateAttributeNames = GetCheckedAttributeNamesFromControl(chklstLAAccumulateAttributeNames)
                naSolverSettings.RestrictionAttributeNames = GetCheckedAttributeNamesFromControl(chklstLARestrictionAttributeNames)
                naSolverSettings.IgnoreInvalidLocations = chkLAIgnoreInvalidLocations.Checked

                ' INATimeAwareSolverSettings
                Try
                    naTimeAwareSolverSettings.TimeOfDay = DateTime.Parse(txtLAUseTime.Text)
                Catch e As Exception
                    MessageBox.Show("Invalid Time specified.  Use the format HH:mm:ss MM/dd/yyyy.")
                End Try
                If (chkLAUseTime.Checked) Then
                    naTimeAwareSolverSettings.TimeOfDayUsage = esriNATimeOfDayUsage.esriNATimeOfDayUseAsStartTime
                End If
            End If
        End Sub

        ''' <summary>
        ''' Populate the attribute parameter values based on the data grid rows.
        ''' </summary>
        Private Sub SetAttributeParameters(ByVal networkDataset As INetworkDataset)
            Dim solverSettings As INASolverSettings2 = TryCast(m_naLayer.Context.Solver, INASolverSettings2)

            ' The parameter values will be updated for every row in the data grid view
            For rowIndex As Integer = 0 To attributeParameterGrid.Rows.Count - 1
                Dim row As DataGridViewRow = attributeParameterGrid.Rows(rowIndex)

                ' Use the first cell value to find the appropriate network attribute
                Dim netAttribute As INetworkAttribute3 = TryCast(networkDataset.AttributeByName(row.Cells(CInt(AttributeParameterGridColumnType.ATTRIBUTE_NAME)).Value.ToString()), INetworkAttribute3)
                Dim attributeName As String = netAttribute.Name

                For paramIndex As Integer = 0 To netAttribute.Parameters.Count - 1
                    Dim parameter As INetworkAttributeParameter2 = TryCast(netAttribute.Parameters.Element(paramIndex), INetworkAttributeParameter2)
                    Dim paramName As String = parameter.Name
                    Try
                        ' Get the base type for the parameter.  For example, if the type is a double array,
                        '  then the base type is double.
                        Dim vt As VARTYPE = DirectCast(parameter.VarType, VARTYPE)
                        Dim vtBase As VARTYPE = DirectCast(CInt(vt) And Not CInt(VARTYPE.VT_ARRAY), VARTYPE)

                        ' Determine if the parameter is an array
                        Dim isArrayType As Boolean = (vtBase <> vt)

                        ' Use the second cell value to find the appropriate parameter
                        If parameter.Name = row.Cells(CInt(AttributeParameterGridColumnType.PARAMETER_NAME)).Value.ToString() Then
                            Dim paramValue As Object = System.DBNull.Value

                            Dim cellValue As Object = row.Cells(CInt(AttributeParameterGridColumnType.PARAMETER_VALUE)).Value
                            If Not System.DBNull.Value.Equals(cellValue) AndAlso cellValue IsNot Nothing Then
                                paramValue = ConvertStringToAttributeParameterValue(cellValue.ToString(), DirectCast(parameter.VarType, VARTYPE), parameter.ParameterUsageType)
                            End If

                            solverSettings.AttributeParameterValue(attributeName, paramName) = paramValue
                        End If
                    Catch e As Exception
                        Throw New Exception(("Invalid attribute parameter value." & vbLf & "Attribute: " & attributeName & vbLf & "Parameter: " & paramName & vbLf & "Error Message: ") + e.Message)
                    End Try
                Next
            Next
        End Sub

        Private Function ConvertStringToAttributeParameterValue(ByVal paramValueText As String, ByVal paramVarType As VARTYPE, Optional ByVal paramUsageType As esriNetworkAttributeParameterUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTGeneral) As Object
            Dim paramValue As Object = System.DBNull.Value
            ' Regardless of the VarType, the parameter value can be DBNull
            ' Use bitwise arithmetic to determine if this parameter is an array.
            Dim vtBase As VARTYPE = DirectCast(CInt(paramVarType) And Not CInt(VARTYPE.VT_ARRAY), VARTYPE)
            Dim isArrayType As Boolean = (vtBase <> paramVarType)

            If paramValueText <> "" Then
                ' Restriction parameters are specially handled, due to the conversion between displayed text values
                '  and stored double values
                Dim isRestrictionParm As Boolean = (paramUsageType = esriNetworkAttributeParameterUsageType.esriNAPUTRestriction)

                ' For restriction parameters that have text values in the list, use the associated double values
                If isRestrictionParm AndAlso m_restrictionParameterValues.ContainsKey(paramValueText) Then
                    paramValue = m_restrictionParameterValues(paramValueText)

                    ' For attribute parameters that are array types, determine the type of array, 
                    '   then convert the string to the appropriate array type.
                ElseIf isArrayType Then
                    Select Case vtBase
                        Case VARTYPE.VT_I2
                            paramValue = ConvertStringToGenericArray(Of Short)(paramValueText)
                            Exit Select
                        Case VARTYPE.VT_I4
                            paramValue = ConvertStringToGenericArray(Of Integer)(paramValueText)
                            Exit Select
                        Case VARTYPE.VT_R4
                            paramValue = ConvertStringToGenericArray(Of Single)(paramValueText)
                            Exit Select
                        Case VARTYPE.VT_R8
                            paramValue = ConvertStringToGenericArray(Of Double)(paramValueText)
                            Exit Select
                        Case VARTYPE.VT_DATE
                            paramValue = ConvertStringToGenericArray(Of DateTime)(paramValueText)
                            Exit Select
                        Case VARTYPE.VT_BSTR
                            paramValue = ConvertStringToGenericArray(Of String)(paramValueText)
                            Exit Select
                        Case VARTYPE.VT_BOOL
                            paramValue = ConvertStringToGenericArray(Of Boolean)(paramValueText)
                            Exit Select
                        Case Else
                            Throw New Exception("Unexpected array base type")
                    End Select
                Else
                    ' Simple type
                    ' Conversion for simple types is handled automatically, if the string can be converted to the VARTYPE
                    paramValue = paramValueText
                End If
            End If
            Return paramValue
        End Function

        ''' <summary>
        ''' Update the Impedance control based on the network dataset cost attributes
        ''' </summary>
        Private Sub PopulateImpedanceNameControl(ByVal cboImpedance As ComboBox, ByVal networkDataset As INetworkDataset, ByVal impedanceName As String)
            cboImpedance.Items.Clear()

            For i As Integer = 0 To networkDataset.AttributeCount - 1
                Dim networkAttribute As INetworkAttribute = networkDataset.Attribute(i)
                If networkAttribute.UsageType = esriNetworkAttributeUsageType.esriNAUTCost Then
                    cboImpedance.Items.Add(networkAttribute.Name)
                End If
            Next i

            If cboImpedance.Items.Count > 0 Then
                cboImpedance.Text = impedanceName
            End If
        End Sub

        ''' <summary>
        ''' Update the CheckedListBox control based on the network dataset attributes (checking the ones currently chosen by the solver)
        ''' </summary>
        Private Sub PopulateAttributeControl(ByVal chklstBox As CheckedListBox, ByVal networkDataset As INetworkDataset, ByVal strArray As IStringArray, ByVal usageType As esriNetworkAttributeUsageType)
            chklstBox.Items.Clear()

            '  Loop through the newtork dataset attributes
            For i As Integer = 0 To networkDataset.AttributeCount - 1
                Dim networkAttribute As INetworkAttribute = networkDataset.Attribute(i)
                If networkAttribute.UsageType = usageType Then
                    Dim attributeName As String = networkAttribute.Name
                    Dim checkState As CheckState = checkState.Unchecked

                    ' If the attribute is in the strArray, it should be checked
                    For j As Integer = 0 To strArray.Count - 1
                        If strArray.Element(j) = attributeName Then
                            checkState = checkState.Checked
                        End If
                    Next j

                    ' Add the attribute to the control
                    chklstBox.Items.Add(attributeName, checkState)
                End If
            Next i
        End Sub

        ''' <summary>
        ''' Returns the attribute names checked.
        ''' </summary>
        Private Function GetCheckedAttributeNamesFromControl(ByVal chklstBox As CheckedListBox) As IStringArray
            Dim attributeNames As IStringArray = New StrArrayClass()

            For i As Integer = 0 To chklstBox.CheckedItems.Count - 1
                attributeNames.Add(chklstBox.Items(chklstBox.CheckedIndices(i)).ToString())
            Next i

            Return attributeNames
        End Function

        ''' <summary>
        ''' Encapsulates returning an empty string if the object is NULL.
        ''' </summary>
        Private Function GetStringFromObject(ByVal value As Object) As String
            If value Is Nothing Then
                Return ""
            Else
                Return value.ToString()
            End If
        End Function

        Private Sub chkRouteUseStartTime_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkRouteUseStartTime.CheckedChanged
            txtRouteStartTime.Enabled = chkRouteUseStartTime.Checked
        End Sub

        Private Sub chkRouteFindBestSequence_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chkRouteFindBestSequence.CheckedChanged
            chkRoutePreserveFirstStop.Enabled = chkRouteFindBestSequence.Checked
            chkRoutePreserveLastStop.Enabled = chkRouteFindBestSequence.Checked
        End Sub

        ' Enable/Disable SA Polygon controls if not generating polygons
        Private Sub cboSAOutputPolygons_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cboSAOutputPolygons.SelectedIndexChanged
            Dim bOutputPolygons As Boolean = (cboSAOutputPolygons.SelectedIndex > 0)
            chkSAOverlapPolygons.Enabled = bOutputPolygons
            chkSASplitPolygonsAtBreaks.Enabled = bOutputPolygons
            chkSAMergeSimilarPolygonRanges.Enabled = bOutputPolygons
            chkSATrimOuterPolygon.Enabled = bOutputPolygons
            txtSATrimPolygonDistance.Enabled = bOutputPolygons
            cboSATrimPolygonDistanceUnits.Enabled = bOutputPolygons
        End Sub

        ' Enable/Disable SA Line controls if not generating lines
        Private Sub cboSAOutputLines_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cboSAOutputLines.SelectedIndexChanged
            Dim bOutputLines As Boolean = (cboSAOutputLines.SelectedIndex > 0)
            chkSAOverlapLines.Enabled = bOutputLines
            chkSASplitLinesAtBreaks.Enabled = bOutputLines
            chkSAIncludeSourceInformationOnLines.Enabled = bOutputLines
        End Sub

        Private Sub cboLAProblemType_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cboLAProblemType.SelectedIndexChanged
            If (cboLAProblemType.SelectedIndex = 5) OrElse (cboLAProblemType.SelectedIndex = 2) Then
                txtLAFacilitiesToLocate.Enabled = False
            Else
                txtLAFacilitiesToLocate.Enabled = True
            End If

            If cboLAProblemType.SelectedIndex = 5 Then
                txtLATargetMarketShare.Enabled = True
            Else
                txtLATargetMarketShare.Enabled = False
            End If
        End Sub

        Private Sub btnOK_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOK.Click
            m_okClicked = True

            Try
                ' Get the NAContext and NetworkDataset
                Dim naContext As INAContext = m_naLayer.Context
                Dim networkDataset As INetworkDataset = naContext.NetworkDataset

                ' Update the layer properties based on the items chosen
                UpdateNALayer(m_naLayer)

                ' Update the Context so it can respond to changes made to the solver settings
                Dim gpMessages As IGPMessages = New GPMessagesClass()
                Dim deNetworkDataset As IDENetworkDataset = TryCast((CType(networkDataset, IDatasetComponent)).DataElement, IDENetworkDataset)
                naContext.Solver.UpdateContext(naContext, deNetworkDataset, gpMessages)

                Me.Close()
            Catch ex As Exception
                MessageBox.Show("Failed to update the layer. " + ex.Message)
            End Try
        End Sub

        Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click
            m_okClicked = False
            Me.Close()
        End Sub

        Private Sub btnReset_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnReset.Click
            Dim networkDataset As INetworkDataset = m_naLayer.Context.NetworkDataset
            Dim solverSettings As INASolverSettings2 = TryCast(m_naLayer.Context.Solver, INASolverSettings2)

            ' The parameter values will be reset for every row in the data grid view
            For rowID As Integer = 0 To attributeParameterGrid.Rows.Count - 1
                Dim row As DataGridViewRow = attributeParameterGrid.Rows(rowID)

                ' Use the first cell value to find the appropriate network attribute
                Dim netAttribute As INetworkAttribute3 = TryCast(networkDataset.AttributeByName(row.Cells(CInt(AttributeParameterGridColumnType.ATTRIBUTE_NAME)).Value.ToString()), INetworkAttribute3)
                Dim attributeParameters As IArray = netAttribute.Parameters
                Dim attributeName As String = netAttribute.Name

                ' Check every parameter to find the matching one
                For paramIndex As Integer = 0 To netAttribute.Parameters.Count - 1
                    Dim attributeParameter As INetworkAttributeParameter2 = TryCast(attributeParameters.Element(paramIndex), INetworkAttributeParameter2)
                    If attributeParameter.Name = row.Cells(CInt(AttributeParameterGridColumnType.PARAMETER_NAME)).Value.ToString() Then
                        solverSettings.AttributeParameterValue(attributeName, attributeParameter.Name) = attributeParameter.DefaultValue
                        UpdateAttributeParameterValueCell(rowID, attributeParameter.DefaultValue, DirectCast(attributeParameter.VarType, VARTYPE), attributeParameter.ParameterUsageType)
                    End If
                Next
            Next
        End Sub
    End Class
End Namespace