/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	WCH.js - Windowed Controls Hider v3.10
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	(c) Copyright 2003, Aleksandar Vacic, aleck@sezampro.yu, www.aplus.co.yu
	## This work is licensed under the Creative Commons Attribution-ShareAlike License.
	## To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	Credits: Mike Foster for x functions (cross-browser.com)
	Credits: Tim Connor for short and sweet way of dealing with IE5.0 - dynamic creation of style rule (www.infosauce.com)
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	Based on idea presented by Joe King. Works with IE5.0+/Win
	IE 5.5+: place iFrame below the layer to hide windowed controls
	IE 5.0 : hide/show all elements that have "WCHhider" class
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/


var WCH_Constructor = function() {
    //	exit point for anything but IE5.0+/Win
    if (!(document.all && document.getElementById && !window.opera && navigator.userAgent.toLowerCase().indexOf("mac") == -1)) {
        this.Apply = function() {
        };
        this.Discard = function() {
        };
        return;
    }

    //	private properties
    var _bIE55 = false;
    var _bIE6 = false;
    var _oRule = null;
    var _bSetup = true;
    var _oSelf = this;

    //	public: hides windowed controls
    this.Apply = function(vLayer, vContainer, bResize) {
        if (_bSetup) _Setup();

        if (_bIE55 && (oIframe = _Hider(vLayer, vContainer, bResize))) {
            oIframe.style.visibility = "visible";
        } else if (_oRule != null) {
            _oRule.style.visibility = "hidden";
        }

    };

    //	public: shows windowed controls
    this.Discard = function(vLayer, vContainer) {
        if (_bIE55 && (oIframe = _Hider(vLayer, vContainer, false))) {
            oIframe.style.visibility = "hidden";
        } else if (_oRule != null) {
            _oRule.style.visibility = "visible";
        }
    };

    //	private: returns iFrame reference for IE5.5+
    function _Hider(vLayer, vContainer, bResize) {
        var oLayer = _GetObj(vLayer);
        var oContainer = ( (oTmp = _GetObj(vContainer)) ? oTmp : document.getElementsByTagName("body")[0] );
        if (!oLayer || !oContainer) return;
        //	is it there already?
        var oIframe = document.getElementById("WCHhider" + oLayer.id);

        //	if not, create it
        if (!oIframe) {
            //	IE 6 has this property, IE 5 not. IE 5.5(even SP2) crashes when filter is applied, hence the check
            var sFilter = (_bIE6) ? "filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);" : "";
            //	get z-index of the object
            var zIndex = oLayer.style.zIndex;
            if (zIndex == "") zIndex = oLayer.currentStyle.zIndex;
            zIndex = parseInt(zIndex);
            //	if no z-index, do nothing
            if (isNaN(zIndex)) return null;
            //	if z-index is below 2, do nothing (no room for Hider)
            if (zIndex < 2) return null;
            //	go one step below for Hider
            zIndex--;
            var sHiderID = "WCHhider" + oLayer.id;
            oContainer.insertAdjacentHTML("afterBegin", '<iframe class="WCHiframe" src="javascript:false;" id="' + sHiderID + '" scroll="no" frameborder="0" style="position:absolute;visibility:hidden;' + sFilter + 'border:0;top:0;left;0;width:0;height:0;background-color:#ccc;z-index:' + zIndex + ';"></iframe>');
            oIframe = document.getElementById(sHiderID);
            //	then do calculation
            _SetPos(oIframe, oLayer);
        } else if (bResize) {
            //	resize the iFrame if asked
            _SetPos(oIframe, oLayer);
        }
        return oIframe;
    }
    ;

    //	private: set size and position of the Hider
    function _SetPos(oIframe, oLayer) {
        //	fetch and set size
        oIframe.style.width = oLayer.offsetWidth + "px";
        oIframe.style.height = oLayer.offsetHeight + "px";
        //	move to specified position
        oIframe.style.left = oLayer.offsetLeft + "px";
        oIframe.style.top = oLayer.offsetTop + "px";
    }
    ;

    //	private: returns object reference
    function _GetObj(vObj) {
        var oObj = null;
        switch (typeof(vObj)) {
            case "object":
                oObj = vObj;
                break;
            case "string":
                oObj = document.getElementById(vObj);
                break;
        }
        return oObj;
    }
    ;

    //	private: setup properties on first call to Apply
    function _Setup() {
        _bIE55 = (typeof(document.body.contentEditable) != "undefined");
        _bIE6 = (typeof(document.compatMode) != "undefined");

        if (!_bIE55) {
            if (document.styleSheets.length == 0)
                document.createStyleSheet();
            var oSheet = document.styleSheets[0];
            oSheet.addRule(".WCHhider", "visibility:visible");
            _oRule = oSheet.rules(oSheet.rules.length - 1);
        }

        _bSetup = false;
    }
    ;
};
var WCH = new WCH_Constructor();

