Index: trunk/src/scriptbuilder/structures/ELEMENT.java
===================================================================
--- trunk/src/scriptbuilder/structures/ELEMENT.java	(revision 19)
+++ trunk/src/scriptbuilder/structures/ELEMENT.java	(revision 19)
@@ -0,0 +1,134 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package scriptbuilder.structures;
+
+/**
+ * Enumeration of every element which appears in the DTD as of 2017/07/01. They
+ * are in alphabetical order and broken up into 3 major sections.
+ *
+ * @author Bryan McGuffin
+ */
+public enum ELEMENT
+{
+    //These elements are the ones that have sub-elements in the DTD.
+    //They may or may not have character data attached.
+
+    TMC_SCRIPT,
+    ACTIVITY_LOG_EVALUATION,//EVENT
+    ADDITIONAL_INFO,
+    ATMS_EVALUATION,//EVENT
+    CAD_DATA,
+    CAD_EVALUATION,//EVENT
+    CAD_INCIDENT_EVENT,//EVENT
+    CARDFILE,
+    CHP_RADIO,//EVENT
+    CMS_EVALUATION,//EVENT
+    DIALOG,
+    FACILITATOR_EVALUATION,//EVENT
+    GENERAL,
+    GENERAL_INFO,
+    HEADER_INFO,
+    LOCATION,
+    LOCATION_INFO,
+    NEW_UNIT,
+    PARAMICS,//EVENT
+    RADIO_EVALUATION,
+    SAMPLE_MESSAGE,
+    SCRIPT_DATA,
+    SCRIPT_EVENT,
+    TELEPHONE,//EVENT
+    //These elements have no sub-elements, but all have character data.
+    ADDRESS,
+    AGY,
+    ALIAS,
+    AREA,
+    BADGE_NUM,
+    BEAT,
+    Beat,
+    CCTV_INFO,
+    CITY,
+    CMS_LINE,
+    COMMENT,
+    CURR_LOC,
+    DESTINATION,
+    DETAIL,
+    Direction,
+    EMS,
+    EXPECTED_ACTION,
+    FAX,
+    FIRE,
+    FullLoc,
+    ID,
+    INCIDENT,
+    Incident_type,
+    INSTRUCTOR,
+    Lane_number,
+    LAW,
+    LINE,
+    LOC,
+    Location_type,
+    MASTER_INC_NUM,
+    MAINTENANCE_RADIO,//EVENT
+    MISC_INFO,
+    NAME,
+    OFFICE,
+    OFFICER,
+    OOS,
+    P,
+    PHONE,
+    Postmile,
+    PRIMARY,
+    Route,
+    SERVICE,
+    STACK,
+    STATE,
+    STATUS,
+    Status,
+    STUDENT,
+    TEXT,
+    TIMER,
+    TIME_INDEX,
+    TITLE,
+    TMT_RADIO,//EVENT
+    TruncLoc,
+    TYPE,
+    Type,
+    TYPE_CODE,
+    UNIT_STATUS,
+    ZIP,
+    //These elements have no sub-elements or character data.
+    //They do have attributes.
+    AUDIO,//EVENT
+    TOW,//EVENT
+    UNIT,//EVENT
+    WITNESS;//EVENT
+
+    public String tag;
+
+    private ELEMENT()
+    {
+        this.tag = this.name();
+    }
+
+    /**
+     * Look up an element by its name.
+     *
+     * @param name the name of the element
+     * @return the element which has that name as its nametag, or null if none
+     * does
+     */
+    public static ELEMENT byName(String name)
+    {
+        for (ELEMENT e : ELEMENT.values())
+        {
+            if (e.tag.equals(name))
+            {
+                return e;
+            }
+        }
+        return null;
+    }
+}
