 	<cfargument name="prependToLabel" type="string" required="false" default="#application.wheels.timeSelectTags.prependToLabel#" hint="See documentation for `textField`">
 	<cfargument name="appendToLabel" type="string" required="false" default="#application.wheels.timeSelectTags.appendToLabel#" hint="See documentation for `textField`">
 	<cfscript>
-		if (StructKeyExists(arguments, "name"))
-		{
-			arguments.property = arguments.name;
-			arguments.objectName = {};
-			arguments.objectName[arguments.name] = arguments.selected;
-			StructDelete(arguments, "name");
-			StructDelete(arguments, "selected");
-		}
+		arguments.property = arguments.name;
+		arguments.objectName = {};
+		arguments.objectName[arguments.name] = arguments.selected;
+		StructDelete(arguments, "name");
+		StructDelete(arguments, "selected");
 		arguments.$functionName = "timeSelectTag";
 	</cfscript>
 	<cfreturn $dateOrTimeSelect(argumentCollection=arguments)>
+</cffunction>
+
+<cffunction name="yearSelectTag" returntype="string" access="public" output="false">
+	<cfargument name="startYear" type="numeric" required="true">
+	<cfargument name="endYear" type="numeric" required="true">
+	<cfscript>
+		arguments.$loopFrom = arguments.startYear;
+		arguments.$loopTo = arguments.endYear;
+		arguments.$type = "year";
+		arguments.$step = 1;
+		StructDelete(arguments, "startYear");
+		StructDelete(arguments, "endYear");
+	</cfscript>
+	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
+</cffunction>
+
+<cffunction name="monthSelectTag" returntype="string" access="public" output="false">
+	<cfargument name="monthDisplay" type="string" required="true">
+	<cfscript>
+		arguments.$loopFrom = 1;
+		arguments.$loopTo = 12;
+		arguments.$type = "month";
+		arguments.$step = 1;
+		if (arguments.monthDisplay == "abbreviations")
+			arguments.$optionNames = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
+		else if (arguments.monthDisplay == "names")
+			arguments.$optionNames = "January,February,March,April,May,June,July,August,September,October,November,December";
+		StructDelete(arguments, "monthDisplay");
+	</cfscript>
+	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
+</cffunction>
+
+<cffunction name="daySelectTag" returntype="string" access="public" output="false">
+	<cfscript>
+		arguments.$loopFrom = 1;
+		arguments.$loopTo = 31;
+		arguments.$type = "day";
+		arguments.$step = 1;
+	</cfscript>
+	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
+</cffunction>
+
+<cffunction name="hourSelectTag" returntype="string" access="public" output="false">
+	<cfscript>
+		arguments.$loopFrom = 0;
+		arguments.$loopTo = 23;
+		arguments.$type = "hour";
+		arguments.$step = 1;
+	</cfscript>
+	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
+</cffunction>
+
+<cffunction name="minuteSelectTag" returntype="string" access="public" output="false">
+	<cfargument name="minuteStep" type="numeric" required="true">
+	<cfscript>
+		arguments.$loopFrom = 0;
+		arguments.$loopTo = 59;
+		arguments.$type = "minute";
+		arguments.$step = arguments.minuteStep;
+		StructDelete(arguments, "minuteStep");
+	</cfscript>
+	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
+</cffunction>
+
+<cffunction name="secondSelectTag" returntype="string" access="public" output="false">
+	<cfscript>
+		arguments.$loopFrom = 0;
+		arguments.$loopTo = 59;
+		arguments.$type = "second";
+		arguments.$step = 1;
+	</cfscript>
+	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
 </cffunction>
 
 <cffunction name="$dateOrTimeSelect" returntype="string" access="public" output="false">

	<cfargument name="errorElement" type="string" required="false" default="#application.wheels.timeSelect.errorElement#" hint="See documentation for `textField`">
	<cfscript>
		var loc = {};
		if (StructKeyExists(arguments, "name"))
		{
			arguments.property = arguments.name;
			arguments.objectName = {};
			arguments.objectName[arguments.name] = arguments.value;
			StructDelete(arguments, "name");
			StructDelete(arguments, "value");
		}
		arguments = $insertDefaults(name="timeSelect", reserved="id", input=arguments);
		arguments.$functionName = "timeSelect";
	</cfscript>
	<cfreturn $dateOrTimeSelect(argumentCollection=arguments)>
</cffunction>

<cffunction name="textFieldTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfargument name="value" type="string" required="false" default="">
	<cfscript>
		var loc = {};
		arguments.property = arguments.name;
		arguments.objectName = {};
		arguments.objectName[arguments.name] = arguments.value;
		StructDelete(arguments, "name");
		StructDelete(arguments, "value");
		loc.returnValue = textField(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="passwordFieldTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfargument name="value" type="string" required="false" default="">
	<cfscript>
		var loc = {};
		arguments.property = arguments.name;
		arguments.objectName = {};
		arguments.objectName[arguments.name] = arguments.value;
		StructDelete(arguments, "name");
		StructDelete(arguments, "value");
		loc.returnValue = passwordField(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="hiddenFieldTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfargument name="value" type="string" required="false" default="">
	<cfscript>
		var loc = {};
		arguments.property = arguments.name;
		arguments.objectName = {};
		arguments.objectName[arguments.name] = arguments.value;
		StructDelete(arguments, "name");
		StructDelete(arguments, "value");
		loc.returnValue = hiddenField(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="textAreaTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfargument name="value" type="string" required="false" default="">
	<cfscript>
		var loc = {};
		arguments.property = arguments.name;
		arguments.objectName = {};
		arguments.objectName[arguments.name] = arguments.value;
		StructDelete(arguments, "name");
		StructDelete(arguments, "value");
		loc.returnValue = textArea(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="fileFieldTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfscript>
		var loc = {};
		arguments.property = arguments.name;
		arguments.objectName = {};
		arguments.objectName[arguments.name] = "";
		StructDelete(arguments, "name");
		loc.returnValue = fileField(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="radioButtonTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfargument name="value" type="string" required="false" default="">
	<cfargument name="checked" type="boolean" required="false" default="false">
	<cfscript>
		var loc = {};
		arguments.property = arguments.name;
		arguments.objectName = {};
		if (arguments.checked)
		{
			arguments.objectName[arguments.name] = arguments.value;
			arguments.tagValue = arguments.value;
		}
		else
		{
			arguments.objectName[arguments.name] = "";
			arguments.tagValue = arguments.value;
		}
		StructDelete(arguments, "name");
		StructDelete(arguments, "value");
		StructDelete(arguments, "checked");
		loc.returnValue = radioButton(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="checkBoxTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfargument name="value" type="string" required="false" default="1">
	<cfargument name="checked" type="boolean" required="false" default="false">
	<cfscript>
		var loc = {};
		arguments.checkedValue = arguments.value;
		arguments.property = arguments.name;
		arguments.objectName = {};
		if (arguments.checked)
			arguments.objectName[arguments.name] = arguments.value;
		else
			arguments.objectName[arguments.name] = "";
		StructDelete(arguments, "name");
		StructDelete(arguments, "value");
		StructDelete(arguments, "checked");
		loc.returnValue = checkBox(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="selectTag" returntype="string" access="public" output="false">
	<cfargument name="name" type="string" required="true">
	<cfargument name="options" type="any" required="true" default="">
	<cfargument name="selected" type="string" required="false" default="">
	<cfscript>
		var loc = {};
		arguments.property = arguments.name;
		arguments.objectName = {};
		arguments.objectName[arguments.name] = arguments.selected;
		StructDelete(arguments, "name");
		StructDelete(arguments, "selected");
		loc.returnValue = select(argumentCollection=arguments);
	</cfscript>
	<cfreturn loc.returnValue>
</cffunction>

<cffunction name="$yearSelectTag" returntype="string" access="public" output="false">
	<cfargument name="startYear" type="numeric" required="true">
	<cfargument name="endYear" type="numeric" required="true">
	<cfscript>
		arguments.$loopFrom = arguments.startYear;
		arguments.$loopTo = arguments.endYear;
		arguments.$type = "year";
		arguments.$step = 1;
		StructDelete(arguments, "startYear");
		StructDelete(arguments, "endYear");
	</cfscript>
	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
</cffunction>

<cffunction name="$monthSelectTag" returntype="string" access="public" output="false">
	<cfargument name="monthDisplay" type="string" required="true">
	<cfscript>
		arguments.$loopFrom = 1;
		arguments.$loopTo = 12;
		arguments.$type = "month";
		arguments.$step = 1;
		if (arguments.monthDisplay == "abbreviations")
			arguments.$optionNames = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
		else if (arguments.monthDisplay == "names")
			arguments.$optionNames = "January,February,March,April,May,June,July,August,September,October,November,December";
		StructDelete(arguments, "monthDisplay");
	</cfscript>
	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
</cffunction>

<cffunction name="$daySelectTag" returntype="string" access="public" output="false">
	<cfscript>
		arguments.$loopFrom = 1;
		arguments.$loopTo = 31;
		arguments.$type = "day";
		arguments.$step = 1;
	</cfscript>
	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
</cffunction>

<cffunction name="$hourSelectTag" returntype="string" access="public" output="false">
	<cfscript>
		arguments.$loopFrom = 0;
		arguments.$loopTo = 23;
		arguments.$type = "hour";
		arguments.$step = 1;
	</cfscript>
	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
</cffunction>

<cffunction name="$minuteSelectTag" returntype="string" access="public" output="false">
	<cfargument name="minuteStep" type="numeric" required="true">
	<cfscript>
		arguments.$loopFrom = 0;
		arguments.$loopTo = 59;
		arguments.$type = "minute";
		arguments.$step = arguments.minuteStep;
		StructDelete(arguments, "minuteStep");
	</cfscript>
	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
</cffunction>

<cffunction name="$secondSelectTag" returntype="string" access="public" output="false">
	<cfscript>
		arguments.$loopFrom = 0;
		arguments.$loopTo = 59;
		arguments.$type = "second";
		arguments.$step = 1;
	</cfscript>
	<cfreturn $yearMonthHourMinuteSecondSelectTag(argumentCollection=arguments)>
</cffunction>

<cffunction name="dateTimeSelectTags" returntype="string" access="public" output="false">

				arguments.value = "";
			if (loc.firstDone)
				loc.returnValue = loc.returnValue & arguments.separator;
			loc.returnValue = loc.returnValue & Evaluate("#loc.item#SelectTag(argumentCollection=arguments)");
			loc.firstDone = true;
		}
	</cfscript>
