var agt=navigator.userAgent.toLowerCase();
var is_nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) && (agt.indexOf('webtv')==-1));
var is_major = parseInt(navigator.appVersion);

var LayerToHide, TriggerName, LayerActiveFlags = new Array, ButtonActiveFlags = new Array
var nTop = 205
////


function ActivateButton(layername, tagOwner, bScrollDown) {
    var layerobject = GetLayerObj(layername)
    if (layerobject) {
        if (is_nav && (is_major >= 5)) // Nav 5+
            layerobject.style.width = "0"; // so layer will hide

        ButtonActiveFlags[layername] = true
        
        var nX, nY
        nX = tagOwner.offsetLeft
        if (bScrollDown)
            nY = tagOwner.offsetTop + tagOwner.offsetHeight
        else
            nY = - (tagOwner.offsetTop - 15)
        SetLayerVisibility(layername,'visible', nX, nY)
        // set handlers, makes 'this' relevant in function
        layerobject.onmouseover = MOverLayer
        layerobject.onmouseout = MOutLayer
    }
    TriggerName = layername
}


function DeactivateButton() {
    if (TriggerName) {
        ButtonActiveFlags[ TriggerName ] = false
        setTimeout("HidePopup(\'" + TriggerName + "\')",5)
        TriggerName = null
    }
    if (LayerToHide) {
        setTimeout("ShowConflictLayer('" + LayerToHide + "')",10)
    }
}


function GetPositionSize(layername) {
    var layerobject = GetLayerObj(layername)
    if (layerobject) {
        if (document.layers) {
            this.x = layerobject.pageX
            this.y = layerobject.pageY
            this.width = layerobject.clip.width
            this.height = layerobject.clip.height
        }
        else {
            var x = layerobject.offsetLeft , y = layerobject.offsetTop , el = layerobject
            do {
                el = el.offsetParent; x += el.offsetLeft; y += el.offsetTop
            } while (el.tagName != "BODY")
            this.x = x
            this.y = y
            this.width = layerobject.offsetWidth
            this.height = layerobject.offsetHeight
        }
    }
}


function ActivateWithHide(layername,hidelayername) {
    ActivateButton(layername)
    if (! (is_nav && (is_major >= 5)) ) { // Nav5+, unnecessary
        var layerobject = GetLayerObj(hidelayername)
        if (layerobject) {
            hidelayerInfo = new GetPositionSize(hidelayername)
            layerInfo = new GetPositionSize(layername)

            if ( (hidelayerInfo.x < layerInfo.x && hidelayerInfo.x+hidelayerInfo.width < layerInfo.x) ||
            (layerInfo.x < hidelayerInfo.x && layerInfo.x+layerInfo.width < hidelayerInfo.x) ||
            (hidelayerInfo.y < layerInfo.y && hidelayerInfo.y+hidelayerInfo.height < layerInfo.y) ||
            (layerInfo.y < hidelayerInfo.y && layerInfo.y+layerInfo.height < hidelayerInfo.y) )
            { // layers don't overlap
            } else {
                SetLayerVisibility(hidelayername,'hidden', 0, 0)
                layerobject.trigger = layername
                LayerToHide = hidelayername
            }
        }
    }
}


function MOverLayer() {
    LayerActiveFlags[this.id] = true
}


function MOutLayer() {
    LayerActiveFlags[this.id] = false
    setTimeout("HidePopup(\'" + this.id + "\')",5)
    if (LayerToHide) {
        setTimeout("ShowConflictLayer('" + LayerToHide + "')",10)
    }
}


function SetLayerVisibility(layername, setting, nX, nY) {
    var layerobject = GetLayerObj(layername)
    if ( layerobject )
        if ( layerobject.style ) {
            layerobject.style.visibility = setting            
            layerobject.style.left = nX
            if (nY > 0)
                layerobject.style.top = nY
            else
                layerobject.style.top = -nY - parseInt(layerobject.style.height)
        }
        else {
            layerobject.visibility = setting
            layerobject.left = nX
            if (nY > 0)
                layerobject.top = nY
            else
                layerobject.top = -nY - parseInt(layerobject.style.height)
        }
}


function HidePopup(layername) {
    if ( !LayerActiveFlags[layername] && !ButtonActiveFlags[layername] ) {
        SetLayerVisibility(layername,'hidden', 0, 0)
    }
}


function ShowConflictLayer(layername) {
    var layerobject = GetLayerObj(layername)
    if (layerobject)
        if ( !LayerActiveFlags[ layerobject.trigger ] && !ButtonActiveFlags[ layerobject.trigger ] ) {
            SetLayerVisibility(layername,'visible', 0, 0)
            LayerToHide = null
        }
}


function GetLayerObj(layername) {
    if (document.getElementById) // DOM
        return document.getElementById(layername)
    else if (document.all) // IE4+
        return document.all.item(layername)
    else if (document.layers) // Nav4
        return document.layers[layername]
    return null
}


