You are here
Home > Uncategorized > Marin Transit to Adjust Service on Major Local Corridors (Part 2)

Marin Transit to Adjust Service on Major Local Corridors (Part 2)

Marin Transit will make the most significant route shakeup on the following corridors:

  • Sir Francis Drake Boulevard between Larkspur and Fairfax Manor
  • Miracle Mile and Fourth Street, which span San Anselmo and San Rafael
  • Canal District (Medway Road, Canal Street, Kerner Street, and Bellam Boulevard)

The introduction of the express Route 23X and the service reduction on Route 29, both of which will operate weekday peak periods, signify a shift in commuting patterns along the county’s primary east-west corridors.

Route 23X will operate similar to the current, stopping Route 23, operating between Fairfax Manor and the Canal District in San Rafael. What was not originally revealed in any of my routing descriptions is that this route will operate clockwise around the Canal District, meaning it will follow the route directions in order from San Rafael Transit Center:

  • Enter Second Street
  • Right on Francisco Boulevard E
  • Left on Medway Road
  • Slight right on Canal Street
  • Sharp right on Kerner Street
  • Right on Bellam Boulevard
  • Right on Francisco Boulevard E
  • Left on Third Street
  • Enter San Rafael Transit Center

This service will operate hourly from 6am to 9:30am, and then from 3pm to 7:30pm, with departures from San Rafael at :30 past westbound. Between San Rafael Transit Center and San Anselmo Hub, no stops will be made; local service operates west of San Anselmo Hub to/from Fairfax Manor.

Route 29 will see both schedule and line reductions, in which it will eliminate the following sections of the route:

  • Between Bellam Blvd & I-580 and Sir Francis Drake & Larkspur Landing Drive (also includes Andersen Drive)
  • Eastbound Sir Francis Drake Blvd between College Avenue and Bon Air Road
  • Sir Francis Drake Boulevard west of College Avenue

While there will be no replacement service along Andersen Drive and a section of Bellam Blvd, the Canal District segment will be maintained, but will operate in a clockwise loop (cf. Route 23X for route alignment). In addition, the route will only operate from 6:30am to 10am, and from 2pm to 9pm, with hourly departures from San Rafael on the hour westbound.

Route 228 will replace eliminated sections on Route 29, which will not only be rerouted to serve S Eliseo Drive and Via Casitas, but also expand it to become a daily service. In addition, Route 22 and Route 122 (express) provide services between College of Marin and San Anselmo Hub.

Below is a comparison of how Routes 22, 23, 23X (soon), 29, and 228 currently operate and will operate from 12 June 2016. I also indicated stop spacing as well for comparison between current and future routes to allow passengers to observe service differences.

#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-tab-group {
font-size: 0;
margin: 0;
padding: 0;
float: left;
list-style: none;
height: 60px;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-tab {
margin: 0;
cursor: pointer;
height: 60px;
display: inline-block;
min-width: 19%;
position: relative;
background-color: #F7F7F7;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-content-group {
clear: both;
float: left;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .scrollArrow {
width: 25px;
background-color: white;
text-align: center;
position: absolute;
z-index: 3;
top: 0;
display: none;
cursor: pointer;
height: 60px;
line-height: 60px;
font-weight: bold;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .scrollArrow.scrollArrow-left {
left: 0;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .scrollArrow.scrollArrow-right {
right: 0;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box.scrollable .tabbed-box-bar:hover .scrollArrow.active {
display: block;
}
@media only screen and (min-device-width: 414px) and (max-device-width: 736px) and (-webkit-min-device-pixel-ratio: 3),only screen and (min-device-width: 375px) and (max-device-width: 667px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 568px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2),only screen and (max-width: 499px) {
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line.scrollable .scrollArrow-left,
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .s3d-content-shadow {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .s3d .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
-webkit-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
-moz-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .s3d .tabbed-box-content-group {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-tab .paragraph {
padding: 0px;
line-height: 60px !important;
text-align: center !important;
font-weight: bold;
font-size: 16px !important;
margin: 0 20px;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Current Setup
  • Future Setup
<
>

Notes:

  • * – Route 23 operates to Fairfax Manor weekdays only; on weekends, it terminates in Downtown Fairfax (Broadway & Bolinas, Sir Francis Drake & Claus).
  • Route 228 operates weekends and holidays only.
​Major Stops

#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table-wrapper {
padding: 20px 0;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 50%;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table.style-top tr:first-child td,
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table.style-top tr:first-child td .paragraph,
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table tr:last-child td {
border-bottom: none;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table td:last-of-type {
border-right: none;
}
#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Stop Name
Routes
Kerner & Larkspur (Canal)
23, 29, 35, 36
San Rafael Transit Center
22, 23, 29, 35, 36, 68, 122, 228
Larkspur Landing (Ferry)
29, 228
Marin General Hospital
29, 228
College of Marin
22, 29, 122, 228
San Anselmo Hub
22, 23, 29, 68, 122, 228
Downtown Fairfax
23, 29, 68, 228
Fairfax Manor
23*, 29, 68, 228

function setupElement119795907881552694() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4},{“rows_index”:5},{“rows_index”:6},{“rows_index”:7},{“rows_index”:8}],”columns”:2,”rows”:9,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[33,66]});
_Element.prototype.settings.page_element_id = “119795907881552694”;
_Element.prototype.element_id = “6a7d5978-cd96-451a-9981-0eb8c8d4f485”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-6a7d5978-cd96-451a-9981-0eb8c8d4f485’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement119795907881552694();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement119795907881552694, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement119795907881552694();
}
});
}

Sir Francis Drake Boulevard Corridor

#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table-wrapper {
padding: 20px 0;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table.style-top tr:first-child td,
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table.style-top tr:first-child td .paragraph,
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table tr:last-child td {
border-bottom: none;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table td:last-of-type {
border-right: none;
}
#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Route Segment
Number of Stops
Routes Served
Olema Rd-Claus Dr
5
23*, 29, 68, 228
Claus Dr-San Anselmo Hub
7
23, 29, 68, 228
San Anselmo Hub-College of Marin
4
22, 29, 228
College of Marin-Marin General Hospital
5
29, 228
Marin General Hospital-Larkspur Landing
7
29, 228

function setupElement170849173142580407() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4},{“rows_index”:5}],”columns”:3,”rows”:6,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[33,33,33]});
_Element.prototype.settings.page_element_id = “170849173142580407”;
_Element.prototype.element_id = “5b57daf5-7efa-4fff-9175-6d6e3c091e22”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-5b57daf5-7efa-4fff-9175-6d6e3c091e22’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement170849173142580407();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement170849173142580407, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement170849173142580407();
}
});
}

Red Hill Avenue and Fourth Street Corridor

#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table-wrapper {
padding: 20px 0;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table.style-top tr:first-child td,
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table.style-top tr:first-child td .paragraph,
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table tr:last-child td {
border-bottom: none;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table td:last-of-type {
border-right: none;
}
#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Route Segment
Number of Stops
Routes Served
San Anselmo Hub-San Rafael Transit Center
6
22, 23, 68

function setupElement772714531923883959() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1}],”columns”:3,”rows”:2,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “772714531923883959”;
_Element.prototype.element_id = “660a3132-72d2-4e4e-9573-ac1f9cb5b0bc”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-660a3132-72d2-4e4e-9573-ac1f9cb5b0bc’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement772714531923883959();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement772714531923883959, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement772714531923883959();
}
});
}

​Major Stops

#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table-wrapper {
padding: 20px 0;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 50%;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table.style-top tr:first-child td,
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table.style-top tr:first-child td .paragraph,
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table tr:last-child td {
border-bottom: none;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table td:last-of-type {
border-right: none;
}
#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Stop Name
Routes
Kerner & Larkspur (Canal)
23, 23X, 29, 35, 36
San Rafael Transit Center
22, 23, 23X, 29, 35, 36, 68, 122, 228
Larkspur Landing (Ferry)
29, 228
Marin General Hospital
29, 228
College of Marin
22, 29, 122, 228
San Anselmo Hub
22, 23, 23X, 68, 122, 228
Downtown Fairfax
23, 23X, 68, 228
Fairfax Manor
23X, 68, 228

function setupElement990013039789142924() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4},{“rows_index”:5},{“rows_index”:6},{“rows_index”:7},{“rows_index”:8}],”columns”:2,”rows”:9,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[33,66]});
_Element.prototype.settings.page_element_id = “990013039789142924”;
_Element.prototype.element_id = “dcb1f140-d4c8-4106-9292-3e1bd90ab6e3”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-dcb1f140-d4c8-4106-9292-3e1bd90ab6e3’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement990013039789142924();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement990013039789142924, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement990013039789142924();
}
});
}

​Sir Francis Drake Boulevard Corridor

#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table-wrapper {
padding: 20px 0;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table.style-top tr:first-child td,
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table.style-top tr:first-child td .paragraph,
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table tr:last-child td {
border-bottom: none;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table td:last-of-type {
border-right: none;
}
#element-daa36136-e480-411b-9463-9cdb0d7dfecd .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Route Segment
Number of Stops
Routes Served
Olema Rd-Claus Dr
5
23X, 68, 228
Claus Dr-San Anselmo Hub
7
23, 23X, 68, 228
San Anselmo Hub-College of Marin
4
22, 228
College of Marin-Marin General Hospital
5
29 (WB only), 228
Marin General Hospital-Via Casitas
2
29
Via Casitas-Larkspur Landing
5
29, 228

function setupElement696101113353873157() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4},{“rows_index”:5},{“rows_index”:6}],”columns”:3,”rows”:7,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[33,32,33]});
_Element.prototype.settings.page_element_id = “696101113353873157”;
_Element.prototype.element_id = “daa36136-e480-411b-9463-9cdb0d7dfecd”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-daa36136-e480-411b-9463-9cdb0d7dfecd’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement696101113353873157();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement696101113353873157, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement696101113353873157();
}
});
}

Red Hill Avenue and Fourth Street Corridor

#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table-wrapper {
padding: 20px 0;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table.style-top tr:first-child td,
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table.style-top tr:first-child td .paragraph,
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table tr:last-child td {
border-bottom: none;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table td:last-of-type {
border-right: none;
}
#element-0123b162-aef5-4af6-b992-672a7a30b770 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Route Segment
Number of Stops
Routes Served
San Anselmo Hub-San Rafael Transit Center
6
22, 23, 68

function setupElement404366265655642709() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1}],”columns”:3,”rows”:2,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “404366265655642709”;
_Element.prototype.element_id = “0123b162-aef5-4af6-b992-672a7a30b770”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-0123b162-aef5-4af6-b992-672a7a30b770’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement404366265655642709();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement404366265655642709, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement404366265655642709();
}
});
}

function setupElement290091256313125980() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.2”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var TabbedBox = PlatformElement.extend({
events: {
‘click .tabbed-box-tab’: ‘clickTab’,
// in case they type and that causes an overflow, we should determine scrollability here
‘keyup .tabbed-box-tab .paragraph’: ‘determineScrollability’,
‘mousedown .scrollArrow-left’: ‘scrollLeft’,
‘mousedown .scrollArrow-right’: ‘scrollRight’,
‘touchstart .scrollArrow-left’: ‘scrollLeft’,
‘touchstart .scrollArrow-right’: ‘scrollRight’
},
initialize: function() {
var view = this;
var tabs = this.$(‘.tabbed-box-tab’);
var content = this.$(‘.tabbed-box-content’);
// optimization
this.scrollArrowLeft = this.$(‘.scrollArrow-left’);
this.scrollArrowRight = this.$(‘.scrollArrow-right’);
this.scrollTabsBar = this.$(‘.tabbed-box-tab-group’);
// resize handler and mouseup handler
// since we want to be able to handle mouseup wherever the user releases (not just over the element)
// we set it here as a property of the window.
$(window).resize(function() {
this.determineScrollability();
}.bind(this)).on(‘mouseup touchend’, function() {
this.stopScrolling();
}.bind(this));
// since scroll events don’t propagate up, we have to bind it here as opposed to in the events object
this.$(‘.tabbed-box-tab-group’).scroll(function() {
this.determineHandlers();
}.bind(this));
// determine whether or not we should show the scroll handlers
this.determineScrollability();
// load the first tab.
$(document).ready(function() {
this.scrollTabsBar.children().first().click();
}.bind(this));
},
/*
Handle click event on a tab.
Uses ‘rel’ attribute of each tab as an index to access
the class of the corresponding content area.
*/
clickTab: function(e) {
var active = $(e.currentTarget); // Clicked tab
var content_wrapper = this.$(‘.tabbed-box-content-group’); // wrapper for all content divs
this.stopScrolling();
this.determineClickScroll(active);
// Set new active tab
active.siblings().removeClass(‘active’);
active.addClass(‘active’);
// mark the new active tab
this.settings.set(‘activeTabIndexInternal’, this.scrollTabsBar.children().index(active));
this.settings.save();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘.’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// Stop propagation in case this is a nested tab app
e.stopPropagation();
},
// determines whether or not the two arrows (left and right scroll handlers) should be visible or not.
determineScrollability: function() {
var group = this.scrollTabsBar[0];
if (group.scrollWidth > group.clientWidth) {
this.$el.children().addClass(‘scrollable’);
this.determineHandlers();
} else {
this.$el.children().removeClass(‘scrollable’);
}
},
// determines whether or not the two arrows (left and right scroll handlers) should be active or not.
determineHandlers: function() {
var target = this.scrollTabsBar[0];
// left handler
if (target.scrollLeft != 0) {
this.scrollArrowLeft.addClass(‘active’);
} else {
this.scrollArrowLeft.removeClass(‘active’);
}
// right handler
if (target.scrollLeft + target.clientWidth < target.scrollWidth – 1) {
this.scrollArrowRight.addClass('active');
} else {
this.scrollArrowRight.removeClass('active');
}
},
// scrolls the tabs bar to the left.
scrollLeft: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowRight.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft -= Math.floor(factor);
factor *= 1.05;
if (scrollEl.scrollLeft == 0) {
view.stopScrolling();
}
}, 10);
},
// scrolls the tabs bar to the right.
scrollRight: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowLeft.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft += Math.floor(factor);
factor *= 1.05;
// forcefully stop the interval if it's not doing anything anymore
if (scrollEl.scrollLeft + scrollEl.clientWidth == scrollEl.scrollWidth) {
view.stopScrolling();
}
}, 10);
},
stopScrolling: function() {
clearInterval(this.scrollInterval);
this.determineHandlers();
},
determineClickScroll: function(active) {
// figure out where the element is, and if we need to change our view to show it
var scroll;
// determine where the element we're going to is in respect to the tabs bar
// 25px is the size of the scroll arrows
var leftSidePosition = active.position().left – 50;
var rightSidePosition = active.position().left + active.width() + 50;
// the gap is how much space we want there to be between the selected element
// when it's out of view, and we go to it.
var gap = 25;
if (this.scrollTabsBar.children().index(active) == 0) {
// this the first element, so define the scroll to be 0.
scroll = 0;
} else if (this.scrollTabsBar.children().index(active) == this.scrollTabsBar.children().length – 1) {
// this the last element, so define the scroll to be all the way to the right.
scroll = this.scrollTabsBar[0].scrollWidth – this.scrollTabsBar[0].clientWidth;
} else if (leftSidePosition this.scrollTabsBar.width()) {
// the right corner is out of view.
scroll = this.scrollTabsBar[0].scrollLeft + (rightSidePosition – this.scrollTabsBar.width()) + gap;
} else {
scroll = this.scrollTabsBar[0].scrollLeft;
}
// start scrolling
scroll = Math.floor(scroll);
var delta = scroll – this.scrollTabsBar[0].scrollLeft;
var startedDown = false;
if (delta != 0) {
clearInterval(this.scrollInterval);
var distance = 0;
var direction = (delta > 0 ? 1 : -1);
var speed = 1;
var factor = 1.25; // for parabolic acceleration
this.scrollInterval = setInterval(function() {
if (distance >= Math.abs(delta)) {
this.stopScrolling();
}
this.scrollTabsBar[0].scrollLeft += (Math.max(1, Math.floor(speed)) * direction);
distance += Math.max(1, Math.floor(speed));
if (distance * 2 >= Math.abs(delta)) { // if we’ve traversed more than half
if (factor == 1.25) { // 5/4
factor = 1; // 4/4
} else {
factor = 0.8; // 4/5
}
}
speed *= factor;
}.bind(this), 20);
}
}
});
return TabbedBox;
})();
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“tabs_each”:[{“tabs_index”:0},{“tabs_index”:1}],”theme”:”standard”,”tabs”:2,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:0});
_Element.prototype.settings.page_element_id = “290091256313125980”;
_Element.prototype.element_id = “2d9f2b90-00eb-4194-a1a9-f93ccae2020e”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.2/assets/”;
new _Element({
el: ‘#element-2d9f2b90-00eb-4194-a1a9-f93ccae2020e’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement290091256313125980();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement290091256313125980, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement290091256313125980();
}
});
}


And speaking of the Canal District, routes that serve the neighborhood, namely Routes 23, 29, 35, and 36 (Route 23X will start service on 13 June 2016), will see service adjustments that will improve frequency such that, the area bounded by Medway Road, Canal Street, Kerner Street, and Bellam Boulevard will see frequency adjustments like this:
Notes:

  • Peaks are from 6am to 10am, and 2pm to 7pm
  • Off-peak are from before 6am, 10am to 2pm, and after 7pm
  • Clockwise loop operates as Medway Road, Canal Street, Kerner Street, and Bellam Blvd
  • Counterclockwise loop operates as Bellam Blvd, Kerner Street, Canal Street, and Medway Road

#element-d8e42407-5e4b-4770-ba82-01c66e560108 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-tab-group {
font-size: 0;
margin: 0;
padding: 0;
float: left;
list-style: none;
height: 60px;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-tab {
margin: 0;
cursor: pointer;
height: 60px;
display: inline-block;
min-width: 19%;
position: relative;
background-color: #F7F7F7;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-content-group {
clear: both;
float: left;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .scrollArrow {
width: 25px;
background-color: white;
text-align: center;
position: absolute;
z-index: 3;
top: 0;
display: none;
cursor: pointer;
height: 60px;
line-height: 60px;
font-weight: bold;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box.scrollable .tabbed-box-bar:hover .scrollArrow.active {
display: block;
}
@media only screen and (min-device-width: 414px) and (max-device-width: 736px) and (-webkit-min-device-pixel-ratio: 3),only screen and (min-device-width: 375px) and (max-device-width: 667px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 568px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2),only screen and (max-width: 499px) {
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line.scrollable .scrollArrow-left,
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .s3d-content-shadow {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .s3d .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
-webkit-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
-moz-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .s3d .tabbed-box-content-group {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-tab .paragraph {
padding: 0px;
line-height: 60px !important;
text-align: center !important;
font-weight: bold;
font-size: 16px !important;
margin: 0 20px;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-d8e42407-5e4b-4770-ba82-01c66e560108 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Current Setup
  • Future Setup
<
>

#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table-wrapper {
padding: 20px 0;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table.style-top tr:first-child td,
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table.style-top tr:first-child td .paragraph,
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table tr:last-child td {
border-bottom: none;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table td:last-of-type {
border-right: none;
}
#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Direction
Routes Served
Frequency
Clockwise Loop
23, 29
Peak: every 15 to 30 minutes
​Off-peak: every 15 to 45 minutes
Counterclockwise Loop
23, 29, 35, 36
Peak: every 5 to 15 minutes
Off peak: every 10 to 30 minutes

function setupElement970021094556231116() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2}],”columns”:3,”rows”:3,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[33,27,38]});
_Element.prototype.settings.page_element_id = “970021094556231116”;
_Element.prototype.element_id = “93fd7a5c-3f18-40ac-a438-5eaefdbe4e75”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-93fd7a5c-3f18-40ac-a438-5eaefdbe4e75’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement970021094556231116();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement970021094556231116, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement970021094556231116();
}
});
}

Notes:

  • Route 23 operates as a clockwise loop eastbound to Shoreline Parkway, and it operates as a counterclockwise loop westbound to San Rafael Transit Center.
  • Route 29 operates as a one-seat service between the Canal District and the Sir Francis Drake Blvd corridor via Andersen Avenue, enabling passengers to bypass San Rafael Transit Center for trips to College of Marin, San Anselmo, and Fairfax.
  • Route 36 operates weekday peak periods only between the Canal District and San Rafael Transit Center from 6:30am to 9am, then from 3:30pm to 6:30pm.

#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table-wrapper {
padding: 20px 0;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table.style-top tr:first-child td,
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table.style-top tr:first-child td .paragraph,
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table tr:last-child td {
border-bottom: none;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table td:last-of-type {
border-right: none;
}
#element-000d7290-18df-4190-bfe5-cae158848ba3 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Direction
Routes Served
Frequency
Clockwise Loop
23, 23X, 29
Peak: every 15 to 30 minutes
​Off-peak: every 15 to 60 minutes
Counterclockwise Loop
23, 35, 36
Peak: every 5 to 15 minutes
Off peak: every 5 to 30 minutes

function setupElement193571076257861123() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2}],”columns”:3,”rows”:3,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[33,27,38]});
_Element.prototype.settings.page_element_id = “193571076257861123”;
_Element.prototype.element_id = “000d7290-18df-4190-bfe5-cae158848ba3”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-000d7290-18df-4190-bfe5-cae158848ba3’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement193571076257861123();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement193571076257861123, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement193571076257861123();
}
});
}

Notes:

  • Route 23 operates as a clockwise loop eastbound to Shoreline Parkway, and it operates as a counterclockwise loop westbound to San Rafael Transit Center.
  • Route 29 loops around the Canal District to and from San Rafael Transit Center, in which it then serves Larkspur Landing, and in a loop, College of Marin, and Marin General Hospital. More notes on this route and Route 23X listed above.
  • Route 35 continues to and from Novato via Northgate Mall and US-101 bus pads from around 6am to 9pm weekdays, from 7am to 8pm weekends and holidays.
  • Route 36 continues to and from Marin City via US-101 bus pads from around 6:30am to 8:30pm weekdays, from 7:30am to 7:30pm weekends and holidays.

function setupElement885896949596247654() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.2”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var TabbedBox = PlatformElement.extend({
events: {
‘click .tabbed-box-tab’: ‘clickTab’,
// in case they type and that causes an overflow, we should determine scrollability here
‘keyup .tabbed-box-tab .paragraph’: ‘determineScrollability’,
‘mousedown .scrollArrow-left’: ‘scrollLeft’,
‘mousedown .scrollArrow-right’: ‘scrollRight’,
‘touchstart .scrollArrow-left’: ‘scrollLeft’,
‘touchstart .scrollArrow-right’: ‘scrollRight’
},
initialize: function() {
var view = this;
var tabs = this.$(‘.tabbed-box-tab’);
var content = this.$(‘.tabbed-box-content’);
// optimization
this.scrollArrowLeft = this.$(‘.scrollArrow-left’);
this.scrollArrowRight = this.$(‘.scrollArrow-right’);
this.scrollTabsBar = this.$(‘.tabbed-box-tab-group’);
// resize handler and mouseup handler
// since we want to be able to handle mouseup wherever the user releases (not just over the element)
// we set it here as a property of the window.
$(window).resize(function() {
this.determineScrollability();
}.bind(this)).on(‘mouseup touchend’, function() {
this.stopScrolling();
}.bind(this));
// since scroll events don’t propagate up, we have to bind it here as opposed to in the events object
this.$(‘.tabbed-box-tab-group’).scroll(function() {
this.determineHandlers();
}.bind(this));
// determine whether or not we should show the scroll handlers
this.determineScrollability();
// load the first tab.
$(document).ready(function() {
this.scrollTabsBar.children().first().click();
}.bind(this));
},
/*
Handle click event on a tab.
Uses ‘rel’ attribute of each tab as an index to access
the class of the corresponding content area.
*/
clickTab: function(e) {
var active = $(e.currentTarget); // Clicked tab
var content_wrapper = this.$(‘.tabbed-box-content-group’); // wrapper for all content divs
this.stopScrolling();
this.determineClickScroll(active);
// Set new active tab
active.siblings().removeClass(‘active’);
active.addClass(‘active’);
// mark the new active tab
this.settings.set(‘activeTabIndexInternal’, this.scrollTabsBar.children().index(active));
this.settings.save();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘.’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// Stop propagation in case this is a nested tab app
e.stopPropagation();
},
// determines whether or not the two arrows (left and right scroll handlers) should be visible or not.
determineScrollability: function() {
var group = this.scrollTabsBar[0];
if (group.scrollWidth > group.clientWidth) {
this.$el.children().addClass(‘scrollable’);
this.determineHandlers();
} else {
this.$el.children().removeClass(‘scrollable’);
}
},
// determines whether or not the two arrows (left and right scroll handlers) should be active or not.
determineHandlers: function() {
var target = this.scrollTabsBar[0];
// left handler
if (target.scrollLeft != 0) {
this.scrollArrowLeft.addClass(‘active’);
} else {
this.scrollArrowLeft.removeClass(‘active’);
}
// right handler
if (target.scrollLeft + target.clientWidth < target.scrollWidth – 1) {
this.scrollArrowRight.addClass('active');
} else {
this.scrollArrowRight.removeClass('active');
}
},
// scrolls the tabs bar to the left.
scrollLeft: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowRight.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft -= Math.floor(factor);
factor *= 1.05;
if (scrollEl.scrollLeft == 0) {
view.stopScrolling();
}
}, 10);
},
// scrolls the tabs bar to the right.
scrollRight: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowLeft.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft += Math.floor(factor);
factor *= 1.05;
// forcefully stop the interval if it's not doing anything anymore
if (scrollEl.scrollLeft + scrollEl.clientWidth == scrollEl.scrollWidth) {
view.stopScrolling();
}
}, 10);
},
stopScrolling: function() {
clearInterval(this.scrollInterval);
this.determineHandlers();
},
determineClickScroll: function(active) {
// figure out where the element is, and if we need to change our view to show it
var scroll;
// determine where the element we're going to is in respect to the tabs bar
// 25px is the size of the scroll arrows
var leftSidePosition = active.position().left – 50;
var rightSidePosition = active.position().left + active.width() + 50;
// the gap is how much space we want there to be between the selected element
// when it's out of view, and we go to it.
var gap = 25;
if (this.scrollTabsBar.children().index(active) == 0) {
// this the first element, so define the scroll to be 0.
scroll = 0;
} else if (this.scrollTabsBar.children().index(active) == this.scrollTabsBar.children().length – 1) {
// this the last element, so define the scroll to be all the way to the right.
scroll = this.scrollTabsBar[0].scrollWidth – this.scrollTabsBar[0].clientWidth;
} else if (leftSidePosition this.scrollTabsBar.width()) {
// the right corner is out of view.
scroll = this.scrollTabsBar[0].scrollLeft + (rightSidePosition – this.scrollTabsBar.width()) + gap;
} else {
scroll = this.scrollTabsBar[0].scrollLeft;
}
// start scrolling
scroll = Math.floor(scroll);
var delta = scroll – this.scrollTabsBar[0].scrollLeft;
var startedDown = false;
if (delta != 0) {
clearInterval(this.scrollInterval);
var distance = 0;
var direction = (delta > 0 ? 1 : -1);
var speed = 1;
var factor = 1.25; // for parabolic acceleration
this.scrollInterval = setInterval(function() {
if (distance >= Math.abs(delta)) {
this.stopScrolling();
}
this.scrollTabsBar[0].scrollLeft += (Math.max(1, Math.floor(speed)) * direction);
distance += Math.max(1, Math.floor(speed));
if (distance * 2 >= Math.abs(delta)) { // if we’ve traversed more than half
if (factor == 1.25) { // 5/4
factor = 1; // 4/4
} else {
factor = 0.8; // 4/5
}
}
speed *= factor;
}.bind(this), 20);
}
}
});
return TabbedBox;
})();
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“tabs_each”:[{“tabs_index”:0},{“tabs_index”:1}],”activeTabIndexInternal_each”:[{“activeTabIndexInternal_index”:0}],”theme”:”standard”,”tabs”:2,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:1});
_Element.prototype.settings.page_element_id = “885896949596247654”;
_Element.prototype.element_id = “d8e42407-5e4b-4770-ba82-01c66e560108”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.2/assets/”;
new _Element({
el: ‘#element-d8e42407-5e4b-4770-ba82-01c66e560108’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement885896949596247654();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement885896949596247654, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement885896949596247654();
}
});
}


On the next segment, I will discuss the changes that will be made around north San Rafael, especially around Northgate Mall, Kaiser Hospital, and Smith Ranch Road.

Leave a Reply

Top