1<!DOCTYPE html> 2<html lang="en-US" class="no-js no-svg"> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1"> 6 <link href="/wp-content/themes/chuckeeM/fonts/fontawesome/css/fontawesome.css" rel="stylesheet" /> 7 <link href="/wp-content/themes/chuckeeM/fonts/fontawesome/css/brands.css" rel="stylesheet" /> 8 <link href="/wp-content/themes/chuckeeM/fonts/fontawesome/css/solid.css" rel="stylesheet" /> 9 10<link rel="profile" href="http://gmpg.org/xfn/11"> 11
12<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
12 13<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 14 15 <!-- This site is optimized with the Yoast SEO plugin v28.6 - https://yoast.com/product/yoast-seo-wordpress/ --> 16 <title>About - ODD</title> 17 <meta name="description" content="ODD (Office of Development & Design) is a New York and Los Angeles based design and animation company, helmed by Executive Creative Director Gary Breslin, formerly of Panoptic. ODD is more than a design and animation company, it's a think tank, a space for experimentation, exploration, and development." /> 18 <link rel="canonical" href="https://odd.tv/about/" /> 19 <meta property="og:locale" content="en_US" /> 20 <meta property="og:type" content="article" /> 21 <meta property="og:title" content="About - ODD" /> 22 <meta property="og:description" content="ODD (Office of Development & Design) is a New York and Los Angeles based design and animation company, helmed by Executive Creative Director Gary Breslin, formerly of Panoptic. ODD is more than a design and animation company, it's a think tank, a space for experimentation, exploration, and development." /> 23 <meta property="og:url" content="https://odd.tv/about/" /> 24 <meta property="og:site_name" content="ODD" /> 25 <meta property="article:publisher" content="https://www.facebook.com/ODD.NY.LA" /> 26 <meta property="article:modified_time" content="2026-03-05T00:43:05+00:00" /> 27 <meta name="twitter:card" content="summary_large_image" /> 28 <meta name="twitter:site" content="@odd_ny" /> 29 <meta name="twitter:label1" content="Est. reading time" /> 30 <meta name="twitter:data1" content="1 minute" /> 31
31<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/odd.tv\/about\/","url":"https:\/\/odd.tv\/about\/","name":"About - ODD","isPartOf":{"@id":"https:\/\/odd.tv\/#website"},"datePublished":"2019-09-19T19:02:26+00:00","dateModified":"2026-03-05T00:43:05+00:00","description":"ODD (Office of Development & Design) is a New York and Los Angeles based design and animation company, helmed by Executive Creative Director Gary Breslin, formerly of Panoptic. ODD is more than a design and animation company, it's a think tank, a space for experimentation, exploration, and development.","breadcrumb":{"@id":"https:\/\/odd.tv\/about\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/odd.tv\/about\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/odd.tv\/about\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/odd.tv\/"},{"@type":"ListItem","position":2,"name":"About"}]},{"@type":"WebSite","@id":"https:\/\/odd.tv\/#website","url":"https:\/\/odd.tv\/","name":"ODD","description":"NY","publisher":{"@id":"https:\/\/odd.tv\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/odd.tv\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/odd.tv\/#organization","name":"ODD","url":"https:\/\/odd.tv\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/odd.tv\/#\/schema\/logo\/image\/","url":"https:\/\/odd.tv\/wp-content\/uploads\/2019\/12\/slash_logo-retina-favicon.png","contentUrl":"https:\/\/odd.tv\/wp-content\/uploads\/2019\/12\/slash_logo-retina-favicon.png","width":150,"height":150,"caption":"ODD"},"image":{"@id":"https:\/\/odd.tv\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ODD.NY.LA","https:\/\/x.com\/odd_ny","https:\/\/www.instagram.com\/odd_tv\/","https:\/\/www.linkedin.com\/company\/oddtv\/","https:\/\/www.threads.com\/@odd_tv"]}]}</script>
31 32 <!-- / Yoast SEO plugin. --> 33 34 35<link rel='dns-prefetch' href='//fonts.googleapis.com' /> 36<link href='https://fonts.gstatic.com' crossorigin rel='preconnect' /> 37<link rel="alternate" type="application/rss+xml" title="ODD » Feed" href="https://odd.tv/feed/" /> 38<link rel="alternate" type="application/rss+xml" title="ODD » Comments Feed" href="https://odd.tv/comments/feed/" /> 39<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://odd.tv/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fodd.tv%2Fabout%2F" /> 40<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://odd.tv/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fodd.tv%2Fabout%2F&format=xml" /> 41<style id="wp-img-auto-sizes-contain-inline-css"> 42img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 43/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 44</style> 45<style id="wp-emoji-styles-inline-css"> 46 47 img.wp-smiley, img.emoji { 48 display: inline !important; 49 border: none !important; 50 box-shadow: none !important; 51 height: 1em !important; 52 width: 1em !important; 53 margin: 0 0.07em !important; 54 vertical-align: -0.1em !important; 55 background: none !important; 56 padding: 0 !important; 57 } 58/*# sourceURL=wp-emoji-styles-inline-css */ 59</style> 60<style id="wp-block-library-inline-css"> 61:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
61--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 62 63/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 64</style> 65<style id="classic-theme-styles-inline-css"> 66/*! This file is auto-generated */ 67.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 68/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 69</style> 70 71<style id="global-styles-inline-css"> 72:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
720) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
72.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 73/*# sourceURL=global-styles-inline-css */ 74</style> 75 76<link rel='stylesheet' id='twentyseventeen-fonts-css' href='https://fonts.googleapis.com/css?family=Libre+Franklin%3A300%2C300i%2C400%2C400i%2C600%2C600i%2C800%2C800i&subset=latin%2Clatin-ext' media='all' /> 77<link rel='stylesheet' id='twentyseventeen-style-css' href='https://odd.tv/wp-content/themes/chuckeeM/style.css?ver=7.1.3' media='all' /> 78<link rel='stylesheet' id='twentyseventeen-block-style-css' href='https://odd.tv/wp-content/themes/chuckeeM/assets/css/blocks.css?ver=1.1' media='all' /> 79<link rel='stylesheet' id='bootstrap-css' href='https://odd.tv/wp-content/themes/chuckeeM/css/bootstrap.css?ver=1.0' media='all' /> 80<link rel='stylesheet' id='fonts-css' href='https://odd.tv/wp-content/themes/chuckeeM/fonts/fonts.css?ver=1.0' media='all' /> 81<link rel='stylesheet' id='animate-min-css' href='https://odd.tv/wp-content/themes/chuckeeM/css/animate.min.css?ver=1.0' media='all' /> 82<link rel='stylesheet' id='owl-carousel-css' href='https://odd.tv/wp-content/themes/chuckeeM/css/owl.carousel.css?ver=1.0' media='all' /> 83<link rel='stylesheet' id='video-js-style-css' href='https://odd.tv/wp-content/themes/chuckeeM/css/video-js.css?ver=1.0' media='all' /> 84<link rel='stylesheet' id='main-style-css' href='https://odd.tv/wp-content/themes/chuckeeM/css/style.css?ver=1.0' media='all' /> 85<link rel='stylesheet' id='responsive-css' href='https://odd.tv/wp-content/themes/chuckeeM/css/responsive.css?ver=1.0' media='all' /> 86<link rel='stylesheet' id='custom-css' href='https://odd.tv/wp-content/themes/chuckeeM/css/custom.css?ver=1.0' media='all' />
87<script id="jquery-core-js" src="https://odd.tv/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 87
87
88<script id="jquery-migrate-js" src="https://odd.tv/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
88 89<link rel="https://api.w.org/" href="https://odd.tv/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://odd.tv/wp-json/wp/v2/pages/116" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://odd.tv/xmlrpc.php?rsd" /> 90<meta name="generator" content="WordPress 7.1.3" /> 91<link rel='shortlink' href='https://odd.tv/?p=116' /> 92<style>.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style><link rel="icon" href="https://odd.tv/wp-content/uploads/2019/12/slash_logo-retina-favicon-100x100.png" sizes="32x32" /> 93<link rel="icon" href="https://odd.tv/wp-content/uploads/2019/12/slash_logo-retina-favicon.png" sizes="192x192" /> 94<link rel="apple-touch-icon" href="https://odd.tv/wp-content/uploads/2019/12/slash_logo-retina-favicon.png" /> 95<meta name="msapplication-TileImage" content="https://odd.tv/wp-content/uploads/2019/12/slash_logo-retina-favicon.png" /> 96 97<!--Windows Phone Js Code Start-->
98<script type="text/javascript"> 99 // Copyright 2014-2015 Twitter, Inc. 100 // Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 101 if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 102 var msViewportStyle = document.createElement('style') 103 msViewportStyle.appendChild( 104 document.createTextNode( 105 '@-ms-viewport{width:auto!important}' 106 ) 107 ) 108 document.querySelector('head').appendChild(msViewportStyle) 109 } 110 111var defaultHomeSlideFistTiming = ''; 112var ajaxyPage = ''; 113 114/*for home slide*/ 115var setTimeOut,timeInterval, setDelay = null, trackTime = null, totalMoviesPage = 0,$grid; 116/*for home slide*/ 117 118 119</script>
119 120 <link href="https://fonts.googleapis.com/css?family=Montserrat:300,400&display=swap" rel="stylesheet"> 121</head> 122 123<body class="wp-singular page-template page-template-templates page-template-about-tpl page-template-templatesabout-tpl-php page page-id-116 wp-custom-logo wp-embed-responsive wp-theme-chuckeeM enteringpage has-header-image page-two-column colors-light"> 124<!-- <div class="loader"></div> --> 125<div class="sweeper"></div> 126<div class="main_wapper" id="main_wapper"> 127 <!--Main Header--> 128 <header id="header" class="activeheader"> 129 <div class="header_wapper"> 130 <div class="logo"> 131 <a href="https://odd.tv"><img src="https://odd.tv/wp-content/uploads/2019/11/slash_logo-ON-BLACK-150.png"></a> 132 </div> 133 <nav class="navigation_main" style="display:block"> 134 <div class="menubox"> 135 <ul id="menu-header-menu" class=""><li id="menu-item-1450" class="w3n-active no-ajaxy scroll menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-1450"><a href="https://odd.tv/#home">Home</a></li> 136<li id="menu-item-1451" class="changeOnScrollLBL no-ajaxy ignore-in-filter scroll menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-1451"><a href="https://odd.tv/#work">Work</a></li> 137<li id="menu-item-1453" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-116 current_page_item menu-item-1453 active "><a href="https://odd.tv/about/" aria-current="page">About</a></li> 138<li id="menu-item-1452" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1452"><a href="https://odd.tv/contact/">Contact</a></li> 139</ul> </div> 140 </nav> 141 142 143 <div class="righthead" > 144 145 <div class="right_line_icon" > 146 <a href="#" class="hamicon active"> 147 <!-- <img src="/images/right_line_icon.svg" alt=""> --> 148 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28.8px" height="16.6px" viewBox="0 0 28.8 16.6" style="enable-background:new 0 0 28.8 16.6;" xml:space="preserve"> 149 <style type="text/css"> 150 .st0{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;} 151 </style> 152 <line class="st0" x1="13.4" y1="0.3" x2="0.4" y2="16.3"/> 153 <line class="st0" x1="20.9" y1="0.3" x2="7.9" y2="16.3"/> 154 <line class="st0" x1="28.4" y1="0.3" x2="15.4" y2="16.3"/> 155 </svg> 156 </a> 157 <div class="socialicons"> 158 <a href="https://instagram.com/odd_tv" target="_blank" class="fa-brands fa-instagram"></a> 159 <a href="https://www.linkedin.com/company/oddtv/" target="_blank" class="fa-brands fa-linkedin-in"></a> 160 <a href="https://www.facebook.com/ODD.NY.LA" target="_blank" class="fa-brands fa-facebook-f"></a> 161 <a href="https://x.com/odd_ny" target="_blank" class="fa-brands fa-x-twitter"></a> 162 <a href="https://www.threads.net/@odd_tv" target="_blank" class="fa-brands fa-threads"></a> 163 <a href="mailto:[email protected]?subject=Inquiry from odd.tv&body=" target="_blank" class="msg_icon"></a> 164 </div> 165 </div> 166 </div> 167 168 169 <div class="menubar"> 170 <button class="hamburger-icon"> 171 <!-- <span class="navbar-toggler-icon"></span> --> 172 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28.8px" height="16.6px" viewBox="0 0 28.8 16.6" style="enable-background:new 0 0 28.8 16.6;" xml:space="preserve"> 173 <style type="text/css"> 174 .st0{fill:none;stroke:#FFFFFF;stroke-miterlimit:10;} 175 </style> 176 <line class="st0" x1="13.4" y1="0.3" x2="0.4" y2="16.3"/> 177 <line class="st0" x1="20.9" y1="0.3" x2="7.9" y2="16.3"/> 178 <line class="st0" x1="28.4" y1="0.3" x2="15.4" y2="16.3"/> 179 </svg> 180 </button> 181 </div> 182 </div> 183 <!-- <div class="filter_menubox"> 184 <div class="button-group filters-button-group"> 185 <button class="button is-checked" data-filter="*">all</button> 186 </div> 187 </div> --> 188 </header> 189 <!--End Main Header-->
190<div class="banner_wapper inner-banner-main" id="inner-banner"> 191<div class="show-on-mobile-portrait">ABOUT</div> 192 193 <div class="inner-banner"> 194 195 196 <div class="abt-text_inner"> 197 198 <div class="banner_text"> 199 200 <div class="banner_inner_text"> 201 202 <p><img decoding="async" src="/wp-content/uploads/2019/11/logo-lockup-D.svg" alt="ODD (Office of Development & Design) logo" width="100%" height="auto" class="aligncenter size-full wp-image-1300" role="img" /></p> 203<p>ODD (Office of Development & Design) is an award winning New York & Los Angeles based design studio helmed by Executive Creative Director Gary Breslin.</p> 204<p>Our clients range from advertising agencies, to feature & documentary filmmakers, to direct-to-client work taking home Titanium Cannes Lions, Academy Awards, Motionographer Motion Awards, Clios, Webbys & more. </p> 205<p>ODD is comprised of a carefully curated team of highly skilled & professional creatives, producers and problem solvers from all over the world that can execute any brief from concept-to-completion. We have the ability to scale our resources to fit the need of any project, ensuring that we deliver the highest quality content on the demands of any schedule.</p> 206<p>We are a think tank, a space for experimentation and a place for exploration. A home for creative development, collaboration & execution. </p> 207<p>We are proud of what we do, how we do it & the relationships we form in the process.</p> 208 209 </div> 210 211 </div> 212 213 </div> 214 215 216 217 <div class="abt-banner-slider owl-carousel"> 218 219 220 <div class="item"> 221 222 <div class="abt_banner_main"> 223 224 <div class="slide_bg_img" style="background-image:url(https://odd.tv/wp-content/uploads/2024/03/20230524_599_262-1.jpg)"> 225 <div class="about_slide_title"></div> 226 227 </div> 228 229 </div> 230 231 </div> 232 233 234 <div class="item"> 235 236 <div class="abt_banner_main"> 237 238 <div class="slide_bg_img" style="background-image:url(https://odd.tv/wp-content/uploads/2024/03/20230524_599_116.jpg)"> 239 <div class="about_slide_title"></div> 240 241 </div> 242 243 </div> 244 245 </div> 246 247 248 <div class="item"> 249 250 <div class="abt_banner_main"> 251 252 <div class="slide_bg_img" style="background-image:url(https://odd.tv/wp-content/uploads/2024/03/20230524_599_386_b-1.jpg)"> 253 <div class="about_slide_title"></div> 254 255 </div> 256 257 </div> 258 259 </div> 260 261 262 </div> 263 264 <div class="inner_banner_control"> 265 266 <div class="pre_btn"> 267 268 <a href="javascript:void(0)"> 269 270 <svg version="1.1" id="singal_left_arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="11.4px" height="21.4px" viewBox="0 0 11.4 21.4" style="enable-background:new 0 0 11.4 21.4;" xml:space="preserve"> 271 <style type="text/css"> 272 .st0{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;} 273 </style> 274 <path class="st0" d="M10.7,0.7l-5,5L1,10.5c0,0.2,0,0.3,0,0.5l4.7,4.8l5,5"/> 275 </svg> 276 </a> 277 278 </div> 279 280 <div class="next_btn"> 281 282 <a href="javascript:void(0)"> 283 284 <svg version="1.1" id="singal_right_arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="11.4px" height="21.4px" viewBox="0 0 11.4 21.4" style="enable-background:new 0 0 11.4 21.4;" xml:space="preserve"> 285 <style type="text/css">.st0{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-miterlimit:10;}</style> 286 <path class="st0" d="M0.7,20.7l5-5l4.7-4.8c0-0.2,0-0.3,0-0.5L5.7,5.7l-5-5"/> 287 </svg> 288 </a> 289 290 </div> 291 292 </div> 293 294 </div> 295 296</div> 297 298 299
300<script type="text/javascript"> 301 302 jQuery(window).resize(function(){ 303 304 305 306 }); 307 308</script>
308 309 310 <!--Main Footer--> 311 <footer class="footer"> 312 <div class="footer_inner"> 313 <div class="cpy_right_blk"> 314 <p>© 2026 ODD NY LA, Inc.</p> 315 </div> 316 <div class="footer_social_blk"> 317 <a href="https://instagram.com/odd_tv" target="_blank" class="fa-brands fa-instagram"></a> 318 <a href="https://www.linkedin.com/company/oddtv/" target="_blank" class="fa-brands fa-linkedin-in"></a> 319 <a href="https://www.facebook.com/ODD.NY.LA" target="_blank" class="fa-brands fa-facebook-f"></a> 320 <a href="https://x.com/odd_ny" target="_blank" class="fa-brands fa-x-twitter"></a> 321 <a href="https://www.threads.net/@odd_tv" target="_blank" class="fa-brands fa-threads"></a> 322 <a href="mailto:[email protected]?subject=Inquiry from odd.tv&body=" target="_blank" class="msg_icon"></a> 323 </div> 324 </div> 325 </footer> 326 <!--End Main Footer--> 327 328</div> 329<div class="modal fade" id="copy-message" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> 330 <div class="modal-dialog modal-dialog-centered" role="document"> 331 <div class="modal-content"> 332 <div class="modal-body" style="color: #000;font-weight: bolder;text-align: center;"> 333 Copied </div> 334 </div> 335 </div> 336</div> 337
338<script>var oddMovieUrls = ["https:\/\/odd.tv\/work\/icarus\/","https:\/\/odd.tv\/work\/geometrip\/","https:\/\/odd.tv\/work\/taylorswift\/","https:\/\/odd.tv\/work\/tyson\/","https:\/\/odd.tv\/work\/audi\/","https:\/\/odd.tv\/work\/dailypay\/","https:\/\/odd.tv\/work\/boeing\/","https:\/\/odd.tv\/work\/hulu\/","https:\/\/odd.tv\/work\/adidas\/","https:\/\/odd.tv\/work\/blackfish\/","https:\/\/odd.tv\/work\/fiat\/","https:\/\/odd.tv\/work\/hp\/","https:\/\/odd.tv\/work\/pepsi\/","https:\/\/odd.tv\/work\/bublyburst\/","https:\/\/odd.tv\/work\/marriott\/","https:\/\/odd.tv\/work\/fiat-tesla\/","https:\/\/odd.tv\/work\/redbury\/","https:\/\/odd.tv\/work\/optum\/","https:\/\/odd.tv\/work\/alfaromeo\/","https:\/\/odd.tv\/work\/cencora\/","https:\/\/odd.tv\/work\/bmw\/","https:\/\/odd.tv\/work\/shinola\/","https:\/\/odd.tv\/work\/icarus-animation-montage\/","https:\/\/odd.tv\/work\/tyson-trailer\/","https:\/\/odd.tv\/work\/dailypay-the-future-of-pay\/","https:\/\/odd.tv\/work\/geometrip-2\/","https:\/\/odd.tv\/work\/audi-listen\/","https:\/\/odd.tv\/work\/adidas-1985-2\/","https:\/\/odd.tv\/work\/taylor-swift-look-what-you-made-me-do\/","https:\/\/odd.tv\/work\/boeing-build-something-better\/","https:\/\/odd.tv\/work\/fiat-elettrica\/","https:\/\/odd.tv\/work\/hp-small-but-powerful\/","https:\/\/odd.tv\/work\/blackfish-animation-montage\/","https:\/\/odd.tv\/work\/marriott-travel-brilliantly\/","https:\/\/odd.tv\/work\/hulu-sports\/","https:\/\/odd.tv\/work\/pepsi-satisfied\/","https:\/\/odd.tv\/work\/fiat-tesla-cybertruck\/","https:\/\/odd.tv\/work\/bubly-burst-big-entrance\/","https:\/\/odd.tv\/work\/redbury-brand-film\/","https:\/\/odd.tv\/work\/optum-rory-mcilroy\/","https:\/\/odd.tv\/work\/nikon-ivar\/","https:\/\/odd.tv\/work\/alfa-romeo-control\/","https:\/\/odd.tv\/work\/bmw-water\/","https:\/\/odd.tv\/work\/cencora-helping-breakthroughs-break-through\/","https:\/\/odd.tv\/work\/shinola-grit\/","https:\/\/odd.tv\/work\/nikon\/","https:\/\/odd.tv\/work\/hulk-hogan-real-american-trailer\/","https:\/\/odd.tv\/work\/elf_somanydicks\/","https:\/\/odd.tv\/work\/tylenol\/","https:\/\/odd.tv\/work\/boooming\/","https:\/\/odd.tv\/work\/budlightzero\/","https:\/\/odd.tv\/work\/doritos\/","https:\/\/odd.tv\/work\/ford\/","https:\/\/odd.tv\/work\/budweiser_worldcup\/","https:\/\/odd.tv\/work\/hanes\/","https:\/\/odd.tv\/work\/cadillac\/","https:\/\/odd.tv\/work\/pepsiwildcherry\/","https:\/\/odd.tv\/work\/starry\/","https:\/\/odd.tv\/work\/mountaindew_flavorglitch\/","https:\/\/odd.tv\/work\/dodgehornet\/"];</script>
vendor: 1 bytes, line 338
338
339<script type="speculationrules"> 340{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/chuckeeM/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 341</script>
vendor: 1 bytes, line 341
341
342<script id="twentyseventeen-skip-link-focus-fix-js-extra"> 343var twentyseventeenScreenReaderText = {"expand":"Expand child menu","collapse":"Collapse child menu","icon":null}; 344//# sourceURL=twentyseventeen-skip-link-focus-fix-js-extra 345</script>
vendor: 1 bytes, line 345
345
346<script id="twentyseventeen-skip-link-focus-fix-js" src="https://odd.tv/wp-content/themes/chuckeeM/assets/js/skip-link-focus-fix.js?ver=1.0"></script>
vendor: 1 bytes, line 346
346
347<script id="twentyseventeen-navigation-js" src="https://odd.tv/wp-content/themes/chuckeeM/assets/js/navigation.js?ver=1.0"></script>
vendor: 1 bytes, line 347
347
348<script id="twentyseventeen-global-js" src="https://odd.tv/wp-content/themes/chuckeeM/assets/js/global.js?ver=1.0"></script>
vendor: 1 bytes, line 348
348
349<script id="jquery-scrollto-js" src="https://odd.tv/wp-content/themes/chuckeeM/assets/js/jquery.scrollTo.js?ver=2.1.2"></script>
vendor: 1 bytes, line 349
349
350<script id="bootstrap-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/bootstrap.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 350
350
351<script id="modernizr.custom-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/modernizr.custom.js?ver=7.1.3"></script>
vendor: 1 bytes, line 351
351
352<script id="browser_selector-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/browser_selector.js?ver=7.1.3"></script>
vendor: 1 bytes, line 352
352
353<script id="isotope.pkgd-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/isotope.pkgd.js?ver=7.1.3"></script>
vendor: 1 bytes, line 353
353
354<script id="jquery.lazyloadxt.js-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/jquery.lazyloadxt.js?ver=7.1.3"></script>
vendor: 1 bytes, line 354
354
355<script id="jquery.lazyloadxt.bg.js-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/jquery.lazyloadxt.bg.js?ver=7.1.3"></script>
vendor: 1 bytes, line 355
355
356<script id="owl.carousel-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/owl.carousel.js?ver=7.1.3"></script>
vendor: 1 bytes, line 356
356
357<script id="filter.js-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/filter.js?ver=7.1.3"></script>
vendor: 1 bytes, line 357
357
358<script id="video-js-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/video.js?ver=7.1.3"></script>
vendor: 1 bytes, line 358
358
359<script id="jquery-mobile-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/jquery.mobile.min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 359
359
360<script id="video-youtube-js-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/youtube-min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 360
360
361<script id="video-vimeo-js-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/vimeo-min.js?ver=7.1.3"></script>
vendor: 1 bytes, line 361
361
362<script id="ajaxify-min-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/ajaxify.min.js?ver=1.0"></script>
vendor: 1 bytes, line 362
362
363<script id="cookies-js-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/cookies.js?ver=1.0"></script>
vendor: 1 bytes, line 363
363
364<script id="script-js-extra"> 365var chuckeeM = {"ajaxURL":"https://odd.tv/wp-admin/admin-ajax.php","isLazyloadEnable":"Yes"}; 366//# sourceURL=script-js-extra 367</script>
vendor: 1 bytes, line 367
367
368<script id="script-js" src="https://odd.tv/wp-content/themes/chuckeeM/js/script.js?ver=7.1.3"></script>
vendor: 1 bytes, line 368
368
369<script id="wp-emoji-settings" type="application/json"> 370{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://odd.tv/wp-includes/js/wp-emoji-release.min.js?ver=7.1.3"}} 371</script>
vendor: 1 bytes, line 371
371
372<script type="module"> 373/*! This file is auto-generated */ 374var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 375//# sourceURL=https://odd.tv/wp-includes/js/wp-emoji-loader.min.js 376</script>
vendor: 1 bytes, line 376
376
377<script> 378/* Ask Flywheel to build the next and previous movie pages while the current one 379 is playing, so they are already sitting in its edge cache when you tap. 380 381 Measured on staging, same page three times in a row: 382 cold (edge miss) 5,694ms 383 warm (edge hit) 13ms 384 warm (edge hit) 11ms 385 386 Nearly six seconds versus thirteen milliseconds. That gap is the whole 387 problem: browsers only permit autoplay WITH SOUND for a short window after 388 the user's tap, and a cold page blows through it, so playback starts too late 389 and the UNMUTE button reappears. It also explains why revisiting a video 390 works - by then the page is warm. 391 392 Note this is NOT about the browser's cache. Pronto re-downloads the page 393 regardless of what the browser has stored. What matters is that Flywheel has 394 already generated it, which turns a 5.7s wait into a 13ms one. 395 396 Requires odd_movie_cache_headers() in custom-functions.php, which sends the 397 Cache-Control header that permits edge caching in the first place. Without it 398 every page stays cold and this does nothing. 399 400 The pages are ~18KB gzipped and most of the cost is server-side thinking 401 rather than transfer, so this is close to free in bandwidth terms. Each URL 402 is requested at most once per session and failures are ignored. 403 404 MEASURED ON DEVICE, Chrome for iOS, instrumenting every play() attempt: 405 406 17 consecutive warm pages play() called 78-103ms after the tap ALL OK 407 1 cold page play() called 2,397ms after the tap REFUSED 408 409 So the permission window sits somewhere between those figures, and the only 410 variable that matters is how long the page takes to arrive. Warm is always 411 ~90ms and always succeeds. Hence: warm everything, not just the neighbours. 412 413 Warming only next/prev was not enough, because a cold page takes ~5.7s to 414 build and a viewer can easily move on before that finishes - which is exactly 415 what the one failure above was. So the whole catalogue gets warmed, staggered, 416 in the background. */ 417var oddPrefetched = {}; 418 419function oddPrefetchUrl(href) { 420 if (!href || oddPrefetched[href]) { return; } 421 oddPrefetched[href] = true; 422 jQuery.get(href).fail(function(){ /* ignore */ }); 423} 424 425/* The current page's next/prev, which are the most urgent by far. */ 426function oddPrefetchNeighbours() { 427 jQuery('.next-prev-blk a').each(function(){ 428 oddPrefetchUrl(this.href); 429 }); 430} 431 432/* Every movie page, one at a time, spaced out so they never arrive as a burst 433 and never compete with the video the visitor is actually watching. The list 434 comes from odd_movie_urls_for_prefetch() in custom-functions.php. 435 436 400ms apart means ~7s to issue all 18 requests, after which every page in the 437 set is built and cached, and from then on every navigation is a ~90ms one. */ 438function oddWarmAll(urls, i) { 439 i = i || 0; 440 if (!urls || i >= urls.length) { return; } 441 oddPrefetchUrl(urls[i]); 442 setTimeout(function(){ oddWarmAll(urls, i + 1); }, 400); 443} 444 445/* One warming pass per page load, skipped while the tab is hidden so a 446 pocketed phone is not pulling a megabyte it will never use. 447 448 Measured, and still unresolved: pages warmed at the start of a session were 449 served as MISS again roughly nine minutes later, with 2.5-3.3s origin 450 builds, despite max-age=3600. Flywheel's edge does not hold these for the 451 hour we ask for, whether that is a TTL cap or ordinary eviction. So a long 452 session can still outlive the cache. 453 454 TRIED AND BACKED OUT: re-warming the whole catalogue every 4 minutes. It 455 made the site noticeably laggy on desktop, and the reason is obvious in 456 hindsight - every cycle asks for 60 pages, and any that are no longer cached 457 make WordPress build them from scratch. With entries disappearing inside ten 458 minutes, that is close to continuous origin build load, and the page the 459 visitor actually wants queues up behind it. Warming is cheap as a one-off 460 and expensive on a loop. 461 462 Back to a single pass per page load, plus neighbours on each navigation - 463 the configuration that measured 60 consecutive successes. The right fix is 464 to make a cold build fast rather than to keep outrunning it; see the note in 465 the project write-up about the per-request Vimeo API call. */ 466function oddWarmCycle() { 467 if (!document.hidden) { 468 oddWarmAll(oddMovieUrls, 0); 469 } 470} 471 472/* ===== TEMPORARY DIAGNOSTIC - remove once the UNMUTE question is settled ===== 473 474 Records, for every attempt to start a movie playing with sound: 475 476 sinceTap ms between the visitor's last tap and the play() call. The 477 autoplay permission window lives here - ~90ms always worked, 478 2,397ms was refused. 479 sinceLoad ms since this DOCUMENT started. Ruled out the theory that the 480 X button causes a real page load: it climbs continuously 481 across X and grid clicks, so those are AJAX navigations. 482 tapToNav ms from the tap to Pronto actually starting the request. If 483 this is the big number, the delay is in the page we are 484 LEAVING - teardown, disposal, whatever runs on the way out. 485 navToPlay ms from the request starting to play() being called. If this 486 is the big number, the delay is the fetch and the new page's 487 setup. 488 xhr how long the navigation request itself took, and how many 489 bytes came over the wire. 0 bytes means it was served from 490 the browser's own cache. 491 492 The split matters because the edge cache measures 7-10ms HIT on every movie 493 page, so a 5,255ms gap between tap and play() is NOT the network. This tells 494 us which half of the journey is actually eating the time. 495 496 Writes to localStorage as well as the console so it survives a full reload, 497 which the console does not. Read it back with: localStorage.oddLog */ 498var oddDocStart = Date.now(); 499var oddLastTap = 0; 500var oddNavStart = 0; 501var oddNavTapGap = -1; 502 503jQuery(window).on('pronto.request', function(){ 504 oddNavStart = Date.now(); 505 oddNavTapGap = oddLastTap ? (oddNavStart - oddLastTap) : -1; 506}); 507 508/* Duration and transferred size of the navigation request itself, read back 509 out of the browser's own resource timing. transferSize 0 means the browser 510 served it from its HTTP cache and never touched the network. */ 511function oddXhrInfo() { 512 try { 513 var want = location.pathname; 514 var list = performance.getEntriesByType('resource'); 515 for (var i = list.length - 1; i >= 0; i--) { 516 var e = list[i]; 517 if (e.initiatorType === 'xmlhttprequest' && e.name.indexOf(want) !== -1) { 518 return Math.round(e.duration) + 'ms/' + (e.transferSize === 0 ? 'cached' : e.transferSize + 'b'); 519 } 520 } 521 } catch (e) { /* not supported - not worth failing over */ } 522 return 'n/a'; 523} 524 525jQuery(document).on('touchstart click', function(){ 526 oddLastTap = Date.now(); 527}); 528 529function oddLog(msg) { 530 var line = new Date().toISOString().substr(11, 8) + ' ' + msg; 531 try { 532 var all = JSON.parse(localStorage.getItem('oddLog') || '[]'); 533 all.push(line); 534 while (all.length > 60) { all.shift(); } 535 localStorage.setItem('oddLog', JSON.stringify(all)); 536 } catch (e) { /* storage full or blocked - console still works */ } 537 if (window.console && console.log) { console.log(line); } 538} 539 540function oddLogPlay(outcome) { 541 var now = Date.now(); 542 oddLog(outcome + 543 ' | sinceTap=' + (oddLastTap ? (now - oddLastTap) : 'never') + 544 ' | tapToNav=' + oddNavTapGap + 545 ' | navToPlay=' + (oddNavStart ? (now - oddNavStart) : -1) + 546 ' | xhr=' + oddXhrInfo() + 547 ' | sinceLoad=' + (now - oddDocStart) + 548 ' | ' + location.pathname); 549} 550/* ===== END TEMPORARY DIAGNOSTIC ===== */ 551
552/* This inline script sits outside #main_wapper, so it runs once per full page 553 load and not on AJAX navigation - which is what we want, since the catalogue 554 only needs warming once per session. */ 555jQuery(document).ready(function(){ 556 if (jQuery('.next-prev-blk a').length > 0) { 557 setTimeout(oddPrefetchNeighbours, 1000); 558 } 559 if (typeof oddMovieUrls !== 'undefined' && oddMovieUrls.length) { 560 setTimeout(oddWarmCycle, 2500); 561 } 562}); 563 564/* */ 565 jQuery("#main_wapper").ajaxify({ 566// memoryoff:false, 567 memoryoff:true, 568 requestDelay:0, 569 prefetch:false, 570 forms:false, 571 delta:false, 572 inline:true, 573 style:true, 574 scrolltop: true, 575 verbosity: 0}); 576 577 578 579 580 581jQuery(window).on('pronto.request', function(event, eventInfo){ 582 if(ajaxyPage != 'home'){ 583 if(jQuery('.video-blk').length > 0){ 584 var videoJsEl = jQuery('.video-blk').find('.video-js')[0]; 585 if (videoJsEl) { 586 var player = videojs(videoJsEl); 587 player.muted(true); 588 player.pause(); 589 player.currentTime(0); 590 player.dispose(); 591 } 592 jQuery("#custom-seekbar span").css('width', 0) 593 jQuery('.video-blk').remove(); 594 jQuery('.prev-link, .next-link').off('click'); // â ADD THIS LINE 595 jQuery('.video-blk').each(function(){ 596 if(jQuery(this).find('.video-js').length > 0){ 597 videojs(jQuery(this).find('.video-js')).dispose(); 598 } 599 }) 600 601 602 603 604 605 606 607 if(jQuery('.video-blk').find('.video-js').length > 0){ 608 jQuery('.video-blk').find('.video-js').remove(); 609 } 610 } 611 clearInterval(timeInterval); 612 clearTimeout(setTimeOut); 613 //setTimeOut.clearTimer(); 614 // jQuery('body').addClass('loading-up'); 615 }else{ 616 /* Leaving the home page. Its hero carousel creates four Video.js 617 players, and because this branch did no cleanup they were never 618 disposed - the DOM gets swapped away but the players live on, 619 holding media resources for the rest of the session. Measured on 620 staging: five live players against a single <video> element after 621 navigating from home into a movie. 622 623 iOS is strict about media resources and which element owns the 624 audio session, so those orphans are a plausible reason a movie 625 opened from the grid comes up muted while the same movie reached 626 by the next/prev arrows plays with sound. HYPOTHESIS, not a 627 measurement - it was not possible to observe the rejection 628 directly, only the orphaned players. 629 630 Wrapped in try/catch deliberately. An uncaught throw inside a 631 jQuery handler kills everything after it, including Pronto's own 632 navigation - that exact failure mode cost a day earlier in this 633 work, so cleanup must never be able to break a page change. */ 634 try { 635 var oddHomePlayers = videojs.getPlayers(); 636 Object.keys(oddHomePlayers).forEach(function(id){ 637 var p = oddHomePlayers[id]; 638 if (!p) { return; } 639 try { 640 var el = p.el(); 641 if (el && jQuery(el).closest('.videobox_home, .home-banner').length > 0) { 642 p.dispose(); 643 } 644 } catch (e) { /* skip this one, keep going */ } 645 }); 646 } catch (e) { /* never let cleanup break navigation */ } 647 648 // jQuery('body').addClass('loading-down'); 649 } 650 jQuery('body').addClass('loading-fade-out'); 651 jQuery('body').removeClass('loading-fade-in'); 652 }); 653jQuery(window).on("pronto.render",function(event, eventInfo) 654{ 655 setTimeout(function(){ 656 jQuery('body').removeClass('loading-fade-out'); 657 jQuery('body').addClass('loading-fade-in'); 658 659 // REINITIALIZE AJAX FOR NEW CONTENT 660/* jQuery("#main_wapper").ajaxify({ 661 memoryoff:false, 662 requestDelay:0, 663 prefetch:false, 664 forms:false, 665 delta:false, 666 inline:true, 667 style:true, 668 scrolltop: true, 669 verbosity: 0 670 });*/ 671 672 },500) 673 if(ajaxyPage == 'home'){ 674 /* Homepage Slider : Start */ 675 clearInterval(timeInterval); 676// setTimeOut.clearTimer(); 677 678 if (typeof setTimeOut !== 'undefined' && setTimeOut && typeof setTimeOut.clearTimer === 'function') { 679 setTimeOut.clearTimer(); 680 } 681 slidercode = '2'; 682 setDelay(); 683 trackTime(); 684 var slidercode; 685 var second = 0; //,timeInterval; 686 jQuery("#newHomeSlider").on('slid.bs.carousel', function (event) { 687 if(slidercode!=1){ 688 slidercode = '2'; 689 setDelay(); 690 } 691 var total = jQuery(this).find('.carousel-item').length; 692 var currentSlide = jQuery(this).find('.carousel-item.active').data('index'); 693 var prevSlide = (currentSlide - 1) 694 var nextSlide = (currentSlide + 1); 695 if(prevSlide < 0){ 696 prevSlide = total-1; 697 } 698 if(nextSlide >= total){ 699 nextSlide = 0; 700 } 701 var carousel = jQuery(this); 702 var current = videojs(carousel.find('.item'+currentSlide).find('.video-js')[0]); 703 var prev = videojs(carousel.find('.item'+prevSlide).find('.video-js')[0]); 704 var next = videojs(carousel.find('.item'+nextSlide).find('.video-js')[0]); 705 prev.pause(); 706 prev.currentTime(0); 707 next.pause(); 708 next.currentTime(0); 709 current.play(); 710 // alert('total: '+total+ ' current: '+currentSlide+' prev: '+prevSlide+' next: '+nextSlide); 711 }); 712 jQuery(document).keyup(function(event) { 713 // var homeOwl = jQuery('#home-banner-slider'); 714 var winscroll = jQuery(window).scrollTop(); 715 var bannerheightKey = jQuery(".banner_wapper").outerHeight(); 716 if(winscroll <= bannerheightKey){ 717 if (event.keyCode == 37) { 718 jQuery("#newHomeSlider").carousel("prev"); 719 slidercode = '1'; 720 setDelay(); 721 } else if (event.keyCode == 39) { 722 jQuery("#newHomeSlider").carousel("next"); 723 slidercode = '1'; 724 setDelay(); 725 } 726 } 727 }); 728 // var setTimeOut; 729 function setDelay(param1){ 730 // console.log(slidercode); 731 var defaultTiming = defaultHomeSlideFistTiming; 732 console.log(defaultTiming); 733 //console.log(jQuery('.home-banner-slider .owl-item.active .item').data('timing')); 734 var carouselTiming = jQuery('.carousel-inner .carousel-item.active').data('slide') ? jQuery('.carousel-inner .carousel-item.active').data('slide') : defaultTiming; 735 if(slidercode!='undefined' && slidercode!="1"){ 736 jQuery("#newHomeSlider").carousel('pause'); 737 setTimeOut = new w3nTimer(function () { 738 carouselTiming = parseInt(carouselTiming); 739 //console.log('slide changed at:'+second); 740 second = 0; 741 clearInterval(timeInterval); 742 trackTime(); 743 jQuery("#newHomeSlider").carousel("next"); 744 },carouselTiming); 745 }else{ 746 //console.log('slide changed manully at:'+second); 747 second = 0; 748 clearInterval(timeInterval); 749 trackTime(); 750 setTimeOut.clearTimer(); 751 slidercode = '2'; 752 } 753 } 754 function trackTime(){ 755 timeInterval = setInterval(function(){ 756 second++; 757 //console.log('second'+second); 758 }, 1000); 759 } 760 var secondPausedAt = 0; 761 jQuery(".play_wrap").hover(function(){ 762 secondPausedAt = second; 763 // console.log('pause'); 764 setTimeOut.pause(); 765 }, function(){ 766 second = secondPausedAt; 767 // console.log('resume'); 768 setTimeOut.resume(); 769 }); 770 jQuery(".carousel-item .captionbox").hover(function(){ 771 secondPausedAt = second; 772 // console.log('pause'); 773 setTimeOut.pause(); 774 }, function(){ 775 second = secondPausedAt; 776 // console.log('resume'); 777 setTimeOut.resume(); 778 }); 779 function w3nTimer(callback, delay) { 780 var timerId, start, remaining = delay; 781 this.pause = function() { 782 window.clearTimeout(timerId); 783 remaining -= Date.now() - start; 784 }; 785 this.resume = function() { 786 start = Date.now(); 787 window.clearTimeout(timerId); 788 timerId = window.setTimeout(callback, remaining); 789 }; 790 this.clearTimer = function(){ 791 window.clearTimeout(timerId); 792 } 793 this.resume(); 794 } 795 jQuery(document).on("click", '.carousel-control-prev',function(e){ 796 e.preventDefault(); 797 jQuery("#newHomeSlider").carousel("prev"); 798 slidercode = '1'; 799 setDelay(); 800 }) 801 jQuery(document).on("click", '.carousel-control-next',function(e){ 802 e.preventDefault(); 803 jQuery("#newHomeSlider").carousel("next"); 804 slidercode = '1'; 805 setDelay(); 806 }) 807 } 808 /* Homepage Slider : end */ 809 var playerClass = ''; 810 if(ajaxyPage == 'home'){ 811 if(jQuery('.video_inside').length > 0){ 812 jQuery('.video_inside').each(function(){ 813 if(jQuery(this).find('video').length > 0){ 814 videojs(jQuery(this).find('.video-js')[0]).ready(function(){ 815 }); 816 817 } 818 }) 819 jQuery(window).trigger('resize'); 820 } 821 jQuery(".navigation_main").show() 822 jQuery(".righthead").show() 823 setTimeout(function(){ 824 get_other_post(2); 825 }, 1000); 826 /*To solve image wrap in header if came from contact or about*/ 827 var pageURL = jQuery(location).attr("href"); 828 var href = pageURL.split('#'); 829 var section = "#"+href[1]; 830 var headerOuterHeight = jQuery('.header_wapper').outerHeight(); 831 if(jQuery(section).length > 0){ 832 var scrol = jQuery(section).offset().top - headerOuterHeight; 833 jQuery('html, body').animate({ 834 scrollTop: scrol 835 }, 100, 'linear'); 836 } 837 /*To solve image wrap in header if came from contact or about*/ 838 }else{ 839 // console.log(jQuery('.video-blk').find('.video-js').length); 840 841 842 843 844 845 846 847 848 849 850 851 if(jQuery('.video-blk').find('.video-js').length > 0){ 852 var player = videojs(jQuery('.video-blk').find('.video-js')[0]); 853 var audioPromptBtn = jQuery('#audio-prompt-btn'); 854 855 // ===== AUTOPLAY WITH AUDIO - localStorage remembered ===== 856 var userPreferredUnmuted = localStorage.getItem('oddVideoUnmuted') === 'true'; 857 858 // Show the UNMUTE button and wire it up. A tap always carries a user 859 // gesture, so unmuting from here is never blocked by the browser.
860 function oddShowUnmutePrompt() { 861 audioPromptBtn.show(); 862 audioPromptBtn.off('click.oddaudio').on('click.oddaudio', function() { 863 player.muted(false); 864 player.volume(1); 865 player.play(); 866 audioPromptBtn.fadeOut(300); 867 localStorage.setItem('oddVideoUnmuted', 'true'); // Remember preference 868 }); 869 } 870 871 if(userPreferredUnmuted) { 872 // User has already clicked to unmute before 873 player.muted(false); 874 player.volume(1); 875 audioPromptBtn.hide(); // Hide the button 876 877 // Mobile browsers (Chrome on iOS especially) block autoplay WITH SOUND 878 // unless it happens close enough to the user's tap. If that happens the 879 // video would just sit there loaded but paused, so fall back to muted 880 // playback and re-offer the UNMUTE button instead of stalling. 881 var oddPlayAttempt = player.play(); 882 if (oddPlayAttempt && typeof oddPlayAttempt.catch === 'function') { 883 oddPlayAttempt.then(function() { 884 if (typeof oddLogPlay === 'function') { oddLogPlay('SOUND OK '); } 885 }); 886 oddPlayAttempt.catch(function(err) { 887 if (typeof oddLogPlay === 'function') { 888 oddLogPlay('SOUND FAIL [' + (err && err.name ? err.name : '?') + ']'); 889 } 890 player.muted(true); 891 player.play(); 892 oddShowUnmutePrompt(); 893 }); 894 } 895 } else { 896 // First time user - show the audio prompt button 897 oddShowUnmutePrompt(); 898 } 899 // ===== END AUTOPLAY WITH AUDIO ===== 900 901 player.currentTime(0); 902 player.ready(function(){ 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 this.on('timeupdate', function () { 933 var percentage = ( this.currentTime() / this.duration() ) * 100; 934 jQuery("#custom-seekbar span").css("width", percentage+"%"); 935 jQuery("#custom-seekbar span").css("transition", 'width linear 0.5s'); 936 var currentTime = this.currentTime(); 937 var totalTime = this.duration(); 938 var remainingTime = (totalTime - currentTime); 939 currentTime = convertSecondstoTime(currentTime); 940 remainingTime = '-'+convertSecondstoTime(remainingTime); 941 var toalTimeDisplay = convertSecondstoTime(totalTime); 942 jQuery('#custom-seekbar .currenttime').text(remainingTime); 943 //jQuery("#custom-seekbar .currenttime").css("left", ); 944 jQuery('.time-blk .currenttime').text(currentTime); 945 jQuery('.time-blk .totaltime').text(toalTimeDisplay); 946 }) 947 this.on('ended', function () { 948 jQuery('.play-pause').addClass('play').removeClass('pause'); 949 jQuery('.play-pause').find('i').addClass('fa-pause').removeClass('fa-play'); 950 //jQuery('#play-btn-blk').fadeIn('slow'); 951 jQuery("#custom-seekbar span").css("width", "0%"); 952 jQuery('.time-blk .currenttime').text('00:00'); 953 jQuery('#custom-seekbar .currenttime').text(''); 954 setTimeout(function(){ 955 jQuery('.video-close-blk a').trigger('click'); 956 }, 500); 957 }) 958 this.on('pause', function () { 959 jQuery('.play-pause').addClass('play').removeClass('pause'); 960 jQuery('.play-pause').find('i').addClass('fa-pause').removeClass('fa-play'); 961 jQuery("#custom-seekbar span").css("transition", ''); 962 }) 963 this.on('play', function () { 964 jQuery('.play-pause').addClass('pause').removeClass('play'); 965 jQuery('.play-pause').find('i').addClass('fa-pause').removeClass('fa-play'); 966 jQuery("#custom-seekbar span").css("transition", ''); 967 jQuery('#play-btn-blk').fadeOut('slow'); 968 }) 969 setTimeout(function(){ 970 // console.log('class added'); 971 jQuery('body').addClass("make-control-light"); 972 }, 3000); 973 }); 974 jQuery(".navigation_main").hide(); 975 jQuery(".righthead").hide(); 976 977 978/* if(jQuery(window).width() > 768){ 979 player.play(); 980 }else{ 981 setTimeout(function(){ 982 jQuery('#play-btn-blk').fadeIn(); 983 }, 900); 984 }*/ 985 986 var vid = videojs(jQuery('.video-blk').find('.video-js')[0],{ techOrder: ["youtube"]}); 987 jQuery(document).delegate("#custom-seekbar", "click", function(e){ 988 var offset = jQuery(this).offset(); 989 var left = (e.pageX - offset.left); 990 var totalWidth = jQuery("#custom-seekbar").width(); 991 var percentage = ( left / totalWidth ); 992 var vidTime = vid.duration() * percentage; 993 //console.log(vidTime); 994 vid.currentTime(vidTime) 995 }); 996 997 /* Warm this page's neighbours in Flywheel's edge cache. See the 998 note beside oddPrefetchNeighbours() at the top of this script. 999 This is the AJAX path and the common case; the document.ready 1000 call up there covers direct loads and refreshes. */ 1001 setTimeout(oddPrefetchNeighbours, 1000); 1002 } 1003 } 1004 function convertSecondstoTime(given_seconds, type) { 1005 // given_seconds = 3685; 1006 1007 dateObj = new Date(given_seconds * 1000); 1008 hours = dateObj.getUTCHours(); 1009 minutes = dateObj.getUTCMinutes(); 1010 seconds = dateObj.getSeconds(); 1011 1012 if(type == 'full'){ 1013 // console.log(hours+':'+minutes+':'+seconds); 1014 timeString = hours.toString().padStart(1, '') 1015 + ':' + minutes.toString().padStart(1, '') 1016 + ':' + seconds.toString().padStart(2, '0'); 1017 }else{ 1018 var hours = hours.toString().padStart(1, ''); 1019 var hoursText = ''; 1020 // console.log(hours+':'+minutes+':'+seconds); 1021 if(hours > 0){ 1022 hoursText = hours+ ':'; 1023 } 1024 timeString = hoursText 1025 + minutes.toString().padStart(1, '') 1026 + ':' + seconds.toString().padStart(2, '0'); 1027 }
1028 return timeString; 1029 } 1030 //add class for control opecity 1031 // if(!jQuery('body').hasClass('make-control-light')){ 1032 // jQuery('body').addClass("make-control-light") 1033 // } 1034 //add class for control opecity 1035 jQuery(".search_iconwrap a").click(function(e) { 1036 e.preventDefault(); 1037 jQuery(this).toggleClass("active"); 1038 jQuery(".filter_menubox").toggleClass("showfilter"); 1039 }); 1040 if(jQuery('.no-ajaxy').length > 0 && ajaxyPage == 'home'){ 1041 jQuery('.no-ajaxy').each(function(){ 1042 jQuery('.no-ajaxy').find('a').addClass('no-ajaxy'); 1043 }) 1044 } 1045 $grid = jQuery('.grid').isotope({ 1046 itemSelector: '.filteritems', 1047 layoutMode: 'fitRows' 1048 }); 1049 // bind filter button click 1050 jQuery('.filters-button-group').on( 'click', 'button', function() { 1051 var filterValue = jQuery( this ).attr('data-filter'); 1052 // use filterFn if matches value 1053 filterValue = filterFns[ filterValue ] || filterValue; 1054 $grid.isotope({ filter: filterValue }); 1055 }); 1056 // change is-checked class on buttons 1057 jQuery('.button-group').each( function( i, buttonGroup ) { 1058 var $buttonGroup = jQuery( buttonGroup ); 1059 $buttonGroup.on( 'click', 'button', function() { 1060 $buttonGroup.find('.is-checked').removeClass('is-checked'); 1061 jQuery( this ).addClass('is-checked'); 1062 }); 1063 }); 1064 /*Abuot Slider Start*/ 1065 var aboutSlider = jQuery('.abt-banner-slider').owlCarousel({ 1066 loop:true, 1067 margin:0, 1068 autoplay:true, 1069 autoplayTimeout:5000, 1070 autoplaySpeed:1000, 1071 nav:false, 1072 dots:false, 1073 autoplayHoverPause: true, 1074 animateOut: 'fadeOut', 1075 animateIn: 'fadeIn', 1076 responsive:{ 1077 0:{ 1078 items:1 1079 }, 1080 600:{ 1081 items:1 1082 }, 1083 1000:{ 1084 items:1 1085 } 1086 } 1087 }); 1088 aboutSlider.on('changed.owl.carousel', function(e) { 1089 aboutSlider.trigger('stop.owl.autoplay'); 1090 aboutSlider.trigger('play.owl.autoplay'); 1091 }); 1092 jQuery('.owl-carousel').on('click', '.owl-dots, .owl-nav', function(e) { 1093 jQuery(this).closest('.owl-carousel').trigger('stop.owl.autoplay'); 1094 jQuery(this).closest('.owl-carousel').trigger('play.owl.autoplay'); 1095 }); 1096 // Go to the next item 1097 jQuery('.inner_banner_control .next_btn a').click(function(e) { 1098 e.preventDefault(); 1099 aboutSlider.trigger('next.owl.carousel', [1000]); 1100 }); 1101 1102 // Go to the previous item 1103 jQuery('.inner_banner_control .pre_btn a').click(function(e) { 1104 e.preventDefault(); 1105 aboutSlider.trigger('prev.owl.carousel', [1000]); 1106 }); 1107 jQuery(document).keyup(function(event) { 1108 // var homeOwl = jQuery('#home-banner-slider'); 1109 var winscroll = jQuery(window).scrollTop(); 1110 var bannerheightKey = jQuery(".banner_wapper").outerHeight(); 1111 if(winscroll <= bannerheightKey){ 1112 if (event.keyCode == 37) { 1113 // console.log('prev'); 1114 aboutSlider.trigger('prev.owl.carousel', [1000]); 1115 } else if (event.keyCode == 39) { 1116 // console.log('next'); 1117 aboutSlider.trigger('next.owl.carousel', [1000]); 1118 } 1119 aboutSlider.trigger('stop.owl.autoplay'); 1120 aboutSlider.trigger('play.owl.autoplay'); 1121 } 1122 }); 1123/**/ 1124 jQuery.get('/wp-content/themes/chuckeeM/js/jquery.lazyloadxt.js?ver=5.2.3',function(data){eval(data);}); 1125 jQuery.get('/wp-content/themes/chuckeeM/js/jquery.lazyloadxt.bg.js?ver=5.2.3',function(data){eval(data);}); 1126 1127 var sPageURL = window.location.search; 1128 if(sPageURL != ''){ 1129 var sub = sPageURL.substring(1) 1130 var res = sub.split("="); 1131 var res = res[1].split("#"); 1132 var filter = '.'+res[0]; 1133 jQuery('.filter_menubox .filters-button-group .button').each(function(){ 1134 data = jQuery(this).data('filter'); 1135 var ele = jQuery(this); 1136 if(data == filter){ 1137 ele.trigger('click'); 1138 } 1139 }) 1140 }else{ 1141 // eraseCookie('w3nClickedFilterValue'); 1142 } 1143 1144 /*to filter grid if return from player page*/ 1145 /*var workCookie = getCookie('scrollToWork'); 1146 if(workCookie != '' && workCookie != null){ 1147 console.log('cookie'+workCookie); 1148 eraseCookie('scrollToWork'); 1149 var workTopCount = jQuery(workCookie).offset().top; 1150 var menuHeight = jQuery("#header").outerHeight(); 1151 jQuery('html, body').animate({ 1152 scrollTop: workTopCount - menuHeight 1153 }, 1000); 1154 }*/ 1155 var uri = window.location.href.toString(); 1156 if (uri.indexOf("?") > 0) { 1157 setTimeout(function(){ 1158 var clean_uri = uri.substring(0, uri.indexOf("?")); 1159 window.history.replaceState({}, document.title, clean_uri); 1160 }) 1161 } 1162 1163 1164 /*Menubox hover effect*/ 1165 jQuery(".menubox").hover(function() { 1166 jQuery('#header').addClass('activeheader'); 1167 }, function() { 1168 // jQuery('#header').removeClass('activeheader'); 1169 }) 1170 /*Menubox hover effect*/ 1171 1172 1173 1174 1175 1176 1177 1178 /*image hover on dark*/ 1179 jQuery(".work_insidebox a").hover(function(){ 1180 jQuery(this).parent().parent().addClass("activebox"); 1181 jQuery(".filter_workwrap").addClass("hideothers"); 1182 },function(){ 1183 jQuery(this).parent().parent().removeClass("activebox"); 1184 jQuery(".filter_workwrap").removeClass("hideothers"); 1185 }); 1186 /*image hover on dark*/ 1187 }); 1188 1189 1190
1191 //////////////////////////////////////////// 1192 // MATT hide the menu upon scroll of page // 1193 ///////////////////////////////////////////// 1194// jQuery( window ).scroll(function() { 1195 // jQuery( "#header" ).addClass( "activeheader" ); 1196// jQuery( ".hamicon" ).addClass( "active" ); 1197// }); 1198 1199 1200 1201 1202 1203 // CLOSE BUTTON HANDLER - handles both touch (mobile) and click (desktop) 1204/* document.addEventListener('touchend', function(e) { 1205 var closeLink = e.target.closest('.video-close-blk a'); 1206 if (closeLink) { 1207 e.preventDefault(); 1208 window.location.href = closeLink.getAttribute('href'); 1209 } 1210 }, false); 1211 document.addEventListener('click', function(e) { 1212 var closeLink = e.target.closest('.video-close-blk a'); 1213 if (closeLink) { 1214 e.preventDefault(); 1215 window.location.href = closeLink.getAttribute('href'); 1216 } 1217 }, true); 1218 1219 */ 1220 1221 1222 1223// Permanently disable jQuery Mobile's automatic link-hijacking. 1224// Pronto (ajaxify) handles all AJAX navigation on this site; jQuery Mobile's 1225// competing link handler was causing race conditions with video navigation. 1226jQuery(function(){ 1227 var clickEvents = jQuery._data(document, 'events') && jQuery._data(document, 'events').click; 1228 if (clickEvents) { 1229 clickEvents.slice().forEach(function(e) { 1230 if (e.handler.toString().indexOf('pagecontainer') !== -1) { 1231 jQuery(document).off('click', e.handler); 1232 } 1233 }); 1234 } 1235}); 1236 1237</script>
1237 1238</body> 1239</html>
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.