// dirTag is optional. if provided, will set drop-down to the specified direction var displayDirections = function(stopsInfo, routes, dirTag) { var $dirSel = $("#DirectionSelector"); $dirSel.empty(); $("#stopSelector").empty(); var routeOption = Handlebars.compile(''); var stopOption = Handlebars.compile(''); var opt1 = ''; _(routes).each(function(route, key) { // if a route has more than two origins add a 'from' to clarify if (route.name === 'Inbound' && Object.keys(routes).length>2) { route.from = stopsInfo[route.stops[0]].title; } route.value = key; $dirSel.append(routeOption(route)); }); dirTag ? $dirSel.val(dirTag) : dirTag = $dirSel.val(); displayStops(stopsInfo, routes, dirTag); }; var stopOption = Handlebars.compile(''); // stopTag is optional. if provided will set drop-down to specified stop var displayStops = function(stopsInfo, routes, dirTag, stopTag) { var $stopSel = $("#StopSelector"); $stopSel.empty(); _(routes[dirTag].stops).each(function(stopNum) { $stopSel.append(stopOption({ value: stopNum, title: stopsInfo[stopNum].title })); }); stopTag ? $stopSel.val(stopTag) : stopTag = $stopSel.val(); displayDestinations(stopsInfo, routes, dirTag, stopTag); }; var displayDestinations = function(stopsInfo, routes, dirTag, selectedStop) { var $destSel = $("#DestSelector"); $destSel.empty(); var stops = routes[dirTag].stops; var flag = false; _(stops).each(function(stopTag) { if(flag) { $destSel.append(stopOption({ value: stopTag, title: stopsInfo[stopTag].title })); } if(stopTag === selectedStop) { flag = true; } }); };