/***********************************************
* Image w/ description tooltip- By Dynamic Web Coding (www.dyn-web.com)
* Copyright 2002-2007 by Sharon Paine
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* IMPORTANT: Put script after tooltip div or 
put tooltip div just before </BODY>. */

var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;

// resize fix for ns4
var origWidth, origHeight;
if (ns4) {
origWidth = window.innerWidth; origHeight = window.innerHeight;
window.onresize = function() { if (window.innerWidth != origWidth || window.innerHeight != origHeight) history.go(0); }
}

// avoid error of passing event object in older browsers
if (nodyn) { event = "nope" }

/////////////////////// CUSTOMIZE HERE ////////////////////
// settings for tooltip 
// Do you want tip to move when mouse moves over link?
var tipFollowMouse= true; 
// Be sure to set tipWidth wide enough for widest image
var tipWidth= 160;
var offX= 20; // how far from mouse to show tip
var offY= 12; 
var tipFontFamily= "Verdana, arial, helvetica, sans-serif";
var tipFontSize= "8pt";
// set default text color and background color for tooltip here
// individual tooltips can have their own (set in messages arrays)
// but don't have to
var tipFontColor= "#000000";
var tipBgColor= "#DDECFF"; 
var tipBorderColor= "#000080";
var tipBorderWidth= 3;
var tipBorderStyle= "ridge";
var tipPadding= 4;

// tooltip content goes here (image, description, optional bgColor, optional textcolor)
var messages = new Array();
// multi-dimensional arrays containing: 
// image and text for tooltip
// optional: bgColor and color to be sent to tooltip
// messages[0] = new Array('','balloon',"#FFFFFF");
// messages[1] = new Array('','Here.',"#DDECFF");
// messages[2] = new Array('','Test','black','white');
messages[0] = new Array('images/action/ridge_vent_02.jpg','Continous Ridge Vent: a type of vent installed at the peak of a sloped roof which allows warm, humid air to escape a building\'s attic.',"#FFFFFF");
messages[1] = new Array('images/action/light_panel_02.jpg','Light Transmitting Panel: a plastic roof panel installed to admit light. The acrylic modified, UV stabilized, light transmitting panels are high strength translucent panels that are made of glass fiber reinforced polyester.',"#FFFFFF");
messages[2] = new Array('images/action/r_panel.png','"PBR" Panel: a metal panel attached to the inside flange of the girts or the purlins. The panel is used when it is desirable to protect the field installed insulation and improve inside appearance.',"#FFFFFF");
messages[3] = new Array('','Tape Sealer: sealant used to join two panels to prevent water or anything else from pentrating through.',"#FFFFFF");
messages[4] = new Array('images/action/purlin_02.jpg','Purlin: a horizontal structural member bridging two or more rafters of a roof. They support the loads from the roof deck or sheathing and are supported by the principal rafters and/or the building walls. Purlin members are frequently constructed from cold-formed steel \'Z\' sections. Pictured above is a purlin to rafter with a flange brace.',"#FFFFFF");
messages[5] = new Array('images/action/eave_trim_02.jpg','Eave Trim: Trim used to close off top of sidewall panels instead of eave gutter.',"#FFFFFF");
messages[6] = new Array('images/action/sliding_glass_02.jpg','Sliding Glass Window: Has two or more sashes that overlap slightly but slide horizontally within the frame.',"#FFFFFF");
messages[7] = new Array('images/action/base_02.jpg','Cast-In-Place Base: a base attached to the forms prior to pouring concrete that is used to secure the foundation to support wall panels.',"#FFFFFF");
messages[8] = new Array('images/action/gutter_02.jpg','Sculptured Eave Gutter: The trough that channels water from the eaves to the downspouts.',"#FFFFFF");
messages[9] = new Array('images/action/base_angle_02.jpg','Base Angle: a continuous angle secured to foundation to support wall panels.',"#FFFFFF");
messages[10] = new Array('images/action/sidewall_girt_02.jpg','Sidewall Girt: horizontal structural member in a framed wall. They resist lateral loads from wind and support wall cladding materials. Girts are frequently constructed from cold-formed steel \'Z\' sections in a manner similar to roof purlins.',"#FFFFFF");
messages[11] = new Array('images/action/eave_strut_02.jpg','Eave Strut: a cold-formed structural member at the eave to support roof and wall panels; also transmits forces due to wind on endwalls to roof brace rods to rod brace rods.',"#FFFFFF");
messages[12] = new Array('images/action/downspout_02.jpg','Downspout W/45 degree angle: a pipe to carry rainwater from a gutter to a drain or to ground level.',"#FFFFFF");
messages[13] = new Array('images/action/corner_trim_02.jpg','Corner Trim: preformed color sheet metal trim used to close the junction of side and endwall sheets.',"#FFFFFF");
messages[14] = new Array('images/action/sculptured_eave_trim_02.jpg','Sculptured Rake: the inclined edge of a sloped roof over a wall from the eave to the ridge.',"#FFFFFF");
messages[15] = new Array('images/action/rake_angle_02.jpg','Rake Angle: an angle attached to purlins at rake for attachment of end wall sheets.',"#FFFFFF");
messages[16] = new Array('images/action/roll_up_door_02.jpg','Roll-Up Door: a door that opens by traveling vertically.',"#FFFFFF");
messages[17] = new Array('images/action/door_jamb_02.jpg','Door Jamb/Trim: the upper horizontal and two vertical frame members that house the door panel.',"#FFFFFF");
messages[18] = new Array('images/action/peak_box_02.jpg','Peak Box: a piece of trim used to tie two pieces of rake trim that intersects at the peak of the building.',"#FFFFFF");
messages[19] = new Array('images/action/ridge_cap_02.jpg','Ridge Cap: a material or covering applied over the ridge of a roof.',"#FFFFFF");


//////////////////// END OF CUSTOMIZATION AREA ///////////////////

// preload images that are to appear in tooltip
// from arrays above
if (document.images) {
var theImgs = new Array();
for (var i=0; i<messages.length; i++) {
theImgs[i] = new Image();
theImgs[i].src = messages[i][0];
}
}

// to layout image and text, 2-row table, image centered in top cell
// these go in var tip in doTooltip function
// startStr goes before image, midStr goes between image and text
var startStr = '<table width="' + tipWidth + '"><tr><td align="center" width="100%"><img src="';
var midStr = '" border="0"></td></tr><tr><td valign="top">';
var endStr = '</td></tr></table>';

////////////////////////////////////////////////////////////
// initTip - initialization for tooltip.
// Global variables for tooltip. 
// Set styles for all but ns4. 
// Set up mousemove capture if tipFollowMouse set true.
////////////////////////////////////////////////////////////
var tooltip, tipcss;
function initTip() {
if (nodyn) return;
tooltip = (ns4)? document.tipDiv.document: (ie4)? document.all['tipDiv']: (ie5||ns5)? document.getElementById('tipDiv'): null;
tipcss = (ns4)? document.tipDiv: tooltip.style;
if (ie4||ie5||ns5) { // ns4 would lose all this on rewrites
tipcss.width = tipWidth+"px";
tipcss.fontFamily = tipFontFamily;
tipcss.fontSize = tipFontSize;
tipcss.color = tipFontColor;
tipcss.backgroundColor = tipBgColor;
tipcss.borderColor = tipBorderColor;
tipcss.borderWidth = tipBorderWidth+"px";
tipcss.padding = tipPadding+"px";
tipcss.borderStyle = tipBorderStyle;
}
if (tooltip&&tipFollowMouse) {
if (ns4) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = trackMouse;
}
}

window.onload = initTip;

/////////////////////////////////////////////////
// doTooltip function
// Assembles content for tooltip and writes 
// it to tipDiv
/////////////////////////////////////////////////
var t1,t2; // for setTimeouts
var tipOn = false; // check if over tooltip link
function doTooltip(evt,num) {
if (!tooltip) return;
if (t1) clearTimeout(t1); if (t2) clearTimeout(t2);
tipOn = true;
// set colors if included in messages array
if (messages[num][2]) var curBgColor = messages[num][2];
else curBgColor = tipBgColor;
if (messages[num][3]) var curFontColor = messages[num][3];
else curFontColor = tipFontColor;
if (ns4) {
var tip = '<table bgcolor="' + tipBorderColor + '" width="' + tipWidth + '" cellspacing="0" cellpadding="' + tipBorderWidth + '" border="0"><tr><td><table bgcolor="' + curBgColor + '" width="100%" cellspacing="0" cellpadding="' + tipPadding + '" border="0"><tr><td>'+ startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr + '</td></tr></table></td></tr></table>';
tooltip.write(tip);
tooltip.close();
} else if (ie4||ie5||ns5) {
var tip = startStr + messages[num][0] + midStr + '<span style="font-family:' + tipFontFamily + '; font-size:' + tipFontSize + '; color:' + curFontColor + ';">' + messages[num][1] + '</span>' + endStr;
tipcss.backgroundColor = curBgColor;
tooltip.innerHTML = tip;
}
if (!tipFollowMouse) positionTip(evt);
else t1=setTimeout("tipcss.visibility='visible'",100);
}

var mouseX, mouseY;
function trackMouse(evt) {
standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
if (tipOn) positionTip(evt);
}

/////////////////////////////////////////////////////////////
// positionTip function
// If tipFollowMouse set false, so trackMouse function
// not being used, get position of mouseover event.
// Calculations use mouseover event position, 
// offset amounts and tooltip width to position
// tooltip within window.
/////////////////////////////////////////////////////////////
function positionTip(evt) {
if (!tipFollowMouse) {
standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body
mouseX = (ns4||ns5)? evt.pageX: window.event.clientX + standardbody.scrollLeft;
mouseY = (ns4||ns5)? evt.pageY: window.event.clientY + standardbody.scrollTop;
}
// tooltip width and height
var tpWd = (ns4)? tooltip.width: (ie4||ie5)? tooltip.clientWidth: tooltip.offsetWidth;
var tpHt = (ns4)? tooltip.height: (ie4||ie5)? tooltip.clientHeight: tooltip.offsetHeight;
// document area in view (subtract scrollbar width for ns)
var winWd = (ns4||ns5)? window.innerWidth-20+window.pageXOffset: standardbody.clientWidth+standardbody.scrollLeft;
var winHt = (ns4||ns5)? window.innerHeight-20+window.pageYOffset: standardbody.clientHeight+standardbody.scrollTop;
// check mouse position against tip and window dimensions
// and position the tooltip 
if ((mouseX+offX+tpWd)>winWd) 
tipcss.left = (ns4)? mouseX-(tpWd+offX): mouseX-(tpWd+offX)+"px";
else tipcss.left = (ns4)? mouseX+offX: mouseX+offX+"px";
if ((mouseY+offY+tpHt)>winHt) 
tipcss.top = (ns4)? winHt-(tpHt+offY): winHt-(tpHt+offY)+"px";
else tipcss.top = (ns4)? mouseY+offY: mouseY+offY+"px";
if (!tipFollowMouse) t1=setTimeout("tipcss.visibility='visible'",100);
}

function hideTip() {
if (!tooltip) return;
t2=setTimeout("tipcss.visibility='hidden'",100);
tipOn = false;
}

document.write('<div id="tipDiv" style="position:absolute; visibility:hidden; z-index:100"></div>')