You are here
Home > resources
Here are my resources used for my website. Please note: not all information found on these websites may be updated to reflect current situation.

Transportation Overview

#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line.scrollable .scrollArrow-left,
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .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-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Print Publications
  • Online Publications
  • Periodicals
  • Organizations
  • Publishers
<
>

function setupElement747128551952790187() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2},{“tabs_index”:3},{“tabs_index”:4}],”theme”:”standard”,”tabs”:5,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:0});
_Element.prototype.settings.page_element_id = “747128551952790187”;
_Element.prototype.element_id = “bbdbc1aa-b3e9-46c6-8334-cb935640c5f4”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-bbdbc1aa-b3e9-46c6-8334-cb935640c5f4’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement747128551952790187();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement747128551952790187, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement747128551952790187();
}
});
}


Policy Descriptions and Analyses

#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line.scrollable .scrollArrow-left,
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .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-b20385e6-9be6-4eb3-83d4-4773f81463d5 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-b20385e6-9be6-4eb3-83d4-4773f81463d5 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Urban Planning, General
  • Transportation Planning
  • Urban Design
  • Infrastructure
  • Other
<
>

function setupElement829808576454174790() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2},{“tabs_index”:3},{“tabs_index”:4}],”activeTabIndexInternal_each”:[{“activeTabIndexInternal_index”:0},{“activeTabIndexInternal_index”:1},{“activeTabIndexInternal_index”:2}],”theme”:”standard”,”tabs”:5,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:3});
_Element.prototype.settings.page_element_id = “829808576454174790”;
_Element.prototype.element_id = “b20385e6-9be6-4eb3-83d4-4773f81463d5”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-b20385e6-9be6-4eb3-83d4-4773f81463d5’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement829808576454174790();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement829808576454174790, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement829808576454174790();
}
});
}


Transportation Resources: United States and Overseas Legislation and Planning

#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line.scrollable .scrollArrow-left,
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .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-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Federal Government
  • State Government
  • Regional and Local
  • Overseas
<
>

function setupElement360323858255620063() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2},{“tabs_index”:3}],”activeTabIndexInternal_each”:[{“activeTabIndexInternal_index”:0},{“activeTabIndexInternal_index”:1},{“activeTabIndexInternal_index”:2}],”theme”:”standard”,”tabs”:4,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:3});
_Element.prototype.settings.page_element_id = “360323858255620063”;
_Element.prototype.element_id = “ada7e2ca-12d6-4558-aa51-dc376b10bfb5”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-ada7e2ca-12d6-4558-aa51-dc376b10bfb5’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement360323858255620063();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement360323858255620063, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement360323858255620063();
}
});
}


Transportation Resources: California Legislation and Planning

#element-8714dd0f-be57-456c-813a-d02d667fd06d .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .scrollArrow.scrollArrow-left {
left: 0;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .scrollArrow.scrollArrow-right {
right: 0;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line.scrollable .scrollArrow-left,
#element-8714dd0f-be57-456c-813a-d02d667fd06d .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .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-8714dd0f-be57-456c-813a-d02d667fd06d .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-8714dd0f-be57-456c-813a-d02d667fd06d .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • State Government
  • Regional
  • County and Local
<
>

Agencies

Policies

function setupElement401675797984570455() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2}],”theme”:”standard”,”tabs”:3,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:0});
_Element.prototype.settings.page_element_id = “401675797984570455”;
_Element.prototype.element_id = “8714dd0f-be57-456c-813a-d02d667fd06d”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-8714dd0f-be57-456c-813a-d02d667fd06d’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement401675797984570455();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement401675797984570455, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement401675797984570455();
}
});
}


Public Transportation Resources: Transportation Companies

#element-d914f574-4c99-46c9-afee-067bcf10acb8 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line.scrollable .scrollArrow-left,
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .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-d914f574-4c99-46c9-afee-067bcf10acb8 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-d914f574-4c99-46c9-afee-067bcf10acb8 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Northern California
  • Southern California
  • Rest of United States
  • Overseas Agencies
<
>

San Francisco Bay Area Transit Agencies

(function(jQuery) {
function init() { window.wSlideshow && window.wSlideshow.render({elementID:”364987762900877585″,nav:”none”,navLocation:”bottom”,captionLocation:”bottom”,transition:”slide”,autoplay:”1″,speed:”5″,aspectRatio:”auto”,showControls:”true”,randomStart:”false”,images:[{“url”:”3\/4\/6\/6\/3466466\/28428942486-988cc338bb-o_1.jpg”,”width”:400,”height”:224,”fullHeight”:618,”fullWidth”:1100},{“url”:”3\/4\/6\/6\/3466466\/26437081053-9788d7c2f1-o.jpg”,”width”:400,”height”:224,”fullHeight”:618,”fullWidth”:1100},{“url”:”3\/4\/6\/6\/3466466\/sfmuni-7058.jpg”,”width”:400,”height”:224,”fullHeight”:618,”fullWidth”:1100},{“url”:”3\/4\/6\/6\/3466466\/napavine-160.jpg”,”width”:400,”height”:224,”fullHeight”:618,”fullWidth”:1100}]}) }
jQuery(document).ready(init);
})(window.jQuery)

SF Bay Area Private and Charter Operators

Lake Tahoe and Sierra Nevada

Bike Share, Car Share, and Ride Share

  • City Carshare
  • Ford Go Bikeshare
  • Lyft
  • Sidekick
  • Uber
  • Zipcar

function setupElement254681281387763434() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2},{“tabs_index”:3}],”theme”:”standard”,”tabs”:4,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:0});
_Element.prototype.settings.page_element_id = “254681281387763434”;
_Element.prototype.element_id = “d914f574-4c99-46c9-afee-067bcf10acb8”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-d914f574-4c99-46c9-afee-067bcf10acb8’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement254681281387763434();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement254681281387763434, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement254681281387763434();
}
});
}


Airports and Aviation

#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .scrollArrow.scrollArrow-left {
left: 0;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .scrollArrow.scrollArrow-right {
right: 0;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line.scrollable .scrollArrow-left,
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .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-fc5e8837-0d21-49ff-9db0-c6214e792b7c .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

function setupElement720672925372866915() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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 = “720672925372866915”;
_Element.prototype.element_id = “fc5e8837-0d21-49ff-9db0-c6214e792b7c”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-fc5e8837-0d21-49ff-9db0-c6214e792b7c’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement720672925372866915();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement720672925372866915, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement720672925372866915();
}
});
}


Transportation Projects

#element-94747a01-06b3-45b6-91d7-9808013bb06f .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .scrollArrow.scrollArrow-left {
left: 0;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .scrollArrow.scrollArrow-right {
right: 0;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line.scrollable .scrollArrow-left,
#element-94747a01-06b3-45b6-91d7-9808013bb06f .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .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-94747a01-06b3-45b6-91d7-9808013bb06f .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-94747a01-06b3-45b6-91d7-9808013bb06f .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • California
  • Rest of United States
  • Overseas
<
>

function setupElement170626408628135694() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2}],”activeTabIndexInternal_each”:[{“activeTabIndexInternal_index”:0},{“activeTabIndexInternal_index”:1}],”theme”:”standard”,”tabs”:3,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:2});
_Element.prototype.settings.page_element_id = “170626408628135694”;
_Element.prototype.element_id = “94747a01-06b3-45b6-91d7-9808013bb06f”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-94747a01-06b3-45b6-91d7-9808013bb06f’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement170626408628135694();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement170626408628135694, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement170626408628135694();
}
});
}


​Transportation in the Media

#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line.scrollable .scrollArrow-left,
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .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-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • California
  • Rest of United States
  • Overseas
<
>

function setupElement863427436379452000() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2}],”activeTabIndexInternal_each”:[{“activeTabIndexInternal_index”:0},{“activeTabIndexInternal_index”:1}],”theme”:”standard”,”tabs”:3,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:2});
_Element.prototype.settings.page_element_id = “863427436379452000”;
_Element.prototype.element_id = “6e3ee13f-b1d0-4e53-a170-d170f8d03ac9”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-6e3ee13f-b1d0-4e53-a170-d170f8d03ac9’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement863427436379452000();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement863427436379452000, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement863427436379452000();
}
});
}


Public Transportation Groups

#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line.scrollable .scrollArrow-left,
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .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-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • California
  • Rest of United States
  • Overseas
<
>

function setupElement821841347765191945() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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},{“tabs_index”:2}],”activeTabIndexInternal_each”:[{“activeTabIndexInternal_index”:0},{“activeTabIndexInternal_index”:1}],”theme”:”standard”,”tabs”:3,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:2});
_Element.prototype.settings.page_element_id = “821841347765191945”;
_Element.prototype.element_id = “132a8d3c-35a4-4aa7-aa75-3c1834935b29”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-132a8d3c-35a4-4aa7-aa75-3c1834935b29’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement821841347765191945();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement821841347765191945, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement821841347765191945();
}
});
}


Miscellaneous

#element-8d614458-a35c-4870-8d31-b5e26e5d764b .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .scrollArrow.scrollArrow-left {
left: 0;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .scrollArrow.scrollArrow-right {
right: 0;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line.scrollable .scrollArrow-left,
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .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-8d614458-a35c-4870-8d31-b5e26e5d764b .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-8d614458-a35c-4870-8d31-b5e26e5d764b .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Short Range Transit Plans
  • Planning Policies
<
>

function setupElement842616526963645297() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
requireFunc([
‘w-global’,
‘underscore’,
‘jquery’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
_W,
_,
$,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.6”;
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;
// optimization
this.scrollArrowLeft = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-left’);
this.scrollArrowRight = this.$(‘> .tabbed-box > .tabbed-box-bar > .scrollArrow-right’);
this.scrollTabsBar = this.$(‘> .tabbed-box > .tabbed-box-bar > .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.scrollTabsBar.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 > .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();
// trigger children first
content_wrapper.find(‘.tabbed-box-tab.active’).click();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘> .’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// fire resize event to handle any deterministic elements now appearing
$(window).resize();
// 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 = “842616526963645297”;
_Element.prototype.element_id = “8d614458-a35c-4870-8d31-b5e26e5d764b”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.6/assets/”;
new _Element({
el: ‘#element-8d614458-a35c-4870-8d31-b5e26e5d764b’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement842616526963645297();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement842616526963645297, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement842616526963645297();
}
});
}

Top