Actually, I think I am over-complicating the solution. It really might be as simple as this:
{note: preview=no}Variables:
{day={time: dddd; at={=date}}}
{if: day<>"Friday" AND day<>"Saturday"}{availablehours=["9:00am - 9:30am",
"9:30am - 10:00am",
"10:00am - 10:30am",
"10:30am - 11:00am",
"11:00am - 11:30am",
"11:30am - 12:00pm",
"12:00pm - 12:30pm",
"12:30pm - 1:00pm", "1:00pm - 1:30pm",
"1:30pm - 2:00pm",
"2:00pm - 2:30pm",
"2:30pm - 3:00pm",
"3:00pm - 3:30pm",
"3:30pm - 4:00pm",
"4:00pm - 4:30pm",
"4:30pm - 5:00pm",
"5:00pm - 5:30pm",
"5:30pm - 6:00pm",
"6:00pm - 6:30pm",
"6:30pm - 7:00pm",
"7:00pm - 7:30pm"]}{endif}
{if: day="Friday"}{availablehours=["9:00am - 9:30am",
"9:30am - 10:00am",
"10:00am - 10:30am",
"10:30am - 11:00am",
"11:00am - 11:30am",
"11:30am - 12:00pm",
"12:00pm - 12:30pm",
"12:30pm - 1:00pm", "1:00pm - 1:30pm",
"1:30pm - 2:00pm",
"2:00pm - 2:30pm",
"2:30pm - 3:00pm",
"3:00pm - 3:30pm",
"3:30pm - 4:00pm",
"4:00pm - 4:30pm",
"4:30pm - 5:00pm",
"5:00pm - 5:30pm"]}{endif}
{if: day="Saturday"}{availablehours=["10:00am - 10:30am",
"10:30am - 11:00am",
"11:00am - 11:30am",
"11:30am - 12:00pm",
"12:00pm - 12:30pm",
"12:30pm - 1:00pm", "1:00pm - 1:30pm",
"1:30pm - 2:00pm"]}{endif}
{if: day="Sunday"}{availablehours=["Not Available"]}{endif}
{endnote: trim=yes}
Select a Callback Date:
{formdate: MM/DD/YYYY; name=date}{if: day="Sunday"}
{error: Callback Appointments Not Available On Sundays!; block=yes}{endif}
Select a window of time:
{formmenu: name=time; values={=availablehours}; cols=20}
Callback window scheduled for:
{=day} from {=time}
However, the lists overlap when selecting a day with a different range of available times to choose from.