CINXE.COM
Home — IIIF | International Image Interoperability Framework
<!DOCTYPE html> <html lang='en'><head> <meta charset="utf-8"> <title> Home — IIIF | International Image Interoperability Framework </title> <meta name="description" content="IIIF is a set of open standards for delivering high-quality, attributed digital objects online at scale. It’s also an international community developing and implementing the IIIF APIs. IIIF is backed by a consortium of leading cultural institutions."> <link rel="shortcut icon" href="/assets/favicon.ico"> <link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"> <link rel="manifest" href="/assets/site.webmanifest"> <link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#E82334"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="theme-color" content="#ffffff"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="/assets/css/style.css"> <link rel="canonical" href="/" /> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-ZW5W9QRPH6"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-ZW5W9QRPH6'); </script> <link rel="preload" as="image" href="/assets/uploads/doshisha_103500_.jpg"> <!-- Begin Jekyll SEO tag v2.8.0 --> <meta name="generator" content="Jekyll v4.1.1" /> <meta property="og:title" content="Home" /> <meta property="og:locale" content="en_US" /> <link rel="canonical" href="/" /> <meta property="og:url" content="/" /> <meta property="og:image" content="/assets/uploads/2019-06-IIIF-Conference-0705.jpg" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:image" content="/assets/uploads/2019-06-IIIF-Conference-0705.jpg" /> <meta property="twitter:title" content="Home" /> <meta name="twitter:site" content="@iiif_io" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebSite","headline":"Home","image":"/assets/uploads/2019-06-IIIF-Conference-0705.jpg","name":"IIIF","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/assets/favicon.ico"}},"sameAs":["https://twitter.com/IIIF_io","https://www.linkedin.com/company/iiif-c/","https://github.com/IIIF/"],"url":"/"}</script> <!-- End Jekyll SEO tag --> <!-- add for Mastodon verification --> <link rel="me" href="https://glammr.us/@iiif"> </head> <body> <section class="hero is-primary" style="background-image: linear-gradient(to bottom, rgba(0, 25, 39, 0.68), rgba(0, 25, 39, 0.68)), url('/assets/uploads/doshisha_103500_.jpg'); background-size: cover; background-position: bottom center; background-attachment: fixed; "> <div class="hero-head"> <nav id="navbar" class="navbar is-transparent is-spaced"> <div class="container"> <div class="navbar-brand"> <a class="navbar-item" href="/"> <img src="/assets/images/logos/logo-sm.png" alt="IIIF logo" height="28"> <span class="brand-title">International Image Interoperability Framework</span> </a> <div class="navbar-burger" data-target="navbar" onclick="document.querySelector('.navbar-menu').classList.toggle('is-active');"> <span></span> <span></span> <span></span> </div> </div> <div class="navbar-menu"> <div class="navbar-end"> <a class="navbar-item" href="/">Home</a> <a class="navbar-item" href="/demos">Demos</a> <a class="navbar-item" href="/news-and-events">News & Events</a> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="/get-involved"> Get Involved </a> <div class="navbar-dropdown is-boxed is-active"> <a class="navbar-item" href="/community/">Community</a> <a class="navbar-item" href="/community/consortium">Consortium</a> <a class="navbar-item" href="/newsletter">Join Newsletter</a> <a class="navbar-item" href="/get-involved/outreach-materials">Outreach Materials</a> </div> </div> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="/get-started"> Get Started </a> <div class="navbar-dropdown is-boxed is-active"> <a class="navbar-item" href="/get-started/how-iiif-works">How IIIF Works</a> <a class="navbar-item" href="/community/ambassadors/">IIIF Ambassadors</a> <a class="navbar-item" href="https://iiif.io/guides">Guides</a> <a class="navbar-item" href="https://iiif.io/api">APIs & Documentation</a> <a class="navbar-item" href="/get-started/cookbook">Cookbooks</a> <a class="navbar-item" href="/get-started/training">Training</a> </div> </div> </div> </div> </div> </nav> </div> <div class="hero-body container"> <div class="container has-text-centered"> <h1 class="title is-size-2 is-size-3-mobile is-size-desktop is-size-1-widescreen">Gain richer access to the world's image and audio/visual files</h1> <p class="subtitle is-size-5">IIIF is a set of open standards for delivering high-quality, attributed digital objects online at scale. It’s also an international community developing and implementing the IIIF APIs. IIIF is backed by a consortium of leading cultural institutions.</p> <a class="button is-primary is-normal" href="/get-started">Get started</a> </div> </div> </section> <section id="main"> <div class="container-block is-max-widescreen"><div class="container has-text-centered"> <h2 id="break-down-silos-with-open-apis">Break down silos with open APIs</h2> <p>Many of the images and audio/visual resources that are fundamental to research exist in silos, with access restricted to locally-built applications. IIIF gives you and your audience freedom to work across barriers.</p> <div class="carousel-container"> <div class="carousel-item"> <a href="/demos"> <div class="carousel-resource"> <picture> <source srcset="/assets/uploads/wellcome_zebrafish.webp" type="image/webp" /> <img src="/assets/uploads/wellcome_zebrafish.png" alt="Wellcome Collection screenshot" class="" /> </picture> <!--<img alt="Wellcome Collection screenshot" src="/assets/uploads/wellcome_zebrafish.png">--> </div> </a> <p class="caption">The Wellcome Collection uses IIIF to make medical and scientific materials available via the custom-built Wellcome Viewer, and to offer multiple image download sizes to users.</p> <a class="button is-primary is-normal" href="/demos">View demos</a> </div> <div class="carousel-item"> <a href="/demos"> <div class="carousel-resource"> <picture> <source srcset="/assets/uploads/micrio-night-watch.webp" type="image/webp" /> <img src="/assets/uploads/micrio-night-watch.png" alt="Micrio screenshot" class="" /> </picture> <!--<img alt="Micrio screenshot" src="/assets/uploads/micrio-night-watch.png">--> </div> </a> <p class="caption">The Rijksmuseum features rich online exhibitions driven by IIIF annotations.</p> <a class="button is-primary is-normal" href="/demos">View demos</a> </div> <div class="carousel-item"> <a href="/demos"> <div class="carousel-resource"> <picture> <source srcset="/assets/uploads/SAT%20Taish%C5%8Dz%C5%8D%20Image%20DB.webp" type="image/webp" /> <img src="/assets/uploads/SAT%20Taish%C5%8Dz%C5%8D%20Image%20DB.png" alt="SAT Taishōzō Image DB screenshot" class="" /> </picture> <!--<img alt="SAT Taishōzō Image DB screenshot" src="/assets/uploads/SAT%20Taish%C5%8Dz%C5%8D%20Image%20DB.png">--> </div> </a> <p class="caption">The SAT Daizokyo Database Project includes individual mandalas with over 400 IIIF annotations, using Mirador.</p> <a class="button is-primary is-normal" href="/demos">View demos</a> </div> <div class="carousel-item"> <a href="/demos"> <div class="carousel-resource"> <picture> <source srcset="/assets/uploads/ddmal_section.gif" type="image/webp" /> <img src="/assets/uploads/ddmal_section.gif" alt="DDMAL screenshot" class="" /> </picture> <!--<img alt="DDMAL screenshot" src="/assets/uploads/ddmal_section.gif">--> </div> </a> <p class="caption">McGill University's Distributed Digital Music Archives & Libraries Lab uses the Presentation API to integrate audio and moving images.</p> <a class="button is-primary is-normal" href="/demos">View demos</a> </div> </div> </div></div> <div class="container-block is-max-widescreen"><div class="container has-text-centered"> <h2 id="simplify-and-enhance-your-work">Simplify and enhance your work</h2> <div class="block columns"> <div class="column"> <picture> <source srcset="/assets/images/icons/research@2x.webp" type="image/webp" /> <img src="/assets/images/icons/research@2x.png" alt="Magnifying glass icon" class="lg-icon" /> </picture> <h3>Great for researchers</h3> <p>Examine, compare, annotate, and share. IIIF enables easy use across repositories, with tools to aid research and presentation.</p> </div> <div class="column"> <picture> <source srcset="/assets/images/icons/developer@2x.webp" type="image/webp" /> <img src="/assets/images/icons/developer@2x.png" alt="Code prompt icon" class="lg-icon" /> </picture> <h3>Efficient for developers</h3> <p>Publish once, reuse often. IIIF serves high-quality digital objects to your own site and others in many formats, without vendor lock-in.</p> </div> <div class="column"> <picture> <source srcset="/assets/images/icons/leader@2x.webp" type="image/webp" /> <img src="/assets/images/icons/leader@2x.png" alt="Hand holding flag icon" class="lg-icon" /> </picture> <h3>Practical for leaders</h3> <p>Share your collections as widely as possible. IIIF is a cost-effective way to serve billions of digital objects with open-source, community-driven ethics.</p> </div> </div> <p><a class="button is-primary is-normal" href="/get-started/why-iiif/">Why IIIF</a></p> </div></div> <div class="container-block is-max-widescreen"><div class="container has-text-centered"> <h2 id="start-building">Start building</h2> <p>The six IIIF APIs fit together to deliver endless possibilities.</p> <div class="block columns is-multiline"> <div class="column is-one-third same-height-column"> <div class="box hover-box iiif-card"> <picture> <source srcset="/assets/images/icons/image@2x.webp" type="image/webp" /> <img src="/assets/images/icons/image@2x.png" alt="Image API icon" class="iiif-icon" /> </picture> <h3 class="title">Image API</h3> <p class="subtitle has-text-left">Retrieves images from anywhere in the world and allows the user to select an area of the image and to resize, rotate, and edit the quality.</p> <footer class="columns"> <div class="column"> <p class="has-text-left"> <a href="https://iiif.io/api/image" title="https://iiif.io/api">View docs ></a> </p> </div> <div class="column"> <p class="has-text-right">Stable 3.0</p> </div> </footer> </div> </div> <div class="column is-one-third same-height-column"> <div class="box hover-box iiif-card"> <picture> <source srcset="/assets/images/icons/location-info@2x.webp" type="image/webp" /> <img src="/assets/images/icons/location-info@2x.png" alt="Presentation API icon" class="iiif-icon" /> </picture> <h3 class="title">Presentation API</h3> <p class="subtitle has-text-left">Packages each image with its metadata so users know the origin, title of the image, and even what page of a book the image was from.</p> <footer class="columns"> <div class="column"> <p class="has-text-left"> <a href="https://iiif.io/api/presentation" title="https://iiif.io/api">View docs ></a> </p> </div> <div class="column"> <p class="has-text-right">Stable 3.0</p> </div> </footer> </div> </div> <div class="column is-one-third same-height-column"> <div class="box hover-box iiif-card"> <picture> <source srcset="/assets/images/icons/auth-group@2x.webp" type="image/webp" /> <img src="/assets/images/icons/auth-group@2x.png" alt="Auth Flow API icon" class="iiif-icon" /> </picture> <h3 class="title">Authorization Flow API</h3> <p class="subtitle has-text-left">Control and restrict access by creating a link to a user interface for logging in and services that provide credentials.</p> <footer class="columns"> <div class="column"> <p class="has-text-left"> <a href="https://iiif.io/api/auth" title="https://iiif.io/api">View docs ></a> </p> </div> <div class="column"> <p class="has-text-right">Stable 2.0</p> </div> </footer> </div> </div> <div class="column is-one-third same-height-column"> <div class="box hover-box iiif-card"> <picture> <source srcset="/assets/images/icons/search-group@2x.webp" type="image/webp" /> <img src="/assets/images/icons/search-group@2x.png" alt="Search API icon" class="iiif-icon" /> </picture> <h3 class="title">Content Search API</h3> <p class="subtitle has-text-left">Perform search for text within or annotations related to digital objects.</p> <footer class="columns"> <div class="column"> <p class="has-text-left"> <a href="https://iiif.io/api/search" title="https://iiif.io/api">View docs ></a> </p> </div> <div class="column"> <p class="has-text-right">Stable 2.0</p> </div> </footer> </div> </div> <div class="column is-one-third same-height-column"> <div class="box hover-box iiif-card"> <picture> <source srcset="/assets/images/icons/shape@2x.webp" type="image/webp" /> <img src="/assets/images/icons/shape@2x.png" alt="Change Discovery API icon" class="iiif-icon" /> </picture> <h3 class="title">Change Discovery API</h3> <p class="subtitle has-text-left">Harvest any changes published by organizations that deliver digital objects.</p> <footer class="columns"> <div class="column"> <p class="has-text-left"> <a href="https://iiif.io/api/discovery" title="https://iiif.io/api">View docs ></a> </p> </div> <div class="column"> <p class="has-text-right">Stable 1.0</p> </div> </footer> </div> </div> <div class="column is-one-third same-height-column"> <div class="box hover-box iiif-card"> <picture> <source srcset="/assets/images/icons/link-group@2x.webp" type="image/webp" /> <img src="/assets/images/icons/link-group@2x.png" alt="Content State API icon" class="iiif-icon" /> </picture> <h3 class="title">Content State API</h3> <p class="subtitle has-text-left">Generate a very specific link to a particular view of an object, like a specific area on a particular page rotated at a certain angle.</p> <footer class="columns"> <div class="column"> <p class="has-text-left"> <a href="https://iiif.io/api/content-state" title="https://iiif.io/api">View docs ></a> </p> </div> <div class="column"> <p class="has-text-right">Stable 1.0</p> </div> </footer> </div> </div> </div> </div></div> <section class="hero is-primary" style="background-image: linear-gradient(to bottom, rgba(0, 25, 39, 0.68), rgba(0, 25, 39, 0.68)), url('/assets/images/heroes/event_2.webp'); background-size: cover; background-position: bottom center; background-attachment: fixed; "> <div class="hero-body container"> <div class="container has-text-centered"> <h2 class="title">Join the community</h2> <p class="subtitle is-size-5">IIIF community groups tackle a range of topics, from implementing IIIF for specific communities to crafting new technical specifications.</p> <a class="button is-primary is-normal" href="/get-involved">Learn more</a> </div> </div> </section> <div class="container-block is-max-widescreen"><div class="container has-text-centered"> <h2 id="funded-by-global-technology-leaders">Funded by global technology leaders</h2> <p>IIIF is funded by a <a href="/community/consortium/members/">69-member</a> global <a href="/community/consortium/">consortium</a>, and leveraged by aggregators, research institutions, national libraries, archives, museums, software companies, and digital agencies around the world. Consortium members include:</p> <div class="columns logo-grid is-multiline is-vcentered"> <div class="column is-one-quarter"> <a href="http://nypl.org/"> <img class="p-3 inline-logo" alt="New York Public Library logo" src="/assets/uploads/logos/New_York_Public_Library_logo.svg.png" /> </a> </div> <div class="column is-one-quarter"> <a href="https://library.leeds.ac.uk/"> <img class="p-3 inline-logo" alt="University of Leeds logo" src="/assets/uploads/logos/University-of-Leeds-logo.jpg" /> </a> </div> <div class="column is-one-quarter"> <a href="https://www.culture.gouv.fr/"> <img class="p-3 inline-logo" alt="French Ministry of Culture logo" src="/assets/uploads/logos/FMC.png" /> </a> </div> <div class="column is-one-quarter"> <a href="https://repository.lib.cuhk.edu.hk/en/IIIF-Guide"> <img class="p-3 inline-logo" alt="Chinese University of Hong Kong logo" src="/assets/uploads/logos/CUHK.svg" /> </a> </div> <div class="column is-one-quarter"> <a href="https://www.europeana.eu"> <img class="p-3 inline-logo" alt="Europeana logo" src="/assets/uploads/logos/logo_Europeana_basic_portrait_black.png" /> </a> </div> <div class="column is-one-quarter"> <a href="https://kakadusoftware.com/"> <img class="p-3 inline-logo" alt="Kakadu Software logo" src="/assets/uploads/logos/kakadu_logo.png" /> </a> </div> <div class="column is-one-quarter"> <a href="https://www.library.northwestern.edu/"> <img class="p-3 inline-logo" alt="Northwestern University Libraries logo" src="/assets/uploads/logos/northwestern.jpg" /> </a> </div> <div class="column is-one-quarter"> <a href="https://www.kb.nl/"> <img class="p-3 inline-logo" alt="National Library of the Netherlands logo" src="/assets/uploads/logos/KB_Nationale-Bibliotheek_Logo_RGB.svg" /> </a> </div> </div> <p><a class="button is-primary is-normal" href="/community/consortium/members">View members</a></p> </div></div> <div class="container-block is-max-widescreen"><div class="container has-text-centered"> <h2 id="latest-news">Latest news</h2> <div class="block columns is-multiline"> <div class="column is-full"> <div class="news-card card box hover-box columns is-gapless is-mobile"> <div class="news-info card-content"> <h3 class="news-title has-text-left"><a href="/news/2025/03/19/Systemik/">IIIF Consortium Welcomes Systemik Solutions</a></h3> <p class="news-details has-text-left sans-serif" style="margin-bottom:0"> <i class="far fa-calendar-alt"></i> <time datetime="2025-03-19">March 19, 2025</time> | <i class="far fa-user-circle"></i> IIIF-C Staff </p> <p class="excerpt has-text-left"> The International Image Interoperability Framework Consortium is delighted to announce Systemik Systems has joined as an associate member. </p> <p class="has-text-left margin-unset"> <b><a class="serif" href="/news/2025/03/19/Systemik/">Read More ></a></b> </p> </div> </div> </div> <div class="column is-full"> <div class="news-card card box hover-box columns is-gapless is-mobile"> <div class="news-info card-content"> <h3 class="news-title has-text-left"><a href="/news/2025/03/04/annual-report-2024/">2024 Annual Report Released</a></h3> <p class="news-details has-text-left sans-serif" style="margin-bottom:0"> <i class="far fa-calendar-alt"></i> <time datetime="2025-03-04">March 4, 2025</time> | <i class="far fa-user-circle"></i> IIIF Consortium Staff </p> <p class="excerpt has-text-left"> The IIIF Consortium releases its 2024 Annual Report </p> <p class="has-text-left margin-unset"> <b><a class="serif" href="/news/2025/03/04/annual-report-2024/">Read More ></a></b> </p> </div> </div> </div> </div> <p><a class="button is-primary is-normal" href="/news">View all</a></p> </div></div> <div class="container-block is-max-widescreen"><div class="container has-text-centered"> <h2 id="events--meetings">Events & meetings</h2> <nav class="tabs is-fullwidth"> <div class="container"> <ul> <li class="tab" id="featured-events-heading" onclick="openTab('featured-events')"> <h3><a>Featured events</a></h3> </li> <li class="tab" id="group-meetings-heading" onclick="openTab('group-meetings')"> <h3><a>Group meetings</a></h3> </li> <li class="tab" id="call-calendar-heading" onclick="openTab('call-calendar')"> <h3><a>Call calendar</a></h3> </li> </ul> </div> </nav> <div class="container"> <div id="featured-events" class="content-tab"> <div class="block columns is-multiline"> <div class="column is-half same-height-column"> <div class="event-card card box hover-box columns is-gapless is-mobile"> <div class="date-block-container column is-narrow"> <div class="card-content date-block has-text-centered"> <span class="title date-month is-size-4">Mar</span> <br /> <span class="subtitle is-size-1 date-num">31</span> </div> </div> <div class="column"> <div class="event-info card-content"> <h3 class="event-title is-size-5 has-text-left">IIIF Online Training March 2025 (5 Day course)</h3> <p class="event-details has-text-left" style="margin-bottom:0"> <i class="fas fa-map-marked-alt"></i> Online <br /> <i class="far fa-calendar-alt"></i> <time datetime="2025-03-31 17:00:00 +0000">Monday, March 31, 2025 </time> <br /><i class="fas fa-link"></i> <a href="https://www.eventbrite.com/e/march-2025-iiif-online-training-5-day-course-tickets-1140969814429">More info & registration</a> </p> </div> </div> </div> </div> <div class="column is-half same-height-column"> <div class="event-card card box hover-box columns is-gapless is-mobile"> <div class="date-block-container column is-narrow"> <div class="card-content date-block has-text-centered"> <span class="title date-month is-size-4">May</span> <br /> <span class="subtitle is-size-1 date-num">19</span> </div> </div> <div class="column"> <div class="event-info card-content"> <h3 class="event-title is-size-5 has-text-left">IIIF Online Training May 2025 (5 Day course)</h3> <p class="event-details has-text-left" style="margin-bottom:0"> <i class="fas fa-map-marked-alt"></i> Online <br /> <i class="far fa-calendar-alt"></i> <time datetime="2025-05-19 14:00:00 +0000">Monday, May 19, 2025 </time> <br /><i class="fas fa-link"></i> <a href="https://www.eventbrite.com/e/may-2025-iiif-online-training-5-day-course-tickets-1144088703109">More info & registration</a> </p> </div> </div> </div> </div> <div class="column is-half same-height-column"> <div class="event-card card box hover-box columns is-gapless is-mobile"> <div class="date-block-container column is-narrow"> <div class="card-content date-block has-text-centered"> <span class="title date-month is-size-4">Jun</span> <br /> <span class="subtitle is-size-1 date-num">02</span> </div> </div> <div class="column"> <div class="event-info card-content"> <h3 class="event-title is-size-5 has-text-left">IIIF Annual Conference & Showcase 2025</h3> <p class="event-details has-text-left" style="margin-bottom:0"> <i class="fas fa-map-marked-alt"></i> Leeds, England, UK <br /> <i class="far fa-calendar-alt"></i> <time datetime="2025-06-02 06:00:00 +0000">Monday, June 2, 2025 </time> <br /><i class="fas fa-link"></i> <a href="/event/2025/leeds/">More info</a> </p> </div> </div> </div> </div> <div class="column is-half same-height-column"> <div class="event-card card box hover-box columns is-gapless is-mobile"> <div class="date-block-container column is-narrow"> <div class="card-content date-block has-text-centered"> <span class="title date-month is-size-4">Sep</span> <br /> <span class="subtitle is-size-1 date-num">29</span> </div> </div> <div class="column"> <div class="event-info card-content"> <h3 class="event-title is-size-5 has-text-left">IIIF Online Training September 2025 (5 Day course)</h3> <p class="event-details has-text-left" style="margin-bottom:0"> <i class="fas fa-map-marked-alt"></i> Online <br /> <i class="far fa-calendar-alt"></i> <time datetime="2025-09-29 17:00:00 +0000">Monday, September 29, 2025 </time> <br /><i class="fas fa-link"></i> <a href="https://www.eventbrite.com/e/september-2025-iiif-online-training-5-day-course-tickets-1144089696079">More info & registration</a> </p> </div> </div> </div> </div> </div> <a class="button is-primary is-normal" href="/events">View all</a> </div> <div id="group-meetings" class="content-tab" style="display:none;"> <h3>IIIF group calls are open to all.</h3> <div class="block columns is-multiline"> <script> function createDiv(parentNode, cssClasses) { return createNode(parentNode, "div", cssClasses); } function createSpan(parentNode, cssClasses) { return createNode(parentNode, "span", cssClasses); } function createNode(parentNode, tag, cssClasses) { let div = document.createElement(tag); div.className = cssClasses; parentNode.appendChild(div); return div; } function fixGroupLinks(link) { if (link.indexOf(".") == -1 && !link.endsWith("/")) { link += "/"; } let path = ""; if (path.endsWith("/")) { return path + link.substring(1); } else { return path + link; } } function buildCard(parent, startDate, dateOnly, label, description, organiser, location, links) { let container = createDiv(parent, "column is-half same-height-column"); let card = createDiv(container, "event-card card box hover-box columns is-gapless is-mobile"); let dateContainer = createDiv(card, "date-block-container column is-narrow"); let dateContent = createDiv(dateContainer, 'card-content date-block has-text-centered'); let month = createSpan(dateContent, "title date-month is-size-4"); const monthNames = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ]; month.innerHTML = monthNames[startDate.getMonth()]; dateContent.appendChild(document.createElement("br")); let day = createSpan(dateContent, "subtitle is-size-1 date-num"); day.innerHTML = startDate.getDate(); let column = createDiv(card, "column"); let cardContent = createDiv(column, "event-info card-content"); let title = createNode(cardContent, "h3", "event-title is-size-5 has-text-left"); title.innerHTML = label; let eventDetails = createDiv(cardContent, "event-details has-text-left"); eventDetails.style.marginBottom = "0"; createNode(eventDetails, "i", "fas fa-university"); eventDetails.appendChild(document.createTextNode(" " + organiser)); eventDetails.appendChild(document.createElement("br")); createNode(eventDetails, "i", "fas fa-map-marked-alt"); eventDetails.appendChild(document.createTextNode(" ")); if (location) { if (location.link) { let anchor = document.createElement("a"); anchor.href = location.link; if (location.label) { anchor.innerHTML = location.label; } else { anchor.innerHTML = "Virtual (Zoom)"; } eventDetails.appendChild(anchor); } else { if (location.label) { eventDetails.appendChild(document.createTextNode(location.label)); } else { eventDetails.appendChild(document.createTextNode("Virtual (Zoom)")); } } } else { eventDetails.appendChild(document.createTextNode("Virtual (Zoom)")); } eventDetails.appendChild(document.createElement("br")); createNode(eventDetails, "i", "far fa-calendar-alt"); eventDetails.appendChild(document.createTextNode(" ")); const options = Intl.DateTimeFormat().resolvedOptions(); let time = document.createElement("time"); if (dateOnly) { time.innerHTML = startDate.toLocaleDateString(options.locale, {timeZone: options.timeZone }); } else { time.datetime = startDate.toISOString(); time.innerHTML = startDate.toLocaleString(options.locale, {timeZone: options.timeZone }); } eventDetails.appendChild(time); // <time datetime="2021-10-13"> Wednesday, October 13, 2021 at 10:00am if (links) { eventDetails.appendChild(document.createElement("br")); createNode(eventDetails, "i", "fas fa-link"); eventDetails.appendChild(document.createTextNode(" ")); for (var i = 0; i < links.length; i++) { if (links[i].link) { let anchor = document.createElement("a"); if (links[i].link.startsWith('/')) { anchor.href = fixGroupLinks(links[i].link); } else { anchor.href = links[i].link; } anchor.innerHTML = links[i].label; eventDetails.appendChild(anchor); if (i != links.length - 1) { eventDetails.appendChild(document.createTextNode(" | ")); } } } } if (description) { let desc = createNode(eventDetails, "p", ""); desc.innerHTML = description; } } function addCalls(parent, events, limit) { let weeksCalls = events.week; if (weeksCalls.length < limit) { limit = weeksCalls.length; } for (var i = 0; i < limit; i++) { let event = weeksCalls[i]; buildCard(parent, new Date(event.start.dateTime), false, event.name, event.summary, "IIIF Community", null, [{ 'label': 'View in Google Calendar', 'link': event.htmlLink }, { 'label': 'Group info page', 'link': events.meetings[event.id].link }]); } } function addEvents(parent, events, limit) { if (limit == 0 || events.length < limit) { limit = events.length; } for (var i = 0; i < limit; i++) { let event = events[i]; let start = null; let dateOnly = true; if (event.time.start.dateTime) { start = new Date(event.time.start.dateTime); dateOnly = false; } else { start = new Date(event.time.start.date); dateOnly = true; } buildCard(parent, start, dateOnly, event.label, event.summary, event.organiser, event.location, event.links); } } </script> <!-- Javascript --> <script> // sort out time elements to be timezone specific let timeTags = document.getElementsByTagName("time"); const options = Intl.DateTimeFormat().resolvedOptions(); for (var i = 0; i < timeTags.length; i++) { let time = timeTags[i]; if (time.dateTime && time.dateTime.includes("T")) { let dateObj = new Date(time.dateTime); time.innerHTML = dateObj.toLocaleString(options.locale, {timeZone: options.timeZone }); } } </script> <script> let parent = document.currentScript.parentElement; fetch('https://iiif.io/events/calendar.json') .then(response => response.json()) .then(data => addCalls(parent, data, 4)); </script> </div> <a class="button is-primary is-normal" href="/news-and-events/#call-calendar">View all</a> </div> <div id="call-calendar" class="content-tab" style="display:none;"> <iframe src="https://calendar.google.com/calendar/embed?title=IIIF%20Community%20Calendar%20%28Eastern%20Time%29&showPrint=0&height=600&wkst=1&bgcolor=%23ffffff&src=1hnm5h86n94ore0vnoo188ter8%40group.calendar.google.com&color=%23865A5A&ctz=America%2FNew_York" style="border-width:0; overflow:hidden; border: none;max-width:100%;" width="800" height="600"></iframe> </div> </div> <script src="/assets/js/tabSwitch.js"></script> </div></div> </section> <footer id="footer" class="footer"> <div class="container"> <div class="columns"> <div class="navbar-brand column is-half"> <a class="navbar-item" href="/"> <img src="/assets/images/logos/logo-sm.png" alt="IIIF logo" height="28"> <span class="brand-title blue-text">International Image Interoperability Framework</span> </a> <p>IIIF is a set of open standards for delivering high-quality, attributed digital objects online at scale. It’s also an international community developing and implementing the IIIF APIs. IIIF is backed by a consortium of leading cultural institutions.</p> </div> <div class="column"></div> <div class="column menu-column"> <h4>About</h4> <ul> <li> <a href="/get-started/how-iiif-works">How IIIF Works</a> </li> <li> <a href="https://iiif.io/api">APIs & Documentation</a> </li> <li> <a href="/demos">Demos</a> </li> <li> <a href="https://iiif.io/guides">Tutorials & Guides</a> </li> <li> <a href="/privacy">Privacy policy</a> </li> </ul> </div> <div class="column menu-column"> <h4>Stay Connected</h4> <ul> <li> <a href="/news-and-events">News & Events</a> </li> <li> <a href="/newsletter">Join Newsletter</a> </li> <li> <a href="/community/groups">Community Groups</a> </li> <li> <a href="/community/consortium">Consortium</a> </li> <li> <a href="/contact">Contact Us</a> </li> </ul> </div> </div> </div> </footer><script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script type="text/javascript" src="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script> <script type="text/javascript" src="/assets/js/carouselInit.js"></script> <!-- Read the Formbutton docs at formspree.io/formbutton/docs. See more examples at codepen.io/formspree --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css" /> <script src="https://formspree.io/js/formbutton-v1.min.js" defer></script> <script> /* paste this line in verbatim */ window.formbutton=window.formbutton||function(){(formbutton.q=formbutton.q||[]).push(arguments)}; /* customize formbutton below*/ formbutton("create", { action: "https://formspree.io/f/xbjwjlbn", title: "Feedback", fields: [ { type: "radio", name: "feedback_type", value: "Comment", label: "Comment", style: { display: "inline-block", "padding-right": "10px" } }, { type: "radio", name: "feedback_type", value: "Correction", label: "Correction", style: { display: "inline-block", "padding-right": "10px" } }, { type: "radio", name: "feedback_type", value: "Bug", label: "Bug", style: { display: "inline-block", "padding-right": "10px" } }, { type: "email", label: "Email:", name: "Email", required: true, placeholder: "your@email.com" }, { type: "textarea", label: "Message:", name: "Message", placeholder: "We want to hear from you! Enter your feedback here.", }, { type: "submit", value: "Submit" }, { type: "hidden", name: "Page", value: window.location.pathname.replaceAll('/','|'), style: { display: "none" } } ], buttonImg: "<i class='fas fa-comment' style='font-size:24px'/>", styles: { title: { backgroundColor: "#0d232d" }, button: { backgroundColor: "#0d232d" } } }); </script> </body> </html>