--[==[
To inspect the content of this data module, use [[Special:ExpandTemplates]]
and enter the following input text:
  {{#invoke:Road data/dump|dump|module=Module:<name-of-this-module>}}

To inspect the content of this data module when editing, enter the following
into the Debug console:
  local util = require("Module:Road data/util")
  print(util.arrayToString(p))
To inspect a particular route type, change `p` above to include the route type,
e.g., `p.I` and `p["US-Hist"]`.
]==]

-- Texas
local TX = {}

local util = require("Module:Road data/util")
local format = mw.ustring.format
util.addAll(TX, require("Module:Road data/strings/USA"))

local suffix = " ([dab||%dab%, |]Texas)"
local suffix2 = " [dab||(%dab%)|]"

-- Interstate types
TX.I.link = {
	["2"] = "Interstate 2",
	["14"] = "Interstate 14",
	["27"] = "Interstate 27",
	["30"] = "Interstate 30",
	["35E"] = "Interstate 35E (Texas)",
	["35W"] = "Interstate 35W (Texas)",
	["37"] = "Interstate 37",
	["45"] = "Interstate 45",
	["69C"] = "Interstate 69C",
	["69E"] = "Interstate 69E",
	["69W"] = "Interstate 69W",
	["410"] = "Interstate 410",
	["820"] = "Interstate 820",
	default = {
		hook = "split",
		split = 100,
		above = "Interstate %route% (Texas)",
		below = "Interstate %route% in Texas"
	}
}
TX.IH = TX.I

for _,auxType in ipairs({"Alt", "Express", "Future", "Local", "Spur", "Temp", "Toll", "Truck"}) do
	local spec = TX[" aux "][auxType]
		for k, v in pairs(TX) do if k:find (auxType) then if k:find ("^I-") then 
			v.link = "Interstate %route% " .. spec.name .. suffix
		end
	end
end
TX["I-Toll"].shield = "Toll Texas Interstate Highway %route%.svg"
TX["I-Express"].shield = "%route% Express Lane free.svg"
TX["I-Express"].banner = ""
TX["I-Future"].shield = TX.I.shield
TX["I-Future"].link = TX.I.link
TX["I-Future"].banner = "Future plate blue.svg"

TX.BL.shieldmain = "Business Interstate %route% (TX).svg"
TX.BL.name = "Business " .. TX.I.name
TX.BL.link = "Interstate %route% Business" .. suffix

for k, v in pairs(TX) do if k:find ("^B%a") then 
	v.shieldmain = TX.BL.shieldmain
	v.name = TX.BL.name
	v.link = TX.BL.link
	end
end
TX["I-Bus"]=TX.BL
TX.BLBS.shieldmain = {TX.BL.shield, TX.BS.shield}

-- US types
TX.US.name = "U.S. Highway %route%"
TX.US.link = "U.S. Route %route% in Texas"

for k, v in pairs(TX) do if k:find ("^US %d") then 
	v.name = TX.US.name
	v.link = TX.US.link
	end
end

for _,auxType in ipairs({"Alt", "Bus", "Byp", "City", "Conn", "Emerg", "Opt", "Scenic", "Spur", "Temp", "Toll", "Truck"}) do
	local spec = TX[" aux "][auxType]
		for k, v in pairs(TX) do if k:find (auxType) then if k:find ("^US") then
			v.shieldmain = TX.US.shield
			v.name = spec.name .. " " .. TX.US.name
			v.link = TX.US.base .. " " .. spec.name .. suffix
			v.abbr = TX.US.abbr .. " " .. spec.abbrsuffix
			end
		end
	end
end
TX.UA = TX["US-Alt"]
TX.BU = TX["US-Bus"]

for _,year in ipairs({'1926', '1948', '1961'}) do
	for _,auxType in ipairs({"Alt", "Bus", "Byp", "Conn", "Opt", "Scenic", "Spur", "Temp", "Truck"}) do
		local type = "US " .. year
		local spec = TX[" aux "][auxType]
		TX[type .. "-" .. auxType] = {
			shield = TX[type].shield,
			shieldmain = TX[type].shieldmain,
			name = spec.name .. " " .. TX[type].name,
			link = TX[type].base .. " " .. spec.name .. suffix,
			abbr = TX[type].abbr .. " " .. spec.abbrsuffix,
			banner = spec.bannerprefix .. " plate " .. year .. ".svg",
			aux = spec.aux,
			width = "square"
		}
	end
end

TX["US-Bus"] = {
	shield = TX.US.shield,
	name = "Business " .. TX.US.name,
	link = "U.S. Route %route% Business" .. suffix,
	abbr = "Bus. " .. TX.US.abbr,
	banner = "Business plate.svg", -- see SHSD p. 3-7 https://ftp.dot.state.tx.us/pub/txdot-info/trf/shsd/2012/section3.pdf
	width = "expand",
	aux = TX[" aux "]
}
TX["Bus-US"] = TX["US-Bus"]

TX["US-Alt-Bus"] = {
	shield = TX.US.shield,
	name = "Business " .. TX["US-Alt"].name,
	link = "U.S. Route %route% Business Alternate" .. suffix,
	abbr = "Bus. " .. TX["US-Alt"].abbr,
	banner = "Business alternate plate.svg",
	width = "expand",
	aux = TX[" aux "].Alt
}


-- SH (main) types
TX.SH = {
	shield = "Texas %route%.svg",
	shieldmain = {
		["249"] = {"Texas %route%.svg", "Tomball Tollway.svg"},
		default = "Texas %route%.svg"
	},
	base = "Texas State Highway %route%",
	name = "State Highway %route%",
	link = "Texas State Highway %route%" .. suffix2,
	abbr = "SH&nbsp;%route%"
}
TX.TX = TX.SH

for _,type in ipairs({"SH", "TX"}) do
	for _,auxType in ipairs({"Alt", "Byp", "Conn", "Opt", "Scenic", "Spur", "Temp", "Truck"}) do
		local spec = TX[" aux "][auxType]
		TX[type .. "-" .. auxType] = {
			shield = TX.SH.shield,
			name = spec.name .. " " .. TX.SH.name,
			link = TX.SH.base .. " " .. spec.name .. suffix2,
			abbr = TX.SH.abbr .. " " .. spec.abbrsuffix,
			banner = spec.bannerprefix .. " plate.svg",
			aux = spec.aux,
			width = "square"
		}
	end
end

TX["SH-Bus"] = {
	shield = "Texas %route%.svg",
	name = "Business&nbsp;" .. TX.SH.name,
	link = "Texas State Highway %route% Business" .. suffix2,
	abbr = "Bus.&nbsp;" .. TX.SH.abbr,
	banner = "Business plate.svg",
	aux = TX[" aux "],
	width = "square"
}
TX["TX-Bus"] = TX["SH-Bus"]
TX["Bus-SH"] = TX["SH-Bus"]
TX["Bus-TX"] = TX["SH-Bus"]

TX["SH-Bus 1969"] = {
	shield = "Texas Business %route%.svg",
	name = TX["SH-Bus"].name,
	link = TX["SH-Bus"].link,
	abbr = TX["SH-Bus"].abbr,
}
TX["TX-Bus 1969"] = TX["SH-Bus 1969"]

for _,type in ipairs({"SH", "TX"}) do
	for _,year in ipairs({"1917", "1935", "old"}) do
			TX[type .. "-" .. year] = {
				shield = format("Texas %%route%% %s.svg", year),
				name = TX.SH.name,
				link = TX.SH.link,
				abbr = TX.SH.abbr,
				width = "square"
			}
		end
	end
end
TX["SH-old"].shield = "Old Texas %route%.svg"
TX["TX-old"].shield = TX["SH-old"].shield

-- Loop/Spur types
TX.Beltway = {
	shield = "Texas Beltway %route%.svg",
	shieldmain = {
		hook = "pagename",
		article = "Texas State Highway Beltway 8",
 		iftrue = {"Texas Beltway %route%.svg", "Sam Houston Tollway.svg"},
 		default = "Texas Beltway %route%.svg"
	},
	name = "State Highway Beltway %route%",
	link = "Texas State Highway Beltway %route%",
	abbr = "Beltway&nbsp;%route%"
}
TX.BW = TX.Beltway

TX.Loop = {
	shield = "Texas Loop %route%.svg",
	base = "Texas State Highway Loop %route%",
	name = "State Highway Loop %route%",
	link = {
		default = "Texas State Highway Loop %route%" .. suffix2,
		["1910"] = "Andrews Loop 1910"
	},
	abbr = "Loop&nbsp;%route%"}
TX.SL = TX.Loop

TX.Spur = {
	shield = "Texas Spur %route%.svg",
	base = "Texas State Highway Spur %route%",
	name = "State Highway Spur %route%",
	link = "Texas State Highway Spur %route%" .. suffix2,
	abbr = "Spur&nbsp;%route%"
}
TX.SS = TX.Spur

-- FM/RM types
TX.FM = {
	shield = "Texas FM %route%.svg",
	name = "Farm to Market Road %route%",
	base = "Farm to Market Road %route%",
	link = "Farm to Market Road %route%",
	abbr = "FM&nbsp;%route%"
}
TX.Farm = TX.FM

TX.RM = {
	shield = "Texas RM %route%.svg",
	base = "Ranch to Market Road %route%",
	name = "Ranch to Market Road %route%",
	link = "Ranch to Market Road %route%",
	abbr = "RM&nbsp;%route%"
}
TX.Ranch = TX.RM

for _,type in ipairs({"FM", "RM"}) do
	for _,year in ipairs({"1956"}) do
		TX[type .. "-" .. year] = {
			shield = format("Texas %s %%route%% (%s).svg", type, year),
			name = TX[type].name,
			link = TX[type].link,
			abbr = TX[type].abbr,
			width = "square"
		}
	end
end
TX["FM 1956"] = TX["FM-1956"]

for _,type in ipairs({"FM", "RM"}) do
	for _,auxType in ipairs({"Bus", "Loop", "Spur"}) do
		local spec = TX[" aux "][auxType]
		TX[type .. "-" .. auxType] = {
			name = TX[type].name .. " " .. spec.name,
			link = TX[type].base .. " " .. spec.name .. suffix2,
			abbr = type .. " " .. spec.abbrsuffix .. " %route%",
			aux = spec.aux,
			width = "square"
		}
	end
end
TX["FM-Bus"].shield = "Texas Business FM %route%.svg"
TX["FM-Loop"].shield = TX.Loop.shield
TX["FM-Spur"].shield = TX.Spur.shield

-- Misc SH types --
TX.Park = {
	shield = "Texas Park Road %route%.svg",
	link = "Texas Park Road %route%",
	abbr = "PR&nbsp;%route%",
	color = "hist"
}
TX.PR = TX.Park

TX.NASA = {
	shield = "Texas NASA Road %route%.svg",
	name = "NASA Road %route%",
	link = "NASA Road %route%",
	abbr = "NASA&nbsp;%route%"
}
	
TX.RR = {
	shield = "Texas RM %route%.svg",
	name = "Ranch Road %route%",
	link = "Ranch Road %route%",
	abbr = "RR&nbsp;%route%"
}

TX.RE = {
	shield = "Texas Recreational Road %route%.svg",
	name = "Recreational Road %route%", 
	link = "Texas Recreational Road %route%", 
	abbr = "RE&nbsp;%route%",
	color = "hist",
	bannersuffix = "brown"
}

TX["RE-Spur"] = {
	shield = TX.Spur.shield, 
	name = TX.RE.name .. " Spur",
	link = TX.RE.name .. " Spur",
	abbr = "RE Spur&nbsp;%route%",
	color = "hist",
	aux = TX[" aux "].Spur,
}

TX.PA = {
	shield = {
		ifexists = true,
		default = "Texas PA %route%.svg",
		otherwise = ""
	},
	name = "Principal Arterial Road %route%",
	link = "Texas Principal Arterial Road %route%",
	abbr = "PA&nbsp;%route%"
}

-- add new types above this line if you want it to have the state highway browse and maint
for k, v in pairs(TX) do if k:find ("^%a") then
	v.maint = "[[Texas Department of Transportation|TxDOT]]"
	end
end

for k, v in pairs(TX) do if k:find ("%d") then 
	v.maint = "[[Texas State Highway Department]]"
	end
end

TX.INTL = {
	shield = "Texas Spur 97.svg",
	name = "International Parkway",
	link = "International Parkway", 
	abbr = "International Parkway"
}
TX.IP = TX.INTL

local tollAbbrs = {
	default = TX.SH.abbr .. " Toll",
	Hardy = "Hardy Toll Road",
	HTR = "Hardy Toll Road",
	["Sam Houston"] = "Sam Houston Tollway",
	SHT = "Sam Houston Tollway",
	Tomball = "Tomball Tollway",
	TBT = "Tomball Tollway",
	Westpark = "Westpark Tollway",
	WPT = "Westpark Tollway",
	CTP = "Chisholm Trail Parkway",
	DNT = "Dallas North Tollway",
	PGBT = "Pres. George Bush Turnpike",
	SRT = "Sam Rayburn Tollway",
	FBT = "Fort Bend Tollway",
	FBPTR = "Fort Bend Parkway Toll Road", --is Tollroad one word as signed on SH 6?
	["Fort Bend Westpark"] = "Fort Bend Westpark Tollway",
	FBWPT = "Fort Bend Westpark Tollway",
	KFML = "I-10 Toll (Katy Tollway)",
	["1"] = "Loop %route% Toll",
	["49"] = "Loop %route% Toll",
	["71"] = "71 Toll Lanes",
	["183"] = "183 Toll Road",
	["183A"] = "183A Toll Road",
	["290"] = "290 Toll Road"
}

--Toll maint
local BCTRA = "Brazoria County Toll Road Authority"
local CTRMA = "[[Central Texas Regional Mobility Authority]]"
local CTTP = "Central Texas Turnpike Project"
local FBCTRA = "[[Fort Bend County Toll Road Authority]]"
local HCTRA = "[[Harris County Toll Road Authority]]"
local MCTRA = "[[Montgomery County Toll Road Authority]]"
local NETRMA = "[[North East Texas Regional Mobility Authority]]"
local NTTA = "[[North Texas Tollway Authority]]"

-- Toll types
TX.Toll = {
	shield = {
		default = "Toll Texas %route% new.svg",
		Hardy = "Hardy Toll Road.svg",
		HTR = "Hardy Toll Road.svg",
		["Sam Houston"] = "Sam Houston Tollway.svg",
		SHT = "Sam Houston Tollway.svg",
		Tomball = "Tomball Tollway.svg",
		TBT = "Tomball Tollway.svg",
		Westpark = "Westpark Tollway.svg",
		WPT = "Westpark Tollway.svg",
		FBT = "Fort Bend Toll Road.svg",
		FBPTR = "",
		["Fort Bend Westpark"] = "",
		FBWPT = "",
		KFML= "Toll Texas Interstate Highway 10.svg",
		["71"] = "71 Toll Lane free.svg",
		["183"] = "183 Toll Road free.svg",
		["183A"] = "183A Toll Road free.svg",
		["290"] = "290 Toll Road free.svg"
	},
	shieldmain = {
		default = "Toll Texas %route% new.svg",
		Hardy = "Hardy Toll Road.svg",
		HTR = "Hardy Toll Road.svg",
		["Sam Houston"] = "Sam Houston Tollway.svg",
		SHT = "Sam Houston Tollway.svg",
		Tomball = "Tomball Tollway.svg",
		TBT = "Tomball Tollway.svg",
		Westpark = {
			hook = "pagename",
			article = "Westpark Tollway",
	 		iftrue = {"Fort Bend Westpark Tollway logo.png", "Westpark Tollway.svg"},
	 		default = "Westpark Tollway.svg"
			},
		WPT = {
			hook = "pagename",
			article = "Westpark Tollway",
	 		iftrue = {"Fort Bend Westpark Tollway logo.png", "Westpark Tollway.svg"},
	 		default = "Westpark Tollway.svg"
			},
		FBT = {
			hook = "pagename",
			article = "Fort Bend Parkway",
	 		iftrue = {"Fort Bend Parkway Toll Road logo.png", "Fort Bend Toll Road.svg"},
	 		default = "Fort Bend Toll Road.svg"
			},
		FBPTR = {
			hook = "pagename",
			article = "Fort Bend Parkway",
	 		iftrue = {"Fort Bend Parkway Toll Road logo.png", "Fort Bend Toll Road.svg"},
	 		default = "Fort Bend Toll Road.svg"
			},
		["Fort Bend Westpark"] = {
			hook = "pagename",
			article = "Westpark Tollway",
	 		iftrue = {"Fort Bend Westpark Tollway logo.png", "Westpark Tollway.svg"},
	 		default = "Westpark Tollway.svg"
			},
		FBWPT = {
			hook = "pagename",
			article = "Westpark Tollway",
	 		iftrue = {"Fort Bend Westpark Tollway logo.png", "Westpark Tollway.svg"},
	 		default = "Westpark Tollway.svg"
			},
		CTP = "Toll Texas Chisholm Trail Parkway.svg",
		DNT = "Toll Texas Dallas North Tollway.svg",
		PGBT = "Toll Texas President George Bush Turnpike.svg",
		SRT = "Toll Texas Sam Rayburn Tollway.svg",
		KFML= "Toll Texas Interstate Highway 10.svg",
		["71"] = "71 Toll Lane.svg", -- also has free version
		["183"] = "183 Toll Road.svg", -- also has free version
		["183A"] = "183A Toll Road.svg", -- also has free version
		["290"] = "290 Toll Road.svg" -- also has free version
	},
	name = tollAbbrs,
	link = {
		default = TX.SH.link,
		Hardy = "Hardy Toll Road",
		HTR = "Hardy Toll Road",
		["Sam Houston"] = "Sam Houston Tollway",
		SHT = "Sam Houston Tollway",
		Tomball = "Tomball Tollway",
		TBT = "Tomball Tollway",
		Westpark = "Westpark Tollway",
		WPT = "Westpark Tollway",
		CTP = "Chisholm Trail Parkway",
		DNT = "Dallas North Tollway",
		PGBT = "President George Bush Turnpike",
		SRT = "Sam Rayburn Tollway",
		FBT = "Fort Bend Tollway",
		FBPTR = "Fort Bend Parkway Toll Road",
		["Fort Bend Westpark"] = "Fort Bend Westpark Tollway",
		FBWPT = "Fort Bend Westpark Tollway",
		KFML = "Katy Tollway",
		["1"] = TX.Loop.link,
		["49"] = TX.Loop.link,
		["71"] = "71 Toll Lanes",
		["183"] = "183 Toll Road",
		["183A"] = "183A Toll Road",
		["290"] = "290 Toll Road"
	},
	abbr = tollAbbrs,
	bannersuffix = {
		default = "blue",
		["Sam Houston"] = "HCTRA",
		SHT = "HCTRA",
		Westpark = "HCTRA",
		WPT = "HCTRA",
		Tomball = "HCTRA",
		TBT = "HCTRA",
		["Fort Bend Westpark"] = "HCTRA",
		FBWPT = "HCTRA",
		Hardy = "HCTRA",
		HTR = "HCTRA",
		FBT = "HCTRA",
		FBPTR = "HCTRA"
	},
	orientation = "upright",
	maint = {
		default = "",
		Hardy = HCTRA,
		HTR = HCTRA,
		["Sam Houston"] = HCTRA,
		SHT = HCTRA,
		Tomball = HCTRA,
		TBT = HCTRA,
		Westpark = FBCTRA .. " and " .. HCTRA,
		WPT = FBCTRA .. " and " .. HCTRA,
		CTP = NTTA,
		DNT = NTTA,
		PGBT = NTTA,
		SRT = NTTA,
		FBT =  FBCTRA .. " and " .. HCTRA,
		FBPTR = FBCTRA .. " and " .. HCTRA,
		["Fort Bend Westpark"] =  FBCTRA .. " and " .. HCTRA,
		FBWPT =  FBCTRA .. " and " .. HCTRA,
		KFML = HCTRA,
		["1"] = CTTP,
		["45"] = CTTP,
		["49"] = NETRMA,
		["71"] = CTRMA,
		["130"] = CTTP,
		["183"] = CTRMA,
		["183A"] = CTRMA,
		["249"] = MCTRA,
		["288"] = BCTRA .. " and " .. TX.SH.maint,
		["290"] = CTRMA,
		["360"] = NTTA,
		["375"] = "Camino Real Regional Mobility Authority",
		["550"] = "Cameron County Regional Mobility Authority",
	}
}

TX.Both = {
	shield = {"Texas %route%.svg", "Toll Texas %route% new.svg"},
	name = TX.SH.name,
	link = TX.SH.link,
	abbr = TX.SH.abbr,
	width = 40,
	bannersuffix = {"", "blue"}
}

TX.AATT = {
	shield = "Toll Texas AATT new.svg",
	shieldmain = "Toll Texas Addison Airport Toll Tunnel.svg",
	name = "Addison Airport Toll Tunnel",
	link = "Addison Airport Toll Tunnel",
	abbr = "Addison Airport Toll Tunnel",
	orientation = "upright",
	bannersuffix = "blue",
	maint = NTTA
}

TX.DFW = {
	shield = "DFW Turnpike Shield.svg",
	name = "Dallas-Fort Worth Turnpike",
	link = "Dallas-Fort Worth Turnpike",
	abbr = "D/FW Turnpike"
}

TX.LLTB = {
	shield = "Toll Texas LLTB new.svg",
	shieldmain = "Toll Texas Lewisville Lake Toll Bridge.svg",
	name = "Lewisville Lake Toll Bridge",
	link = "Lewisville Lake Toll Bridge",
	abbr = "Lewisville Lake Toll Bridge",
	orientation = "upright",
	bannersuffix = "blue",
	maint = NTTA
}

TX.MCLB = {
	shield = "Toll Texas MCLB new.svg",
	shieldmain = "Toll Texas Mountain Creek Lake Bridge.svg",
	name = "Mountain Creek Lake Bridge",
	link = "Mountain Creek Lake Bridge",
	abbr = "Mountain Creek Lake Bridge",
	orientation = "upright",
	bannersuffix = "blue",
	maint = NTTA
}

TX["SH-Express"] = {
	shield = "%route% Express Lane free.svg",
	name = TX.SH.name .. " Express ",
	link = TX.SH.base .. " Express ".. suffix2,
	abbr = TX.SH.abbr .. " Express",
	banner = "",
	maint = {
		default = NTTA,
		["1"] = CTTP
	}
}
	
TX["Loop Dual"] = {
	shield = {"Texas Loop %route%.svg", "Toll Texas %route% new.svg"},
	shieldmain = {"Texas Loop %route%.svg", "Toll Texas %route% new.svg"},
	name = TX.Loop.name,
	link = TX.Loop.link,
	abbr = TX.Loop.abbr
}

TX["Loop-Express"] = {
	shield = {
		default = TX.Loop.shield, --actually has a special variant of the toll shield http://maps.google.com/maps?ll=32.820965,-97.201688&spn=0.012929,0.024784&t=m&z=16&layer=c&cbll=32.820896,-97.205511&panoid=coL0_PX6xfY9Ia3Rkrr8cA&cbp=12,353.63,,1,-8.72
		["1"] = "1 Express Lane free.svg"
	},
	name = "Loop %route% Express",
	link = TX.Loop.base .. " Express ".. suffix2,
	abbr = TX.Loop.abbr .. " Express",
	banner = "",
	bannersuffix = "blue",
	maint = {
		default = "",
		["1"] = CTRMA
	}
}
	
TX["SL-Express"] = TX["Loop-Express"]

TX.CR.shield = {
		arg        = "county",
		default    = "",
		Brazoria		= "Generic green square county %route%.svg"
	}
TX.CR.maint = ""
TX.CR.browse = ""
TX.CR.browselinks = ""
	
TX.MEX = {alias = {module = "MEX", type = "FH"}}
TX["I-AR"] = {alias = {module = "USA/AR", type = "I"}}
TX["US-AR"] = {alias = {module = "USA/AR", type = "US"}}
TX.AR = {alias = {module = "USA/AR", type = "AR"}}
TX.LA = {alias = {module = "USA/LA", type = "LA"}}
TX.OK = {alias = {module = "USA/OK", type = "SH"}}
TX.NM = {alias = {module = "USA/NM", type = "NM"}}

return TX