/*
 * 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;
    }
}
