1// MooTool fix for IE 2if (!Array.from) { 3 Array.from = (function () { 4 var toStr = Object.prototype.toString; 5 var isCallable = function (fn) { 6 return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; 7 }; 8 var toInteger = function (value) { 9 var number = Number(value); 10 if (isNaN(number)) { return 0; } 11 if (number === 0 || !isFinite(number)) { return number; } 12 return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); 13 }; 14 var maxSafeInteger = Math.pow(2, 53) - 1; 15 var toLength = function (value) { 16 var len = toInteger(value); 17 return Math.min(Math.max(len, 0), maxSafeInteger); 18 }; 19 20 // The length property of the from method is 1. 21 return function from(arrayLike/*, mapFn, thisArg */) { 22 // 1. Let C be the this value. 23 var C = this; 24 25 // 2. Let items be ToObject(arrayLike). 26 var items = Object(arrayLike); 27 28 // 3. ReturnIfAbrupt(items). 29 if (arrayLike == null) { 30 throw new TypeError("Array.from requires an array-like object - not null or undefined"); 31 } 32 33 // 4. If mapfn is undefined, then let mapping be false. 34 var mapFn = arguments.length > 1 ? arguments[1] : void undefined; 35 var T; 36 if (typeof mapFn !== 'undefined') { 37 // 5. else 38 // 5. a If IsCallable(mapfn) is false, throw a TypeError exception. 39 if (!isCallable(mapFn)) { 40 throw new TypeError('Array.from: when provided, the second argument must be a function'); 41 } 42 43 // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined. 44 if (arguments.length > 2) { 45 T = arguments[2]; 46 } 47 } 48 49 // 10. Let lenValue be Get(items, "length"). 50 // 11. Let len be ToLength(lenValue). 51 var len = toLength(items.length); 52 53 // 13. If IsConstructor(C) is true, then 54 // 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len. 55 // 14. a. Else, Let A be ArrayCreate(len). 56 var A = isCallable(C) ? Object(new C(len)) : new Array(len); 57 58 // 16. Let k be 0. 59 var k = 0; 60 // 17. Repeat, while k < len� (also steps a - h) 61 var kValue; 62 while (k < len) { 63 kValue = items[k]; 64 if (mapFn) { 65 A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); 66 } else { 67 A[k] = kValue; 68 } 69 k += 1; 70 } 71 // 18. Let putStatus be Put(A, "length", len, true). 72 A.length = len; 73 // 20. Return A. 74 return A; 75 }; 76 }()); 77} 78 79 80var onRecaptchaLoad = function() { 81 jQuery('.g-recaptcha').each(function(index, captcha) { 82 grecaptcha.render(captcha, { 83 sitekey : jQuery(captcha).data('sitekey'), 84 theme : 'dark' 85 }); 86 jQuery(window).resize(); 87 }); 88}; 89 90//======================= SlideShow =======================// 91function generateSlideshows() { 92 $$('.slideshow, .event-slideshow').each(function(el) { 93 if (!el.hasClass('initialized')) { 94 95 setTimeout(function() { 96 var options = {}; 97 if (el.hasClass('inner-slideshow')) options.ar = 2.6; // The higher the value, the shorter the slideshow's height 98 if (slideshow_settings.delay) options.delay = slideshow_settings.delay * 1000;
98 // They're set as seconds in /cp/ 99 if (slideshow_settings.duration) options.duration = slideshow_settings.duration * 1000; // They're set as seconds in /cp/ 100 101 if (location.hash == '#dev') options.delay = 20000; 102 103 el.slideshow = SlideShow.init(el, options); 104 el.addClass('initialized'); 105 106 jQuery(el).animate({ 107 opacity: 1 108 }); 109 }, (parseInt(jQuery(el).data('delay')) || 0)); 110 } 111 }); 112} 113document.addEvent('domready', function() { 114 Asset.javascript('/assets/js/lib/SlideShow.js', { 115 'onLoad': generateSlideshows 116 }); 117 118 //======================= Lightbox =======================// 119 Asset.javascript('/assets/js/lib/lightbox.js', { 120 'onLoad': function(e) { 121 LightBox.init(); 122 } 123 }); 124 }); 125document.addEvent('newcontent', function() { LightBox.bind(); }); 126 127//======================= Slidebox =======================// 128(function(){ 129 var initSlideboxes = function(){ 130 $$('.slidebox').each(function(el){ 131 var slider = el.getElement('ul'); 132 el.setStyle('width', null); 133 var maxw = jQuery(el).outerWidth(); 134 slider.addClass('hidden'); 135 var minw = jQuery(el).outerWidth(); 136 el.setStyle('width', minw); 137 slider.removeClass('hidden'); 138 139 var fx = new Fx.Tween(el, { 140 duration : maxw*2.5, 141 property : 'width', 142 link : 'cancel' 143 }); 144 145 el.removeEvents().addEvents({ 146 mouseenter: function(){ fx.start(minw+slider.getWidth()).chain(function(){}); }, 147 mouseleave: function(){ fx.start(minw).chain(function(){}); }, 148 }); 149 150 if(!el.hasClass('has-init')) { 151 el.addClass('has-init'); 152 } 153 }); 154 } 155 156 document.addEvent('domready', function() { 157 setTimeout(initSlideboxes, 500); 158 }); 159})(); 160 161//======================= DBForm Handler =======================// 162window.DBForms = {}; 163window.chkparseDbForms = function() { 164 $$('.dbform').each(function(el) { 165 if (el.hasClass('sync')) 166 return; 167 168 if (!el.retrieve('dbform')) { 169 var dbform = new DBForm(el); 170 window.DBForms[dbform.key] = dbform; 171 el.store('dbform', dbform); 172 } 173 }); 174} 175 176document.addEvent('domready', function() { 177 //Asset.javascript('assets/js/legacy.js'); 178 Asset.javascript('assets/js/forms.js?20191129', { 179 onLoad: window.chkparseDbForms 180 }); 181 Asset.javascript('assets/js/postings.js'); 182 183 // Load the main layout elements one at a time 184 var chain = new Chain(); 185 chain.chain( 186 function() { 187 jQuery('#topmenu')[0].set('tween', { duration: '500', onComplete: function(){ chain.callChain(); }}).fade(1); 188 }, 189 function() { 190 (jQuery('#home-slides').length ? jQuery('#home-slides') : jQuery('#top-header-slides'))[0].set('tween', { duration: '500', onComplete: function(){ chain.callChain(); }}).fade(1); 191 }, 192 function() { 193 jQuery('#tag-lines')[0].set('tween', { duration: '500'}).fade(1); 194 jQuery('#reservations-bar-new > *')[0].set('tween', { duration: '500', onComplete: function(){ chain.callChain(); }}).fade(1); 195 }, 196 function() { 197 (jQuery('#main-canvas .pagecontent').length ? jQuery('#main-canvas .pagecontent').first() : jQuery('#home-bottom-content'))[0].set('tween', { duration: '500', onComplete: function(){ chain.callChain(); }}).fade(1); 198 }, 199 function() { 200 jQuery('#footer-map')[0].set('tween', { duration: '500', onComplete: function(){ chain.callChain(); }}).fade(1); 201 }, 202 function() { 203 jQuery('#pagefooter')[0].set('tween', { duration: '500'}).fade(1); 204 } 205 ).callChain(); 206 207 if (!jQuery('#home-slides').length && jQuery('#top-header-slides').length) 208 // We must be in an inner page, so let's load the inner slideshow container, too 209 jQuery('#top-header-slides')[0].set('tween', { duration: '500'}).fade(1); 210 211 //jQuery('#opentable-container').replaceWith('<script src="//www.opentable.com/widget/reservation/loader?rid=785&domain=com&type=standard&theme=wide&lang=en-US&overlay=false&iframe=false&rand=' + Math.random() + '"></script>'); //assets/js/opentable.js 212 /* OpenTable inline widget disabled 2026-06-30 â see htmlfoot.phtml. The #opentable-frame iframe 213 no longer exists, so this poll-and-lift-the-rendered-widget loop is off. Stopgap is the 214 "Find a Table" button in pageheader.phtml. Restore both to re-enable. 215 var opentable_interval = setInterval(function() { 216 var iframeDocument = (jQuery('#opentable-frame')[0].contentDocument || jQuery('#opentable-frame')[0].contentWindow.document); 217 218 if (jQuery(iframeDocument).find('oc-component[data-rendered="true"]').length) { 219 if (!jQuery(iframeDocument).find('.ot-dtp-picker').hasClass('ot-hide')) { 220 jQuery('#opentable-container').replaceWith(jQuery(iframeDocument).find('div[id^="ot-widget-container"]')); 221 jQuery('#opentable-frame').css('display', 'none'); 222 clearInterval(opentable_interval); 223 224 // Fix the datepicker modal orientation, not working after picking it up from the iframe 225 jQuery('#reservations-bar-new input[name=datepicker]').mousedown(function() { 226 setTimeout(function() { 227 var has_room = (jQuery(window).height() - jQuery('#reservations-bar-new').offset().top + jQuery(window).scrollTop() > 245); 228 jQuery('#reservations-bar-new .ot-date-picker .picker').toggleClass('up', !has_room); 229 }, 10); 230 });
231 232 setTimeout(checkHash, 500); 233 234 } else { 235 // Reload the widget iframe... 236 //console.log('Reloading the OpenTable widget iframe...'); 237 iframeDocument.location.reload(); 238 } 239 } 240 }, 1000); 241 */ 242 }); 243 244//======================= AddThis / Google Analytics =======================// 245(function() { 246 if(!window.site_config || !site_config.pubid) return; 247 248 window.addthis_config = { 249 ui_click : true, 250 ui_delay : 50, 251 //ui_hover_direction : 1, 252 ui_offset_top : 0, 253 ui_offset_left : 0, 254 ui_header_color : '#ffffff', 255 ui_header_background : '#000000', 256 ui_cobrand : site_config.title, 257 ui_use_css : true, 258 data_track_clickback : true, 259 data_track_addressbar : false, 260 //services_exclude : '', 261 262 services_compact: [ 263 'facebook', 'favorites', 'twitter', 'print', 'google_plusone_share', 'email', 264 'linkedin', 'mailto', 'google', 'gmail', 'wordpress', 'hotmail', 265 'blogger', 'friendfeed', 'myspace', 'stumbleupon', 'delicious', 'bitly', 'digg', 'fark', 'reddit' 266 ].join(','), 267 268 services_expanded: [ 269 'facebook', 'google_plusone_share', 'twitter', 'linkedin', 'friendfeed', 'myspace', 270 'email', 'gmail', 'hotmail', 'yahoomail', 'aolmail', 'mailto', 271 'blogger', 'livejournal', 'wordpress', 'tumblr', 'typepad', 272 'reddit', 'digg', 'fark', 'delicious', 'bitly', 'stumbleupon', 'google', 'live', 273 'amazonwishlist', 'favorites', 'print', 'printfriendly', 'readitlater' 274 ].join(',') 275 }; 276 277 document.addEvent('domready', function() { 278 if(site_config.pubid.analytics) { 279 (function(i,s,o,g,r,a,m){ 280 i['GoogleAnalyticsObject']=r; 281 i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)}, i[r].l=1*new Date(); 282 a=s.createElement(o),m=s.getElementsByTagName(o)[0]; 283 a.async=1;a.src=g;m.parentNode.insertBefore(a,m); 284 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 285 ga('create', site_config.pubid.analytics, 'auto'); 286 ga('send', 'pageview'); 287 }; 288 if(site_config.pubid.addthis && addthis_config) { 289 Asset.javascript('//s7.addthis.com/js/300/addthis_widget.js#pubid='+site_config.pubid.addthis); 290 } 291 }); 292})(); 293 294 295 296//#################### Responsive Layout #####################// 297(function() { 298 var mm; 299 var respToggleMenu = function() { 300 $(document.body).toggleClass('resp-menu-show'); 301 }; 302 303 document.addEvent('domready', function() { 304 var pgcanvas, sidecol, maincol; 305 if(pgcanvas = document.getElement('#main-canvas .pagecanvas')) { 306 if((sidecol = pgcanvas.el('.pagemenu')) && (maincol = pgcanvas.el('.pagecontent'))) { 307 var szmain = maincol.measure(function() { return this.getSize(); }), 308 szside = sidecol.measure(function() { return this.getSize(); }); 309 if(szside.y > szmain.y) maincol.setStyle('min-height', szside.y); 310 } 311 } 312 313 314 mm = $('mainmenu'); 315 if(!mm) return; 316 317 // Add custom links to mobile menu 318 $$('.mobi-menu-links').each(function(el) { 319 var clone = el.clone(); 320 clone.removeClass('hidden'); 321 mm.el('.mmenu').adopt(new Element('<li>').addClass('mitem mobi-only').adopt(clone)); 322 }); 323 324 $$('.resp-menu-toggle').addEvent('click', respToggleMenu); 325 mm.els('.mmenu')[0].els('.curbranch').addClass('branch-expand'); 326 327 mm.els('.mmenu:first-of-type .mitem').each(function(mitem) { 328 mitem.el('.msubmenus') ? mitem.addClass('has-sub') : mitem.remClass('has-sub'); 329 }); 330 331 mm.addEvent('click:relay(.mmenu:first-of-type .mitem)', function(e, el) { 332 if (el.hasClass('has-sub') && !el.hasClass('branch-expand')) { 333 mm.els('.branch-expand').remClass('branch-expand'); 334 el.addClass('branch-expand'); 335 el.el('>a').blur(); 336 if(mm.hasClass('mm-mobi')) return !e.stop(); 337 338 } else if (el.hasClass('has-sub') && el.hasClass('branch-expand')) { 339 // When clicking on an already expanded branch, we just close it 340 el.removeClass('branch-expand'); 341 } 342 return true; 343 }); 344 345 jQuery('#close-mobile-top-menu').click(respToggleMenu); 346 347 return; 348 }); 349 350 var respPosMenu = function() { 351 if (!mm) return; 352 if (jQuery(window).width() <= 768) { 353 if(!mm.hasClass('mm-mobi')) { 354 mm.addClass('mm-mobi').dispose().inject($(document.body)); 355 } 356 } 357 else if(mm.hasClass('mm-mobi')) mm.remClass('mm-mobi').dispose().inject($('pageheader')); 358 }; 359 window.addEvents({ domready:respPosMenu, load:respPosMenu, resize:respPosMenu }); 360})(); 361 362// ScrollBarState 363(function() { 364 return; 365 366 var sbstate_parse = function() { 367 var r = { win:'', y:0, x:0 }, nbits = window.name.split('_xx_'); 368 if(nbits.length > 1) { 369 r.win = nbits.shift() || ''; 370 r.y = nbits.pop() || 0; 371 } 372 return r; 373 }; 374 375 var xflag = false 376 var sbstate_scroll = function() { 377 if(!xflag) { 378 var p = sbstate_parse(); 379 window.scrollTo(0, p.y); 380 xflag = true; 381 } 382 else test('xflag!'); 383 }; 384 var sbstate_relay = function() { 385 var p = sbstate_parse(); 386 window.name = p.win +'_xx_'+ document.body.getScroll().y; 387 return true; 388 }; 389 document.addEvent('domready', function() { 390 sbstate_scroll(); 391 document.addEvent('click:relay(a)', function(e, el) { 392 return sbstate_relay(el); 393 }); 394 }); 395})(); 396 397var checkHash; 398function checkReservationBubble() { 399 if (jQuery('#reservations-bar-new').offset().top + jQuery('#reservations-bar-new').outerHeight() + jQuery('#reservation-bubble').outerHeight() + 28 < jQuery(window).scrollTop() + jQuery(window).height()) { 400 jQuery('#reservation-bubble').removeClass('top'); 401 jQuery('#reservation-bubble').css('top', jQuery('#reservations-bar-new').offset().top + jQuery('#reservations-bar-new').outerHeight() + 28 - jQuery(window).scrollTop()); 402 403 } else { 404 jQuery('#reservation-bubble').addClass('top'); 405 jQuery('#reservation-bubble').css('top', jQuery('#reservations-bar-new').offset().top - jQuery('#reservation-bubble').outerHeight() - 28 - jQuery(window).scrollTop()); 406 } 407} 408 409document.addEvent('domready', function() { 410 // Load all inner pages via AJAX 411 var main = jQuery('.pagecanvas'), 412 menus = jQuery('#mainmenu .mitem'); 413 414 menus.each(function(index, menu) { 415 if (!jQuery(menu).data('single-page')) return; 416 417 var link = jQuery(menu).children('a').first(), 418 subpages = jQuery(menu).find('.msubmenus li'); 419 /* 420 link.click(function() { 421 document.location = subpages.first().find('a').attr('href'); 422 return false; 423 });
424 */ 425 if (!jQuery(menu).hasClass('curbranch')) { 426 subpages.each(function(index2, subpage) { 427 var sublink = jQuery(subpage).find('a'), 428 url = sublink.attr('href'); 429 430 sublink.attr('href', link.attr('href') + '#' + url.substr(1).split('/').join('-')); 431 }); 432 433 return; 434 } 435 436 437 var loaded_subpages = []; 438 subpages.each(function(index2, subpage) { 439 var sublink = jQuery(subpage).find('a'), 440 url = sublink.attr('href'); 441 442 jQuery.ajax({ 443 url : url, 444 success : function(response) { 445 var content = jQuery(response).find('.pagecanvas'); 446 loaded_subpages[index2] = content; 447 448 sublink.attr('href', link.attr('href') + '#' + content.attr('id').substr(5)); 449 450 if (loaded_subpages.length == subpages.length) { 451 var all_pages = true; 452 for (var i=0, j=loaded_subpages.length; i<j; i++) { 453 if (!loaded_subpages[i]) { 454 all_pages = false; 455 break; 456 } 457 } 458 if (all_pages) { 459 for (var i=(loaded_subpages.length - 1), j=0; i>=j; i--) { 460 var loaded_subpage = jQuery(loaded_subpages[i]); 461 462 main.after(loaded_subpages[i]); 463 loaded_subpage.find('.pagecontent').css('opacity', 1); 464 465 // Create anchors for each sub-page, and place them above the sub-page containers 466 // so that, when linking to them, they'll clear the top header and reservations bar 467 var id = loaded_subpages[i].attr('id'), 468 anchor = jQuery('<a class="inner-anchor" id="' + id + '"></a>'); 469 470 loaded_subpages[i].attr('id', id + '-container'); 471 loaded_subpages[i].before(anchor); 472 anchor.css('margin-top', -(jQuery('#pageheader #topmenu > .block-canvas').height() + jQuery('#reservations-bar-new').height())); 473 } 474 jQuery(window).resize(); 475 jQuery(window).trigger('hashchange'); 476 477 if (typeof SlideShow != 'undefined') generateSlideshows(); 478 } 479 } 480 } 481 }); 482 }); 483 }); 484 485 checkHash = function() { 486 if (document.location.hash) { 487 if (jQuery('#page-' + document.location.hash.substr(1)).length) 488 jQuery('html, body').animate({ 489 scrollTop: jQuery('#page-' + document.location.hash.substr(1)).offset().top 490 }); 491 492 else if (document.location.hash == '#reserve' && jQuery(window).width() > 768 && !jQuery('#opentable-container').length) { 493 if (!jQuery('#reservation-overlay').length) { 494 jQuery('body').append('<div id="reservation-overlay"></div>'); 495 jQuery('#reservation-overlay').click(function() { 496 jQuery('#reservation-bubble > a').click(); 497 }); 498 } 499 jQuery('#reservations-bar-new').css('z-index', '10001'); 500 501 jQuery('#reservation-bubble').css({ 502 'display' : 'block', 503 'right' : jQuery(window).width() - jQuery('#reservations-bar-new div[id^="ot-widget-container"] .ot-button').offset().left - jQuery('#reservations-bar-new div[id^="ot-widget-container"] .ot-button').outerWidth() / 2 504 }); 505 checkReservationBubble(); 506 jQuery('#reservation-bubble').css('opacity', 1); 507 508 jQuery('#reservation-bubble > a').click(function() { 509 jQuery('#reservation-bubble').css({ 510 'display' : 'none', 511 'opacity' : 0, 512 'top' : '100%' 513 });
514 jQuery('#reservation-overlay').remove(); 515 jQuery('#reservations-bar-new').css('z-index', ''); 516 }); 517 } 518 } 519 } 520 jQuery(window).on('hashchange', checkHash); 521 522 523 if (!jQuery('#home-slides').length) jQuery('#reservations-bar-new').data('init-top', jQuery('#reservations-bar-new').offset().top); 524 525 526 jQuery('#reservations-intro').click(function() { 527 if (jQuery(window).width() <= 1135) document.location = jQuery(this).data('href'); 528 }); 529 530 531 document.addEvent('scroll', function(event) { 532 var scrollTop = parseInt(window.pageYOffset || document.documentElement.scrollTop/* || body.scrollTop*/); 533 534 if (scrollTop > 0) jQuery('#pageheader').addClass('scroll'); 535 else jQuery('#pageheader').removeClass('scroll'); 536 537 if (jQuery('#reservations-bar-new').data('init-top')) { 538 //if (scrollTop > (jQuery('#reservations-bar-new').data('init-top') - jQuery('#topmenu').outerHeight())) jQuery('#reservations-bar-new').addClass('fixed'); 539 //else jQuery('#reservations-bar-new').removeClass('fixed'); 540 541 checkReservationBubble(); 542 } 543 544 545 if (scrollTop >= 600) { 546 jQuery('.navtotop').css('opacity', '1'); 547 var scrollLength = jQuery('body')[0].scrollHeight - scrollTop - jQuery(window).height(); 548 549 if (scrollLength < jQuery('#pagefooter').outerHeight() + 16) jQuery('.navtotop').css('bottom', -(scrollLength - jQuery('#pagefooter').outerHeight() - 16) + 'px'); 550 else jQuery('.navtotop').css('bottom', '16px'); 551 552 } else jQuery('.navtotop').css('opacity', '0'); 553 554 jQuery('.navtotop').click(function() { 555 new Fx.Scroll(window).start(0, 0); 556 }); 557 558 559 if (typeof jQuery != 'undefined' && jQuery('#private-menu').length == 1) { 560 // Make sure that when the private menu reaches the #topmenu 561 // it gets stuck on top of the page, and when the page scrolls down 562 // it gets un-stuck 563 if (jQuery(window).width() > 480 && scrollTop > jQuery('#pageheader').outerHeight()) jQuery('#private-menu').css('position', 'fixed'); 564 else jQuery('#private-menu').css('position', ''); 565 } 566 }); 567 document.fireEvent('scroll'); 568 569 570 jQuery('.shareicon .ico-calendar').next('ul').find('li').click(function() { 571 var data = jQuery(this).parents('ul').first().prev('a').data(); 572 573 if (jQuery(this).find('a').hasClass('google')) { 574 window.open('http://www.google.com/calendar/event?' + 575 'action=TEMPLATE&' + 576 'text=' + encodeURIComponent(data.title) + '&' + 577 'dates=' + encodeURIComponent(data.startDate + '/' + data.endDate) + '&' + 578 'details=' + encodeURIComponent(data.details) + '&' + 579 'location=&' + 580 'trp=false&' + 581 'sprop=&' + 582 'sprop=name:'); 583 584 } else if (jQuery(this).find('a').hasClass('outlook-online')) { 585 window.open('https://outlook.live.com/owa/?rru=addevent&' + 586 'startdt=' + encodeURIComponent(data.startDate) + '&' + 587 'enddt=' + encodeURIComponent(data.endDate) + '&' + 588 'subject=' + encodeURIComponent(data.title) + '&' + 589 'location=&' + 590 'body=' + encodeURIComponent(data.details) + '&' + 591 'allday=&' + 592 'uid=&' + 593 'path=/calendar/view/Month'); 594 595 } else if (jQuery(this).find('a').hasClass('yahoo')) { 596 window.open('http://calendar.yahoo.com/?v=60&view=d&type=20&' + 597 'title=' + encodeURIComponent(data.title) + '&' + 598 'st=' + encodeURIComponent(data.startDate) + '&' + 599 'et=' + encodeURIComponent(data.endDate) + '&' + 600 'desc=' + encodeURIComponent(data.details) + '&' + 601 'in_loc=&' + 602 'uid='); 603 604 } else { 605 window.open('/events/calendar?' + 606 'url=' + encodeURIComponent(location.href) + '&' + 607 'title=' + encodeURIComponent(data.title) + '&' + 608 'start=' + encodeURIComponent(data.startDate) + '&' + 609 'end=' + encodeURIComponent(data.endDate) + '&' + 610 'details=' + encodeURIComponent(data.details)); 611 } 612 }); 613 614 615 if (false && typeof google!='undefined') { 616 var location = new google.maps.LatLng(38.300241, -122.286094), 617 mapObj = new google.maps.Map(jQuery('#footer-map > div')[0], { 618 center : location, 619 mapTypeId : google.maps.MapTypeId.ROADMAP, 620 styles : [ 621 { 622 "featureType": "administrative", 623 "elementType": "all", 624 "stylers": [ 625 { 626 "saturation": -100 627 } 628 ] 629 }, 630 { 631 "featureType": "administrative.province", 632 "elementType": "all", 633 "stylers": [ 634 { 635 "visibility": "off" 636 } 637 ] 638 }, 639 { 640 "featureType": "landscape", 641 "elementType": "all", 642 "stylers": [ 643 { 644 "saturation": -100 645 }, 646 { 647 "lightness": -20 648 }, 649 { 650 "visibility": "on" 651 } 652 ] 653 }, 654 { 655 "featureType": "poi", 656 "elementType": "all", 657 "stylers": [ 658 { 659 "saturation": -100 660 }, 661 { 662 "lightness": 0 663 }, 664 { 665 "visibility": "simplified" 666 } 667 ] 668 }, 669 { 670 "featureType": "road", 671 "elementType": "all", 672 "stylers": [ 673 { 674 "saturation": -100 675 } 676 ] 677 }, 678 { 679 "featureType": "road.highway", 680 "elementType": "all", 681 "stylers": [ 682 { 683 "visibility": "simplified" 684 } 685 ] 686 }, 687 { 688 "featureType": "road.arterial", 689 "elementType": "all", 690 "stylers": [ 691 { 692 "lightness": -20 693 } 694 ] 695 }, 696 { 697 "featureType": "road.local", 698 "elementType": "all", 699 "stylers": [ 700 { 701 "lightness": -20 702 } 703 ] 704 }, 705 { 706 "featureType": "transit", 707 "elementType": "all", 708 "stylers": [ 709 { 710 "saturation": -100 711 }, 712 { 713 "visibility": "simplified" 714 } 715 ] 716 }, 717 { 718 "featureType": "water", 719 "elementType": "geometry", 720 "stylers": [ 721 { 722 "hue": "#ffff00" 723 }, 724 { 725 "lightness": -25 726 }, 727 { 728 "saturation": -97 729 } 730 ] 731 }, 732 { 733 "featureType": "water", 734 "elementType": "labels", 735 "stylers": [ 736 { 737 "lightness": -25 738 }, 739 { 740 "saturation": -100 741 } 742 ] 743 } 744 ], 745 zoom : 17 746 })/*, 747 marker = new google.maps.Marker({ 748 icon : { 749 anchor : new google.maps.Point(42.5, 85), 750 scaledSize : new google.maps.Size(85, 85), 751 size : new google.maps.Size(170, 170), 752 url : '/assets/images/logo-cch-marker.png' 753 }, 754 map : mapObj, 755 position : location 756 }); 757 758 marker.addListener('click', function() { 759 window.open('https://www.google.com/maps/place/Cole\'s+Chop+House/@38.300242,-122.28611,
75915z/data=!4m2!3m1!1s0x0:0x3e9b540e8f8b0b89?sa=X&ved=0ahUKEwjt9bWO6qnWAhVKExoKHSTFCMsQ_BIIeTAN'); 760 })*/; 761 762 var infoWindow = new google.maps.InfoWindow({ 763 content: '<div id="map-window-container">' + 764 '<a href="https://www.google.com/maps/place/Cole\'s+Chop+House/@38.300242,-122.28611,15z/data=!4m2!3m1!1s0x0:0x3e9b540e8f8b0b89?sa=X&ved=0ahUKEwjt9bWO6qnWAhVKExoKHSTFCMsQ_BIIeTAN" target="_blank"><img height="85" src="/assets/images/logo-cch-marker.png" width="85" /></a>' + 765 '<p>1122 Main St, Napa, CA 94559</p>' + 766 '<p><a href="tel:+17072246328">(707) 224-6328</a></p>' + 767 '<p><a href="https://www.google.com/maps/place/Cole\'s+Chop+House/@38.300242,-122.28611,15z/data=!4m2!3m1!1s0x0:0x3e9b540e8f8b0b89?sa=X&ved=0ahUKEwjt9bWO6qnWAhVKExoKHSTFCMsQ_BIIeTAN" target="_blank">Directions</a></p>' + 768 '</div>' 769 }); 770 infoWindow.open(mapObj); 771 infoWindow.setPosition(location); 772 } 773 774 775 jQuery(window).resize(function() { 776 var scroll_top = jQuery(window).scrollTop(), 777 halfs_count = jQuery('.usercontent .half').length / 2; 778 779 if (jQuery(window).width() > 480) { 780 // Set the homepage's blocks height 781 var home_boxes = jQuery('#home-bottom-content > div'); 782 if (home_boxes.length == 2) { 783 home_boxes.height(0); 784 785 if (home_boxes[0].scrollHeight > home_boxes[1].scrollHeight) { 786 home_boxes.last().height(home_boxes[0].scrollHeight); 787 home_boxes.first().height(home_boxes[0].scrollHeight); 788 789 } else { 790 home_boxes.first().height(home_boxes[1].scrollHeight); 791 home_boxes.last().height(home_boxes[1].scrollHeight); 792 } 793 } 794 795 for (var i=0, j=halfs_count; i<j; i++) { 796 var first = jQuery(jQuery('.usercontent .half')[i * 2]), 797 second = first.next('.half'); 798 799 first.height(0); 800 second.height(0); 801 802 if (first[0].scrollHeight > second[0].scrollHeight) { 803 second.height(first[0].scrollHeight); 804 first.height(first[0].scrollHeight); 805 806 } else { 807 first.height(second[0].scrollHeight); 808 second.height(second[0].scrollHeight); 809 } 810 } 811 } 812 813 // Set the map's center 814 if (typeof mapObj != 'undefined') { 815 var center = mapObj.getCenter(); 816 google.maps.event.trigger(mapObj, 'resize'); 817 mapObj.setCenter(center); 818 } 819 820 jQuery(window).scrollTop(scroll_top); 821 jQuery(window).trigger('hashchange'); 822 }); 823 jQuery(window).resize(); 824 /* 825 826 function scrollFooterLogos(length, duration) { 827 jQuery('#footer-logos').animate({ 828 scrollLeft: length 829 }, { 830 complete : function() { 831 jQuery('#footer-logos').animate({ 832 scrollLeft: 0 833 }, { 834 complete : function() { 835 scrollFooterLogos(length, duration); 836 }, 837 duration : duration 838 }); 839 }, 840 duration : duration 841 }); 842 } 843 */ 844 // Allow all logos to load 845 setTimeout(function() { 846 if (jQuery('#footer-logos')[0].scrollWidth > jQuery('#footer-logos').width()) { 847 /*var length = (jQuery('#footer-logos')[0].scrollWidth - jQuery('#footer-logos').width()), 848 duration = (length / 100) * 1500; // Scrolling 100px takes 1s 849 850 scrollFooterLogos(length, duration);*/ 851 jQuery('#footer-logos').bxSlider({ 852 maxSlides : 5, 853 minSlides : 5, 854 slideWidth : 'auto', 855 slideMargin : 10, 856 speed : 8000, 857 ticker : true, 858 tickerHover : true 859 }); 860 } 861 }, 2000); 862 863 // Append a Google Analytics tracking code to the "Find a table" OpenTable button 864 jQuery('#reservations-bar-new').on('click', 'div[id^="ot-widget-container"] .ot-button', function() { 865 ga('send', 'event', { eventCategory: 'ColesChopHouse', eventAction: 'Click', eventLabel: 'FindATable'}); 866 }); 867 868 // Append a Google Analytics tracking code to each tel: link 869 jQuery('a[href^="tel:"]').each(function() { 870 jQuery(this).click(function() { 871 ga('send', 'event', { eventCategory: 'ColesChopHouse', eventAction: 'Click', eventLabel: 'ClickToCall'}); 872 });
873 }); 874 });
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.