﻿// FancyZoomHTML.js - v1.0
// Used to draw necessary HTML elements for FancyZoom
//
// Copyright (c) 2008 Cabel Sasser / Panic Inc
// All rights reserved.

function insertZoomHTML() {

    // All of this junk creates the three <div>'s used to hold the closebox, image, and zoom shadow.

    var inBody = document.getElementsByTagName("body").item(0);

    // WAIT SPINNER

    var inSpinbox = document.createElement("div");
    inSpinbox.setAttribute('id', 'ZoomSpin');
    inSpinbox.style.position = 'absolute';
    inSpinbox.style.left = '10px';
    inSpinbox.style.top = '10px';
    inSpinbox.style.visibility = 'hidden';
    inSpinbox.style.zIndex = '525';
    inBody.insertBefore(inSpinbox, inBody.firstChild);

    var inSpinImage = document.createElement("img");
    inSpinImage.setAttribute('id', 'SpinImage');
    inSpinImage.setAttribute('src', zoomImagesURI + 'zoom-spin-1.png');
    inSpinbox.appendChild(inSpinImage);

    // ZOOM IMAGE
    //
    // <div id="ZoomBox">
    //   <a href="javascript:zoomOut();"><img src="/images/spacer.gif" id="ZoomImage" border="0"></a> <!-- THE IMAGE -->
    //   <div id="ZoomClose">
    //     <a href="javascript:zoomOut();"><img src="/images/closebox.png" width="30" height="30" border="0"></a>
    //   </div>
    // </div>

    var inZoombox = document.createElement("div");
    inZoombox.setAttribute('id', 'ZoomBox');

    inZoombox.style.position = 'absolute';
    inZoombox.style.left = '10px';
    inZoombox.style.top = '10px';
    inZoombox.style.visibility = 'hidden';
    inZoombox.style.zIndex = '499';

    inBody.insertBefore(inZoombox, inSpinbox.nextSibling);

    var inImage1 = document.createElement("img");
    inImage1.onclick = function(event) { zoomOut(this, event); return false; };
    inImage1.setAttribute('src', zoomImagesURI + 'spacer.gif');
    inImage1.setAttribute('id', 'ZoomImage');
    inImage1.setAttribute('border', '0');
    // inImage1.setAttribute('onMouseOver', 'zoomMouseOver();')
    // inImage1.setAttribute('onMouseOut', 'zoomMouseOut();')

    // This must be set first, so we can later test it using webkitBoxShadow.
    inImage1.setAttribute('style', '-webkit-box-shadow: ' + shadowSettings + '0.0)');
    inImage1.style.display = 'block';
    inImage1.style.width = '10px';
    inImage1.style.height = '10px';
    inImage1.style.cursor = 'pointer'; // -webkit-zoom-out?
    inZoombox.appendChild(inImage1);

    var inClosebox = document.createElement("div");
    inClosebox.setAttribute('id', 'ZoomClose');
    inClosebox.style.position = 'absolute';

    // In MSIE, we need to put the close box inside the image.
    // It's 2008 and I'm having to do a browser detect? Sigh.
    if (browserIsIE) {
        inClosebox.style.left = '-1px';
        inClosebox.style.top = '0px';
    } else {
        inClosebox.style.left = '-15px';
        inClosebox.style.top = '-15px';
    }

    inClosebox.style.visibility = 'hidden';
    inZoombox.appendChild(inClosebox);

    var inImage2 = document.createElement("img");
    inImage2.onclick = function(event) { zoomOut(this, event); return false; };
    inImage2.setAttribute('src', zoomImagesURI + 'closebox.png');
    inImage2.setAttribute('width', '30');
    inImage2.setAttribute('height', '30');
    inImage2.setAttribute('border', '0');
    inImage2.style.cursor = 'pointer';
    inClosebox.appendChild(inImage2);

    // SHADOW
    // Only draw the table-based shadow if the programatic webkitBoxShadow fails!
    // Also, don't draw it if we're IE -- it wouldn't look quite right anyway.

    if (!document.getElementById('ZoomImage').style.webkitBoxShadow && !browserIsIE) {

        // SHADOW BASE

        var inFixedBox = document.createElement("div");
        inFixedBox.setAttribute('id', 'ShadowBox');
        inFixedBox.style.position = 'absolute';
        inFixedBox.style.left = '50px';
        inFixedBox.style.top = '50px';
        inFixedBox.style.width = '100px';
        inFixedBox.style.height = '100px';
        inFixedBox.style.visibility = 'hidden';
        inFixedBox.style.zIndex = '498';
        inBody.insertBefore(inFixedBox, inZoombox.nextSibling);

        // SHADOW
        // Now, the shadow table. Skip if not compatible, or irrevelant with -box-shadow.

        // <div id="ShadowBox"><table border="0" width="100%" height="100%" cellpadding="0" cellspacing="0"> X
        //   <tr height="25">
        //   <td width="27"><img src="/images/zoom-shadow1.png" width="27" height="25"></td>
        //   <td background="/images/zoom-shadow2.png">&nbsp;</td>
        //   <td width="27"><img src="/images/zoom-shadow3.png" width="27" height="25"></td>
        //   </tr>

        var inShadowTable = document.createElement("table");
        inShadowTable.setAttribute('border', '0');
        inShadowTable.setAttribute('width', '100%');
        inShadowTable.setAttribute('height', '100%');
        inShadowTable.setAttribute('cellpadding', '0');
        inShadowTable.setAttribute('cellspacing', '0');
        inFixedBox.appendChild(inShadowTable);

        var inShadowTbody = document.createElement("tbody"); // Needed for IE (for HTML4).
        inShadowTable.appendChild(inShadowTbody);

        var inRow1 = document.createElement("tr");
        inRow1.style.height = '25px';
        inShadowTbody.appendChild(inRow1);

        var inCol1 = document.createElement("td");
        inCol1.style.width = '27px';
        inRow1.appendChild(inCol1);
        var inShadowImg1 = document.createElement("img");
        inShadowImg1.setAttribute('src', zoomImagesURI + 'zoom-shadow1.png');
        inShadowImg1.setAttribute('width', '27');
        inShadowImg1.setAttribute('height', '25');
        inShadowImg1.style.display = 'block';
        inCol1.appendChild(inShadowImg1);

        var inCol2 = document.createElement("td");
        inCol2.setAttribute('background', zoomImagesURI + 'zoom-shadow2.png');
        inRow1.appendChild(inCol2);
        // inCol2.innerHTML = '<img src=';
        var inSpacer1 = document.createElement("img");
        inSpacer1.setAttribute('src', zoomImagesURI + 'spacer.gif');
        inSpacer1.setAttribute('height', '1');
        inSpacer1.setAttribute('width', '1');
        inSpacer1.style.display = 'block';
        inCol2.appendChild(inSpacer1);

        var inCol3 = document.createElement("td");
        inCol3.style.width = '27px';
        inRow1.appendChild(inCol3);
        var inShadowImg3 = document.createElement("img");
        inShadowImg3.setAttribute('src', zoomImagesURI + 'zoom-shadow3.png');
        inShadowImg3.setAttribute('width', '27');
        inShadowImg3.setAttribute('height', '25');
        inShadowImg3.style.display = 'block';
        inCol3.appendChild(inShadowImg3);

        //   <tr>
        //   <td background="/images/zoom-shadow4.png">&nbsp;</td>
        //   <td bgcolor="#ffffff">&nbsp;</td>
        //   <td background="/images/zoom-shadow5.png">&nbsp;</td>
        //   </tr>

        inRow2 = document.createElement("tr");
        inShadowTbody.appendChild(inRow2);

        var inCol4 = document.createElement("td");
        inCol4.setAttribute('background', zoomImagesURI + 'zoom-shadow4.png');
        inRow2.appendChild(inCol4);
        // inCol4.innerHTML = '&nbsp;';
        var inSpacer2 = document.createElement("img");
        inSpacer2.setAttribute('src', zoomImagesURI + 'spacer.gif');
        inSpacer2.setAttribute('height', '1');
        inSpacer2.setAttribute('width', '1');
        inSpacer2.style.display = 'block';
        inCol4.appendChild(inSpacer2);

        var inCol5 = document.createElement("td");
        inCol5.setAttribute('bgcolor', '#ffffff');
        inRow2.appendChild(inCol5);
        // inCol5.innerHTML = '&nbsp;';
        var inSpacer3 = document.createElement("img");
        inSpacer3.setAttribute('src', zoomImagesURI + 'spacer.gif');
        inSpacer3.setAttribute('height', '1');
        inSpacer3.setAttribute('width', '1');
        inSpacer3.style.display = 'block';
        inCol5.appendChild(inSpacer3);

        var inCol6 = document.createElement("td");
        inCol6.setAttribute('background', zoomImagesURI + 'zoom-shadow5.png');
        inRow2.appendChild(inCol6);
        // inCol6.innerHTML = '&nbsp;';
        var inSpacer4 = document.createElement("img");
        inSpacer4.setAttribute('src', zoomImagesURI + 'spacer.gif');
        inSpacer4.setAttribute('height', '1');
        inSpacer4.setAttribute('width', '1');
        inSpacer4.style.display = 'block';
        inCol6.appendChild(inSpacer4);

        //   <tr height="26">
        //   <td width="27"><img src="/images/zoom-shadow6.png" width="27" height="26"</td>
        //   <td background="/images/zoom-shadow7.png">&nbsp;</td>
        //   <td width="27"><img src="/images/zoom-shadow8.png" width="27" height="26"></td>
        //   </tr>  
        // </table>

        var inRow3 = document.createElement("tr");
        inRow3.style.height = '26px';
        inShadowTbody.appendChild(inRow3);

        var inCol7 = document.createElement("td");
        inCol7.style.width = '27px';
        inRow3.appendChild(inCol7);
        var inShadowImg7 = document.createElement("img");
        inShadowImg7.setAttribute('src', zoomImagesURI + 'zoom-shadow6.png');
        inShadowImg7.setAttribute('width', '27');
        inShadowImg7.setAttribute('height', '26');
        inShadowImg7.style.display = 'block';
        inCol7.appendChild(inShadowImg7);

        var inCol8 = document.createElement("td");
        inCol8.setAttribute('background', zoomImagesURI + 'zoom-shadow7.png');
        inRow3.appendChild(inCol8);
        // inCol8.innerHTML = '&nbsp;';
        var inSpacer5 = document.createElement("img");
        inSpacer5.setAttribute('src', zoomImagesURI + 'spacer.gif');
        inSpacer5.setAttribute('height', '1');
        inSpacer5.setAttribute('width', '1');
        inSpacer5.style.display = 'block';
        inCol8.appendChild(inSpacer5);

        var inCol9 = document.createElement("td");
        inCol9.style.width = '27px';
        inRow3.appendChild(inCol9);
        var inShadowImg9 = document.createElement("img");
        inShadowImg9.setAttribute('src', zoomImagesURI + 'zoom-shadow8.png');
        inShadowImg9.setAttribute('width', '27');
        inShadowImg9.setAttribute('height', '26');
        inShadowImg9.style.display = 'block';
        inCol9.appendChild(inShadowImg9);
    }

    if (includeCaption) {

        // CAPTION
        //
        // <div id="ZoomCapDiv" style="margin-left: 13px; margin-right: 13px;">
        // <table border="1" cellpadding="0" cellspacing="0">
        // <tr height="26">
        // <td><img src="zoom-caption-l.png" width="13" height="26"></td>
        // <td rowspan="3" background="zoom-caption-fill.png"><div id="ZoomCaption"></div></td>
        // <td><img src="zoom-caption-r.png" width="13" height="26"></td>
        // </tr>
        // </table>
        // </div>

        var inCapDiv = document.createElement("div");
        inCapDiv.setAttribute('id', 'ZoomCapDiv');
        inCapDiv.style.position = 'absolute';
        inCapDiv.style.visibility = 'hidden';
        inCapDiv.style.marginLeft = 'auto';
        inCapDiv.style.marginRight = 'auto';
        inCapDiv.style.zIndex = '501';

        inBody.insertBefore(inCapDiv, inZoombox.nextSibling);

        var inCapTable = document.createElement("table");
        inCapTable.setAttribute('border', '0');
        inCapTable.setAttribute('cellPadding', '0'); // Wow. These honestly need to
        inCapTable.setAttribute('cellSpacing', '0'); // be intercapped to work in IE. WTF?
        inCapDiv.appendChild(inCapTable);

        var inTbody = document.createElement("tbody"); // Needed for IE (for HTML4).
        inCapTable.appendChild(inTbody);

        var inCapRow1 = document.createElement("tr");
        inTbody.appendChild(inCapRow1);

        var inCapCol1 = document.createElement("td");
        inCapCol1.setAttribute('align', 'right');
        inCapRow1.appendChild(inCapCol1);
        var inCapImg1 = document.createElement("img");
        inCapImg1.setAttribute('src', zoomImagesURI + 'zoom-caption-l.png');
        inCapImg1.setAttribute('width', '13');
        inCapImg1.setAttribute('height', '26');
        inCapImg1.style.display = 'block';
        inCapCol1.appendChild(inCapImg1);

        var inCapCol2 = document.createElement("td");
        inCapCol2.setAttribute('background', zoomImagesURI + 'zoom-caption-fill.png');
        inCapCol2.setAttribute('id', 'ZoomCaption');
        inCapCol2.setAttribute('valign', 'middle');
        inCapCol2.style.fontSize = '14px';
        inCapCol2.style.fontFamily = 'Helvetica';
        inCapCol2.style.fontWeight = 'bold';
        inCapCol2.style.color = '#ffffff';
        inCapCol2.style.textShadow = '0px 2px 4px #000000';
        inCapCol2.style.whiteSpace = 'nowrap';
        inCapRow1.appendChild(inCapCol2);

        var inCapCol3 = document.createElement("td");
        inCapRow1.appendChild(inCapCol3);
        var inCapImg2 = document.createElement("img");
        inCapImg2.setAttribute('src', zoomImagesURI + 'zoom-caption-r.png');
        inCapImg2.setAttribute('width', '13');
        inCapImg2.setAttribute('height', '26');
        inCapImg2.style.display = 'block';
        inCapCol3.appendChild(inCapImg2);
    }
}
