document.addEventListener('DOMContentLoaded', function() {
var yelp_hash_highlight = function () {
if (location.hash != '') {
var sect = document.querySelector(location.hash);
if (sect != null) {
sect.classList.add('yelp-hash-highlight');
window.setTimeout(function () {
sect.classList.remove('yelp-hash-highlight');
}, 500);
}
}
}
window.addEventListener('hashchange', yelp_hash_highlight, false);
yelp_hash_highlight();
}, false);
var __yelp_generate_id_counter__ = 0;
function yelp_generate_id () {
var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString();
if (document.getElementById(ret) != null)
return yelp_generate_id();
else
return ret;
};
function yelp_ui_expander_init (expander) {
var yelpdata = null;
var innerdiv = null;
var region = null;
var contents = null;
var title = null;
var title_e = null;
var title_c = null;
var titlespan = null;
var issect = false;
for (var i = 0; i < expander.children.length; i++) {
var child = expander.children[i];
if (child.classList.contains('yelp-data-ui-expander')) {
yelpdata = child;
}
else if (child.classList.contains('inner')) {
innerdiv = child;
}
}
if (innerdiv == null) {
return;
}
for (var i = 0; i < innerdiv.children.length; i++) {
var child = innerdiv.children[i];
if (child.classList.contains('region')) {
region = child;
}
else if (child.classList.contains('title')) {
title = child;
}
else if (child.classList.contains('hgroup')) {
title = child;
issect = true;
}
}
if (region == null || title == null) {
return;
}
if (!region.hasAttribute('id')) {
region.setAttribute('id', yelp_generate_id());
}
title.setAttribute('aria-controls', region.getAttribute('id'));
if (yelpdata != null) {
for (var i = 0; i < yelpdata.children.length; i++) {
var child = yelpdata.children[i];
if (child.classList.contains('yelp-title-expanded')) {
title_e = child;
}
else if (child.classList.contains('yelp-title-collapsed')) {
title_c = child;
}
}
}
titlespan = title.querySelector('span.title');
if (titlespan == null) {
return;
}
if (title_e == null) {
var node = document.createElement('div');
node.className = 'yelp-title-expanded';
node.innerHTML = titlespan.innerHTML;
yelpdata.appendChild(node);
title_e = node;
}
if (title_c == null) {
var node = document.createElement('div');
node.className = 'yelp-title-collapsed';
node.innerHTML = titlespan.innerHTML;
yelpdata.appendChild(node);
title_c = node;
}
var ui_expander_zoom_region = function (event) {
if (yelpdata.getAttribute('data-yelp-expanded') != 'false') {
ui_expander_toggle();
event.preventDefault();
}
}
if (expander.nodeName == 'section' || expander.nodeName == 'SECTION') {
for (var i = 0; i < region.children.length; i++) {
var child = region.children[i];
if (child.classList.contains('contents')) {
contents = child;
break;
}
}
contents.addEventListener('click', ui_expander_zoom_region, true);
}
else {
region.addEventListener('click', ui_expander_zoom_region, true);
}
var ui_expander_toggle = function () {
if (yelpdata.getAttribute('data-yelp-expanded') == 'false') {
yelpdata.setAttribute('data-yelp-expanded', 'true');
expander.classList.remove('ui-expander-e');
expander.classList.add('ui-expander-c');
region.setAttribute('aria-expanded', 'false');
if (title_c != null)
titlespan.innerHTML = title_c.innerHTML;
}
else {
yelpdata.setAttribute('data-yelp-expanded', 'false');
expander.classList.remove('ui-expander-c');
expander.classList.add('ui-expander-e');
region.setAttribute('aria-expanded', 'true');
if (title_e != null)
titlespan.innerHTML = title_e.innerHTML;
}
};
expander.yelp_ui_expander_toggle = ui_expander_toggle;
title.addEventListener('click', ui_expander_toggle, false);
ui_expander_toggle();
}
document.addEventListener('DOMContentLoaded', function() {
var matches = document.querySelectorAll('.ui-expander');
for (var i = 0; i < matches.length; i++) {
yelp_ui_expander_init(matches[i]);
}
var yelp_hash_ui_expand = function () {
if (location.hash != '') {
var sect = document.querySelector(location.hash);
if (sect != null) {
for (var cur = sect; cur instanceof Element; cur = cur.parentNode) {
if (cur.classList.contains('ui-expander')) {
if (cur.classList.contains('ui-expander-c')) {
cur.yelp_ui_expander_toggle();
}
}
}
sect.scrollIntoView();
}
}
};
window.addEventListener('hashchange', yelp_hash_ui_expand, false);
yelp_hash_ui_expand();
}, false);
yelp_color_text_light = 'rgb(75,75,73)';
yelp_color_gray_background = 'rgb(244,244,244)';
yelp_color_gray_border = '#c0bfbc';
function yelp_figure_init (figure) {
var zoom = figure.querySelector('a.figure-zoom');
var figure_resize = function () {
var zoomed = zoom.classList.contains('figure-zoomed');
var imgs = figure.querySelectorAll('img');
for (var i = 0; i < imgs.length; i++) {
var img = imgs[i];
var mediaDiv = null;
for (var cur = img; cur instanceof Element; cur = cur.parentNode) {
if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') &&
cur.classList.contains('media')) {
mediaDiv = cur;
break;
}
}
if (mediaDiv == null)
continue;
if (!img.hasAttribute('data-yelp-original-width')) {
var iwidth = null;
if (img.hasAttribute('width'))
iwidth = parseInt(img.getAttribute('width'));
else
iwidth = img.width;
img.setAttribute('data-yelp-original-width', iwidth);
var iheight = null;
if (img.hasAttribute('height'))
iheight = parseInt(img.getAttribute('height'));
else
iheight = img.height * (iwidth / img.width);
img.setAttribute('data-yelp-original-height', iheight);
}
var owidth = img.width;
var oheight = img.height;
img.width = parseInt(img.getAttribute('data-yelp-original-width'));
img.height = parseInt(img.getAttribute('data-yelp-original-height'));
var mediaw = mediaDiv.offsetWidth;
img.width = owidth;
img.height = oheight;
if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) {
img.width = parseInt(img.getAttribute('data-yelp-original-width'));
img.height = parseInt(img.getAttribute('data-yelp-original-height'));
zoom.style.display = 'none';
}
else if (zoomed) {
img.width = parseInt(img.getAttribute('data-yelp-original-width'));
img.height = parseInt(img.getAttribute('data-yelp-original-height'));
zoom.style.display = 'block';
}
else {
img.width = mediaw;
img.height = (parseInt(img.getAttribute('data-yelp-original-height')) *
img.width /
parseInt(img.getAttribute('data-yelp-original-width')));
zoom.style.display = 'block';
}
}
}
figure.yelp_figure_resize = figure_resize;
figure.yelp_figure_resize();
zoom.onclick = function (e) {
var zoomed = zoom.classList.contains('figure-zoomed');
if (zoomed)
zoom.classList.remove('figure-zoomed');
else
zoom.classList.add('figure-zoomed');
figure.yelp_figure_resize();
return false;
};
}
window.addEventListener('load', function() {
var figures = document.querySelectorAll('div.figure');
for (var i = 0; i < figures.length; i++) {
if (figures[i].querySelector('img') != null)
yelp_figure_init(figures[i]);
}
var timeout = null;
var yelp_figures_resize = function () {
if (timeout != null)
return;
timeout = window.setTimeout(function () {
for (var i = 0; i < figures.length; i++) {
if (figures[i].querySelector('img') != null)
figures[i].yelp_figure_resize();
}
window.clearTimeout(timeout);
timeout = null;
}, 100);
};
window.addEventListener('resize', yelp_figures_resize, false);
}, false);
function yelp_media_init (media) {
media.removeAttribute('controls');
if (media.parentNode.classList.contains('links-tile-img')) {
return;
}
media.addEventListener('click', function () {
if (media.paused)
media.play();
else
media.pause();
}, false);
var controls = null;
for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) {
if (cur.classList.contains('media-controls')) {
controls = cur;
break;
}
}
if (controls == null) {
media.setAttribute('controls', 'controls');
return;
}
var playbutton = controls.querySelector('button.media-play');
playbutton.addEventListener('click', function () {
if (media.paused || media.ended)
media.play();
else
media.pause();
}, false);
var mediachange = function () {
if (media.ended)
media.pause()
if (media.paused) {
playbutton.setAttribute('value', playbutton.getAttribute('data-play-label'));
playbutton.classList.remove('media-play-playing');
}
else {
playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label'));
playbutton.classList.add('media-play-playing');
}
}
media.addEventListener('play', mediachange, false);
media.addEventListener('pause', mediachange, false);
media.addEventListener('ended', mediachange, false);
var mediarange = controls.querySelector('input.media-range');
mediarange.addEventListener('input', function () {
var pct = this.value;
if (pct < 0)
pct = 0;
if (pct > 100)
pct = 100;
media.currentTime = (pct / 100.0) * media.duration;
}, false);
var curspan = controls.querySelector('span.media-current');
var durspan = controls.querySelector('span.media-duration');
var durationUpdate = function () {
if (!isNaN(media.duration)) {
mins = parseInt(media.duration / 60);
secs = parseInt(media.duration - (60 * mins));
durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
}
};
media.addEventListener('durationchange', durationUpdate, false);
var ttmlDiv = null;
var ttmlNodes = null;
for (var i = 0; i < media.parentNode.children.length; i++) {
var child = media.parentNode.children[i];
if (child.classList.contains('media-ttml'))
ttmlDiv = child;
}
if (ttmlDiv != null) {
ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node');
}
var timeUpdate = function () {
var pct = (media.currentTime / media.duration) * 100;
mediarange.value = pct;
var mins = parseInt(media.currentTime / 60);
var secs = parseInt(media.currentTime - (60 * mins))
curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
if (ttmlNodes != null) {
for (var i = 0; i < ttmlNodes.length; i++) {
var ttml = ttmlNodes[i];
if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) &&
(!ttml.hasAttribute('data-ttml-end') ||
media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) {
if (ttml.tagName == 'span' || ttml.tagName == 'SPAN')
ttml.style.display = 'inline';
else
ttml.style.display = 'block';
}
else {
ttml.style.display = 'none';
}
}
}
};
media.addEventListener('timeupdate', timeUpdate, false);
};
document.addEventListener('DOMContentLoaded', function() {
var matches = document.querySelectorAll('video, audio');
for (var i = 0; i < matches.length; i++) {
yelp_media_init(matches[i]);
}
}, false);
document.addEventListener('DOMContentLoaded', function() {
var tiles = document.querySelectorAll('div.links-tile');
for (var i = 0; i < tiles.length; i++) {
(function (tile) {
if (!tile.parentNode.classList.contains('links-tiles') &&
(tile.nextElementSibling &&
tile.nextElementSibling.classList.contains('links-tile')) &&
!(tile.previousElementSibling &&
tile.previousElementSibling.classList.contains('links-tile'))) {
var tilesdiv = document.createElement('div');
tilesdiv.className = 'links-tiles';
tile.parentNode.insertBefore(tilesdiv, tile);
var cur = tile;
while (cur && cur.classList.contains('links-tile')) {
var curcur = cur;
cur = cur.nextElementSibling;
tilesdiv.appendChild(curcur);
}
for (j = 0; j < 2; j++) {
var paddiv = document.createElement('div');
paddiv.className = 'links-tile';
tilesdiv.appendChild(paddiv);
}
}
})(tiles[i]);
}
});
document.addEventListener('DOMContentLoaded', function() {
var overlays = document.querySelectorAll('a.ui-overlay');
for (var i = 0; i < overlays.length; i++) {
(function (ovlink) {
var overlay = ovlink.parentNode.querySelector('div.ui-overlay');
var ui_overlay_show = function (ev) {
overlay.style.display = 'block';
overlay.classList.add('ui-overlay-show');
var screen = document.querySelector('div.ui-overlay-screen');
if (screen == null) {
screen = document.createElement('div');
screen.className = 'ui-overlay-screen';
document.body.appendChild(screen);
}
var inner = overlay.querySelector('div.inner');
var close = inner.querySelector('a.ui-overlay-close');
var media = inner.querySelectorAll('audio, video');
var overlay_play_func = function () {
for (var j = 0; j < media.length; j++) {
media[j].play();
}
};
var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000);
var ui_overlay_funcs = {};
ui_overlay_funcs['hide'] = function () {
overlay.style.display = 'none';
document.body.removeChild(screen);
document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false);
for (var j = 0; j < media.length; j++) {
media[j].pause();
}
window.clearTimeout(overlay_play_timeout);
};
ui_overlay_funcs['hideclick'] = function (uiev) {
ui_overlay_funcs['hide']();
uiev.preventDefault();
};
ui_overlay_funcs['keydown'] = function (uiev) {
if (uiev.keyCode == 27) {
ui_overlay_funcs['hide']();
}
};
screen.addEventListener('click', ui_overlay_funcs['hideclick'], false);
close.addEventListener('click', ui_overlay_funcs['hideclick'], false);
document.addEventListener('keydown', ui_overlay_funcs['keydown'], false);
ev.preventDefault();
};
ovlink.addEventListener('click', ui_overlay_show, false);
})(overlays[i]);
}
});