/*

 * jQuery corner plugin

 *

 * version 1.7 (1/26/2007)

 *

 * Dual licensed under the MIT and GPL licenses:

 *   http://www.opensource.org/licenses/mit-license.php

 *   http://www.gnu.org/licenses/gpl.html

 */
/**
 
 * The corner() method provides a simple way of styling DOM elements.  
 
 *
 
 * corner() takes a single string argument:  $().corner("effect corners width")
 
 *
 
 *   effect:  The name of the effect to apply, such as round or bevel. 
 
 *            If you don't specify an effect, rounding is used.
 
 *
 
 *   corners: The corners can be one or more of top, bottom, tr, tl, br, or bl. 
 
 *            By default, all four corners are adorned. 
 
 *
 
 *   width:   The width specifies the width of the effect; in the case of rounded corners this 
 
 *            will be the radius of the width. 
 
 *            Specify this value using the px suffix such as 10px, and yes it must be pixels.
 
 *
 
 * For more details see: http://methvin.com/jquery/jq-corner.html
 
 * For a full demo see:  http://malsup.com/jquery/corner/
 
 *
 
 *
 
 * @example $('.adorn').corner();
 
 * @desc Create round, 10px corners 
 
 *
 
 * @example $('.adorn').corner("25px");
 
 * @desc Create round, 25px corners 
 
 *
 
 * @example $('.adorn').corner("notch bottom");
 
 * @desc Create notched, 10px corners on bottom only
 
 *
 
 * @example $('.adorn').corner("tr dog 25px");
 
 * @desc Create dogeared, 25px corner on the top-right corner only
 
 *
 
 * @example $('.adorn').corner("round 8px").parent().css('padding', '4px').corner("round 10px");
 
 * @desc Create a rounded border effect by styling both the element and its parent
 
 * 
 
 * @name corner
 
 * @type jQuery
 
 * @param String options Options which control the corner style
 
 * @cat Plugins/Corner
 
 * @return jQuery
 
 * @author Dave Methvin (dave.methvin@gmail.com)
 
 * @author Mike Alsup (malsup@gmail.com)
 
 */
jQuery.fn.corner = function (o) {
    function hex2(s) {
        var s = parseInt(s).toString(16);
        return (s.length < 2) ? '0' + s : s;
    };

    function gpc(node) {
        for (; node && node.nodeName.toLowerCase() != 'html'; node = node.parentNode) {
            var v = jQuery.css(node, 'backgroundColor');
            if (v.indexOf('rgb') >= 0) {
                rgb = v.match(/\d+/g);
                return '#' + hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
            }
            if (v && v != 'transparent') return v;
        }
        return '#ffffff';
    };

    function getW(i) {
        switch (fx) {
        case 'round':
            return Math.round(width * (1 - Math.cos(Math.asin(i / width))));
        case 'cool':
            return Math.round(width * (1 + Math.cos(Math.asin(i / width))));
        case 'sharp':
            return Math.round(width * (1 - Math.cos(Math.acos(i / width))));
        case 'bite':
            return Math.round(width * (Math.cos(Math.asin((width - i - 1) / width))));
        case 'slide':
            return Math.round(width * (Math.atan2(i, width / i)));
        case 'jut':
            return Math.round(width * (Math.atan2(width, (width - i - 1))));
        case 'curl':
            return Math.round(width * (Math.atan(i)));
        case 'tear':
            return Math.round(width * (Math.cos(i)));
        case 'wicked':
            return Math.round(width * (Math.tan(i)));
        case 'long':
            return Math.round(width * (Math.sqrt(i)));
        case 'sculpt':
            return Math.round(width * (Math.log((width - i - 1), width)));
        case 'dog':
            return (i & 1) ? (i + 1) : width;
        case 'dog2':
            return (i & 2) ? (i + 1) : width;
        case 'dog3':
            return (i & 3) ? (i + 1) : width;
        case 'fray':
            return (i % 2) * width;
        case 'notch':
            return width;
        case 'bevel':
            return i + 1;
        }
    };
    o = (o || "").toLowerCase();
    var keep = /keep/.test(o); // keep borders?
    var cc = ((o.match(/cc:(#[0-9a-f]+)/) || [])[1]); // corner color
    var sc = ((o.match(/sc:(#[0-9a-f]+)/) || [])[1]); // strip color
    var width = parseInt((o.match(/(\d+)px/) || [])[1]) || 10; // corner width
    var re = /round|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dog/;
    var fx = ((o.match(re) || ['round'])[0]);
    var edges = {
        T: 0,
        B: 1
    };
    var opts = {
        TL: /top|tl/.test(o),
        TR: /top|tr/.test(o),
        BL: /bottom|bl/.test(o),
        BR: /bottom|br/.test(o)
    };
    if (!opts.TL && !opts.TR && !opts.BL && !opts.BR) opts = {
        TL: 1,
        TR: 1,
        BL: 1,
        BR: 1
    };
    var strip = document.createElement('div');
    strip.style.overflow = 'hidden';
    strip.style.height = '1px';
    strip.style.backgroundColor = sc || 'transparent';
    strip.style.borderStyle = 'solid';
    return this.each(function (index) {
        var pad = {
            T: parseInt(jQuery.css(this, 'paddingTop')) || 0,
            R: parseInt(jQuery.css(this, 'paddingRight')) || 0,
            B: parseInt(jQuery.css(this, 'paddingBottom')) || 0,
            L: parseInt(jQuery.css(this, 'paddingLeft')) || 0
        };
        if (jQuery.browser.msie) this.style.zoom = 1; // force 'hasLayout' in IE
        if (!keep) this.style.border = 'none';
        strip.style.borderColor = cc || gpc(this.parentNode);
        var cssHeight = jQuery.curCSS(this, 'height');
        for (var j in edges) {
            var bot = edges[j];
            strip.style.borderStyle = 'none ' + (opts[j + 'R'] ? 'solid' : 'none') + ' none ' + (opts[j + 'L'] ? 'solid' : 'none');
            var d = document.createElement('div');
            var ds = d.style;
            bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);
            if (bot && cssHeight != 'auto') {
                if (jQuery.css(this, 'position') == 'static') this.style.position = 'relative';
                ds.position = 'absolute';
                ds.bottom = ds.left = ds.padding = ds.margin = '0';
                if (jQuery.browser.msie) ds.setExpression('width', 'this.parentNode.offsetWidth');
                else ds.width = '100%';
            } else {
                ds.margin = !bot ? '-' + pad.T + 'px -' + pad.R + 'px ' + (pad.T - width) + 'px -' + pad.L + 'px' : (pad.B - width) + 'px -' + pad.R + 'px -' + pad.B + 'px -' + pad.L + 'px';
            }
            for (var i = 0; i < width; i++) {
                var w = Math.max(0, getW(i));
                var e = strip.cloneNode(false);
                e.style.borderWidth = '0 ' + (opts[j + 'R'] ? w : 0) + 'px 0 ' + (opts[j + 'L'] ? w : 0) + 'px';
                bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
            }
        }
    });
};
// SpryTabbedPanels.js - version 0.6 - Spry Pre-Release 1.6.1
//
// Copyright (c) 2006. Adobe Systems Incorporated.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
//   * Redistributions of source code must retain the above copyright notice,
//     this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright notice,
//     this list of conditions and the following disclaimer in the documentation
//     and/or other materials provided with the distribution.
//   * Neither the name of Adobe Systems Incorporated nor the names of its
//     contributors may be used to endorse or promote products derived from this
//     software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
var Spry;
if (!Spry) Spry = {};
if (!Spry.Widget) Spry.Widget = {};
Spry.Widget.TabbedPanels = function (element, opts) {
    this.element = this.getElement(element);
    this.defaultTab = 0; // Show the first panel by default.
    this.tabSelectedClass = "TabbedPanelsTabSelected";
    this.tabHoverClass = "TabbedPanelsTabHover";
    this.tabFocusedClass = "TabbedPanelsTabFocused";
    this.panelVisibleClass = "TabbedPanelsContentVisible";
    this.focusElement = null;
    this.hasFocus = false;
    this.currentTabIndex = 0;
    this.enableKeyboardNavigation = true;
    this.nextPanelKeyCode = Spry.Widget.TabbedPanels.KEY_RIGHT;
    this.previousPanelKeyCode = Spry.Widget.TabbedPanels.KEY_LEFT;
    Spry.Widget.TabbedPanels.setOptions(this, opts);
    // If the defaultTab is expressed as a number/index, convert
    // it to an element.
    if (typeof (this.defaultTab) == "number") {
        if (this.defaultTab < 0) this.defaultTab = 0;
        else {
            var count = this.getTabbedPanelCount();
            if (this.defaultTab >= count) this.defaultTab = (count > 1) ? (count - 1) : 0;
        }
        this.defaultTab = this.getTabs()[this.defaultTab];
    }
    // The defaultTab property is supposed to be the tab element for the tab content
    // to show by default. The caller is allowed to pass in the element itself or the
    // element's id, so we need to convert the current value to an element if necessary.
    if (this.defaultTab) this.defaultTab = this.getElement(this.defaultTab);
    this.attachBehaviors();
};
Spry.Widget.TabbedPanels.prototype.getElement = function (ele) {
    if (ele && typeof ele == "string") return document.getElementById(ele);
    return ele;
};
Spry.Widget.TabbedPanels.prototype.getElementChildren = function (element) {
    var children = [];
    var child = element.firstChild;
    while (child) {
        if (child.nodeType == 1 /* Node.ELEMENT_NODE */ ) children.push(child);
        child = child.nextSibling;
    }
    return children;
};
Spry.Widget.TabbedPanels.prototype.addClassName = function (ele, className) {
    if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1)) return;
    ele.className += (ele.className ? " " : "") + className;
};
Spry.Widget.TabbedPanels.prototype.removeClassName = function (ele, className) {
    if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)) return;
    ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
};
Spry.Widget.TabbedPanels.setOptions = function (obj, optionsObj, ignoreUndefinedProps) {
    if (!optionsObj) return;
    for (var optionName in optionsObj) {
        if (ignoreUndefinedProps && optionsObj[optionName] == undefined) continue;
        obj[optionName] = optionsObj[optionName];
    }
};
Spry.Widget.TabbedPanels.prototype.getTabGroup = function () {
    if (this.element) {
        var children = this.getElementChildren(this.element);
        if (children.length) return children[0];
    }
    return null;
};
Spry.Widget.TabbedPanels.prototype.getTabs = function () {
    var tabs = [];
    var tg = this.getTabGroup();
    if (tg) tabs = this.getElementChildren(tg);
    return tabs;
};
Spry.Widget.TabbedPanels.prototype.getContentPanelGroup = function () {
    if (this.element) {
        var children = this.getElementChildren(this.element);
        if (children.length > 1) return children[1];
    }
    return null;
};
Spry.Widget.TabbedPanels.prototype.getContentPanels = function () {
    var panels = [];
    var pg = this.getContentPanelGroup();
    if (pg) panels = this.getElementChildren(pg);
    return panels;
};
Spry.Widget.TabbedPanels.prototype.getIndex = function (ele, arr) {
    ele = this.getElement(ele);
    if (ele && arr && arr.length) {
        for (var i = 0; i < arr.length; i++) {
            if (ele == arr[i]) return i;
        }
    }
    return -1;
};
Spry.Widget.TabbedPanels.prototype.getTabIndex = function (ele) {
    var i = this.getIndex(ele, this.getTabs());
    if (i < 0) i = this.getIndex(ele, this.getContentPanels());
    return i;
};
Spry.Widget.TabbedPanels.prototype.getCurrentTabIndex = function () {
    return this.currentTabIndex;
};
Spry.Widget.TabbedPanels.prototype.getTabbedPanelCount = function (ele) {
    return Math.min(this.getTabs().length, this.getContentPanels().length);
};
Spry.Widget.TabbedPanels.addEventListener = function (element, eventType, handler, capture) {
    try {
        if (element.addEventListener) element.addEventListener(eventType, handler, capture);
        else if (element.attachEvent) element.attachEvent("on" + eventType, handler);
    } catch (e) {}
};
Spry.Widget.TabbedPanels.prototype.cancelEvent = function (e) {
    if (e.preventDefault) e.preventDefault();
    else e.returnValue = false;
    if (e.stopPropagation) e.stopPropagation();
    else e.cancelBubble = true;
    return false;
};
Spry.Widget.TabbedPanels.prototype.onTabClick = function (e, tab) {
    this.showPanel(tab);
    return this.cancelEvent(e);
};
Spry.Widget.TabbedPanels.prototype.onTabMouseOver = function (e, tab) {
    this.addClassName(tab, this.tabHoverClass);
    return false;
};
Spry.Widget.TabbedPanels.prototype.onTabMouseOut = function (e, tab) {
    this.removeClassName(tab, this.tabHoverClass);
    return false;
};
Spry.Widget.TabbedPanels.prototype.onTabFocus = function (e, tab) {
    this.hasFocus = true;
    this.addClassName(tab, this.tabFocusedClass);
    return false;
};
Spry.Widget.TabbedPanels.prototype.onTabBlur = function (e, tab) {
    this.hasFocus = false;
    this.removeClassName(tab, this.tabFocusedClass);
    return false;
};
Spry.Widget.TabbedPanels.KEY_UP = 38;
Spry.Widget.TabbedPanels.KEY_DOWN = 40;
Spry.Widget.TabbedPanels.KEY_LEFT = 37;
Spry.Widget.TabbedPanels.KEY_RIGHT = 39;
Spry.Widget.TabbedPanels.prototype.onTabKeyDown = function (e, tab) {
    var key = e.keyCode;
    if (!this.hasFocus || (key != this.previousPanelKeyCode && key != this.nextPanelKeyCode)) return true;
    var tabs = this.getTabs();
    for (var i = 0; i < tabs.length; i++)
    if (tabs[i] == tab) {
        var el = false;
        if (key == this.previousPanelKeyCode && i > 0) el = tabs[i - 1];
        else if (key == this.nextPanelKeyCode && i < tabs.length - 1) el = tabs[i + 1];
        if (el) {
            this.showPanel(el);
            el.focus();
            break;
        }
    }
    return this.cancelEvent(e);
};
Spry.Widget.TabbedPanels.prototype.preorderTraversal = function (root, func) {
    var stopTraversal = false;
    if (root) {
        stopTraversal = func(root);
        if (root.hasChildNodes()) {
            var child = root.firstChild;
            while (!stopTraversal && child) {
                stopTraversal = this.preorderTraversal(child, func);
                try {
                    child = child.nextSibling;
                } catch (e) {
                    child = null;
                }
            }
        }
    }
    return stopTraversal;
};
Spry.Widget.TabbedPanels.prototype.addPanelEventListeners = function (tab, panel) {
    var self = this;
    Spry.Widget.TabbedPanels.addEventListener(tab, "click", function (e) {
        return self.onTabClick(e, tab);
    }, false);
    Spry.Widget.TabbedPanels.addEventListener(tab, "mouseover", function (e) {
        return self.onTabMouseOver(e, tab);
    }, false);
    Spry.Widget.TabbedPanels.addEventListener(tab, "mouseout", function (e) {
        return self.onTabMouseOut(e, tab);
    }, false);
    if (this.enableKeyboardNavigation) {
        // XXX: IE doesn't allow the setting of tabindex dynamically. This means we can't
        // rely on adding the tabindex attribute if it is missing to enable keyboard navigation
        // by default.
        // Find the first element within the tab container that has a tabindex or the first
        // anchor tag.
        var tabIndexEle = null;
        var tabAnchorEle = null;
        this.preorderTraversal(tab, function (node) {
            if (node.nodeType == 1 /* NODE.ELEMENT_NODE */ ) {
                var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
                if (tabIndexAttr) {
                    tabIndexEle = node;
                    return true;
                }
                if (!tabAnchorEle && node.nodeName.toLowerCase() == "a") tabAnchorEle = node;
            }
            return false;
        });
        if (tabIndexEle) this.focusElement = tabIndexEle;
        else if (tabAnchorEle) this.focusElement = tabAnchorEle;
        if (this.focusElement) {
            Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "focus", function (e) {
                return self.onTabFocus(e, tab);
            }, false);
            Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "blur", function (e) {
                return self.onTabBlur(e, tab);
            }, false);
            Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "keydown", function (e) {
                return self.onTabKeyDown(e, tab);
            }, false);
        }
    }
};
Spry.Widget.TabbedPanels.prototype.showPanel = function (elementOrIndex) {
    var tpIndex = -1;
    if (typeof elementOrIndex == "number") tpIndex = elementOrIndex;
    else // Must be the element for the tab or content panel.
    tpIndex = this.getTabIndex(elementOrIndex);
    if (!tpIndex < 0 || tpIndex >= this.getTabbedPanelCount()) return;
    var tabs = this.getTabs();
    var panels = this.getContentPanels();
    var numTabbedPanels = Math.max(tabs.length, panels.length);
    for (var i = 0; i < numTabbedPanels; i++) {
        if (i != tpIndex) {
            if (tabs[i]) this.removeClassName(tabs[i], this.tabSelectedClass);
            if (panels[i]) {
                this.removeClassName(panels[i], this.panelVisibleClass);
                panels[i].style.display = "none";
            }
        }
    }
    this.addClassName(tabs[tpIndex], this.tabSelectedClass);
    this.addClassName(panels[tpIndex], this.panelVisibleClass);
    panels[tpIndex].style.display = "block";
    this.currentTabIndex = tpIndex;
};
Spry.Widget.TabbedPanels.prototype.attachBehaviors = function (element) {
    var tabs = this.getTabs();
    var panels = this.getContentPanels();
    var panelCount = this.getTabbedPanelCount();
    for (var i = 0; i < panelCount; i++)
    this.addPanelEventListeners(tabs[i], panels[i]);
    this.showPanel(this.defaultTab);
};
// Some code adapted from Jonathan Weesner's (jweesner@cyberstation.net) page 
// at http://cyberstation.net/~jweesner/conv.html
// and Darin Franklin's (darinaf@brookings.net) page
// at http://www.swiftel.net/~darinaf/
// Adaptations and new calculators written by Craig de Fasselle
// www.blitzmediadesign.com
// Adaptations and new calculators may not be copied without
// express permission for commercial sites

function convertform(form) {
    var firstvalue = 0;
    for (var i = 1; i <= form.count; i++) {
        // Find first non-blank entry
        if (form.elements[i].value != null && form.elements[i].value.length != 0) {
            if (i == 1 && form.elements[2].value != "") return false;
            var parsecheck = "" + parseFloat(form.elements[i].value);
            if (parseFloat(form.elements[i].value) == 0 || parsecheck == "NaN") {
                window.alert("Please enter a non-zero number.");
                return false;
            }
            firstvalue = form.elements[i].value / form.elements[i].factor;
            break;
        }
    }
    if (firstvalue == 0) {
        clearform(form);
        return false;
    }
    for (var i = 1; i <= form.count; i++)
    form.elements[i].value = formatvalue((firstvalue * form.elements[i].factor), form.rsize);
    return true;
}

function calcTemp(tForm) {
    var cTemp = 0.0;
    if (tForm.fromUnits.options[tForm.fromUnits.selectedIndex].value == tForm.toUnits.options[tForm.toUnits.selectedIndex].value) {
        tForm.toField.value = tForm.fromField.value;
    } else {
        // first convert to Celcius
        if (tForm.fromUnits.options[tForm.fromUnits.selectedIndex].value == 'F') {
            cTemp = ((parseFloat(tForm.fromField.value) - 32) * 5 / 9);
        } else if (tForm.fromUnits.options[tForm.fromUnits.selectedIndex].value == 'K') {
            cTemp = parseFloat(tForm.fromField.value) - 273.15;
        } else if (tForm.fromUnits.options[tForm.fromUnits.selectedIndex].value == 'R') {
            cTemp = (parseFloat(tForm.fromField.value) - 459.67 - 32) * 5 / 9;
        } else if (tForm.fromUnits.options[tForm.fromUnits.selectedIndex].value == 'C') {
            cTemp = (parseFloat(tForm.fromField.value));
        }
        // now convert to desired units
        if (tForm.toUnits.options[tForm.toUnits.selectedIndex].value == 'F') {
            tForm.toField.value = cTemp * 9 / 5 + 32;
        } else if (tForm.toUnits.options[tForm.toUnits.selectedIndex].value == 'K') {
            tForm.toField.value = cTemp + 273.15;
        } else if (tForm.toUnits.options[tForm.toUnits.selectedIndex].value == 'R') {
            tForm.toField.value = cTemp * 9 / 5 + 32 + 459.67;
        } else if (tForm.toUnits.options[tForm.toUnits.selectedIndex].value == 'C') {
            tForm.toField.value = cTemp;
        }
    }
}

function formatvalue(input, rsize) {
    var invalid = "**************************";
    var nines = "999999999999999999999999";
    var strin = "" + input;
    var fltin = parseFloat(strin);
    if (strin.indexOf("e") != -1 || fltin > parseFloat(nines.substring(0, rsize) + ".4")) return invalid.substring(0, rsize);
    if (strin.length <= rsize) return strin;
    var rounded = "" + (fltin + (fltin - parseFloat(strin.substring(0, rsize))));
    return rounded.substring(0, rsize);
}

function clearform(form) {
    for (var i = 1; i <= form.count; i++) form.elements[i].value = "";
    return true;
}

function fpsgpmcomp(obj) {
    with(Math) {
        v1 = eval(obj.valueFPS.value);
        d1 = eval(obj.valueD.value);
        gpm1 = (v1 / 0.4085) * (d1 * d1)
        obj.gpmresult.value = gpm1;
    }
}

function gpmfpscomp(obj) {
    with(Math) {
        d1 = eval(obj.valueD.value);
        g1 = eval(obj.valueGPM.value);
        fps1 = (g1 * 0.4085) / (d1 * d1)
        obj.fpsresult.value = fps1;
    }
}

function scfmcomp(obj) {
    with(Math) {
        f1 = eval(obj.flow1.value);
        p1 = eval(obj.pressure1.value);
        t1 = eval(obj.temp1.value);
        s1 = eval(obj.sg1.value);
        z1 = eval(obj.z1.value);
    }
    if (obj.z1.value == "") {
        obj.z1.value++;
        mem1 = f1 * 0.465 * Math.sqrt(s1 * (t1 + 459.9) / (p1 + 14.697))
        var m = mem1;
        //round to 100ths
        m = Math.round(m * 100) / 100;
        obj.scfmresult.value = +m;
    } else {
        mem1 = f1 * 0.465 * Math.sqrt(s1 * (t1 + 459.9) / ((p1 + 14.697) * z1))
        var m = mem1;
        //round to 100ths
        m = Math.round(m * 100) / 100;
        obj.scfmresult.value = +m;
    }
}

function scfhcomp(obj) {
    with(Math) {
        f2 = eval(obj.flow2.value);
        p2 = eval(obj.pressure2.value);
        t2 = eval(obj.temp2.value);
        s2 = eval(obj.sg2.value);
        mem2 = f2 * 0.1665 * Math.sqrt(s2 * (t2 + 459.9) / (p2 + 14.697))
        var m = mem2;
        //round to 100ths
        m = Math.round(m * 100) / 100;
        obj.scfhresult.value = +m;
    }
}

function sstcomp(obj) {
    with(Math) {
        f3 = eval(obj.flow3.value);
        s3 = eval(obj.sg3.value);
        mem3 = f3 * Math.sqrt((s3 * 7.052) / (8.052 - s3))
        var m = mem3;
        //round to 100ths
        m = Math.round(m * 100) / 100;
        obj.sstresult.value = +m;
    }
}

function pvccomp(obj) {
    with(Math) {
        f3 = eval(obj.flow3.value);
        s3 = eval(obj.sg3.value);
        mem3 = f3 * Math.sqrt((s3 * 2.0) / (3.0 - s3))
        var m = mem3;
        //round to 100ths
        m = Math.round(m * 100) / 100;
        obj.pvcresult.value = +m;
    }
}

function steamcomp(obj) {
    with(Math) {
        f6 = eval(obj.steam1.value);
        p6 = eval(obj.sv1.value);
        mem6 = f6 * 0.17 * Math.sqrt(p6)
        var m = mem6;
        //round to 100ths
        m = Math.round(m * 100) / 100;
        obj.steam1result.value = +m;
    }
}

function gascorr(obj) {
    with(Math) {
        f4 = eval(obj.flow4.value);
        ps = eval(obj.pressurescale.value);
        pg = eval(obj.pressuregas.value);
        ts = eval(obj.tempscale.value);
        tg = eval(obj.tempgas.value);
        ss = eval(obj.sgscale.value);
        sg = eval(obj.sggas.value);
        z4 = eval(obj.z4.value);
    }
    if (obj.z4.value == "") {
        obj.z4.value++;
        mem4 = f4 * Math.sqrt(ss * (pg + 14.697) * (ts + 459.9) / ((ps + 14.697) * (tg + 459.9) * sg))
        var m = mem4
        //round to 1000ths
        m = Math.round(m * 1000) / 1000;
        obj.gasresult.value = +m;
    } else {
        mem4 = f4 * Math.sqrt(ss * z4 * (pg + 14.697) * (ts + 459.9) / ((ps + 14.697) * (tg + 459.9) * sg))
        var m = mem4
        //round to 1000ths
        m = Math.round(m * 1000) / 1000;
        obj.gasresult.value = +m;
    }
}

function liqcorr(obj) {
    with(Math) {
        f5 = eval(obj.flow5.value);
        ssl = eval(obj.sglscale.value);
        sl = eval(obj.sgliquid.value);
        sf = eval(obj.sgfloat.value);
        mem5 = f5 * Math.sqrt((ssl * (sf - sl) / (sl * (sf - ssl))))
        var m = mem5
        //round to 1000ths
        m = Math.round(m * 1000) / 1000;
        obj.liqresult.value = +m;
    }
}

function steamcorr(obj) {
    with(Math) {
        f7 = eval(obj.steam2.value);
        sv7 = eval(obj.svscale.value);
        sv8 = eval(obj.sv2.value);
        mem7 = f7 * Math.sqrt(sv7) / Math.sqrt(sv8)
        var m = mem7;
        //round to 1000ths
        m = Math.round(m * 1000) / 1000;
        obj.steam2result.value = +m;
    }
}

function steamcorr2(obj) {
    with(Math) {
        f8 = eval(obj.steam3.value);
        sv9 = eval(obj.sv3.value);
        mem8 = f8 * 5.879 / Math.sqrt(sv9)
        var m = mem8;
        //round to 1000ths
        m = Math.round(m * 1000) / 1000;
        obj.steam3result.value = +m;
    }
}
//***********************************************************************************************************************************/
//	LyteBox v3.22
//
//	 Author: Markus F. Hay
//  Website: http://www.dolem.com/lytebox
//	   Date: October 2, 2007
//	License: Creative Commons Attribution 3.0 License (http://creativecommons.org/licenses/by/3.0/)
// Browsers: Tested successfully on WinXP with the following browsers (using no DOCTYPE and Strict/Transitional/Loose DOCTYPES):
//				* Firefox: 2.0.0.7, 1.5.0.12
//				* Internet Explorer: 7.0, 6.0 SP2, 5.5 SP2
//				* Opera: 9.23
//
// Releases: For up-to-date and complete release information, visit http://www.dolem.com/forum/showthread.php?tid=62
//				* v3.22 (10/02/07)
//				* v3.21 (09/30/07)
//				* v3.20 (07/12/07)
//				* v3.10 (05/28/07)
//				* v3.00 (05/15/07)
//				* v2.02 (11/13/06)
//
//   Credit: LyteBox was originally derived from the Lightbox class (v2.02) that was written by Lokesh Dhakar. For more
//			 information please visit http://huddletogether.com/projects/lightbox2/
//***********************************************************************************************************************************/
Array.prototype.removeDuplicates = function () {
    for (var i = 1; i < this.length; i++) {
        if (this[i][0] == this[i - 1][0]) {
            this.splice(i, 1);
        }
    }
}
Array.prototype.empty = function () {
    for (var i = 0; i <= this.length; i++) {
        this.shift();
    }
}
String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g, '');
}

function LyteBox() { /*** Start Global Configuration ***/
    this.theme = 'grey'; // themes: grey (default), red, green, blue, gold
    this.hideFlash = true; // controls whether or not Flash objects should be hidden
    this.outerBorder = true; // controls whether to show the outer grey (or theme) border
    this.resizeSpeed = 8; // controls the speed of the image resizing (1=slowest and 10=fastest)
    this.maxOpacity = 80; // higher opacity = darker overlay, lower opacity = lighter overlay
    this.navType = 1; // 1 = "Prev/Next" buttons on top left and left (default), 2 = "<< prev | next >>" links next to image number
    this.autoResize = true; // controls whether or not images should be resized if larger than the browser window dimensions
    this.doAnimations = true; // controls whether or not "animate" Lytebox, i.e. resize transition between images, fade in/out effects, etc.
    this.borderSize = 12; // if you adjust the padding in the CSS, you will need to update this variable -- otherwise, leave this alone...
    /*** End Global Configuration ***/
    /*** Configure Slideshow Options ***/
    this.slideInterval = 5000; // Change value (milliseconds) to increase/decrease the time between "slides" (10000 = 10 seconds)
    this.showNavigation = true; // true to display Next/Prev buttons/text during slideshow, false to hide
    this.showClose = true; // true to display the Close button, false to hide
    this.showDetails = true; // true to display image details (caption, count), false to hide
    this.showPlayPause = true; // true to display pause/play buttons next to close button, false to hide
    this.autoEnd = true; // true to automatically close Lytebox after the last image is reached, false to keep open
    this.pauseOnNextClick = false; // true to pause the slideshow when the "Next" button is clicked
    this.pauseOnPrevClick = true; // true to pause the slideshow when the "Prev" button is clicked
    /*** End Slideshow Configuration ***/
    if (this.resizeSpeed > 10) {
        this.resizeSpeed = 10;
    }
    if (this.resizeSpeed < 1) {
        resizeSpeed = 1;
    }
    this.resizeDuration = (11 - this.resizeSpeed) * 0.15;
    this.resizeWTimerArray = new Array();
    this.resizeWTimerCount = 0;
    this.resizeHTimerArray = new Array();
    this.resizeHTimerCount = 0;
    this.showContentTimerArray = new Array();
    this.showContentTimerCount = 0;
    this.overlayTimerArray = new Array();
    this.overlayTimerCount = 0;
    this.imageTimerArray = new Array();
    this.imageTimerCount = 0;
    this.timerIDArray = new Array();
    this.timerIDCount = 0;
    this.slideshowIDArray = new Array();
    this.slideshowIDCount = 0;
    this.imageArray = new Array();
    this.activeImage = null;
    this.slideArray = new Array();
    this.activeSlide = null;
    this.frameArray = new Array();
    this.activeFrame = null;
    this.checkFrame();
    this.isSlideshow = false;
    this.isLyteframe = false;
/*@cc_on

		/*@if (@_jscript)

			this.ie = (document.all && !window.opera) ? true : false;

		/*@else @*/
    this.ie = false;
/*@end

	@*/
    this.ie7 = (this.ie && window.XMLHttpRequest);
    this.initialize();
}
LyteBox.prototype.initialize = function () {
    this.updateLyteboxItems();
    var objBody = this.doc.getElementsByTagName("body").item(0);
    if (this.doc.getElementById('lbOverlay')) {
        objBody.removeChild(this.doc.getElementById("lbOverlay"));
        objBody.removeChild(this.doc.getElementById("lbMain"));
    }
    var objOverlay = this.doc.createElement("div");
    objOverlay.setAttribute('id', 'lbOverlay');
    objOverlay.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    if ((this.ie && !this.ie7) || (this.ie7 && this.doc.compatMode == 'BackCompat')) {
        objOverlay.style.position = 'absolute';
    }
    objOverlay.style.display = 'none';
    objBody.appendChild(objOverlay);
    var objLytebox = this.doc.createElement("div");
    objLytebox.setAttribute('id', 'lbMain');
    objLytebox.style.display = 'none';
    objBody.appendChild(objLytebox);
    var objOuterContainer = this.doc.createElement("div");
    objOuterContainer.setAttribute('id', 'lbOuterContainer');
    objOuterContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objLytebox.appendChild(objOuterContainer);
    var objIframeContainer = this.doc.createElement("div");
    objIframeContainer.setAttribute('id', 'lbIframeContainer');
    objIframeContainer.style.display = 'none';
    objOuterContainer.appendChild(objIframeContainer);
    var objIframe = this.doc.createElement("iframe");
    objIframe.setAttribute('id', 'lbIframe');
    objIframe.setAttribute('name', 'lbIframe');
    objIframe.style.display = 'none';
    objIframeContainer.appendChild(objIframe);
    var objImageContainer = this.doc.createElement("div");
    objImageContainer.setAttribute('id', 'lbImageContainer');
    objOuterContainer.appendChild(objImageContainer);
    var objLyteboxImage = this.doc.createElement("img");
    objLyteboxImage.setAttribute('id', 'lbImage');
    objImageContainer.appendChild(objLyteboxImage);
    var objLoading = this.doc.createElement("div");
    objLoading.setAttribute('id', 'lbLoading');
    objOuterContainer.appendChild(objLoading);
    var objDetailsContainer = this.doc.createElement("div");
    objDetailsContainer.setAttribute('id', 'lbDetailsContainer');
    objDetailsContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objLytebox.appendChild(objDetailsContainer);
    var objDetailsData = this.doc.createElement("div");
    objDetailsData.setAttribute('id', 'lbDetailsData');
    objDetailsData.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objDetailsContainer.appendChild(objDetailsData);
    var objDetails = this.doc.createElement("div");
    objDetails.setAttribute('id', 'lbDetails');
    objDetailsData.appendChild(objDetails);
    var objCaption = this.doc.createElement("span");
    objCaption.setAttribute('id', 'lbCaption');
    objDetails.appendChild(objCaption);
    var objHoverNav = this.doc.createElement("div");
    objHoverNav.setAttribute('id', 'lbHoverNav');
    objImageContainer.appendChild(objHoverNav);
    var objBottomNav = this.doc.createElement("div");
    objBottomNav.setAttribute('id', 'lbBottomNav');
    objDetailsData.appendChild(objBottomNav);
    var objPrev = this.doc.createElement("a");
    objPrev.setAttribute('id', 'lbPrev');
    objPrev.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objPrev.setAttribute('href', '#');
    objHoverNav.appendChild(objPrev);
    var objNext = this.doc.createElement("a");
    objNext.setAttribute('id', 'lbNext');
    objNext.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objNext.setAttribute('href', '#');
    objHoverNav.appendChild(objNext);
    var objNumberDisplay = this.doc.createElement("span");
    objNumberDisplay.setAttribute('id', 'lbNumberDisplay');
    objDetails.appendChild(objNumberDisplay);
    var objNavDisplay = this.doc.createElement("span");
    objNavDisplay.setAttribute('id', 'lbNavDisplay');
    objNavDisplay.style.display = 'none';
    objDetails.appendChild(objNavDisplay);
    var objClose = this.doc.createElement("a");
    objClose.setAttribute('id', 'lbClose');
    objClose.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objClose.setAttribute('href', '#');
    objBottomNav.appendChild(objClose);
    var objPause = this.doc.createElement("a");
    objPause.setAttribute('id', 'lbPause');
    objPause.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objPause.setAttribute('href', '#');
    objPause.style.display = 'none';
    objBottomNav.appendChild(objPause);
    var objPlay = this.doc.createElement("a");
    objPlay.setAttribute('id', 'lbPlay');
    objPlay.setAttribute((this.ie ? 'className' : 'class'), this.theme);
    objPlay.setAttribute('href', '#');
    objPlay.style.display = 'none';
    objBottomNav.appendChild(objPlay);
};
LyteBox.prototype.updateLyteboxItems = function () {
    var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');
    for (var i = 0; i < anchors.length; i++) {
        var anchor = anchors[i];
        var relAttribute = String(anchor.getAttribute('rel'));
        if (anchor.getAttribute('href')) {
            if (relAttribute.toLowerCase().match('lytebox')) {
                anchor.onclick = function () {
                    myLytebox.start(this, false, false);
                    return false;
                }
            } else if (relAttribute.toLowerCase().match('lyteshow')) {
                anchor.onclick = function () {
                    myLytebox.start(this, true, false);
                    return false;
                }
            } else if (relAttribute.toLowerCase().match('lyteframe')) {
                anchor.onclick = function () {
                    myLytebox.start(this, false, true);
                    return false;
                }
            }
        }
    }
};
LyteBox.prototype.start = function (imageLink, doSlide, doFrame) {
    if (this.ie && !this.ie7) {
        this.toggleSelects('hide');
    }
    if (this.hideFlash) {
        this.toggleFlash('hide');
    }
    this.isLyteframe = (doFrame ? true : false);
    var pageSize = this.getPageSize();
    var objOverlay = this.doc.getElementById('lbOverlay');
    var objBody = this.doc.getElementsByTagName("body").item(0);
    objOverlay.style.height = pageSize[1] + "px";
    objOverlay.style.display = '';
    this.appear('lbOverlay', (this.doAnimations ? 0 : this.maxOpacity));
    var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');
    if (this.isLyteframe) {
        this.frameArray = [];
        this.frameNum = 0;
        if ((imageLink.getAttribute('rel') == 'lyteframe')) {
            var rev = imageLink.getAttribute('rev');
            this.frameArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title'), (rev == null || rev == '' ? 'width: 400px; height: 400px; scrolling: auto;' : rev)));
        } else {
            if (imageLink.getAttribute('rel').indexOf('lyteframe') != -1) {
                for (var i = 0; i < anchors.length; i++) {
                    var anchor = anchors[i];
                    if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) {
                        var rev = anchor.getAttribute('rev');
                        this.frameArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'), (rev == null || rev == '' ? 'width: 400px; height: 400px; scrolling: auto;' : rev)));
                    }
                }
                this.frameArray.removeDuplicates();
                while (this.frameArray[this.frameNum][0] != imageLink.getAttribute('href')) {
                    this.frameNum++;
                }
            }
        }
    } else {
        this.imageArray = [];
        this.imageNum = 0;
        this.slideArray = [];
        this.slideNum = 0;
        if ((imageLink.getAttribute('rel') == 'lytebox')) {
            this.imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));
        } else {
            if (imageLink.getAttribute('rel').indexOf('lytebox') != -1) {
                for (var i = 0; i < anchors.length; i++) {
                    var anchor = anchors[i];
                    if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) {
                        this.imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
                    }
                }
                this.imageArray.removeDuplicates();
                while (this.imageArray[this.imageNum][0] != imageLink.getAttribute('href')) {
                    this.imageNum++;
                }
            }
            if (imageLink.getAttribute('rel').indexOf('lyteshow') != -1) {
                for (var i = 0; i < anchors.length; i++) {
                    var anchor = anchors[i];
                    if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) {
                        this.slideArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
                    }
                }
                this.slideArray.removeDuplicates();
                while (this.slideArray[this.slideNum][0] != imageLink.getAttribute('href')) {
                    this.slideNum++;
                }
            }
        }
    }
    var object = this.doc.getElementById('lbMain');
    object.style.top = (this.getPageScroll() + (pageSize[3] / 15)) + "px";
    object.style.display = '';
    if (!this.outerBorder) {
        this.doc.getElementById('lbOuterContainer').style.border = 'none';
        this.doc.getElementById('lbDetailsContainer').style.border = 'none';
    } else {
        this.doc.getElementById('lbOuterContainer').style.borderBottom = '';
        this.doc.getElementById('lbOuterContainer').setAttribute((this.ie ? 'className' : 'class'), this.theme);
    }
    this.doc.getElementById('lbOverlay').onclick = function () {
        myLytebox.end();
        return false;
    }
    this.doc.getElementById('lbMain').onclick = function (e) {
        var e = e;
        if (!e) {
            if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) {
                e = window.parent.window.event;
            } else {
                e = window.event;
            }
        }
        var id = (e.target ? e.target.id : e.srcElement.id);
        if (id == 'lbMain') {
            myLytebox.end();
            return false;
        }
    }
    this.doc.getElementById('lbClose').onclick = function () {
        myLytebox.end();
        return false;
    }
    this.doc.getElementById('lbPause').onclick = function () {
        myLytebox.togglePlayPause("lbPause", "lbPlay");
        return false;
    }
    this.doc.getElementById('lbPlay').onclick = function () {
        myLytebox.togglePlayPause("lbPlay", "lbPause");
        return false;
    }
    this.isSlideshow = doSlide;
    this.isPaused = (this.slideNum != 0 ? true : false);
    if (this.isSlideshow && this.showPlayPause && this.isPaused) {
        this.doc.getElementById('lbPlay').style.display = '';
        this.doc.getElementById('lbPause').style.display = 'none';
    }
    if (this.isLyteframe) {
        this.changeContent(this.frameNum);
    } else {
        if (this.isSlideshow) {
            this.changeContent(this.slideNum);
        } else {
            this.changeContent(this.imageNum);
        }
    }
};
LyteBox.prototype.changeContent = function (imageNum) {
    if (this.isSlideshow) {
        for (var i = 0; i < this.slideshowIDCount; i++) {
            window.clearTimeout(this.slideshowIDArray[i]);
        }
    }
    this.activeImage = this.activeSlide = this.activeFrame = imageNum;
    if (!this.outerBorder) {
        this.doc.getElementById('lbOuterContainer').style.border = 'none';
        this.doc.getElementById('lbDetailsContainer').style.border = 'none';
    } else {
        this.doc.getElementById('lbOuterContainer').style.borderBottom = '';
        this.doc.getElementById('lbOuterContainer').setAttribute((this.ie ? 'className' : 'class'), this.theme);
    }
    this.doc.getElementById('lbLoading').style.display = '';
    this.doc.getElementById('lbImage').style.display = 'none';
    this.doc.getElementById('lbIframe').style.display = 'none';
    this.doc.getElementById('lbPrev').style.display = 'none';
    this.doc.getElementById('lbNext').style.display = 'none';
    this.doc.getElementById('lbIframeContainer').style.display = 'none';
    this.doc.getElementById('lbDetailsContainer').style.display = 'none';
    this.doc.getElementById('lbNumberDisplay').style.display = 'none';
    if (this.navType == 2 || this.isLyteframe) {
        object = this.doc.getElementById('lbNavDisplay');
        object.innerHTML = '&nbsp;&nbsp;&nbsp;<span id="lbPrev2_Off" style="display: none;" class="' + this.theme + '">&laquo; prev</span><a href="#" id="lbPrev2" class="' + this.theme + '" style="display: none;">&laquo; prev</a> <b id="lbSpacer" class="' + this.theme + '">||</b> <span id="lbNext2_Off" style="display: none;" class="' + this.theme + '">next &raquo;</span><a href="#" id="lbNext2" class="' + this.theme + '" style="display: none;">next &raquo;</a>';
        object.style.display = 'none';
    }
    if (this.isLyteframe) {
        var iframe = myLytebox.doc.getElementById('lbIframe');
        var styles = this.frameArray[this.activeFrame][2];
        var aStyles = styles.split(';');
        for (var i = 0; i < aStyles.length; i++) {
            if (aStyles[i].indexOf('width:') >= 0) {
                var w = aStyles[i].replace('width:', '');
                iframe.width = w.trim();
            } else if (aStyles[i].indexOf('height:') >= 0) {
                var h = aStyles[i].replace('height:', '');
                iframe.height = h.trim();
            } else if (aStyles[i].indexOf('scrolling:') >= 0) {
                var s = aStyles[i].replace('scrolling:', '');
                iframe.scrolling = s.trim();
            } else if (aStyles[i].indexOf('border:') >= 0) {
                // Not implemented yet, as there are cross-platform issues with setting the border (from a GUI standpoint)
                //var b = aStyles[i].replace('border:', '');
                //iframe.style.border = b.trim();
            }
        }
        this.resizeContainer(parseInt(iframe.width), parseInt(iframe.height));
    } else {
        imgPreloader = new Image();
        imgPreloader.onload = function () {
            var imageWidth = imgPreloader.width;
            var imageHeight = imgPreloader.height;
            if (myLytebox.autoResize) {
                var pagesize = myLytebox.getPageSize();
                var x = pagesize[2] - 150;
                var y = pagesize[3] - 150;
                if (imageWidth > x) {
                    imageHeight = Math.round(imageHeight * (x / imageWidth));
                    imageWidth = x;
                    if (imageHeight > y) {
                        imageWidth = Math.round(imageWidth * (y / imageHeight));
                        imageHeight = y;
                    }
                } else if (imageHeight > y) {
                    imageWidth = Math.round(imageWidth * (y / imageHeight));
                    imageHeight = y;
                    if (imageWidth > x) {
                        imageHeight = Math.round(imageHeight * (x / imageWidth));
                        imageWidth = x;
                    }
                }
            }
            var lbImage = myLytebox.doc.getElementById('lbImage')
            lbImage.src = (myLytebox.isSlideshow ? myLytebox.slideArray[myLytebox.activeSlide][0] : myLytebox.imageArray[myLytebox.activeImage][0]);
            lbImage.width = imageWidth;
            lbImage.height = imageHeight;
            myLytebox.resizeContainer(imageWidth, imageHeight);
            imgPreloader.onload = function () {};
        }
        imgPreloader.src = (this.isSlideshow ? this.slideArray[this.activeSlide][0] : this.imageArray[this.activeImage][0]);
    }
};
LyteBox.prototype.resizeContainer = function (imgWidth, imgHeight) {
    this.wCur = this.doc.getElementById('lbOuterContainer').offsetWidth;
    this.hCur = this.doc.getElementById('lbOuterContainer').offsetHeight;
    this.xScale = ((imgWidth + (this.borderSize * 2)) / this.wCur) * 100;
    this.yScale = ((imgHeight + (this.borderSize * 2)) / this.hCur) * 100;
    var wDiff = (this.wCur - this.borderSize * 2) - imgWidth;
    var hDiff = (this.hCur - this.borderSize * 2) - imgHeight;
    if (!(hDiff == 0)) {
        this.hDone = false;
        this.resizeH('lbOuterContainer', this.hCur, imgHeight + this.borderSize * 2, this.getPixelRate(this.hCur, imgHeight));
    } else {
        this.hDone = true;
    }
    if (!(wDiff == 0)) {
        this.wDone = false;
        this.resizeW('lbOuterContainer', this.wCur, imgWidth + this.borderSize * 2, this.getPixelRate(this.wCur, imgWidth));
    } else {
        this.wDone = true;
    }
    if ((hDiff == 0) && (wDiff == 0)) {
        if (this.ie) {
            this.pause(250);
        } else {
            this.pause(100);
        }
    }
    this.doc.getElementById('lbPrev').style.height = imgHeight + "px";
    this.doc.getElementById('lbNext').style.height = imgHeight + "px";
    this.doc.getElementById('lbDetailsContainer').style.width = (imgWidth + (this.borderSize * 2) + (this.ie && this.doc.compatMode == "BackCompat" && this.outerBorder ? 2 : 0)) + "px";
    this.showContent();
};
LyteBox.prototype.showContent = function () {
    if (this.wDone && this.hDone) {
        for (var i = 0; i < this.showContentTimerCount; i++) {
            window.clearTimeout(this.showContentTimerArray[i]);
        }
        if (this.outerBorder) {
            this.doc.getElementById('lbOuterContainer').style.borderBottom = 'none';
        }
        this.doc.getElementById('lbLoading').style.display = 'none';
        if (this.isLyteframe) {
            this.doc.getElementById('lbIframe').style.display = '';
            this.appear('lbIframe', (this.doAnimations ? 0 : 100));
        } else {
            this.doc.getElementById('lbImage').style.display = '';
            this.appear('lbImage', (this.doAnimations ? 0 : 100));
            this.preloadNeighborImages();
        }
        if (this.isSlideshow) {
            if (this.activeSlide == (this.slideArray.length - 1)) {
                if (this.autoEnd) {
                    this.slideshowIDArray[this.slideshowIDCount++] = setTimeout("myLytebox.end('slideshow')", this.slideInterval);
                }
            } else {
                if (!this.isPaused) {
                    this.slideshowIDArray[this.slideshowIDCount++] = setTimeout("myLytebox.changeContent(" + (this.activeSlide + 1) + ")", this.slideInterval);
                }
            }
            this.doc.getElementById('lbHoverNav').style.display = (this.showNavigation && this.navType == 1 ? '' : 'none');
            this.doc.getElementById('lbClose').style.display = (this.showClose ? '' : 'none');
            this.doc.getElementById('lbDetails').style.display = (this.showDetails ? '' : 'none');
            this.doc.getElementById('lbPause').style.display = (this.showPlayPause && !this.isPaused ? '' : 'none');
            this.doc.getElementById('lbPlay').style.display = (this.showPlayPause && !this.isPaused ? 'none' : '');
            this.doc.getElementById('lbNavDisplay').style.display = (this.showNavigation && this.navType == 2 ? '' : 'none');
        } else {
            this.doc.getElementById('lbHoverNav').style.display = (this.navType == 1 && !this.isLyteframe ? '' : 'none');
            if ((this.navType == 2 && !this.isLyteframe && this.imageArray.length > 1) || (this.frameArray.length > 1 && this.isLyteframe)) {
                this.doc.getElementById('lbNavDisplay').style.display = '';
            } else {
                this.doc.getElementById('lbNavDisplay').style.display = 'none';
            }
            this.doc.getElementById('lbClose').style.display = '';
            this.doc.getElementById('lbDetails').style.display = '';
            this.doc.getElementById('lbPause').style.display = 'none';
            this.doc.getElementById('lbPlay').style.display = 'none';
        }
        this.doc.getElementById('lbImageContainer').style.display = (this.isLyteframe ? 'none' : '');
        this.doc.getElementById('lbIframeContainer').style.display = (this.isLyteframe ? '' : 'none');
        try {
            this.doc.getElementById('lbIframe').src = this.frameArray[this.activeFrame][0];
        } catch (e) {}
    } else {
        this.showContentTimerArray[this.showContentTimerCount++] = setTimeout("myLytebox.showContent()", 200);
    }
};
LyteBox.prototype.updateDetails = function () {
    var object = this.doc.getElementById('lbCaption');
    var sTitle = (this.isSlideshow ? this.slideArray[this.activeSlide][1] : (this.isLyteframe ? this.frameArray[this.activeFrame][1] : this.imageArray[this.activeImage][1]));
    object.style.display = '';
    object.innerHTML = (sTitle == null ? '' : sTitle);
    this.updateNav();
    this.doc.getElementById('lbDetailsContainer').style.display = '';
    object = this.doc.getElementById('lbNumberDisplay');
    if (this.isSlideshow && this.slideArray.length > 1) {
        object.style.display = '';
        object.innerHTML = "Image " + eval(this.activeSlide + 1) + " of " + this.slideArray.length;
        this.doc.getElementById('lbNavDisplay').style.display = (this.navType == 2 && this.showNavigation ? '' : 'none');
    } else if (this.imageArray.length > 1 && !this.isLyteframe) {
        object.style.display = '';
        object.innerHTML = "Image " + eval(this.activeImage + 1) + " of " + this.imageArray.length;
        this.doc.getElementById('lbNavDisplay').style.display = (this.navType == 2 ? '' : 'none');
    } else if (this.frameArray.length > 1 && this.isLyteframe) {
        object.style.display = '';
        object.innerHTML = "Page " + eval(this.activeFrame + 1) + " of " + this.frameArray.length;
        this.doc.getElementById('lbNavDisplay').style.display = '';
    } else {
        this.doc.getElementById('lbNavDisplay').style.display = 'none';
    }
    this.appear('lbDetailsContainer', (this.doAnimations ? 0 : 100));
};
LyteBox.prototype.updateNav = function () {
    if (this.isSlideshow) {
        if (this.activeSlide != 0) {
            var object = (this.navType == 2 ? this.doc.getElementById('lbPrev2') : this.doc.getElementById('lbPrev'));
            object.style.display = '';
            object.onclick = function () {
                if (myLytebox.pauseOnPrevClick) {
                    myLytebox.togglePlayPause("lbPause", "lbPlay");
                }
                myLytebox.changeContent(myLytebox.activeSlide - 1);
                return false;
            }
        } else {
            if (this.navType == 2) {
                this.doc.getElementById('lbPrev2_Off').style.display = '';
            }
        }
        if (this.activeSlide != (this.slideArray.length - 1)) {
            var object = (this.navType == 2 ? this.doc.getElementById('lbNext2') : this.doc.getElementById('lbNext'));
            object.style.display = '';
            object.onclick = function () {
                if (myLytebox.pauseOnNextClick) {
                    myLytebox.togglePlayPause("lbPause", "lbPlay");
                }
                myLytebox.changeContent(myLytebox.activeSlide + 1);
                return false;
            }
        } else {
            if (this.navType == 2) {
                this.doc.getElementById('lbNext2_Off').style.display = '';
            }
        }
    } else if (this.isLyteframe) {
        if (this.activeFrame != 0) {
            var object = this.doc.getElementById('lbPrev2');
            object.style.display = '';
            object.onclick = function () {
                myLytebox.changeContent(myLytebox.activeFrame - 1);
                return false;
            }
        } else {
            this.doc.getElementById('lbPrev2_Off').style.display = '';
        }
        if (this.activeFrame != (this.frameArray.length - 1)) {
            var object = this.doc.getElementById('lbNext2');
            object.style.display = '';
            object.onclick = function () {
                myLytebox.changeContent(myLytebox.activeFrame + 1);
                return false;
            }
        } else {
            this.doc.getElementById('lbNext2_Off').style.display = '';
        }
    } else {
        if (this.activeImage != 0) {
            var object = (this.navType == 2 ? this.doc.getElementById('lbPrev2') : this.doc.getElementById('lbPrev'));
            object.style.display = '';
            object.onclick = function () {
                myLytebox.changeContent(myLytebox.activeImage - 1);
                return false;
            }
        } else {
            if (this.navType == 2) {
                this.doc.getElementById('lbPrev2_Off').style.display = '';
            }
        }
        if (this.activeImage != (this.imageArray.length - 1)) {
            var object = (this.navType == 2 ? this.doc.getElementById('lbNext2') : this.doc.getElementById('lbNext'));
            object.style.display = '';
            object.onclick = function () {
                myLytebox.changeContent(myLytebox.activeImage + 1);
                return false;
            }
        } else {
            if (this.navType == 2) {
                this.doc.getElementById('lbNext2_Off').style.display = '';
            }
        }
    }
    this.enableKeyboardNav();
};
LyteBox.prototype.enableKeyboardNav = function () {
    document.onkeydown = this.keyboardAction;
};
LyteBox.prototype.disableKeyboardNav = function () {
    document.onkeydown = '';
};
LyteBox.prototype.keyboardAction = function (e) {
    var keycode = key = escape = null;
    keycode = (e == null) ? event.keyCode : e.which;
    key = String.fromCharCode(keycode).toLowerCase();
    escape = (e == null) ? 27 : e.DOM_VK_ESCAPE;
    if ((key == 'x') || (key == 'c') || (keycode == escape)) {
        myLytebox.end();
    } else if ((key == 'p') || (keycode == 37)) {
        if (myLytebox.isSlideshow) {
            if (myLytebox.activeSlide != 0) {
                myLytebox.disableKeyboardNav();
                myLytebox.changeContent(myLytebox.activeSlide - 1);
            }
        } else if (myLytebox.isLyteframe) {
            if (myLytebox.activeFrame != 0) {
                myLytebox.disableKeyboardNav();
                myLytebox.changeContent(myLytebox.activeFrame - 1);
            }
        } else {
            if (myLytebox.activeImage != 0) {
                myLytebox.disableKeyboardNav();
                myLytebox.changeContent(myLytebox.activeImage - 1);
            }
        }
    } else if ((key == 'n') || (keycode == 39)) {
        if (myLytebox.isSlideshow) {
            if (myLytebox.activeSlide != (myLytebox.slideArray.length - 1)) {
                myLytebox.disableKeyboardNav();
                myLytebox.changeContent(myLytebox.activeSlide + 1);
            }
        } else if (myLytebox.isLyteframe) {
            if (myLytebox.activeFrame != (myLytebox.frameArray.length - 1)) {
                myLytebox.disableKeyboardNav();
                myLytebox.changeContent(myLytebox.activeFrame + 1);
            }
        } else {
            if (myLytebox.activeImage != (myLytebox.imageArray.length - 1)) {
                myLytebox.disableKeyboardNav();
                myLytebox.changeContent(myLytebox.activeImage + 1);
            }
        }
    }
};
LyteBox.prototype.preloadNeighborImages = function () {
    if (this.isSlideshow) {
        if ((this.slideArray.length - 1) > this.activeSlide) {
            preloadNextImage = new Image();
            preloadNextImage.src = this.slideArray[this.activeSlide + 1][0];
        }
        if (this.activeSlide > 0) {
            preloadPrevImage = new Image();
            preloadPrevImage.src = this.slideArray[this.activeSlide - 1][0];
        }
    } else {
        if ((this.imageArray.length - 1) > this.activeImage) {
            preloadNextImage = new Image();
            preloadNextImage.src = this.imageArray[this.activeImage + 1][0];
        }
        if (this.activeImage > 0) {
            preloadPrevImage = new Image();
            preloadPrevImage.src = this.imageArray[this.activeImage - 1][0];
        }
    }
};
LyteBox.prototype.togglePlayPause = function (hideID, showID) {
    if (this.isSlideshow && hideID == "lbPause") {
        for (var i = 0; i < this.slideshowIDCount; i++) {
            window.clearTimeout(this.slideshowIDArray[i]);
        }
    }
    this.doc.getElementById(hideID).style.display = 'none';
    this.doc.getElementById(showID).style.display = '';
    if (hideID == "lbPlay") {
        this.isPaused = false;
        if (this.activeSlide == (this.slideArray.length - 1)) {
            this.end();
        } else {
            this.changeContent(this.activeSlide + 1);
        }
    } else {
        this.isPaused = true;
    }
};
LyteBox.prototype.end = function (caller) {
    var closeClick = (caller == 'slideshow' ? false : true);
    if (this.isSlideshow && this.isPaused && !closeClick) {
        return;
    }
    this.disableKeyboardNav();
    this.doc.getElementById('lbMain').style.display = 'none';
    this.fade('lbOverlay', (this.doAnimations ? this.maxOpacity : 0));
    this.toggleSelects('visible');
    if (this.hideFlash) {
        this.toggleFlash('visible');
    }
    if (this.isSlideshow) {
        for (var i = 0; i < this.slideshowIDCount; i++) {
            window.clearTimeout(this.slideshowIDArray[i]);
        }
    }
    if (this.isLyteframe) {
        this.initialize();
    }
};
LyteBox.prototype.checkFrame = function () {
    if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) {
        this.isFrame = true;
        this.lytebox = "window.parent." + window.name + ".myLytebox";
        this.doc = parent.document;
    } else {
        this.isFrame = false;
        this.lytebox = "myLytebox";
        this.doc = document;
    }
};
LyteBox.prototype.getPixelRate = function (cur, img) {
    var diff = (img > cur) ? img - cur : cur - img;
    if (diff >= 0 && diff <= 100) {
        return 10;
    }
    if (diff > 100 && diff <= 200) {
        return 15;
    }
    if (diff > 200 && diff <= 300) {
        return 20;
    }
    if (diff > 300 && diff <= 400) {
        return 25;
    }
    if (diff > 400 && diff <= 500) {
        return 30;
    }
    if (diff > 500 && diff <= 600) {
        return 35;
    }
    if (diff > 600 && diff <= 700) {
        return 40;
    }
    if (diff > 700) {
        return 45;
    }
};
LyteBox.prototype.appear = function (id, opacity) {
    var object = this.doc.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + (opacity + 10) + ")";
    if (opacity == 100 && (id == 'lbImage' || id == 'lbIframe')) {
        try {
            object.removeAttribute("filter");
        } catch (e) {} /* Fix added for IE Alpha Opacity Filter bug. */
        this.updateDetails();
    } else if (opacity >= this.maxOpacity && id == 'lbOverlay') {
        for (var i = 0; i < this.overlayTimerCount; i++) {
            window.clearTimeout(this.overlayTimerArray[i]);
        }
        return;
    } else if (opacity >= 100 && id == 'lbDetailsContainer') {
        try {
            object.removeAttribute("filter");
        } catch (e) {} /* Fix added for IE Alpha Opacity Filter bug. */
        for (var i = 0; i < this.imageTimerCount; i++) {
            window.clearTimeout(this.imageTimerArray[i]);
        }
        this.doc.getElementById('lbOverlay').style.height = this.getPageSize()[1] + "px";
    } else {
        if (id == 'lbOverlay') {
            this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLytebox.appear('" + id + "', " + (opacity + 20) + ")", 1);
        } else {
            this.imageTimerArray[this.imageTimerCount++] = setTimeout("myLytebox.appear('" + id + "', " + (opacity + 10) + ")", 1);
        }
    }
};
LyteBox.prototype.fade = function (id, opacity) {
    var object = this.doc.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
    if (opacity <= 0) {
        try {
            object.display = 'none';
        } catch (err) {}
    } else if (id == 'lbOverlay') {
        this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLytebox.fade('" + id + "', " + (opacity - 20) + ")", 1);
    } else {
        this.timerIDArray[this.timerIDCount++] = setTimeout("myLytebox.fade('" + id + "', " + (opacity - 10) + ")", 1);
    }
};
LyteBox.prototype.resizeW = function (id, curW, maxW, pixelrate, speed) {
    if (!this.hDone) {
        this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLytebox.resizeW('" + id + "', " + curW + ", " + maxW + ", " + pixelrate + ")", 100);
        return;
    }
    var object = this.doc.getElementById(id);
    var timer = speed ? speed : (this.resizeDuration / 2);
    var newW = (this.doAnimations ? curW : maxW);
    object.style.width = (newW) + "px";
    if (newW < maxW) {
        newW += (newW + pixelrate >= maxW) ? (maxW - newW) : pixelrate;
    } else if (newW > maxW) {
        newW -= (newW - pixelrate <= maxW) ? (newW - maxW) : pixelrate;
    }
    this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLytebox.resizeW('" + id + "', " + newW + ", " + maxW + ", " + pixelrate + ", " + (timer + 0.02) + ")", timer + 0.02);
    if (parseInt(object.style.width) == maxW) {
        this.wDone = true;
        for (var i = 0; i < this.resizeWTimerCount; i++) {
            window.clearTimeout(this.resizeWTimerArray[i]);
        }
    }
};
LyteBox.prototype.resizeH = function (id, curH, maxH, pixelrate, speed) {
    var timer = speed ? speed : (this.resizeDuration / 2);
    var object = this.doc.getElementById(id);
    var newH = (this.doAnimations ? curH : maxH);
    object.style.height = (newH) + "px";
    if (newH < maxH) {
        newH += (newH + pixelrate >= maxH) ? (maxH - newH) : pixelrate;
    } else if (newH > maxH) {
        newH -= (newH - pixelrate <= maxH) ? (newH - maxH) : pixelrate;
    }
    this.resizeHTimerArray[this.resizeHTimerCount++] = setTimeout("myLytebox.resizeH('" + id + "', " + newH + ", " + maxH + ", " + pixelrate + ", " + (timer + .02) + ")", timer + .02);
    if (parseInt(object.style.height) == maxH) {
        this.hDone = true;
        for (var i = 0; i < this.resizeHTimerCount; i++) {
            window.clearTimeout(this.resizeHTimerArray[i]);
        }
    }
};
LyteBox.prototype.getPageScroll = function () {
    if (self.pageYOffset) {
        return this.isFrame ? parent.pageYOffset : self.pageYOffset;
    } else if (this.doc.documentElement && this.doc.documentElement.scrollTop) {
        return this.doc.documentElement.scrollTop;
    } else if (document.body) {
        return this.doc.body.scrollTop;
    }
};
LyteBox.prototype.getPageSize = function () {
    var xScroll, yScroll, windowWidth, windowHeight;
    if (window.innerHeight && window.scrollMaxY) {
        xScroll = this.doc.scrollWidth;
        yScroll = (this.isFrame ? parent.innerHeight : self.innerHeight) + (this.isFrame ? parent.scrollMaxY : self.scrollMaxY);
    } else if (this.doc.body.scrollHeight > this.doc.body.offsetHeight) {
        xScroll = this.doc.body.scrollWidth;
        yScroll = this.doc.body.scrollHeight;
    } else {
        xScroll = this.doc.getElementsByTagName("html").item(0).offsetWidth;
        yScroll = this.doc.getElementsByTagName("html").item(0).offsetHeight;
        xScroll = (xScroll < this.doc.body.offsetWidth) ? this.doc.body.offsetWidth : xScroll;
        yScroll = (yScroll < this.doc.body.offsetHeight) ? this.doc.body.offsetHeight : yScroll;
    }
    if (self.innerHeight) {
        windowWidth = (this.isFrame) ? parent.innerWidth : self.innerWidth;
        windowHeight = (this.isFrame) ? parent.innerHeight : self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) {
        windowWidth = this.doc.documentElement.clientWidth;
        windowHeight = this.doc.documentElement.clientHeight;
    } else if (document.body) {
        windowWidth = this.doc.getElementsByTagName("html").item(0).clientWidth;
        windowHeight = this.doc.getElementsByTagName("html").item(0).clientHeight;
        windowWidth = (windowWidth == 0) ? this.doc.body.clientWidth : windowWidth;
        windowHeight = (windowHeight == 0) ? this.doc.body.clientHeight : windowHeight;
    }
    var pageHeight = (yScroll < windowHeight) ? windowHeight : yScroll;
    var pageWidth = (xScroll < windowWidth) ? windowWidth : xScroll;
    return new Array(pageWidth, pageHeight, windowWidth, windowHeight);
};
LyteBox.prototype.toggleFlash = function (state) {
    var objects = this.doc.getElementsByTagName("object");
    for (var i = 0; i < objects.length; i++) {
        objects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
    }
    var embeds = this.doc.getElementsByTagName("embed");
    for (var i = 0; i < embeds.length; i++) {
        embeds[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
    }
    if (this.isFrame) {
        for (var i = 0; i < parent.frames.length; i++) {
            try {
                objects = parent.frames[i].window.document.getElementsByTagName("object");
                for (var j = 0; j < objects.length; j++) {
                    objects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
                }
            } catch (e) {}
            try {
                embeds = parent.frames[i].window.document.getElementsByTagName("embed");
                for (var j = 0; j < embeds.length; j++) {
                    embeds[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
                }
            } catch (e) {}
        }
    }
};
LyteBox.prototype.toggleSelects = function (state) {
    var selects = this.doc.getElementsByTagName("select");
    for (var i = 0; i < selects.length; i++) {
        selects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
    }
    if (this.isFrame) {
        for (var i = 0; i < parent.frames.length; i++) {
            try {
                selects = parent.frames[i].window.document.getElementsByTagName("select");
                for (var j = 0; j < selects.length; j++) {
                    selects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
                }
            } catch (e) {}
        }
    }
};
LyteBox.prototype.pause = function (numberMillis) {
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime) {
            return;
        }
    }
};
if (window.addEventListener) {
    window.addEventListener("load", initLytebox, false);
} else if (window.attachEvent) {
    window.attachEvent("onload", initLytebox);
} else {
    window.onload = function () {
        initLytebox();
    }
}

function initLytebox() {
    myLytebox = new LyteBox();
}

function clearBox(formfield) {
    if (formfield.defaultValue == formfield.value) formfield.value = ""
}

function initMenu() {
    $('#menu li a').click(

    function () {
        $(this).next().slideToggle('normal');
    });
}

function navopen() {
    if (flowmeters) {
        $('.flow').css({
            display: 'block'
        });
        $('.link1').css('background-position', '-220px 0px');
        $('.flowmeters').css({
            display: 'block'
        });
    } else if (flowswitches) {}
};
$(document).ready(function () {
    initMenu();
    $('#mce-EMAIL').click(function () {
        if ($(this).hasClass('greyedtext')) {
            $(this).val(' ').removeClass('greyedtext');
        }
    });
});
