// FancyZoomHTML.js - v1.0
// Used to draw necessary HTML elements for FancyZoom
//
// Copyright (c) 2008 Cabel Sasser / Panic Inc
// All rights reserved.

var htmlInserted = false;

function insertZoomHTML() {
	if(!htmlInserted) {
		htmlInserted = true;
		
		// 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);
		}
	}
}