<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pool.calebcooper.ie/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Stockphoto.js</id>
	<title>MediaWiki:Gadget-Stockphoto.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pool.calebcooper.ie/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Stockphoto.js"/>
	<link rel="alternate" type="text/html" href="https://pool.calebcooper.ie/index.php?title=MediaWiki:Gadget-Stockphoto.js&amp;action=history"/>
	<updated>2026-04-08T17:47:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://pool.calebcooper.ie/index.php?title=MediaWiki:Gadget-Stockphoto.js&amp;diff=16307&amp;oldid=prev</id>
		<title>Caleb Cooper: Created page with &quot;/*  * StockPhoto - shows download and attribution buttons  *  * Revision: 2020-10-16  * Dependencies: mediawiki.util, mediawiki.user  * Source: https://commons.wikimedia.org/w...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pool.calebcooper.ie/index.php?title=MediaWiki:Gadget-Stockphoto.js&amp;diff=16307&amp;oldid=prev"/>
		<updated>2021-05-08T12:43:54Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;/*  * StockPhoto - shows download and attribution buttons  *  * Revision: 2020-10-16  * Dependencies: mediawiki.util, mediawiki.user  * Source: https://commons.wikimedia.org/w...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&lt;br /&gt;
 * StockPhoto - shows download and attribution buttons&lt;br /&gt;
 *&lt;br /&gt;
 * Revision: 2020-10-16&lt;br /&gt;
 * Dependencies: mediawiki.util, mediawiki.user&lt;br /&gt;
 * Source: https://commons.wikimedia.org/wiki/MediaWiki:Gadget-Stockphoto.js&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright 2010-09/10 by Magnus Manske&lt;br /&gt;
 * Copyright 2011-2020 Timo Tijhof&lt;br /&gt;
 *&lt;br /&gt;
 * Permission is hereby granted, free of charge, to any person obtaining&lt;br /&gt;
 * a copy of this software and associated documentation files (the&lt;br /&gt;
 * &amp;quot;Software&amp;quot;), to deal in the Software without restriction, including&lt;br /&gt;
 * without limitation the rights to use, copy, modify, merge, publish,&lt;br /&gt;
 * distribute, sublicense, and/or sell copies of the Software, and to&lt;br /&gt;
 * permit persons to whom the Software is furnished to do so, subject to&lt;br /&gt;
 * the following conditions:&lt;br /&gt;
 *&lt;br /&gt;
 * The above copyright notice and this permission notice shall be&lt;br /&gt;
 * included in all copies or substantial portions of the Software.&lt;br /&gt;
 *&lt;br /&gt;
 * THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND,&lt;br /&gt;
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&lt;br /&gt;
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND&lt;br /&gt;
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE&lt;br /&gt;
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION&lt;br /&gt;
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION&lt;br /&gt;
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&lt;br /&gt;
 */&lt;br /&gt;
/* eslint-env browser */&lt;br /&gt;
/* global $, mw */&lt;br /&gt;
(function () {&lt;br /&gt;
&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
var stockPhoto, modalLoad;&lt;br /&gt;
&lt;br /&gt;
if (&lt;br /&gt;
  // Already loaded&lt;br /&gt;
  window.stockPhoto&lt;br /&gt;
  // Unsupported skin&lt;br /&gt;
  || !/^(?:vector|monobook|timeless)$/.test(mw.config.get(&amp;#039;skin&amp;#039;))&lt;br /&gt;
  // Not a file page&lt;br /&gt;
  || mw.config.get(&amp;#039;wgCanonicalNamespace&amp;#039;) !== &amp;#039;File&amp;#039;&lt;br /&gt;
  // Not regular view&lt;br /&gt;
  || mw.config.get(&amp;#039;wgAction&amp;#039;) !== &amp;#039;view&amp;#039;&lt;br /&gt;
) {&lt;br /&gt;
  // Do not load&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @param {string} opt.pageName&lt;br /&gt;
 * @param {string} opt.originalUrl&lt;br /&gt;
 * @param {jQuery} opt.dom Keys $aut, $src, $attr, $credit, $licenseAut, $creator&lt;br /&gt;
 * @param {jQuery} opt.$licenses&lt;br /&gt;
 */&lt;br /&gt;
function File(opt) {&lt;br /&gt;
  var re, file = this;&lt;br /&gt;
&lt;br /&gt;
  // Strip namespace prefix and file suffix.&lt;br /&gt;
  // Use spaces for underscore.&lt;br /&gt;
  file.title = opt.pageName.replace(/^[^:]+:|\.[^.]+$/g, &amp;#039;&amp;#039;).replace(/_+/g, &amp;#039; &amp;#039;);&lt;br /&gt;
&lt;br /&gt;
  file.url = opt.originalUrl;&lt;br /&gt;
&lt;br /&gt;
  file.backlink = &amp;#039;https://commons.wikimedia.org/wiki/&amp;#039; + mw.util.wikiUrlencode(opt.pageName);&lt;br /&gt;
&lt;br /&gt;
  re = new RegExp(&amp;#039;\\.(?:&amp;#039; + stockPhoto.audio_only.map(mw.RegExp.escape).join(&amp;#039;|&amp;#039;) + &amp;#039;)$&amp;#039;, &amp;#039;i&amp;#039;);&lt;br /&gt;
  file.audio = re.test(opt.pageName);&lt;br /&gt;
&lt;br /&gt;
  this.gfdlNote = false;&lt;br /&gt;
  this.attrRequired = true;&lt;br /&gt;
  this.computeMetadata(opt.dom, opt.$licenses);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
File.prototype.getLicenseLabel = function (short) {&lt;br /&gt;
  if (/^cc[- ]/i.test(short)) {&lt;br /&gt;
    // CC-BY-SA-3.0 -&amp;gt; CC BY-SA 3.0&lt;br /&gt;
    // CC BY-SA 3.0 -&amp;gt; CC BY-SA 3.0&lt;br /&gt;
    return short.toUpperCase()&lt;br /&gt;
      .replace(/^(CC)-/, &amp;#039;$1 &amp;#039;)&lt;br /&gt;
      .replace(/[- ]([\d.]+)$/, &amp;#039; $1&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
  return short;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
File.prototype.getLicensePrio = function (short) {&lt;br /&gt;
  // 1. Public domain or CC 0&lt;br /&gt;
  return /^(public domain|cc0)/i.test(short) ? 1 :&lt;br /&gt;
    // 2. Creative Commons, e.g. &amp;quot;CC-BY-SA-#&amp;quot; (most templates),&lt;br /&gt;
    // or &amp;quot;CC BY-SA #&amp;quot; (some templates)&lt;br /&gt;
    /^cc[- ]by(-sa)?[- ]\d/i.test(short) ? 2 :&lt;br /&gt;
    // 3. Eveything else (e.g. GFDL)&lt;br /&gt;
    3;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Set #author, #attribution, and #licenses&lt;br /&gt;
File.prototype.computeMetadata = function (dom, $licenses) {&lt;br /&gt;
  var credit, creditHtml, attribution, licenses,&lt;br /&gt;
    via = stockPhoto.i18n.via_wikimedia_commons || &amp;#039;&amp;#039;,&lt;br /&gt;
    file = this,&lt;br /&gt;
    author = dom.$aut.text().trim(),&lt;br /&gt;
    source = dom.$src.text().trim();&lt;br /&gt;
&lt;br /&gt;
  // Clean up &amp;#039;author&amp;#039;&lt;br /&gt;
  if (dom.$aut.find(&amp;#039;.boilerplate&amp;#039;).length) {&lt;br /&gt;
    author = &amp;#039;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
  if (author.match(/^[Uu]nknown$/)) {&lt;br /&gt;
    author = &amp;#039;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
  author = author.replace(/\s*\(talk\)$/i, &amp;#039;&amp;#039;);&lt;br /&gt;
  if (author.indexOf(&amp;#039;Original uploader was&amp;#039;) !== -1) {&lt;br /&gt;
    author = author.replace(/\s*Original uploader was\s*/g, &amp;#039;&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
  if (author.slice(0, 3) === &amp;#039;[&amp;amp;#9660;]&amp;#039;) {&lt;br /&gt;
    author = author.slice(3); // ▼ (Black Down-Pointing Triangle)&lt;br /&gt;
    author = author.split(&amp;#039;Description&amp;#039;)[0].trim();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Clean up &amp;#039;source&amp;#039;&lt;br /&gt;
  if (dom.$src.find(&amp;#039;.boilerplate&amp;#039;).length) {&lt;br /&gt;
    source = &amp;#039;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
  if (dom.$src.find(&amp;#039;.int-own-work&amp;#039;).length) {&lt;br /&gt;
    source = &amp;#039;&amp;#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Fallback&lt;br /&gt;
  if (!author &amp;amp;&amp;amp; source.length &amp;lt; 50) {&lt;br /&gt;
    author = source;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Parse licenses&lt;br /&gt;
  licenses = [];&lt;br /&gt;
  $licenses.each(function () {&lt;br /&gt;
    var $tpl = $(this),&lt;br /&gt;
      short = $tpl.find(&amp;#039;.licensetpl_short&amp;#039;).text().trim();&lt;br /&gt;
    if (!short) { return; }&lt;br /&gt;
    licenses.push({&lt;br /&gt;
      link: $tpl.find(&amp;#039;.licensetpl_link&amp;#039;).text().trim(),&lt;br /&gt;
      short: short,&lt;br /&gt;
      label: file.getLicenseLabel(short),&lt;br /&gt;
      prio: file.getLicensePrio(short),&lt;br /&gt;
      link_req: $tpl.find(&amp;#039;.licensetpl_link_req&amp;#039;).text().trim(),&lt;br /&gt;
      attr_req: $tpl.find(&amp;#039;.licensetpl_attr_req&amp;#039;).text().trim()&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Use prefered if possible (like CommonsMetadata API)&lt;br /&gt;
  licenses.sort(function (a, b) { return a.prio - b.prio; });&lt;br /&gt;
  if (licenses[0] &amp;amp;&amp;amp; licenses[0].prio &amp;lt; 3) {&lt;br /&gt;
    licenses.splice(1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  file.licenses = licenses.map(function (v) {&lt;br /&gt;
    if (v.attr_req === &amp;#039;false&amp;#039;) {&lt;br /&gt;
      file.attrRequired = false;&lt;br /&gt;
    }&lt;br /&gt;
    if (v.short.indexOf(&amp;#039;GFDL&amp;#039;) !== -1) {&lt;br /&gt;
      file.gfdlNote = true;&lt;br /&gt;
    }&lt;br /&gt;
    if (v.link_req === &amp;#039;true&amp;#039; &amp;amp;&amp;amp; v.link) {&lt;br /&gt;
      return {&lt;br /&gt;
        html: &amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + v.link + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + mw.html.escape(v.label || &amp;#039;n/a&amp;#039;) + &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;,&lt;br /&gt;
        txt: v.label + &amp;#039; &amp;lt;&amp;#039; + v.link + &amp;#039;&amp;gt;&amp;#039;&lt;br /&gt;
      };&lt;br /&gt;
    } else {&lt;br /&gt;
      return { html: mw.html.escape(v.label || &amp;#039;n/a&amp;#039;), txt: v.label };&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Determine the credit line&lt;br /&gt;
  if (dom.$credit.length) {&lt;br /&gt;
    // Custom credit line&lt;br /&gt;
    credit = dom.$credit.text();&lt;br /&gt;
    creditHtml = dom.$credit.html();&lt;br /&gt;
  }&lt;br /&gt;
  if (!credit) {&lt;br /&gt;
    // No custom credit line&lt;br /&gt;
    // Default credit line: attribution + (if required) license + via promo&lt;br /&gt;
    if (dom.$attr.length) {&lt;br /&gt;
      attribution = dom.$attr.text();&lt;br /&gt;
    } else if (dom.$licenseAut.length) {&lt;br /&gt;
      attribution = dom.$licenseAut.text();&lt;br /&gt;
    } else if (dom.$creator.length) {&lt;br /&gt;
      attribution = dom.$creator.text();&lt;br /&gt;
    }&lt;br /&gt;
    if (!attribution) {&lt;br /&gt;
      // No custom attribution&lt;br /&gt;
      // Default attribution: author or (short) source.&lt;br /&gt;
      // If no author/source, point to the file description page instead.&lt;br /&gt;
      attribution = (author || stockPhoto.i18n.see_page_for_author);&lt;br /&gt;
    }&lt;br /&gt;
    credit = attribution + file.getLicense() + &amp;#039;, &amp;#039; + via;&lt;br /&gt;
    creditHtml = mw.html.element(&amp;#039;a&amp;#039;, {&lt;br /&gt;
      href: file.backlink&lt;br /&gt;
    }, attribution) + file.getLicense(true) + &amp;#039;, &amp;#039; + mw.html.escape(via);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  file.credit = credit;&lt;br /&gt;
  file.creditHtml = creditHtml;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
File.prototype.getLicense = function (useHtml) {&lt;br /&gt;
  var l1, l2,&lt;br /&gt;
  licenses = this.licenses.map(function (l) {&lt;br /&gt;
    return useHtml ? l.html : l.txt;&lt;br /&gt;
  });&lt;br /&gt;
  if (!licenses.length) {&lt;br /&gt;
    return &amp;#039;, &amp;#039; + stockPhoto.i18n.see_page_for_license;&lt;br /&gt;
  }&lt;br /&gt;
  if (licenses.length === 1) {&lt;br /&gt;
    return &amp;#039;, &amp;#039; + licenses[0];&lt;br /&gt;
  }&lt;br /&gt;
  if (licenses.length &amp;gt;= 2) {&lt;br /&gt;
    l2 = licenses.pop();&lt;br /&gt;
    l1 = licenses.pop();&lt;br /&gt;
    licenses.push(l1 + &amp;#039; &amp;#039; + stockPhoto.i18n.or + &amp;#039; &amp;#039; + l2);&lt;br /&gt;
  }&lt;br /&gt;
  return &amp;#039; (&amp;#039; + licenses.join(&amp;#039;, &amp;#039;) + &amp;#039;)&amp;#039;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
stockPhoto = {&lt;br /&gt;
  ui_icon_download: &amp;#039;https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Gnome-document-save.svg/50px-Gnome-document-save.svg.png&amp;#039;,&lt;br /&gt;
  ui_icon_web: &amp;#039;https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Gnome-emblem-web.svg/50px-Gnome-emblem-web.svg.png&amp;#039;,&lt;br /&gt;
  ui_icon_wiki: &amp;#039;https://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Tango_style_Wikipedia_Icon.svg/50px-Tango_style_Wikipedia_Icon.svg.png&amp;#039;,&lt;br /&gt;
  ui_icon_email: &amp;#039;https://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Gnome-mail-send.svg/50px-Gnome-mail-send.svg.png&amp;#039;,&lt;br /&gt;
  ui_icon_help: &amp;#039;https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Dialog-information_on.svg/50px-Dialog-information_on.svg.png&amp;#039;,&lt;br /&gt;
  ui_icon_remove: &amp;#039;https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Emblem-unreadable.svg/20px-Emblem-unreadable.svg.png&amp;#039;,&lt;br /&gt;
  information_template_hints: [&amp;#039;fileinfotpl_desc&amp;#039;, &amp;#039;fileinfotpl_src&amp;#039;],&lt;br /&gt;
  audio_only: [&amp;#039;midi&amp;#039;, &amp;#039;ogg&amp;#039;, &amp;#039;flac&amp;#039;],&lt;br /&gt;
  horizontal_ui: [&amp;#039;midi&amp;#039;, &amp;#039;ogg&amp;#039;, &amp;#039;flac&amp;#039;, &amp;#039;pdf&amp;#039;, &amp;#039;djvu&amp;#039;],&lt;br /&gt;
  ogg_icon: &amp;#039;/w/resources/assets/file-type-icons/fileicon-ogg.png&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
  init: function () {&lt;br /&gt;
    var $enable, $orgItems, has_information, $imgBox, xoff, yoff, horizontal, html, $base, re;&lt;br /&gt;
    // Original filetoc items&lt;br /&gt;
    $orgItems = $(&amp;#039;#filetoc&amp;#039;).find(&amp;#039;a[href=&amp;quot;#file&amp;quot;], a[href=&amp;quot;#filehistory&amp;quot;], a[href=&amp;quot;#filelinks&amp;quot;], a[href=&amp;quot;#metadata&amp;quot;], a[href=&amp;quot;#globalusage&amp;quot;]&amp;#039;).parent();&lt;br /&gt;
    if ($.cookie(&amp;#039;StockPhotoDisabled&amp;#039;)) {&lt;br /&gt;
      $enable = $(&amp;#039;&amp;lt;li&amp;gt;&amp;#039;)&lt;br /&gt;
      .append($(&amp;#039;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;#039;).text(stockPhoto.i18n.reuse))&lt;br /&gt;
      .click(function (e){&lt;br /&gt;
        e.preventDefault();&lt;br /&gt;
        $(this).remove();&lt;br /&gt;
        $.cookie(&amp;#039;StockPhotoDisabled&amp;#039;, null, {&lt;br /&gt;
          path: &amp;#039;/&amp;#039;&lt;br /&gt;
        });&lt;br /&gt;
        stockPhoto.init();&lt;br /&gt;
      });&lt;br /&gt;
      $(&amp;#039;#filetoc&amp;#039;).append($enable);&lt;br /&gt;
      $orgItems = $orgItems.add($enable);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    if (!$(&amp;#039;#file&amp;#039;).length) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    has_information = stockPhoto.information_template_hints.some(function (v) {&lt;br /&gt;
      return document.querySelector(&amp;#039;#&amp;#039; + v);&lt;br /&gt;
    });&lt;br /&gt;
    // No {{Information}}&lt;br /&gt;
    if (!has_information) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Has one or more problemtags&lt;br /&gt;
    // Changed to also include renames and normal deletes&lt;br /&gt;
    if (document.querySelector(&amp;#039;.nuke&amp;#039;)) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // * &amp;quot;.multipageimage&amp;quot;: For paged tiff files.&lt;br /&gt;
    // * &amp;quot;#file img&amp;quot;: For all other images (e.g. JPEG, PNG, SVG, etc.).&lt;br /&gt;
    // * &amp;quot;#file .mediaContainer&amp;quot;: For TMH-media (video files, audio files). We cannot use &amp;#039;mwEmbedPlayer&amp;#039; or &amp;#039;mwPlayerContainer&amp;#039; as those might not exist yet.&lt;br /&gt;
    $imgBox = $(&amp;#039;.multipageimage, #file img,#file .mediaContainer&amp;#039;);&lt;br /&gt;
    xoff = $imgBox.width() + 40;&lt;br /&gt;
    yoff = $(&amp;#039;#file&amp;#039;).position().top + 5;&lt;br /&gt;
&lt;br /&gt;
    stockPhoto.small_horizontal_layout = (&lt;br /&gt;
      // Small for logged-in&lt;br /&gt;
      !mw.user.isAnon()&lt;br /&gt;
      // Small for media with short height&lt;br /&gt;
      || ($imgBox.height() &amp;lt; 300)&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    re = new RegExp(&amp;#039;\\.(?:&amp;#039; + stockPhoto.horizontal_ui.map(mw.RegExp.escape).join(&amp;#039;|&amp;#039;) + &amp;#039;)$&amp;#039;, &amp;#039;i&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    horizontal = (&lt;br /&gt;
      // Anything small&lt;br /&gt;
      stockPhoto.small_horizontal_layout&lt;br /&gt;
      || re.test(mw.config.get(&amp;#039;wgTitle&amp;#039;))&lt;br /&gt;
      // Window width&lt;br /&gt;
      || (document.documentElement.clientWidth &amp;lt; 1030)&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    // Initialize values&lt;br /&gt;
    stockPhoto.share_this(-1);&lt;br /&gt;
    html = &amp;#039;&amp;lt;div class=&amp;quot;&amp;#039;;&lt;br /&gt;
    html += (horizontal ? &amp;#039;stockphoto-layout-horizontal&amp;#039; : &amp;#039;stockphoto-layout-vertical&amp;#039;);&lt;br /&gt;
    html += (stockPhoto.small_horizontal_layout ? &amp;#039; stockphoto-layout-horizontal-small&amp;#039; : &amp;#039;&amp;#039;);&lt;br /&gt;
    html += &amp;#039;&amp;quot;&amp;#039;;&lt;br /&gt;
    if (!horizontal) {&lt;br /&gt;
      if (document.querySelector(&amp;#039;body.rtl&amp;#039;)) {&lt;br /&gt;
        html += &amp;#039; style=&amp;quot;right: &amp;#039; + xoff + &amp;#039;px; top:&amp;#039; + yoff + &amp;#039;px;&amp;quot;&amp;#039;;&lt;br /&gt;
      } else {&lt;br /&gt;
        html += &amp;#039; style=&amp;quot;left: &amp;#039; + xoff + &amp;#039;px; top:&amp;#039; + yoff + &amp;#039;px;&amp;quot;&amp;#039;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    html += &amp;#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    $base = $(html).append(&lt;br /&gt;
      stockPhoto.add_button_row(stockPhoto.ui_icon_download, stockPhoto.call_download, stockPhoto.i18n.download, stockPhoto.i18n.all_sizes),&lt;br /&gt;
      stockPhoto.add_button_row(stockPhoto.ui_icon_web, stockPhoto.call_web, stockPhoto.i18n.use_this_file_web_short, stockPhoto.i18n.on_a_website),&lt;br /&gt;
      stockPhoto.add_button_row(stockPhoto.ui_icon_wiki, stockPhoto.call_wiki, stockPhoto.i18n.use_this_file_wiki_short, stockPhoto.i18n.on_a_wiki),&lt;br /&gt;
      stockPhoto.add_button_row(stockPhoto.ui_icon_email,&lt;br /&gt;
        &amp;#039;mailto:?subject=&amp;#039; + encodeURIComponent(stockPhoto.file.title) + &amp;#039;&amp;amp;body=&amp;#039; +&lt;br /&gt;
          encodeURIComponent(stockPhoto.file.backlink + &amp;#039;\n\n&amp;#039; + stockPhoto.file.credit),&lt;br /&gt;
        stockPhoto.i18n.email_link_short, stockPhoto.i18n.to_this_file),&lt;br /&gt;
      stockPhoto.add_button_row(stockPhoto.ui_icon_help,&lt;br /&gt;
        mw.util.getUrl(&amp;#039;Special:MyLanguage/Commons:Reusing_content_outside_Wikimedia&amp;#039;),&lt;br /&gt;
        stockPhoto.i18n.information, stockPhoto.i18n.about_reusing),&lt;br /&gt;
      $(&amp;#039;&amp;lt;span class=&amp;quot;stockphoto_buttonrow&amp;quot;&amp;gt;&amp;lt;a title=&amp;quot;&amp;#039; + stockPhoto.i18n.remove_icons + &amp;#039;&amp;quot; class=&amp;quot;stockphoto_buttonrow_icon&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;#039; + stockPhoto.ui_icon_remove + &amp;#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
        .click(function () {&lt;br /&gt;
          $.cookie(&amp;#039;StockPhotoDisabled&amp;#039;, true, {&lt;br /&gt;
            expires: 60, // days&lt;br /&gt;
            path: &amp;#039;/&amp;#039;&lt;br /&gt;
          });&lt;br /&gt;
          $base.remove();&lt;br /&gt;
          $orgItems.show();&lt;br /&gt;
        })&lt;br /&gt;
    );&lt;br /&gt;
    if (stockPhoto.small_horizontal_layout) {&lt;br /&gt;
      $orgItems.hide();&lt;br /&gt;
      $(&amp;#039;#filetoc&amp;#039;).append($base);&lt;br /&gt;
    } else {&lt;br /&gt;
      $(&amp;#039;#filetoc&amp;#039;).after($base);&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  add_button_row: function (icon_url, fn, txt, html) {&lt;br /&gt;
    var ret,&lt;br /&gt;
      size = 50;&lt;br /&gt;
    if (stockPhoto.small_horizontal_layout) {&lt;br /&gt;
      size = 20;&lt;br /&gt;
    }&lt;br /&gt;
    // HiDPI &amp;quot;Retina&amp;quot; icon&lt;br /&gt;
    var realSize = size;&lt;br /&gt;
    if (window.devicePixelRatio &amp;gt; 1.0) {&lt;br /&gt;
        realSize *= 2;&lt;br /&gt;
    }&lt;br /&gt;
    icon_url = icon_url.replace(&amp;#039;/50px-&amp;#039;, &amp;#039;/&amp;#039; + realSize + &amp;#039;px-&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    ret = document.createElement(typeof fn === &amp;#039;string&amp;#039; ? &amp;#039;a&amp;#039; : &amp;#039;span&amp;#039;);&lt;br /&gt;
    ret.className = &amp;#039;stockphoto_buttonrow&amp;#039;;&lt;br /&gt;
    ret.title = txt + &amp;#039; &amp;#039; + html;&lt;br /&gt;
    if (typeof fn === &amp;#039;string&amp;#039;) {&lt;br /&gt;
      ret.href = fn;&lt;br /&gt;
    } else {&lt;br /&gt;
      ret.role = &amp;#039;button&amp;#039;;&lt;br /&gt;
      ret.tabIndex = 0;&lt;br /&gt;
      ret.onclick = fn;&lt;br /&gt;
    }&lt;br /&gt;
    ret.innerHTML = &amp;#039;&amp;lt;span class=&amp;quot;stockphoto_buttonrow_icon&amp;quot;&amp;gt;&amp;lt;img width=&amp;quot;&amp;#039; + size + &amp;#039;&amp;quot; height=&amp;quot;&amp;#039; + size + &amp;#039;&amp;quot; src=&amp;quot;&amp;#039; + icon_url + &amp;#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;#039; +&lt;br /&gt;
      &amp;#039;&amp;lt;span class=&amp;quot;stockphoto_buttonrow_text&amp;quot;&amp;gt;&amp;lt;a&amp;gt;&amp;#039; + txt + &amp;#039;&amp;lt;/a&amp;gt;&amp;lt;small&amp;gt;&amp;#039; + html + &amp;#039;&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
    return ret;&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  stockphoto_get_thumbnail_url: function (width) {&lt;br /&gt;
    var thumb_url, alt_title, last;&lt;br /&gt;
    if (stockPhoto.file.audio) {&lt;br /&gt;
      return stockPhoto.ogg_icon;&lt;br /&gt;
    }&lt;br /&gt;
    alt_title = mw.config.get(&amp;#039;wgCanonicalNamespace&amp;#039;) + &amp;#039;:&amp;#039; + mw.config.get(&amp;#039;wgTitle&amp;#039;);&lt;br /&gt;
    $(&amp;#039;#file img&amp;#039;).each(function () {&lt;br /&gt;
      var i = this.alt;&lt;br /&gt;
      if (i &amp;amp;&amp;amp; i !== alt_title) {&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
      thumb_url = this.src.split(&amp;#039;/&amp;#039;);&lt;br /&gt;
    });&lt;br /&gt;
    // Special case of mwEmbed rewrite&lt;br /&gt;
    if (!thumb_url &amp;amp;&amp;amp; $(&amp;#039;.mwEmbedPlayer img&amp;#039;).length) {&lt;br /&gt;
      return $(&amp;#039;.mwEmbedPlayer img&amp;#039;).attr(&amp;#039;src&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
    if (!thumb_url || !thumb_url.length)&lt;br /&gt;
      return;&lt;br /&gt;
&lt;br /&gt;
    last = thumb_url.pop().replace(/^\d+px-/, width + &amp;#039;px-&amp;#039;);&lt;br /&gt;
    thumb_url.push(last);&lt;br /&gt;
    thumb_url = thumb_url.join(&amp;#039;/&amp;#039;);&lt;br /&gt;
    return thumb_url;&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  is_audio_video_asset: function (url) {&lt;br /&gt;
    return /(ogv|ogg|oga|ebm|wav)$/.test(url.slice(-3));&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  make_html_textarea: function () {&lt;br /&gt;
    var width, type, height, thumb_url, t;&lt;br /&gt;
&lt;br /&gt;
    width = $(&amp;#039;#stockphoto_html_select&amp;#039;).val();&lt;br /&gt;
    type = $(&amp;#039;input[name=&amp;quot;stockphoto_code_type&amp;quot;]:checked&amp;#039;).val();&lt;br /&gt;
&lt;br /&gt;
    // Iframe share for mwEmbed player&lt;br /&gt;
    if (stockPhoto.is_audio_video_asset(stockPhoto.file.backlink) &amp;amp;&amp;amp; type === &amp;#039;html&amp;#039;) {&lt;br /&gt;
      // Get the ratio (from html or from mwEmbed player)&lt;br /&gt;
      height = $(&amp;#039;.mwEmbedPlayer&amp;#039;).length&lt;br /&gt;
        ? width * $(&amp;#039;.mwEmbedPlayer&amp;#039;).height() / $(&amp;#039;.mwEmbedPlayer&amp;#039;).width()&lt;br /&gt;
        : width * $(&amp;#039;#file img,#file video&amp;#039;).height() / $(&amp;#039;#file img,#file video&amp;#039;).width();&lt;br /&gt;
&lt;br /&gt;
      if (height === 0) {&lt;br /&gt;
        // For audio that has zero height&lt;br /&gt;
        height = 20;&lt;br /&gt;
      }&lt;br /&gt;
      $(&amp;#039;#stockphoto_html&amp;#039;).text(&amp;#039;&amp;lt;iframe src=&amp;quot;&amp;#039; + stockPhoto.file.backlink +&lt;br /&gt;
        &amp;#039;?embedplayer=yes&amp;quot; width=&amp;quot;&amp;#039; + width + &amp;#039;&amp;quot; height=&amp;quot;&amp;#039;+ height + &amp;#039;&amp;quot; frameborder=&amp;quot;0&amp;quot; &amp;gt;&amp;lt;/iframe&amp;gt;&amp;#039;);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    thumb_url = stockPhoto.stockphoto_get_thumbnail_url(width);&lt;br /&gt;
&lt;br /&gt;
    if (type === &amp;#039;html&amp;#039;) {&lt;br /&gt;
      t = &amp;#039;&amp;lt;a title=&amp;quot;&amp;#039; + mw.html.escape(stockPhoto.file.credit) +&lt;br /&gt;
        &amp;#039;&amp;quot; href=&amp;quot;&amp;#039; + stockPhoto.file.backlink + &amp;#039;&amp;quot;&amp;gt;&amp;lt;img width=&amp;quot;&amp;#039; + width + &amp;#039;&amp;quot; alt=&amp;quot;&amp;#039; +&lt;br /&gt;
        mw.html.escape(stockPhoto.file.title) + &amp;#039;&amp;quot; src=&amp;quot;&amp;#039; + thumb_url + &amp;#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
    } else if (type === &amp;#039;bbcode&amp;#039;) {&lt;br /&gt;
      t = &amp;#039;[url=&amp;#039; + stockPhoto.file.backlink + &amp;#039;][img]&amp;#039; +&lt;br /&gt;
        thumb_url + &amp;#039;[/img][/url]\n[url=&amp;#039; + stockPhoto.file.backlink + &amp;#039;]&amp;#039; +&lt;br /&gt;
        stockPhoto.file.title + &amp;#039;[/url]\n&amp;#039; + stockPhoto.file.credit;&lt;br /&gt;
    }&lt;br /&gt;
    $(&amp;#039;#stockphoto_html&amp;#039;).text(t);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  // Event &amp;#039;change&amp;#039; on input#stockphoto_attribution_html&lt;br /&gt;
  refresh_attribution: function () {&lt;br /&gt;
    $(&amp;#039;#stockphoto_attribution&amp;#039;).val(stockPhoto.file[this.checked ? &amp;#039;creditHtml&amp;#039; : &amp;#039;credit&amp;#039;]);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  createDialogRow: function (label, prefill, id, prepend, append) {&lt;br /&gt;
    var idtext = id ? (&amp;#039;id=&amp;quot;&amp;#039; + id + &amp;#039;&amp;quot;&amp;#039;) : &amp;#039;&amp;#039;;&lt;br /&gt;
    return &amp;#039;&amp;lt;div class=&amp;quot;stockphoto_dialog_row&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;#039; + label + &amp;#039;:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;#039; + (prepend || &amp;#039;&amp;#039;) + &amp;#039;&amp;lt;input type=&amp;quot;text&amp;quot; readonly &amp;#039; + idtext + &amp;#039; onclick=&amp;quot;select()&amp;quot; value=&amp;quot;&amp;#039; + mw.html.escape(prefill) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + (append || &amp;#039;&amp;#039;) + &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  share_this: function (ui_mode) {&lt;br /&gt;
    var widths, html, dtitle, dl_links, best_fit,&lt;br /&gt;
      pixelStr, widthSearchMatch, imageWidth, power, i;&lt;br /&gt;
&lt;br /&gt;
    stockPhoto.file = new File({&lt;br /&gt;
      pageName: mw.config.get(&amp;#039;wgPageName&amp;#039;),&lt;br /&gt;
      originalUrl: $(&amp;#039;div.fullMedia a&amp;#039;).prop(&amp;#039;href&amp;#039;) || &amp;#039;&amp;#039;,&lt;br /&gt;
      dom: {&lt;br /&gt;
        $src: $(&amp;#039;#fileinfotpl_src + td&amp;#039;),&lt;br /&gt;
        $aut: $(&amp;#039;#fileinfotpl_aut + td&amp;#039;),&lt;br /&gt;
        $attr: $(&amp;#039;.licensetpl_attr&amp;#039;).eq(0),&lt;br /&gt;
        $credit: $(&amp;#039;#fileinfotpl_credit + td&amp;#039;),&lt;br /&gt;
        $creator: $(&amp;#039;#creator&amp;#039;),&lt;br /&gt;
        $licenseAut: $(&amp;#039;.licensetpl_aut&amp;#039;).eq(0)&lt;br /&gt;
      },&lt;br /&gt;
      $licenses: $(&amp;#039;.licensetpl&amp;#039;)&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Grab width in pixel from DOM, and trim it down&lt;br /&gt;
    // This does not yet work for SVGs or videos&lt;br /&gt;
    widths = [];&lt;br /&gt;
    try {&lt;br /&gt;
      pixelStr = $(&amp;#039;.fileInfo&amp;#039;).contents().get(0).data;&lt;br /&gt;
      widthSearchMatch = /([0-9 ,.\u00a0]+)\s*×/.exec(pixelStr);&lt;br /&gt;
      imageWidth = parseInt(widthSearchMatch[1].replace(/[ ,.\u00a0]/g, &amp;#039;&amp;#039;), 10);&lt;br /&gt;
      if (isNaN(imageWidth)) {&lt;br /&gt;
        throw new Error(&amp;#039;Cannot parse&amp;#039;);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Calculate to which power of two we should go&lt;br /&gt;
      power = Math.floor(Math.log(imageWidth) / Math.log(2));&lt;br /&gt;
&lt;br /&gt;
      // Push 6 width to array&lt;br /&gt;
      for (i = 0; i &amp;lt; 5; i++) {&lt;br /&gt;
        widths.push(Math.pow(2, power-i));&lt;br /&gt;
      }&lt;br /&gt;
      widths = widths.reverse();&lt;br /&gt;
&lt;br /&gt;
    } catch (e) {&lt;br /&gt;
      widths = [640, 800, 1024];&lt;br /&gt;
    }&lt;br /&gt;
    if (ui_mode === -1) {&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    modalLoad = modalLoad || mw.loader.using(&amp;#039;jquery.ui&amp;#039;);&lt;br /&gt;
    html = &amp;#039;&amp;#039;;&lt;br /&gt;
    html += stockPhoto.createDialogRow(stockPhoto.i18n.page_url, stockPhoto.file.backlink);&lt;br /&gt;
    html += stockPhoto.createDialogRow(stockPhoto.i18n.file_url, stockPhoto.file.url);&lt;br /&gt;
    html += stockPhoto.createDialogRow(stockPhoto.i18n.attribution, stockPhoto.file.credit,&lt;br /&gt;
      &amp;#039;stockphoto_attribution&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;blockquote class=&amp;quot;stockphoto_attribution_preview&amp;quot; onclick=&amp;quot;nextSibling.select();return false;&amp;quot;&amp;gt;&amp;#039; + stockPhoto.file.creditHtml + &amp;#039;&amp;lt;/blockquote&amp;gt;&amp;#039;,&lt;br /&gt;
      &amp;#039;&amp;lt;input id=&amp;quot;stockphoto_attribution_html&amp;quot; type=&amp;quot;checkbox&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;stockphoto_attribution_html&amp;quot;&amp;gt;&amp;#039; + stockPhoto.i18n.html + &amp;#039;&amp;lt;/label&amp;gt;&amp;#039;&lt;br /&gt;
    );&lt;br /&gt;
    if (stockPhoto.file.gfdlNote) {&lt;br /&gt;
      html += &amp;#039;&amp;lt;span class=&amp;quot;stockphoto_note&amp;quot;&amp;gt;&amp;#039; + stockPhoto.i18n.gfdl_warning + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    if (!stockPhoto.file.attrRequired) {&lt;br /&gt;
      html += &amp;#039;&amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;stockphoto_note&amp;quot;&amp;gt;&amp;#039; + stockPhoto.i18n.no_attr + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    switch (ui_mode) {&lt;br /&gt;
    case 1:&lt;br /&gt;
&lt;br /&gt;
      dtitle = stockPhoto.i18n.download_this_file;&lt;br /&gt;
      if (stockPhoto.file.url) {&lt;br /&gt;
        html += &amp;#039;&amp;lt;div&amp;gt;&amp;lt;b&amp;gt;&amp;#039; + stockPhoto.i18n.download_image_file + &amp;#039;:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;#039;;&lt;br /&gt;
        dl_links = [];&lt;br /&gt;
        widths.forEach(function (v) {&lt;br /&gt;
          if (stockPhoto.file.audio) {&lt;br /&gt;
            return;&lt;br /&gt;
          }&lt;br /&gt;
          dl_links.push(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + stockPhoto.stockphoto_get_thumbnail_url(v) + &amp;#039;&amp;quot; download&amp;gt;&amp;#039; + v + &amp;#039;px&amp;lt;/a&amp;gt;&amp;#039;);&lt;br /&gt;
        });&lt;br /&gt;
        dl_links.push(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039; + stockPhoto.file.url + &amp;#039;&amp;quot; download&amp;gt;&amp;#039; + stockPhoto.i18n.full_resolution + &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;);&lt;br /&gt;
        if (dl_links.length) {&lt;br /&gt;
          html += dl_links.join(&amp;#039; | &amp;#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
          html += &amp;#039;&amp;lt;i&amp;gt;&amp;#039; + stockPhoto.i18n.not_available + &amp;#039;&amp;lt;/i&amp;gt;&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
        html += &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 2:&lt;br /&gt;
      dtitle = stockPhoto.i18n.use_this_file_web;&lt;br /&gt;
      html += &amp;#039;&amp;lt;div class=&amp;quot;stockphoto_dialog_row&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;float: right;&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
      html += &amp;#039;&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;stockphoto_code_type&amp;quot; value=&amp;quot;html&amp;quot; id=&amp;quot;stockphoto_code_type_html&amp;quot; onchange=&amp;quot;stockPhoto.make_html_textarea();&amp;quot; checked&amp;gt;&amp;lt;label for=&amp;quot;stockphoto_code_type_html&amp;quot;&amp;gt;&amp;#039; + stockPhoto.i18n.html + &amp;#039;&amp;lt;/label&amp;gt; &amp;#039;;&lt;br /&gt;
      html += &amp;#039;&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;stockphoto_code_type&amp;quot; value=&amp;quot;bbcode&amp;quot; id=&amp;quot;stockphoto_code_type_bbcode&amp;quot; onchange=&amp;quot;stockPhoto.make_html_textarea();&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;stockphoto_code_type_bbcode&amp;quot;&amp;gt;&amp;#039; + stockPhoto.i18n.bbcode + &amp;#039;&amp;lt;/label&amp;gt; &amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      html += &amp;#039;&amp;lt;select id=&amp;quot;stockphoto_html_select&amp;quot; onchange=&amp;quot;stockPhoto.make_html_textarea();&amp;quot;&amp;gt;&amp;#039;;&lt;br /&gt;
      best_fit = 75;&lt;br /&gt;
      if (stockPhoto.file.audio) {&lt;br /&gt;
        best_fit = 120;&lt;br /&gt;
        html += &amp;#039;&amp;lt;option value=&amp;quot;120&amp;quot;&amp;gt;120&amp;#039; + stockPhoto.i18n.px_wide_icon + &amp;#039;&amp;lt;/option&amp;gt;&amp;#039;;&lt;br /&gt;
      } else {&lt;br /&gt;
        widths.forEach(function (v) {&lt;br /&gt;
          if (v &amp;lt;= $(&amp;#039;#file img&amp;#039;).width()) {&lt;br /&gt;
            best_fit = v;&lt;br /&gt;
          }&lt;br /&gt;
          html += &amp;#039;&amp;lt;option value=&amp;quot;&amp;#039; + v + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + v + stockPhoto.i18n.px_wide + &amp;#039;&amp;lt;/option&amp;gt;&amp;#039;;&lt;br /&gt;
        });&lt;br /&gt;
      }&lt;br /&gt;
      html += &amp;#039;&amp;lt;/select&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
      html += &amp;#039;&amp;lt;b&amp;gt;&amp;#039; + stockPhoto.i18n.embed_this_file + &amp;#039;&amp;lt;/b&amp;gt;&amp;lt;textarea onclick=&amp;quot;select()&amp;quot; id=&amp;quot;stockphoto_html&amp;quot; readonly&amp;gt;&amp;#039;;&lt;br /&gt;
      html += &amp;#039;&amp;lt;/textarea&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
      break;&lt;br /&gt;
&lt;br /&gt;
    case 3:&lt;br /&gt;
      dtitle = stockPhoto.i18n.use_this_file_wiki;&lt;br /&gt;
&lt;br /&gt;
      html = stockPhoto.createDialogRow(stockPhoto.i18n.thumbnail, &amp;#039;[[File:&amp;#039; + mw.config.get(&amp;#039;wgTitle&amp;#039;) + &amp;#039;|thumb|&amp;#039; + stockPhoto.file.title + &amp;#039;]]&amp;#039;);&lt;br /&gt;
      html += stockPhoto.createDialogRow(stockPhoto.i18n.image, &amp;#039;[[File:&amp;#039; + mw.config.get(&amp;#039;wgTitle&amp;#039;) + &amp;#039;|&amp;#039; + stockPhoto.file.title + &amp;#039;]]&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    modalLoad.done(function () {&lt;br /&gt;
      $(&amp;#039;&amp;lt;div style=&amp;quot;display: none;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;).html(html).dialog({&lt;br /&gt;
        modal: true,&lt;br /&gt;
        width: 610,&lt;br /&gt;
        height: &amp;#039;auto&amp;#039;,&lt;br /&gt;
        title: dtitle,&lt;br /&gt;
        close: function () {&lt;br /&gt;
          $(this).remove();&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      $(&amp;#039;#stockphoto_html_select&amp;#039;).val(best_fit);&lt;br /&gt;
&lt;br /&gt;
      stockPhoto.make_html_textarea();&lt;br /&gt;
      $(&amp;#039;#stockphoto_attribution_html&amp;#039;).on(&amp;#039;change&amp;#039;, stockPhoto.refresh_attribution);&lt;br /&gt;
    });&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  call_download: function () {&lt;br /&gt;
    stockPhoto.share_this(1);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  call_web: function () {&lt;br /&gt;
    stockPhoto.share_this(2);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  call_wiki: function () {&lt;br /&gt;
    stockPhoto.share_this(3);&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
  i18n: {&lt;br /&gt;
    // Download:&lt;br /&gt;
    // - Button label&lt;br /&gt;
    download: &amp;#039;Download&amp;#039;,&lt;br /&gt;
    // - Button caption&lt;br /&gt;
    all_sizes: &amp;#039;all sizes&amp;#039;,&lt;br /&gt;
    // - Dialog title&lt;br /&gt;
    download_this_file: &amp;#039;Download this file&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
    // Use web:&lt;br /&gt;
    // - Button label&lt;br /&gt;
    use_this_file_web_short: &amp;#039;Use this file&amp;#039;,&lt;br /&gt;
    // - Button caption&lt;br /&gt;
    on_a_website: &amp;#039;on the web&amp;#039;,&lt;br /&gt;
    // - Dialog title&lt;br /&gt;
    use_this_file_web: &amp;#039;Use this file on the web&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
    // Use wiki:&lt;br /&gt;
    // - Button label&lt;br /&gt;
    use_this_file_wiki_short: &amp;#039;Use this file&amp;#039;,&lt;br /&gt;
    // - Button caption&lt;br /&gt;
    on_a_wiki: &amp;#039;on a wiki&amp;#039;,&lt;br /&gt;
    // - Dialog title&lt;br /&gt;
    use_this_file_wiki: &amp;#039;Use this file on a wiki&amp;#039;,&lt;br /&gt;
    thumbnail: &amp;#039;Thumbnail&amp;#039;,&lt;br /&gt;
    image: &amp;#039;Image&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
    // Email:&lt;br /&gt;
    // - Button label&lt;br /&gt;
    email_link_short: &amp;#039;Email a link&amp;#039;,&lt;br /&gt;
    // - Button caption&lt;br /&gt;
    to_this_file: &amp;#039;to this file&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
    // Reuse:&lt;br /&gt;
    // - Button label&lt;br /&gt;
    information: &amp;#039;Information&amp;#039;,&lt;br /&gt;
    // - Button caption&lt;br /&gt;
    about_reusing: &amp;#039;about reusing&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
    // Disable (button caption)&lt;br /&gt;
    remove_icons: &amp;#039;Remove these icons&amp;#039;,&lt;br /&gt;
    // Enable (button label)&lt;br /&gt;
    reuse: &amp;#039;Reuse this file&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
    via_wikimedia_commons: &amp;#039;via Wikimedia Commons&amp;#039;,&lt;br /&gt;
    see_page_for_author: &amp;#039;See page for author&amp;#039;,&lt;br /&gt;
    see_page_for_license: &amp;#039;see page for license&amp;#039;,&lt;br /&gt;
    page_url: &amp;#039;Page URL&amp;#039;,&lt;br /&gt;
    file_url: &amp;#039;File URL&amp;#039;,&lt;br /&gt;
    attribution: &amp;#039;Attribution&amp;#039;,&lt;br /&gt;
    no_attr: &amp;#039;Attribution not legally required&amp;#039;,&lt;br /&gt;
    or: &amp;#039;or&amp;#039;,&lt;br /&gt;
    gfdl_warning: &amp;#039;Using this file might require attaching a full copy of the &amp;lt;a href=&amp;quot;//en.wikipedia.org/wiki/GNU_Free_Documentation_License&amp;quot;&amp;gt;GFDL&amp;lt;/a&amp;gt;&amp;#039;,&lt;br /&gt;
    download_image_file: &amp;#039;Download image file&amp;#039;,&lt;br /&gt;
    full_resolution: &amp;#039;Full resolution&amp;#039;,&lt;br /&gt;
    not_available: &amp;#039;not available&amp;#039;,&lt;br /&gt;
    share_this_file: &amp;#039;Share this file&amp;#039;,&lt;br /&gt;
    embed_this_file: &amp;#039;Embed this file&amp;#039;,&lt;br /&gt;
    html: &amp;#039;HTML&amp;#039;,&lt;br /&gt;
    bbcode: &amp;#039;BBCode&amp;#039;,&lt;br /&gt;
    px_wide_icon: &amp;#039;px wide (icon)&amp;#039;,&lt;br /&gt;
    px_wide: &amp;#039;px wide&amp;#039;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Export&lt;br /&gt;
window.stockPhoto = stockPhoto;&lt;br /&gt;
&lt;br /&gt;
if (mw.config.get(&amp;#039;wgUserLanguage&amp;#039;) === &amp;#039;en&amp;#039;) {&lt;br /&gt;
  $(stockPhoto.init);&lt;br /&gt;
} else {&lt;br /&gt;
  $.ajax({&lt;br /&gt;
    url: mw.config.get(&amp;#039;wgScript&amp;#039;) + &amp;#039;?title=&amp;#039; + mw.util.wikiUrlencode(&amp;#039;MediaWiki:Gadget-Stockphoto.js/&amp;#039; + mw.config.get(&amp;#039;wgUserLanguage&amp;#039;)) + &amp;#039;&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;#039;,&lt;br /&gt;
    dataType: &amp;#039;script&amp;#039;,&lt;br /&gt;
    // For performance, use &amp;#039;crossDomain&amp;#039; to trigger &amp;lt;script&amp;gt; instead of XHR.&lt;br /&gt;
    // Browsers do cache scripts, but not XHR.&lt;br /&gt;
    crossDomain: true,&lt;br /&gt;
    cache: true&lt;br /&gt;
  }).then(stockPhoto.init);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// on subpages [[MediaWiki:stockPhoto.js/langcode]]:&lt;br /&gt;
// stockPhoto.i18n = { ... }&lt;br /&gt;
}());&lt;/div&gt;</summary>
		<author><name>Caleb Cooper</name></author>
	</entry>
</feed>