
function showObjectById(id) {

    var obj = null;

    if (document.getElementById) {

        obj = document.getElementById(id);
        obj.style.visibility = 'visible';
    }

    return obj;

}

function showObject(obj) {

    obj.style.visibility = 'visible';

    return obj;

}

function showObject(obj) {

    if (obj != null) {

        obj.style.visibility = 'visible';

    }

    return obj;

}

function hideObjectById(id) {

    var obj = null;

    if (document.getElementById) {

        obj = document.getElementById(id);
        obj.style.visibility = 'hidden';

    }

    return obj;

}

function hideObject(obj) {

    if (obj != null) {

        obj.style.visibility = 'hidden';

    }

    return obj;

}

function getObjectById(id) {

    var obj = null;

    if (document.getElementById) {

        obj = document.getElementById(id);

    }

    return obj;

}

function swapImageById(id, imageUrl) {

    var obj = document.getElementById(id);

    if (obj != null && obj.src) {

        obj.setAttribute("src", imageUrl);

    }

}

function toolOver(toolID, tooltipID, toolHoverUrl) {

    swapImageById(toolID, toolHoverUrl);

    // Show tooltip (Dhtml_IE)
    showObjectById(tooltipID);

}

function toolOut(toolID, tooltipID, toolRestUrl) {

    swapImageById(toolID, toolRestUrl);

    // Hide tooltip
    hideObjectById(tooltipID);

}

function moveTooltip(tooltipID) {

    // Get ToolTip (Dhtml_IE)
    tooltip = getObjectById(tooltipID);

    // Set tooltip location
    tooltip.style.pixelLeft = event.srcElement.offsetLeft + event.offsetX + 30 + 169 + 30;
    tooltip.style.pixelTop = event.srcElement.offsetTop + event.offsetY + 20;

    //tooltip.innerText = tooltip.style.pixelLeft + ", " + tooltip.style.pixelTop;

}

// variables
var dropdownMenuTag;
var imageBase;
var imageHover;
var imageRest;
var imageExtension;
var restColor;
var hoverColor;
var alignLastRight;

function initDropdownMenu(menuId, buttonTag, menuTag, alignLastMenuRight, restLinkColor, hoverLinkColor, imgBase, imgRest, imgHover, imgExtension) {

    // set dropdown menu tag
    dropdownMenuTag = menuTag;
    imageBase = imgBase;
    imageRest = imgRest;
    imageHover = imgHover;
    imageExtension = imgExtension;
    restColor = restLinkColor;
    hoverColor = hoverLinkColor;
    alignLastRight = alignLastMenuRight;

    var last = false;

    var objButtonCollection = document.getElementById(menuId).getElementsByTagName(buttonTag);
    // iterate backwards      
    for (var i = objButtonCollection.length - 1; i >= 0; i--) {
        var objButton = objButtonCollection[i];
        var objLink = null;
        var objImage = null;
        var objMenu = null;


        for (var j = 0; j < objButton.childNodes.length; j++) {

            var child;
            child = objButton.childNodes.item(j);

            if (child.nodeName == dropdownMenuTag) {
                objMenu = child;

            }
            else if (child.nodeName == "A") {
                objLink = child;
                // find image
                for (var k = 0; k < objLink.childNodes.length; k++) {

                    if (objLink.childNodes.item(k).nodeName == "IMG") {
                        objImage = objLink.childNodes.item(k)
                        break;
                    }

                }
            }

        }

        // do normal rollover
        objButton.onmouseover = function() { toggleSelectElements(true); this.className += "_hover"; }
        objButton.onmouseout = function() { toggleSelectElements(false); this.className = this.className.replace("_hover", ""); }


        if (objMenu != null && objImage != null) {

            // assign events
            objButton.onmouseover = doHover;
            objButton.onmouseout = doRest;

            // init to rest state
            restState(objMenu, objLink, objImage);

        }

    }

}

function doHover() {

    var objButton = this;

    objButton.className += "_hover";
    toggleSelectElements(true);

    var objLink = null;
    var objImage = null;
    var objMenu = null;
    for (var j = 0; j < objButton.childNodes.length; j++) {

        var child;
        child = objButton.childNodes.item(j);

        if (child.nodeName == dropdownMenuTag) {
            objMenu = child;
        }
        else if (child.nodeName == "A") {
            objLink = child;
            // find image
            for (var k = 0; k < objLink.childNodes.length; k++) {

                if (objLink.childNodes.item(k).nodeName == "IMG") {
                    objImage = objLink.childNodes.item(k)
                    break;
                }

            }
        }

    }

    // state
    hoverState(objMenu, objLink, objImage);

}

function doRest() {

    var objButton = this;

    this.className = objButton.className.replace("_hover", "");
    toggleSelectElements(false);

    var objLink = null;
    var objImage = null;
    var objMenu = null;
    for (var j = 0; j < objButton.childNodes.length; j++) {

        var child;
        child = objButton.childNodes.item(j);

        if (child.nodeName == dropdownMenuTag) {
            objMenu = child;
        }
        else if (child.nodeName == "A") {
            objLink = child;
            // find image
            for (var k = 0; k < objLink.childNodes.length; k++) {

                if (objLink.childNodes.item(k).nodeName == "IMG") {
                    objImage = objLink.childNodes.item(k)
                    break;
                }

            }
        }

    }

    // state
    restState(objMenu, objLink, objImage);

}

function restState(menu, link, image) {

    if (link != null) {
        if (restColor != "") {
            //link.style.color = restColor;
        }
    }
    if (image != null) {
        image.setAttribute("src", imageBase + imageRest + imageExtension);
    }
    if (menu != null) {
        //menu.style.visibility = "visible";
        //menu.style.display = "none";
    }

}

function hoverState(menu, link, image) {

    if (link != null) {
        if (hoverColor != "") {
            //link.style.color = hoverColor;
        }
    }
    if (image != null && menu != null) {
        if (menu.childNodes.length > 0) {
            image.setAttribute("src", imageBase + imageHover + imageExtension);
        }
    }
    if (menu != null) {
        //menu.style.visibility = "visible";
        //menu.style.display = "block";
    }

}

function openWindowOnChange(reset, ignoreIndex) {

    var list = event.srcElement;

    if (list.selectedIndex != ignoreIndex && list.options.item(list.selectedIndex).value != "") {

        eval("window.open(" + list.options.item(list.selectedIndex).value + ")");

    }

    if (reset) {

        list.selectedIndex = 0;

    }

}

function toggleSelectElements(hidden) {
    var selects = document.getElementsByTagName("SELECT");
    for (var i = 0; i < selects.length; i++) {
        if (hidden) {
            selects.item(i).style.visibility = "hidden";
        }
        else {
            selects.item(i).style.visibility = "visible";
        }
    }
}

function ShowHide(id) {
    var obj = document.getElementById(id);
    if (obj.style.display == "none") {
        obj.style.display = "block";
    }
    else {
        obj.style.display = "none";
    }
}

function ShowHideByClass(id, ShowStyle, HideStyle) {
    var obj = document.getElementById(id);

    if (obj.className == HideStyle) {
        obj.className = ShowStyle;
    }
    else {
        obj.className = HideStyle;
    }
}

function swapTwoImagesById(id, imageUrl1, imageUrl2) {
    var obj = document.getElementById(id);

    if (obj != null && obj.src && obj.src.indexOf(imageUrl1) > 0) {
        obj.setAttribute("src", imageUrl2);
    }
    else if (obj != null && obj.src && obj.src.indexOf(imageUrl2) > 0) {
        obj.setAttribute("src", imageUrl1);
    }
}

function swapBackgroundImageById(id, imageUrl1, imageUrl2) {
    var obj = document.getElementById(id);

    if (obj != null && obj.style.backgroundImage.indexOf(imageUrl1) > 0) {
        obj.style.backgroundImage = imageUrl2;
    }
    else if (obj != null) {
        obj.style.backgroundImage = imageUrl1;
    }
}