<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Opening attached images via html popups. in Mapping Questions</title>
    <link>https://community.esri.com/t5/mapping-questions/opening-attached-images-via-html-popups/m-p/314537#M3310</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Same issue -&amp;nbsp; have not found a solution and you have not had an answer.&amp;nbsp; This is quite annoying.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 May 2015 10:18:31 GMT</pubDate>
    <dc:creator>MichaelMenzies</dc:creator>
    <dc:date>2015-05-15T10:18:31Z</dc:date>
    <item>
      <title>Opening attached images via html popups.</title>
      <link>https://community.esri.com/t5/mapping-questions/opening-attached-images-via-html-popups/m-p/314536#M3309</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello all,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've created a file geodatabase in ArcMap 10.1, with a feature class to which I have attached images. I'm trying to figure out how to control how these images are displayed. All I have found so far are statements to the effect that the Windows default image viewer will be used, but this is not accurate. Instead, what is happening is: if I view the attachments via the Identify tool, they pop up in Windows Photo Viewer (which is in fact my default image viewer!); if I view the attachments via the HTML Popup tool, they open in a very basic window (some kind of internal Arc browser emulator, maybe? I don't know) within ArcMap; if I view the attachments via the Layer Properties: HTML Popup: Verify interface, they open in Internet Explorer (my default web browser).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like for attached images to open in Windows Photo Viewer no matter how I access them, or at least with some kind of image viewer that can zoom in and out. Internet Explorer would work just fine, too; so would ArcMap's built-in image viewer thing, if it could be told to behave in a more useful fashion. At present, the window in ArcMap in which attached images open has essentially no functionality. It's a window, the photo is in it, it has some scroll bars at the edges, that's it. This is inconvenient with images larger than the current screen resolution, since you can't view the whole image at once. Instead you're stuck zoomed in to 100% resolution and you've got to twiddle around with the scroll bars to look at different parts of the image. Making all the images smaller would solve that problem, but loses information; ideally you want to be able to view the whole image, or zoom in to details--this is why essentially every image viewer ever made *except* this thing in ArcMap can zoom in or out!&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So my question boils down to: How (either by changing the program used to open images, changing behavior of these image windows in ArcMap, whatever) do I get HTML Popups to display large resolution images in a way that allows me to zoom in and out?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 00:01:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/opening-attached-images-via-html-popups/m-p/314536#M3309</guid>
      <dc:creator>PatrickAlexander2</dc:creator>
      <dc:date>2015-02-18T00:01:48Z</dc:date>
    </item>
    <item>
      <title>Re: Opening attached images via html popups.</title>
      <link>https://community.esri.com/t5/mapping-questions/opening-attached-images-via-html-popups/m-p/314537#M3310</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Same issue -&amp;nbsp; have not found a solution and you have not had an answer.&amp;nbsp; This is quite annoying.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 May 2015 10:18:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/opening-attached-images-via-html-popups/m-p/314537#M3310</guid>
      <dc:creator>MichaelMenzies</dc:creator>
      <dc:date>2015-05-15T10:18:31Z</dc:date>
    </item>
    <item>
      <title>Re: Opening attached images via html popups.</title>
      <link>https://community.esri.com/t5/mapping-questions/opening-attached-images-via-html-popups/m-p/314538#M3311</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a layer package example here:&amp;nbsp; &lt;A href="http://www.arcgis.com/home/item.html?id=3ebe2a5107de48da89133c07acfb602f" title="http://www.arcgis.com/home/item.html?id=3ebe2a5107de48da89133c07acfb602f"&gt;http://www.arcgis.com/home/item.html?id=3ebe2a5107de48da89133c07acfb602f&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It has layer properties HTML popup configures with and XSL that allows for panning and zooming image attachments in the popup window.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is the default popup window configured to look like this:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="squirrellorig.png" class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/121490_squirrellorig.png" style="height: auto;" /&gt; &lt;/P&gt;&lt;P&gt;Using the mouse wheel or click you can zoom and pan on the picture.&lt;/P&gt;&lt;P&gt;&lt;IMG alt="squirrelzoomin.png" class="image-2 jive-image" src="https://community.esri.com/legacyfs/online/121491_squirrelzoomin.png" style="height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Additional image attachments are shown as buttons, so you can click on them and view them in the window.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Click "VIEW1.JPG"&lt;/P&gt;&lt;P&gt;&lt;IMG alt="vieworiginal.png" class="image-3 jive-image" src="https://community.esri.com/legacyfs/online/121492_vieworiginal.png" style="height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;You can also click on the "Numbered buttons" to rotate the image... for situations where the attached picture does not have desired orientation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;button 90&lt;/P&gt;&lt;P&gt;&lt;IMG alt="view90.png" class="image-4 jive-image" src="https://community.esri.com/legacyfs/online/121493_view90.png" style="height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;Button 180&lt;/P&gt;&lt;P&gt;&lt;IMG alt="view180.png" class="image-5 jive-image" src="https://community.esri.com/legacyfs/online/121494_view180.png" style="height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;Same popup also works nicely in Explorer Desktop.&lt;/P&gt;&lt;P&gt;&lt;IMG alt="explorerdesktop.png" class="image-6 jive-image" src="https://community.esri.com/legacyfs/online/121495_explorerdesktop.png" style="height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The XSL makes use of HTML5 and Javascript.&amp;nbsp;&amp;nbsp; I did not specifically check, but I believe this will work on computers that have IE9 and higher.&amp;nbsp;&amp;nbsp; I tested on a Windows 8.1 computer with IE11 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For the HTML Popup properties you also need to have "download Attachment data" checked, for this XSL to work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can get the layer from ArcGIS online&amp;nbsp; to get the XSL or you can copy it from this post (I tried using syntax highlight, but geonet didn't "like" the number of lines)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I stayed pretty much with the default html popup xsl,&amp;nbsp; you will likely want to size the canvas (set to 300 x 300 in XSL) to meet your needs.&amp;nbsp; Make sure to make the matching change everywhere it has a value of 300 for canvas.width and height as well as ctx.drawimage&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, I freely admit that I hacked this together...&amp;nbsp; with some attention to detail and a flair for style it could be made much better!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;lt;xsl:stylesheet version="1.0" xmlns:xsl="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http://www.w3.org/1999/XSL/Transform" rel="nofollow" target="_blank"&gt;http://www.w3.org/1999/XSL/Transform&lt;/A&gt;&lt;SPAN&gt;" xmlns:fo="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http://www.w3.org/1999/XSL/Format" rel="nofollow" target="_blank"&gt;http://www.w3.org/1999/XSL/Format&lt;/A&gt;&lt;SPAN&gt;" xmlns:msxsl="urn:schemas-microsoft-com:xslt"&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;!-- when using this XSL in ArcGIS for HTML Popup make sure that "download attachment data" is checked on the HTML Layer Properties Dialog. This style is set up to show pictures--&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;!-- attachments that have been downloaded to the computer --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="ignoreFieldNames" select="'|OBJECTID|Shape|Shape_Length|Shape_Area|ATTACHMENTID|REL_OBJECTID|CONTENT_TYPE|ATT_NAME|DATA_SIZE|DATA|'"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="headerRowColor" select="'#9CBCE2'"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="alternateRowColor" select="'#D4E4F3'"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:template match="/"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;html&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;head&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- The Next line allows HTML5 to "work" on IE9 and higher.&amp;nbsp; Does the trick for ArcGIS provided you are running a modern version of Windows.&amp;nbsp; The button style can be experimented with to make it look great.&amp;nbsp; --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&amp;gt;&amp;lt;/meta&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;button&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // display: block;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; font-size: 1.1em;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // font-weight: bold;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text-transform: uppercase;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // padding: 10px 15px;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // margin: 20px auto;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color: #233DA7;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background-color: #C7D9E0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // background: -webkit-linear-gradient(#888, #9CBCE2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // background: linear-gradient(#888, #9CBCE2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; border: 0 none;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // border-radius: 3px;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; // text-shadow: 0 -1px 0 #000;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; box-shadow: 0 1px 0 #666, 0 1.7px 0 #444, 0 2px 2px rgba(0,0,0,0.6);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor: pointer;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-transition: all 150ms ease;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transition: all 150ms ease;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;button:hover, button:focus&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt; //&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-animation: pulsate 1.2s linear infinite;&lt;/P&gt;&lt;P&gt; //&amp;nbsp;&amp;nbsp;&amp;nbsp; animation: pulsate 200.2s linear infinite;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@-webkit-keyframes pulsate&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; 0%&amp;nbsp;&amp;nbsp; { color: #ddd; text-shadow: 0 -1px 0 #000; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; //&amp;nbsp; 50%&amp;nbsp; { color: #fff; text-shadow: 0 -1px 0 #444, 0 0 5px #ffd, 0 0 8px #fff; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; //&amp;nbsp;&amp;nbsp; 100% { color: #ddd; text-shadow: 0 -1px 0 #000; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;@keyframes pulsate&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt; //&amp;nbsp;&amp;nbsp;&amp;nbsp; 0%&amp;nbsp;&amp;nbsp; { color: #ddd; text-shadow: 0 -1px 0 #000; }&lt;/P&gt;&lt;P&gt; //&amp;nbsp;&amp;nbsp; 50%&amp;nbsp; { color: #fff; text-shadow: 0 -1px 0 #444, 0 0 5px #ffd, 0 0 8px #fff; }&lt;/P&gt;&lt;P&gt; //&amp;nbsp;&amp;nbsp; 100% { color: #ddd; text-shadow: 0 -1px 0 #000; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;button:active&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; color: #49A1FF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // text-shadow: 0 -1px 0 #444, 0 0 5px #ffd, 0 0 8px #fff;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; box-shadow: 0 1px 0 #666, 0 2px 0 #444, 0 2px 2px rgba(0,0,0,0.9);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-transform: translateY(3px);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transform: translateY(3px);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -webkit-animation: none;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; animation: none;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;body style="margin:0px 0px 0px 0px;overflow:auto;background:#FFFFFF;"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;table style="font-family:Arial,Verdana,Times;font-size:12px;text-align:left;width:100%;border-collapse:collapse;padding:3px 3px 3px 3px"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr style="text-align:center;font-weight:bold;background:{$headerRowColor}"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldsDoc/Title" /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:apply-templates select="FieldsDoc/Attachments" /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;table style="font-family:Arial,Verdana,Times;font-size:12px;text-align:left;width:100%;border-spacing:0px; padding:3px 3px 3px 3px"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:when test="FieldsDoc/Fields/Field/FieldName"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:apply-templates select="FieldsDoc/Fields/Field/FieldName[not(contains($ignoreFieldNames, concat(concat('|', text()), '|')))]/.." /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:apply-templates select="FieldsDoc/Fields/Field" /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/html&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:template match="Attachments"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="imageCount" select="count(Attachment/ContentType[contains(., 'image')])"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="attachmentCount" select="count(Attachment)"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr bgcolor="{$headerRowColor}"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;table style="font-family:Arial,Verdana,Times;font-size:12px;text-align:left;width:100%;border-spacing:0px; padding:3px 3px 3px 3px"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="imageSrc" select="Attachment/ContentType[contains(., 'image')]/../FilePath"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:if test="$imageSrc"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr align="center"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- create variable to hold the path to the picture we want to display.. also correct the slashes in the path. --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:variable name="newtext" select="translate($imageSrc,'\','/')"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- create HTML5 Canvas to display are pictures in. --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;canvas width="300" height="300" &amp;gt;&amp;lt;/canvas&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;!-- escape out to do javascript stuff... make the magic happen --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;&lt;P&gt;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var imgAttach = new Image;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var origAttach = new Image;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgRotate = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; redraw = function() {}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; imgAttach.onload = function(){&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; //This section is for showing initial picture.&amp;nbsp; Origin positions were picked for Photo Attachments created by Collector for ArcGIS on an Iphone.&amp;nbsp; Modify to meet your desires.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 0){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,35,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 90){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 180){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 270){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,0,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 90) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 180) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 270) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,35,0,300 * imgAttach.width / imgAttach.height,300);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 90) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 180) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 270) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; window.onload = function(){&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This section if for mouse pan and zooming on the shown picture.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; function redraw(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Clear the entire canvas&lt;/P&gt;&lt;P&gt;&amp;nbsp; var p1 = ctx.transformedPoint(0,0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var p2 = ctx.transformedPoint(canvas.width,canvas.height);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.clearRect(p1.x,p1.y,p2.x-p1.x,p2.y-p1.y);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 0){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,35,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Analyze and position all images according to width height.&amp;nbsp; Values used were for Collector for ArcGIS Iphone photo attachment size dimension.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 90){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 180){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;gt; imgh &amp;amp;&amp;amp; imgRotate == 270){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,0,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 90) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 180) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh &amp;amp;&amp;amp; imgRotate == 270) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,35,0,300 * imgAttach.width / imgAttach.height,300);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 90) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 180) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw &amp;lt; imgh &amp;amp;&amp;amp; imgRotate == 270) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var lastX=canvas.width/2, lastY=canvas.height/2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var dragStart,dragged;&lt;/P&gt;&lt;P&gt;&amp;nbsp; canvas.addEventListener('mousedown',function(evt){&lt;/P&gt;&lt;P&gt;&amp;nbsp; document.body.style.mozUserSelect = document.body.style.webkitUserSelect = document.body.style.userSelect = 'none';&lt;/P&gt;&lt;P&gt;&amp;nbsp; lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);&lt;/P&gt;&lt;P&gt;&amp;nbsp; lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);&lt;/P&gt;&lt;P&gt;&amp;nbsp; dragStart = ctx.transformedPoint(lastX,lastY);&lt;/P&gt;&lt;P&gt;&amp;nbsp; dragged = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; },false);&lt;/P&gt;&lt;P&gt;&amp;nbsp; canvas.addEventListener('mousemove',function(evt){&lt;/P&gt;&lt;P&gt;&amp;nbsp; lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);&lt;/P&gt;&lt;P&gt;&amp;nbsp; lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);&lt;/P&gt;&lt;P&gt;&amp;nbsp; dragged = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (dragStart){&lt;/P&gt;&lt;P&gt;&amp;nbsp; var pt = ctx.transformedPoint(lastX,lastY);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.translate(pt.x-dragStart.x,pt.y-dragStart.y);&lt;/P&gt;&lt;P&gt;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; },false);&lt;/P&gt;&lt;P&gt;&amp;nbsp; canvas.addEventListener('mouseup',function(evt){&lt;/P&gt;&lt;P&gt;&amp;nbsp; dragStart = null;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (!dragged) zoom(evt.shiftKey ? -1 : 1 );&lt;/P&gt;&lt;P&gt;&amp;nbsp; },false);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var scaleFactor = 1.1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var zoom = function(clicks){&lt;/P&gt;&lt;P&gt;&amp;nbsp; var pt = ctx.transformedPoint(lastX,lastY);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.translate(pt.x,pt.y);&lt;/P&gt;&lt;P&gt;&amp;nbsp; var factor = Math.pow(scaleFactor,clicks);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.scale(factor,factor);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.translate(-pt.x,-pt.y);&lt;/P&gt;&lt;P&gt;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var handleScroll = function(evt){&lt;/P&gt;&lt;P&gt;&amp;nbsp; var delta = evt.wheelDelta ? evt.wheelDelta/40 : evt.detail ? -evt.detail : 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (delta) zoom(delta);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return evt.preventDefault() &amp;amp;&amp;amp; false;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; canvas.addEventListener('DOMMouseScroll',handleScroll,false);&lt;/P&gt;&lt;P&gt;&amp;nbsp; canvas.addEventListener('mousewheel',handleScroll,false);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }; ]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; imgAttach.src = '&amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;File:///&amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select="$newtext"/&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; origAttach.src = '&amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;File:///&amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select="$newtext"/&amp;gt;';&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Adds ctx.getTransform() - returns an SVGMatrix&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Adds ctx.transformedPoint(x,y) - returns an SVGPoint&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; function trackTransforms(ctx){&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; var svg = document.createElementNS("&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http://www.w3.org/2000/svg" rel="nofollow" target="_blank"&gt;http://www.w3.org/2000/svg&lt;/A&gt;&lt;SPAN&gt;",'svg');&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var xform = svg.createSVGMatrix();&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.getTransform = function(){ return xform; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var savedTransforms = [];&lt;/P&gt;&lt;P&gt;&amp;nbsp; var save = ctx.save;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.save = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; savedTransforms.push(xform.translate(0,0));&lt;/P&gt;&lt;P&gt;&amp;nbsp; return save.call(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; var restore = ctx.restore;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.restore = function(){&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform = savedTransforms.pop();&lt;/P&gt;&lt;P&gt;&amp;nbsp; return restore.call(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; var scale = ctx.scale;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.scale = function(sx,sy){&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform = xform.scaleNonUniform(sx,sy);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return scale.call(ctx,sx,sy);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; var rotate = ctx.rotate;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.rotate = function(radians){&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform = xform.rotate(radians*180/Math.PI);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return rotate.call(ctx,radians);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; var translate = ctx.translate;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.translate = function(dx,dy){&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform = xform.translate(dx,dy);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return translate.call(ctx,dx,dy);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; var transform = ctx.transform;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.transform = function(a,b,c,d,e,f){&lt;/P&gt;&lt;P&gt;&amp;nbsp; var m2 = svg.createSVGMatrix();&lt;/P&gt;&lt;P&gt;&amp;nbsp; m2.a=a; m2.b=b; m2.c=c; m2.d=d; m2.e=e; m2.f=f;&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform = xform.multiply(m2);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return transform.call(ctx,a,b,c,d,e,f);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; var setTransform = ctx.setTransform;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.setTransform = function(a,b,c,d,e,f){&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform.a = a;&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform.b = b;&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform.c = c;&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform.d = d;&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform.e = e;&lt;/P&gt;&lt;P&gt;&amp;nbsp; xform.f = f;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return setTransform.call(ctx,a,b,c,d,e,f);&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp; var pt&amp;nbsp; = svg.createSVGPoint();&lt;/P&gt;&lt;P&gt;&amp;nbsp; ctx.transformedPoint = function(x,y){&lt;/P&gt;&lt;P&gt;&amp;nbsp; pt.x=x; pt.y=y;&lt;/P&gt;&lt;P&gt;&amp;nbsp; return pt.matrixTransform(xform.inverse());&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt; ]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;&lt;/P&gt;&lt;P&gt; &amp;lt;!-- Create buttons to allow user to rotate image to proper orientation. IE does not read EXIF correctly, at this time, for pictures taken by phone held in 'wrong orientation'.&amp;nbsp; There may be some java script HTML magic to fix this... I haven't tried to figure it out yet. I did see some potential for using style CSS to honor EXIF orientation, but only supported by Mozzilla at this time?? --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;button onclick="myCanvas1()"&amp;gt;0&amp;lt;/button&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;&lt;P&gt;&amp;nbsp; function myCanvas1() {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = canvas.width;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRotate = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.rotate(0 * TO_RADIANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,35,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,0,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,35,0,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt; &amp;lt;button onclick="myCanvas2()"&amp;gt;90&amp;lt;/button&amp;gt;&lt;/P&gt;&lt;P&gt; &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;&lt;P&gt;&amp;nbsp; function myCanvas2() {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = canvas.width;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRotate = 90;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.translate(canvas.width / 2, canvas.height / 2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.rotate(90 * TO_RADIANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if (imgw == imgh) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt; ]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt; &amp;lt;button onclick="myCanvas3()"&amp;gt;180&amp;lt;/button&amp;gt;&lt;/P&gt;&lt;P&gt; &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;&lt;P&gt;&amp;nbsp; function myCanvas3() {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = canvas.width;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRotate = 180;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.translate(canvas.width / 2, canvas.height / 2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.rotate(180 * TO_RADIANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if (imgw == imgh) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;button onclick="myCanvas4()"&amp;gt;270&amp;lt;/button&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function myCanvas4() {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = canvas.width;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRotate = 270;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.translate(canvas.width / 2, canvas.height / 2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.rotate(270 * TO_RADIANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-115,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&amp;nbsp; else if (imgw == imgh) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-150,-150,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,-115,-150,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr align="center"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;button onclick="myCanvasorig()"&amp;gt;&amp;lt;xsl:value-of select="Attachment/ContentType[contains(., 'image')]/../Name" /&amp;gt;&amp;lt;/button&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function myCanvasorig() { TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = canvas.width;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRotate = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.rotate(0 * TO_RADIANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgAttach.src = origAttach.src;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,35,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,0,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,35,0,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:if test="($attachmentCount &amp;amp;gt; $imageCount) or not($imageCount = 1)"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr align="center"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;table style="font-family:Arial,Verdana,Times;font-size:12px;text-align:left;width:100%;border-spacing:0px; padding:3px 3px 3px 3px"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:for-each select="Attachment[position() mod 2 = 1]"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- Set Variable to make uniquely named button and canvas function pairings --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="i" select="position()" /&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr align="left" bgcolor="white"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:if test="(position() +1) mod 2"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:attribute name="bgcolor"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="$alternateRowColor"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Only create buttons to populate canvas with images. Note: for some reason this test also includes ContentType that starts with Video.--&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- Have not tried to figure outa solution for that yet.--&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:when test="ContentType[starts-with(., 'image')]"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Make Buttons for additional image attachments --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;nbsp; &amp;lt;button onclick="myCanvasa]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;xsl:value-of select="$i" /&amp;gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[()"&amp;gt;]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&amp;nbsp; &amp;lt;xsl:value-of select="Name" /&amp;gt; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;lt;/button&amp;gt;]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- Create variables to construct the necessary HTML5 path to the picture for display in the canvas --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="imageSrc2" select="FilePath"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="newtext2" select="translate($imageSrc2,'\','/')"/&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function myCanvasa]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="$i" /&amp;gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[() { TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = canvas.width;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRotate = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.rotate(0 * TO_RADIANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //set the picture to display&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgAttach.src = '&amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;File:///&amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select="$newtext2"/&amp;gt;';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp; //based on proportion set desired origin on canvas for display.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,35,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,0,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,35,0,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;!-- display hyperlink in popup window for non-image attachments. --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;a target="_blank"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:attribute name="href"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FilePath"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="Name" /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- do same as preceding for alternate column --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:when test="ContentType[starts-with(., 'image')]"&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;nbsp; &amp;lt;button onclick="myCanvasb]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;xsl:value-of select="$i" /&amp;gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[()"&amp;gt;]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&amp;nbsp; &amp;lt;xsl:value-of select="following-sibling::Attachment/Name" /&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;lt;/button&amp;gt;]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="imageSrc3" select="following-sibling::Attachment/FilePath"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:variable name="newtext3" select="translate($imageSrc3,'\','/')"/&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function myCanvasb]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;xsl:value-of select="$i" /&amp;gt;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TO_RADIANS = Math.PI/180;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canvas = document.getElementsByTagName('canvas')[0];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = canvas.width;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.width = 300; canvas.height = 300;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgRotate = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ctx = canvas.getContext('2d');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trackTransforms(ctx);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.rotate(0 * TO_RADIANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //set the image that displays when button is pressed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgAttach.src = '&amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;File:///&amp;lt;/xsl:text&amp;gt;&amp;lt;xsl:value-of select="$newtext3"/&amp;gt;';&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:text disable-output-escaping="yes" &amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgh = imgAttach.height&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imgw = imgAttach.width&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Set Canvas picture origin based on photo proportion.&amp;nbsp; origins used were for photos attached to feature with collector for ArcGIS on Iphone&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (imgw &amp;gt; imgh){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,35,300,300 * imgAttach.height / imgAttach.width);}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (imgw == imgh) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,0,0,300,300);}&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctx.drawImage(imgAttach,35,0,300 * imgAttach.width / imgAttach.height,300);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; redraw();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; ]]&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:text&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;a target="_blank"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:attribute name="href"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="following-sibling::Attachment/FilePath"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="following-sibling::Attachment/Name" /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:for-each&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:template match="Field"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:if test="(position() +1) mod 2"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:attribute name="bgcolor"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="$alternateRowColor"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:if test="FieldName"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldName"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:when test="FieldValue[starts-with(., 'www.')]"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;a target="_blank"&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;lt;xsl:attribute name="href"&amp;gt;&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http://" rel="nofollow" target="_blank"&gt;http://&lt;/A&gt;&lt;SPAN&gt;&amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:when test="FieldValue[starts-with(., 'http:')]"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;a target="_blank"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:attribute name="href"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:when test="FieldValue[starts-with(., 'https:')]"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;a target="_blank"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:attribute name="href"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:when test="FieldValue[starts-with(., '\\')]"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;a target="_blank"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:attribute name="href"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:attribute&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:when test="FieldValue[starts-with(., '&amp;amp;lt;img ')]"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue" disable-output-escaping="yes" /&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:when&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;xsl:value-of select="FieldValue"/&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:otherwise&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:choose&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- A thanks to the internet for whom which this hacked together XSL solution would have been quite difficult.. at least for me.&amp;nbsp; Much of the javascript and HTML5 --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;!-- used in this example can be found in repeated form from multiple sources by searching for HTML5 Canvas zoom pan rotate image --&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;/xsl:template&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 08 Aug 2015 00:17:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/mapping-questions/opening-attached-images-via-html-popups/m-p/314538#M3311</guid>
      <dc:creator>MarkBockenhauer</dc:creator>
      <dc:date>2015-08-08T00:17:29Z</dc:date>
    </item>
  </channel>
</rss>

