CINXE.COM

The Almanac Of Canadian Figure Skating

<!DOCTYPE html> <html lang="en"> <head> <script async src="https://www.googletagmanager.com/gtag/js?id=G-F1GFGWQ76W"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-F1GFGWQ76W'); </script> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="twitter:site" content="@findbooks2read" /> <meta name="twitter:card" content="summary_large_image" /> <meta property="fb:app_id" content="160403027762684" /> <meta property="og:url" content="https://books2read.com/b/m0WWaA" /> <meta property="og:type" content="book" /> <meta property="book:author" content="Ryan Stevens "> <meta property="book:isbn" content=""> <meta property="book:release_date" content=""> <meta name="twitter:title" content="Available now at your favorite digital store!"> <meta name="twitter:description" content="The Almanac Of Canadian Figure Skating by Ryan Stevens" /> <meta name="twitter:image" content="https://books2read-prod.s3.us-west-2.amazonaws.com/ubl_book_images/display_image_f6poXaw" /> <meta name="twitter:image:alt" content="The Almanac Of Canadian Figure Skating by Ryan Stevens" /> <meta property="og:title" content="Available now at your favorite digital store!" /> <meta property="og:description" content="The Almanac Of Canadian Figure Skating by Ryan Stevens" /> <meta property="og:image" content="https://books2read-prod.s3.us-west-2.amazonaws.com/ubl_book_images/display_image_f6poXaw" /> <meta property="d2d:type" content="book" /> <title> The Almanac Of Canadian Figure Skating </title> <link rel="apple-touch-icon" sizes="57x57" href="/static/images/favicons/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="/static/images/favicons/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="/static/images/favicons/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="/static/images/favicons/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="/static/images/favicons/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="/static/images/favicons/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="/static/images/favicons/apple-touch-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="/static/images/favicons/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/static/images/favicons/apple-touch-icon-180x180.png"> <link rel="icon" type="image/png" href="/static/images/favicons/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="/static/images/favicons/favicon-194x194.png" sizes="194x194"> <link rel="icon" type="image/png" href="/static/images/favicons/favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="/static/images/favicons/android-chrome-192x192.png" sizes="192x192"> <link rel="icon" type="image/png" href="/static/images/favicons/favicon-16x16.png" sizes="16x16"> <link rel="manifest" href="/static/images/favicons/manifest.json"> <meta name="msapplication-TileColor" content="#1b3b4f"> <meta name="msapplication-TileImage" content="/static/images/favicons/mstile-144x144.png"> <meta name="theme-color" content="#49c763"> <script src="//unpkg.com/react@15.4.2/dist/react.min.js"></script> <script src="//unpkg.com/react-dom@15.4.2/dist/react-dom.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/flux/2.1.1/Flux.js"></script> <script src="//unpkg.com/redux@3.7.2/dist/redux.min.js"></script> <script src="//unpkg.com/react-redux@5.0.7/dist/react-redux.min.js"></script> <script src="https://unpkg.com/react-beautiful-dnd@6.0.2/dist/react-beautiful-dnd.js"></script> <!-------------------------------------------------------------------------------------------------------------> <!-- 3rd Party CSS --> <!-------------------------------------------------------------------------------------------------------------> <script src="/static/CACHE/js/output.aa6835e97e71.js" defer></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/css/materialize.min.css"> <link href='https://fonts.googleapis.com/css?family=Bitter:700|Raleway:400,500,700,800,300' rel='stylesheet' type='text/css'> <link href="https://fonts.googleapis.com/css?family=Playfair+Display:400,700,700i" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Material+Icons" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.1/animate.css" rel="stylesheet" type="text/css"> <!-------------------------------------------------------------------------------------------------------------> <!-- Books2Read CSS --> <!-------------------------------------------------------------------------------------------------------------> <!-------------------------------------------------------------------------------------------------------------> <!-- 3rd Party JS --> <!-------------------------------------------------------------------------------------------------------------> <script> !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '160403027762684'); fbq('track', "PageView");</script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=160403027762684&ev=PageView&noscript=1" /></noscript> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/js/materialize.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.8/clipboard.min.js"></script> <!-------------------------------------------------------------------------------------------------------------> <!-- Books2Read JS --> <!-------------------------------------------------------------------------------------------------------------> <script> var USER_IS_AUTHENTICATED = false; String.prototype.endsWith = function(suffix) { return this.indexOf(suffix, this.length - suffix.length) !== -1; }; function triggerChangePasswordFor(email, successCallback, errorCallback) { $.post('/links/api/password-reset/', {email: email}).done(successCallback).fail(errorCallback); } function csrfSafeMethod(method) { return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function(xhr, settings) { var token = $.cookie('csrftoken'); if (!token) { token = $('input[name="csrfmiddlewaretoken"]').attr('value'); } if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", token); } } }); </script> <script src="/static/js/users/models/account.js"></script> <script src="/static/js/users/views/account.js"></script> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '160403027762684'); fbq('track', 'PageView'); </script> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5&appId=449978865091389"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <script src="/static/CACHE/js/output.720d2990c5df.js"></script> </head> <body class="top-level-body"> <div class="body-wrapper"> <link rel="stylesheet" href="/static/CACHE/css/output.0f79a75895c2.css" type="text/css"> <div id="content"> <script type="text/javascript"> window.series = [{"title": "Other books by Ryan Stevens", "id": "862487", "d2d_created": true, "books": [{"volume_number": "", "title": "", "pk": "", "link": "", "author": "", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM8f+POfwAIhQOECNM+KwAAAABJRU5ErkJggg=="}, {"volume_number": "", "title": "", "pk": "", "link": "", "author": "", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM8f+POfwAIhQOECNM+KwAAAABJRU5ErkJggg=="}, {"volume_number": "", "title": "", "pk": "", "link": "", "author": "", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM8f+POfwAIhQOECNM+KwAAAABJRU5ErkJggg=="}, {"volume_number": "", "title": "", "pk": "", "link": "", "author": "", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM8f+POfwAIhQOECNM+KwAAAABJRU5ErkJggg=="}, {"volume_number": "", "title": "", "pk": "", "link": "", "author": "", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM8f+POfwAIhQOECNM+KwAAAABJRU5ErkJggg=="}, {"volume_number": "", "title": "", "pk": "", "link": "", "author": "", "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mM8f+POfwAIhQOECNM+KwAAAABJRU5ErkJggg=="}]}]; window.availableSeriesToFeature = []; window.featuredSeries = ""; window.bookDescription = "<div> <span>How much do you know about Canada's most exciting winter sport?</span><span><br/><br/>The Almanac of Canadian Figure Skating is a comprehensive book crammed with fascinating facts and figures, many of which you simply can't find online.<br/><br/>This compelling reference book includes:<br/><br/>- Biographies of hundreds of skaters, coaches, choreographers, judges and builders... including many incredible people you have never even heard of.<br/>- Detailed records of Canadian figure skating competitions dating back to the 19th century, including complete results of the Canadian Championships from the early 20th century to the present day.<br/>- Intriguing facts and figures about the governance and growth of Canada's most exciting winter sport.<br/><br/></span><span>If you love Canadian figure skating, you will be fascinated by the information in this book!</span> </div>"; window.originalBookDescription = "<div> <span>How much do you know about Canada's most exciting winter sport?</span><span><br/><br/>The Almanac of Canadian Figure Skating is a comprehensive book crammed with fascinating facts and figures, many of which you simply can't find online.<br/><br/>This compelling reference book includes:<br/><br/>- Biographies of hundreds of skaters, coaches, choreographers, judges and builders... including many incredible people you have never even heard of.<br/>- Detailed records of Canadian figure skating competitions dating back to the 19th century, including complete results of the Canadian Championships from the early 20th century to the present day.<br/>- Intriguing facts and figures about the governance and growth of Canada's most exciting winter sport.<br/><br/></span><span>If you love Canadian figure skating, you will be fascinated by the information in this book!</span> </div>"; window.inEditMode = false; window.offerEditMode = false; window.csrf = "2Buh6th4jgSdArdDRoHHWYmZXTLfz22Fxfg1iMpNa6fORsz9k2e4qxhtLJGboO0X"; window.bookUpdateURL = "/links/api/book/1394780/"; window.bookTag = "No Tag"; window.bookTagPlaceholder = "No Tag"; window.availableBookTags = ["No Tag", "On Sale Now", "First in Series", "Series Finale", "Prequel", "Book Bundle", "Multi-Author Bundle", "Latest Release", "Free", "Pre-Order Now"]; window.ublURL = "https://books2read.com/canadianfigureskating"; window.bookDisplayTitle = "The Almanac Of Canadian Figure Skating"; window.redirectToStoreSlug = null; window.fetchBooksURL = "/links/api/-1/books/"; window.storeFormat = null; </script> <script type="text/javascript"> function submitEmail(event) { var email = $('#email-signup-form input#email').val(); var name = $('#email-signup-form input#name').val(); var canEmail = $('#email-signup-form input#receive_marketing_emails').is(":checked"); $.ajax('/author/subscribe/', {method: 'POST', data: {name: name, email: email, receive_marketing_emails: canEmail}}); $('#email-signup-confirmation').openModal(); $('#email-signup-form input#email').val(''); $('#email-signup-form label[for="email"]').removeClass('active'); $('#email-signup-form input#name').val(''); $('#email-signup-form label[for="name"]').removeClass('active'); if (canEmail) { $('#email-signup-form input#receive_marketing_emails').click(); } } function showAuthedUserSignUpModal(event) { event.preventDefault(); $('#authed-email-signup').openModal(); } function showSignUpModal(event) { event.preventDefault(); $('#email-signup').openModal(); } function toggleActive(event, resource_type, currentlyActive) { event.preventDefault(); if (typeof window.csrf === "undefined") { if (window.readingListCsrfToken) { window.csrf = window.readingListCsrfToken; } else { console.log('no csrf'); return; // can't call server } } const data = new FormData(); var hasData = false; var serverURL = null; if (resource_type === 'author') { data.append('active', !currentlyActive); hasData = true; serverURL = window.authorProfileUpdateURL; } else if (resource_type === 'book') { data.append('book_active', !currentlyActive); hasData = true; serverURL = window.bookUpdateURL; } else if (resource_type === 'reading_list') { data.append('active', !currentlyActive); hasData = true; serverURL = window.readingListSaveURL; } if (!hasData || !serverURL) { return; // nothing to do } const xhr = new XMLHttpRequest(); xhr.open('PUT', serverURL, true); xhr.setRequestHeader("X-CSRFToken", window.csrf); xhr.onload = function (xhr) { if (xhr.readyState === 4) { console.log(xhr.statusText); } window.location.reload(true); }; xhr.onerror = function (xhr) { console.error(xhr.statusText); window.location.reload(true); }; xhr.send(data); } window.resourceIsActive = true; </script> <div id="login-signup-bar"> <div> <a id="share-on-facebook" href=""><i class="fab fa-facebook-square" aria-hidden="true"></i></a> <a id="share-on-twitter" href=""><i class="fab fa-twitter-square" aria-hidden="true"></i></a> </div> <div> <a href="#" onclick="showSignUpModal(event)"><i class="fal fa-paper-plane" aria-hidden="true"></i>Find More Books</a> <a href="/register/signup/"><i class="fal fa-arrow-right" aria-hidden="true"></i>Signup</a> <a href="/authentication/login/?next=/b/m0WWaA"><i class="fal fa-sign-in" aria-hidden="true"></i>Login</a> </div> <div id="notification-bar" style="display: none;"></div> <div id="error" style="display: none;"></div> </div> <div id="email-signup" class="modal"> <div class="modal-content"> <h4>Sign up now to get the most out of Books2Read</h4> <p style="margin-top: 15px;">We're always making new tools to help you discover, save, and share your favorite books.</p> <p>Sign up now to get updates whenever we release new features!</p> <form enctype="multipart/form-data" id="email-signup-form"> <div class="input-field col s8 offset-s2" style="float: none;"> <input type="text" id="name" maxlength="100"/> <label for="name"><span>Name</span></label> </div> <div class="input-field col s8 offset-s2" style="float: none;"> <input type="email" id="email"/> <label for="email"><span>Email</span></label> </div> <div class="input-field col s8 offset-s2" style="float: none;"> <input type="checkbox" id="receive_marketing_emails"/> <label for="receive_marketing_emails"><span>Yes! Send me book discovery news, tips, & tricks!</span></label> </div> </form> </div> <div class="modal-footer"> <a href="#!" class="modal-close btn-green" onclick="submitEmail()">Sign me up!</a> </div> </div> <div id="authed-email-signup" class="modal"> <div class="modal-content"> <h4>Discover something great at Books2Read.</h4> <p style="margin-top: 15px;">We're always making new tools to help you discover, save, and share your favorite books.</p> <p>Watch your email for exciting announcements and new features coming soon!</p> </div> <div class="modal-footer"> <a href="#!" class="modal-close btn-green">Cool</a> </div> </div> <div id="email-signup-confirmation" class="modal"> <div class="modal-content"> <h4>Thanks for signing up for Books2Read notifications!</h4> <p style="margin-top: 15px;">Check your inbox for a confirmation email with instructions to finish signing up.</p> </div> <div class="modal-footer"> <a href="#!" class="modal-close btn-green">Cool</a> </div> </div> <script type="text/javascript"> getResourceType = function () { // Handle case of being on the author page return $('meta[property="d2d:type"]').attr('content'); }; $('#share-on-facebook').click(function(e){ e.preventDefault(); var b2rLink = window.location.href.split('?')[0]; var fbpopup = window.open("https://www.facebook.com/sharer/sharer.php?u=" + b2rLink, "pop", "width=600, height=400, scrollbars=no"); }); $('#share-on-twitter').click(function(e) { e.preventDefault(); // Set some vars to values we hope are less than 280 long... var b2rLink = window.location.href.split('?')[0]; var resourceType = getResourceType(); var blurb = "", titleText = ""; if (resourceType === 'author_profile') { titleText = $('p#author-name a').text(); blurb = "Find books by " + titleText + " at your favorite digital store!"; } else if (resourceType === 'book'){ titleText = $('#book-info p.book-title').text(); blurb = 'Find ' + titleText + ' at your favorite digital store!'; } else if (resourceType === 'ubl'){ titleText = $('#book-info meta[itemprop=name]').attr('content'); blurb = 'Find ' + titleText + ' at your favorite digital store!'; } else if (resourceType === 'reading_list') { titleText = $('meta[property="d2d:name"]').attr('content'); var tagLine = $('meta[property="d2d:tagLine"]').attr('content'); blurb = titleText + ': ' + tagLine; } if (resourceType === 'book' && (b2rLink + blurb).length > 280) { // CustomName.name has max length of 100, so this should always work blurb = "Find this book at your favorite digital store!"; } var width = 575, height = 400, left = ($(window).width() - width) / 2, top = ($(window).height() - height) / 2, url = 'http://twitter.com/share?url=' + b2rLink + '&text=' + encodeURIComponent(blurb), opts = 'status=1' + ',width=' + width + ',height=' + height + ',top=' + top + ',left=' + left; window.open(url, 'twitter', opts); }); </script> <link rel="stylesheet" href="/static/CACHE/css/output.7dd2b39de396.css" type="text/css"> <div id="ubl-and-book-content-wrapper" class="rellax"> <div id="ubl-and-book-content"> <div id="ubl-content"> <div class="ubl-info"> <div class="ubl-image"> <img src="https://books2read-prod.s3.us-west-2.amazonaws.com/CACHE/images/ubl_book_images/display_image_f6poXaw/54d994fba177d257dd45410dce760483"/> </div> </div> </div> <div id="book-content"> <div id="book-info"> <div id="title-author-buy-wrapper"> <p class="book-title">The Almanac Of Canadian Figure Skating</p> <div class="book-author"> <div class="spacer"><i class="fa fa-caret-right" aria-hidden="true"></i></div> <div> <span class="title teaser">See more by</span> <span class="author-name"><a href="/ap/8YKa6w/Ryan-Stevens">Ryan Stevens</a></span> </div> </div> <div class="col s12 is-available format-list"> <div class="format all active" data-format="ALL" onclick="updateFormat('ALL')"> <i class="fas fa-globe-americas" aria-hidden="true"></i><span>ALL</span> </div> <div class="format ebook" data-format="EBOOK" onclick="updateFormat('EBOOK')"> <i class="fas fa-tablet-alt" aria-hidden="true"></i><span>EBOOK</span> </div> <div class="format print" data-format="PRINT" onclick="updateFormat('PRINT')"> <i class="fas fa-book-open" aria-hidden="true"></i><span>PRINT</span> </div> </div> <div id="buy-it-now-wrapper"> <a href="https://books2read.com/canadianfigureskating" id="buy-it-now"> <div><i class="fal fa-shopping-cart"></i>Get it now</div> <div id="book-tag"></div> </a> </div> <p id="for-sale-at"><span class="teaser">Available at Select Retailers</span></p> </div> <div style="clear: both;"></div> <div id="book-description"></div> </div> </div> </div> </div> <div id="series-and-author" > <div id="series-wrapper"> <div id="series"> <div id="series-top"> <div class="series-spacer"></div> <div class="triangle-down-right"><img src="/static/images/negative-triangle-down.png"/></div> <div class="series-spacer"> <div class="expand"><i class="fal fa-arrow-right"></i></div> </div> </div> <div id="series-info"> <div id="app"></div> </div> </div> </div> <div id="series-bottom-padding"></div> <div id="series-bottom-triangle" class="triangle-down"><img src="/static/images/positive-triangle-down.png"/></div> <div id="author-details"> <p class="title teaser">About the author</p> <p class="author-name">Ryan Stevens</p> <div id="author-info"> <div id="author-links"> <a href="/author/ryan-stevens/subscribe/66909/"><button>Follow this author</button></a> <div> <a href="http://skateguard1.blogspot.ca"><i class="fa fa-street-view" aria-hidden="true"></i></a> <a href="http://www.facebook.com/SkateGuard"><i class="fab fa-facebook-square" aria-hidden="true"></i></a> <a href="http://twitter.com/SkateGuardBlog"><i class="fab fa-twitter-square" aria-hidden="true"></i></a> <a href="http://www.youtube.com/@SkateGuard"><i class="fab fa-youtube-square" aria-hidden="true"></i></a> <a href="http://www.instagram.com/SkateGuardBlog/"><i class="fab fa-instagram" aria-hidden="true"></i></a> <a href="http://www.pinterest.com/SkateGuard"><i class="fab fa-pinterest" aria-hidden="true"></i></a> </div> </div> <div id="about-the-author"> <img id="author-image" src="https://books2read-prod.s3.us-west-2.amazonaws.com/CACHE/images/author_profile_images/38875600_10155681269332919_3387012768698728448_n/6f0f275e954c90e5d45393205b5158c9.jpg"> <p class="author-description">Ryan Stevens is a former figure skater and judge from Halifax, Nova Scotia. For over a decade, he has explored fascinating and fabulous figure skating history on his blog Skate Guard.&nbsp;<br><br>Ryan is the author of the skating reference books "Technical Merit: A History of Figure Skating Jumps", "The Almanac of Canadian Figure Skating" and "A Bibliography of Figure Skating". He has written content for "Skating" magazine and U.S. Figure Skating. He has also been consulted for historical research for numerous museums, as well as television programs on CBC, ITV and NBC.&nbsp;</p> </div> </div> </div> <div id="save-modal"></div> <div id="promo-footer"> <div> <p>Brought to you by the smart people at </p><div class="image-holder"><a href="http://draft2digital.com"><img src="/static/images/logos/d2d.png"></a></div> </div> </div> </div> </div> <script src="/static/CACHE/js/output.4eb17bc55ef4.js"></script> <script type="text/javascript"> $(function() { if (window.storeFormat) { var currentStoreFormat = window.storeFormat.toUpperCase(); if (['AUDIOBOOK', 'EBOOK'].filter(sf => { return sf === currentStoreFormat }).filter(result => result).length === 0) { currentStoreFormat = 'ALL'; } updateFormat(currentStoreFormat); } $('body').css("background-image", "url('https://books2read-prod.s3.us-west-2.amazonaws.com/CACHE/images/ubl_book_images/display_image_f6poXaw/edf356937a6baff044b5a4cb0ca8ce8d')"); // Mapping of number of characters to CSS font size, used // to dynamically set font size for teaser description FONT_SIZE_MAP = { 0: "60px", 25: "50px", 50: "40px" }; function strip(html) { var doc = new DOMParser().parseFromString(html, 'text/html'); return doc.body.textContent || ""; } function getFontSize() { // try to dynamically get a font size based off // the length of the content var currentLength = strip(window.bookDisplayTitle).length; var newSize = FONT_SIZE_MAP[0]; var mapKeys = Object.keys(FONT_SIZE_MAP); for (let i = 0; i < mapKeys.length; i++) { if (currentLength >= mapKeys[i]) { newSize = FONT_SIZE_MAP[mapKeys[i]]; } } return newSize; }; // Adjust the font size of the title $('#book-info p.book-title').css('fontSize', getFontSize()); // get some vars we need var description = $('#book-description').get(0).getBoundingClientRect(); var descriptionEnd = description.bottom + 20; // the end of the description, plus a bit of pad var ublAndBookContentRect = $('#ubl-and-book-content-wrapper').get(0).getBoundingClientRect(); var seriesAndAuthorRect = $('#series-and-author').get(0).getBoundingClientRect(); // A var we use in the callback below, get the original position of the // series and author info div var seriesAndAuthorStartingY = seriesAndAuthorRect.top; var descriptionHeightHidden = descriptionEnd > seriesAndAuthorStartingY ? descriptionEnd - seriesAndAuthorStartingY : 0; // set a min height on our wrapping div so we get enough scroll // +40 for black nav bar, 35 for margins (50-15) var contentMinHeight = descriptionHeightHidden + ublAndBookContentRect.height + seriesAndAuthorRect.height + 40 + 35; if ($('#edit-mode-banner').length > 0) { contentMinHeight += 100; if ($('button.enter-edit-mode').length > 0){ contentMinHeight += 40; seriesAndAuthorStartingY += 40; } } if($('#series-bottom-triangle').length === 0) { // extend content so we can scroll all of description when author info is missing contentMinHeight += 150; } $('#content').css('min-height', contentMinHeight + 'px'); function seriesAndAuthorCallback(positions) { if ($(window).scrollTop() > descriptionHeightHidden) { // We have scrolled to the end of the description $('#series-and-author').css('top', descriptionEnd + 'px'); $('#series-and-author').css('position', 'absolute'); } else { // we are possibly hiding some of the description $('#series-and-author').css('top', seriesAndAuthorStartingY + 'px'); $('#series-and-author').css('position', 'fixed'); } if ($('#series-and-author').css('position') === 'static') { // we have hit a media query for responsiveness // fill in something if desired } } function addRellaxToElement(elem, speed, callback) { // a helper function so I can add rellax from anywhere var config = { speed: speed, center: false, round: true, vertical: true, horizontal: false }; if (callback) { config.callback = callback; } return new Rellax( elem, config ) } // Our Rellax instances if (window.offerEditMode || window.inEditMode) { $('#series-and-author').css('position', 'static'); $('#content').css('min-height', 'auto'); } else { var UBLRellax = addRellaxToElement('.rellax', 5, seriesAndAuthorCallback); } var restOfTheWay = Math.abs(contentMinHeight - $('#promo-footer')[0].getBoundingClientRect().bottom); if ($('#series').length === 0 && $('#author-details').length === 0) { $('#promo-footer').css('bottom', '0px'); $('#promo-footer').css('position', 'fixed'); } else if (restOfTheWay > 0) { $('#promo-footer').css('height', restOfTheWay + 'px'); } }); </script> </div> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=160403027762684&ev=PageView&noscript=1" /></noscript> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10