var domMenu_data = new domMenu_Hash();
var domMenu_settings = new domMenu_Hash();
domMenu_settings.setItem('global',new domMenu_Hash('menuBarClass','domMenu_menuBar','menuElementClass','domMenu_menuElement','menuElementHoverClass','domMenu_menuElementHover','menuElementActiveClass','domMenu_menuElementHover','subMenuBarClass','domMenu_subMenuBar','subMenuElementClass','domMenu_subMenuElement','subMenuElementHoverClass','domMenu_subMenuElementHover','subMenuElementActiveClass','domMenu_subMenuElementHover','subMenuElementHeadingClass','domMenu_subMenuElementHeading','menuBarWidth','100%','subMenuMinWidth','inherit','distributeSpace',true,'axis','horizontal','verticalExpand','south','horizontalExpand','east','subMenuWidthCorrection',0,'verticalSubMenuOffsetY',0,'verticalSubMenuOffsetX',0,'horizontalSubMenuOffsetX',0,'horizontalSubMenuOffsetY',0,'screenPadding',0,'openMouseoverMenuDelay',300,'openMousedownMenuDelay',-1,'closeMouseoutMenuDelay',800,'closeClickMenuDelay',-1,'openMouseoverSubMenuDelay',300,'openClickSubMenuDelay',-1,'closeMouseoutSubMenuDelay',300,'closeClickSubMenuDelay',-1,'baseZIndex',100));
var domMenu_userAgent = navigator.userAgent.toLowerCase();
var domMenu_isOpera = domMenu_userAgent.indexOf('opera 7') != -1 ? 1 : 0;
var domMenu_isKonq = (domMenu_userAgent.indexOf('konq') != -1) || (domMenu_userAgent.indexOf('saf') != -1) ? 1 : 0;
var domMenu_isIE = !domMenu_isKonq && !domMenu_isOpera && document.all ? 1 : 0;
var domMenu_isIE50 = domMenu_isIE && domMenu_userAgent.indexOf('msie 5.0') != -1;
var domMenu_isIE55 = domMenu_isIE && domMenu_userAgent.indexOf('msie 5.5') != -1;
var domMenu_isIE5 = domMenu_isIE50 || domMenu_isIE55;
var domMenu_isGecko = domMenu_userAgent.indexOf('gecko') != -1 ? 1 : 0;
var domMenu_useLibrary = domMenu_isIE || domMenu_isGecko || domMenu_isKonq || domMenu_isOpera ? 1 : 0;
var domMenu_data;
var domMenu_selectElements;
var domMenu_scrollbarWidth = 14;
var domMenu_eventTo = domMenu_isIE ? 'toElement' : 'relatedTarget';
var domMenu_eventFrom = domMenu_isIE ? 'fromElement' : 'relatedTarget';
var domMenu_activeElement = new domMenu_Hash();
var domMenu_timeouts = new Array();
domMenu_timeouts['open'] = new domMenu_Hash();
domMenu_timeouts['close'] = new domMenu_Hash();
var domMenu_timeoutStates = new Array();
domMenu_timeoutStates['open'] = new domMenu_Hash();
domMenu_timeoutStates['close'] = new domMenu_Hash();
var domMenu_pointerStyle = domMenu_isIE ? 'hand' : 'pointer';
function domMenu_Hash() {
    var argIndex = 0;
    this.length = 0;
    this.numericLength = 0; 
    this.items = new Array();
    while (arguments.length > argIndex) {
        this.items[arguments[argIndex]] = arguments[argIndex + 1];
        if (arguments[argIndex] == parseInt(arguments[argIndex])) this.numericLength++;
        this.length++;
        argIndex += 2;
    }
    this.removeItem = function(in_key) {
        var tmp_value;
        if (typeof(this.items[in_key]) != 'undefined') {
            this.length--;
            if (in_key == parseInt(in_key)) this.numericLength--;
            tmp_value = this.items[in_key];
            delete this.items[in_key];
        }
        return tmp_value;
    }
    this.getItem = function(in_key) { return this.items[in_key]; }
    this.setItem = function(in_key, in_value)
    {
        if (typeof(this.items[in_key]) == 'undefined') {
            this.length++;
            if (in_key == parseInt(in_key)) this.numericLength++;
        }
        this.items[in_key] = in_value;
    }
    this.hasItem = function(in_key) { return typeof(this.items[in_key]) != 'undefined'; }
    this.merge = function(in_hash) {
        for (var tmp_key in in_hash.items) {
            if (typeof(this.items[tmp_key]) == 'undefined') {
                this.length++;
                if (tmp_key == parseInt(tmp_key)) this.numericLength++;
            }
            this.items[tmp_key] = in_hash.items[tmp_key];
        }
    }
    this.compare = function(in_hash) {
        if (this.length != in_hash.length) return false;
        for (var tmp_key in this.items) if (this.items[tmp_key] != in_hash.items[tmp_key]) return false;
        return true;
    }
}
function domMenu_activate(in_containerId)
{
    var container;
    var data;
    if (!domMenu_useLibrary || !(container = document.getElementById(in_containerId)) || !(data = domMenu_data.items[in_containerId])) return;
    if (!domMenu_settings.hasItem(in_containerId)) domMenu_settings.setItem(in_containerId, new domMenu_Hash());
    var settings = domMenu_settings.items[in_containerId];
    for (var i in domMenu_settings.items['global'].items) if (!settings.hasItem(i)) settings.setItem(i, domMenu_settings.items['global'].items[i]);
    container.data = new domMenu_Hash('parentElement',false,'numChildren',data.numericLength,'childElements',new domMenu_Hash(),'level',0,'index',1);
    var distributeRatio = Math.round(100/container.data.items['numChildren']) + '%';
    var rootMenu = document.createElement('div');
    rootMenu.id = in_containerId + '[0]';
    rootMenu.className = settings.items['menuBarClass'];
    container.data.setItem('subMenu', rootMenu);
    var rootMenuTable = rootMenu.appendChild(document.createElement('table'));
    if (domMenu_isKonq) rootMenuTable.cellSpacing = 0;
    rootMenuTable.style.border = 0;
    rootMenuTable.style.borderCollapse = 'collapse';
    rootMenuTable.style.width = settings.items['menuBarWidth'];
    var rootMenuTableBody = rootMenuTable.appendChild(document.createElement('tbody'));
    var numSiblings = container.data.items['numChildren'];
    for (var index = 1; index <= numSiblings; index++) {
        if (index == 1 || settings.items['axis'] == 'vertical') var rootMenuTableRow = rootMenuTableBody.appendChild(document.createElement('tr'));
        var rootMenuTableCell = rootMenuTableRow.appendChild(document.createElement('td'));
        rootMenuTableCell.style.padding = 0;
        rootMenuTableCell.id = in_containerId + '[' + index + ']';
        container.data.items['childElements'].setItem(rootMenuTableCell.id, rootMenuTableCell);
        rootMenuTableCell.data = data.items[index];
        rootMenuTableCell.data.merge(new domMenu_Hash('basename',in_containerId,'parentElement',container,'numChildren',rootMenuTableCell.data.numericLength,'childElements',new domMenu_Hash(),'offsets',new domMenu_Hash(),'level',container.data.items['level']+1,'index',index));
        rootMenuTableCell.style.cursor = 'default';
        if (settings.items['axis'] == 'horizontal') {
            if (settings.items['distributeSpace']) rootMenuTableCell.style.width = distributeRatio;
        }
        var rootElement = rootMenuTableCell.appendChild(document.createElement('div'));
        rootElement.className = settings.items['menuElementClass'];
        rootElement.innerHTML = '<span>' + rootMenuTableCell.data.items['contents'] + '</span>' + (rootMenuTableCell.data.hasItem('contentsHover') ? '<span style="display: none;">' + rootMenuTableCell.data.items['contentsHover'] + '</span>' : '');
        rootMenuTableCell.onmouseover = function(in_event) { domMenu_openEvent(this, in_event, settings.items['openMouseoverMenuDelay']); };
        rootMenuTableCell.onmouseout = function(in_event) { domMenu_closeEvent(this, in_event); };
        if (settings.items['openMousedownMenuDelay'] >= 0 && rootMenuTableCell.data.items['numChildren']) {
            rootMenuTableCell.onmousedown = function(in_event) { domMenu_openEvent(this, in_event, settings.items['openMousedownMenuDelay']); };
            rootMenuTableCell.onmouseup = function(in_event) { var eventObj = domMenu_isIE ? event : in_event; eventObj.cancelBubble = true; };
            if (domMenu_isIE) rootMenuTableCell.ondblclick = function(in_event) { domMenu_openEvent(this, in_event, settings.items['openMousedownMenuDelay']); };
        }
        if (rootMenuTableCell.data.items['uri']) {
            rootMenuTableCell.style.cursor = domMenu_pointerStyle;
            rootMenuTableCell.onclick = function(in_event) { domMenu_resolveLink(this, in_event); };
        }
        if (domMenu_isIE) rootMenuTableCell.onselectstart = function() { return false; };
        rootMenuTableCell.oncontextmenu = function() { return false; };
    }
    rootMenu = container.appendChild(rootMenu);
}
function domMenu_activateSubMenu(in_parentElement)
{
    if (in_parentElement.data.hasItem('subMenu')) {
        domMenu_toggleSubMenu(in_parentElement, 'visible');
        return;
    }
    var settings = domMenu_settings.items[in_parentElement.data.items['basename']];
    var menu = document.createElement('div');
    menu.id = in_parentElement.id + '[0]';
    menu.className = settings.items['subMenuBarClass'];
    menu.style.zIndex = settings.items['baseZIndex'];
    menu.style.position = 'absolute';
    menu.style.visibility = 'hidden';
    menu.style.top = 0;
    menu.style.left = 0;
    in_parentElement.data.setItem('subMenu', menu);
    var menuTable = menu.appendChild(document.createElement('table'));
    if (domMenu_isOpera) {
        menuTable.style.width = '1px';
        menuTable.style.whiteSpace = 'nowrap';
    }
    if (domMenu_isKonq) menuTable.cellSpacing = 0;
    menuTable.style.border = 0;
    menuTable.style.borderCollapse = 'collapse';
    var menuTableBody = menuTable.appendChild(document.createElement('tbody'));
    var numSiblings = in_parentElement.data.items['numChildren'];
    for (var index = 1; index <= numSiblings; index++) {
        var dataIndex = in_parentElement.data.items['level'] == 1 && settings.items['verticalExpand'] == 'north' && settings.items['axis'] == 'horizontal' ? numSiblings + 1 - index : index;
        var menuTableCell = menuTableBody.appendChild(document.createElement('tr')).appendChild(document.createElement('td'));
        menuTableCell.style.padding = 0;
        menuTableCell.id = in_parentElement.id + '[' + dataIndex + ']';
        in_parentElement.data.items['childElements'].setItem(menuTableCell.id, menuTableCell);
        menuTableCell.data = in_parentElement.data.items[dataIndex];
        menuTableCell.data.merge(new domMenu_Hash('basename',in_parentElement.data.items['basename'],'parentElement',in_parentElement,'numChildren',menuTableCell.data.numericLength,'childElements',new domMenu_Hash(),'offsets',new domMenu_Hash(),'level',in_parentElement.data.items['level'] + 1,'index',index));
        var parentStyle = in_parentElement.data.items['level'] == 1 ? in_parentElement.parentNode.style : in_parentElement.style;
        menuTableCell.style.cursor = 'default';
        var element = menuTableCell.appendChild(document.createElement('div')); 
        var outerElement = element;
        outerElement.className = settings.items['subMenuElementClass']; 
        if (menuTableCell.data.items['numChildren']) {
            element = outerElement.appendChild(document.createElement('div'));
            element.style.backgroundImage = 'url(http://www.metatag.de/img/editMenu/menu_sub.gif)'
            element.style.backgroundRepeat = 'no-repeat';
            element.style.backgroundPosition = 'right center';
            element.style.paddingRight = '12px';
        }
        element.innerHTML = menuTableCell.data.items['contents'];
        menuTableCell.onmouseover = function(in_event) { domMenu_openEvent(this, in_event, settings.items['openMouseoverSubMenuDelay']); };
        menuTableCell.onmouseout = function(in_event) { domMenu_closeEvent(this, in_event); };
        if (settings.items['openClickSubMenuDelay'] >= 0 && menuTableCell.data.items['numChildren']) {
            menuTableCell.onmousedown = function(in_event) { domMenu_openEvent(this, in_event, settings.items['openClickSubMenuDelay']); };
            menuTableCell.onmouseup = function(in_event) { var eventObj = domMenu_isIE ? event : in_event; eventObj.cancelBubble = true; };
            if (domMenu_isIE) menuTableCell.ondblclick = function(in_event) { domMenu_openEvent(this, in_event, settings.items['openClickSubMenuDelay']); };
        } else if (menuTableCell.data.items['uri']) {
            menuTableCell.style.cursor = domMenu_pointerStyle;
            menuTableCell.onclick = function(in_event) { domMenu_resolveLink(this, in_event); };
        }
        else if (!menuTableCell.data.items['numChildren']) outerElement.className += ' ' + settings.items['subMenuElementHeadingClass'];
        if (domMenu_isIE) menuTableCell.onselectstart = function() { return false; };
        menuTableCell.oncontextmenu = function() { return false; };
    }
    menu = document.body.appendChild(menu);
    domMenu_toggleSubMenu(in_parentElement, 'visible');
}
function domMenu_changeActivePath(in_newActiveElement, in_oldActiveElement, in_closeDelay)
{
    if (!in_oldActiveElement && !in_newActiveElement) return false;
    for (var i in domMenu_timeouts['open'].items) domMenu_cancelTimeout(i, 'open');
    var basename = in_oldActiveElement ? in_oldActiveElement.data.items['basename'] : in_newActiveElement.data.items['basename'];
    var settings = domMenu_settings.items[basename];
    var oldActivePath = new domMenu_Hash();
    if (in_oldActiveElement) {
        var tmp_oldActivePathElement = in_oldActiveElement;
        do { oldActivePath.setItem(tmp_oldActivePathElement.id, tmp_oldActivePathElement); }
        while ((tmp_oldActivePathElement = tmp_oldActivePathElement.data.items['parentElement']) && tmp_oldActivePathElement.id != basename);
        if (!in_oldActiveElement.data.items['subMenu'] || in_oldActiveElement.data.items['subMenu'].style.visibility == 'hidden')
            domMenu_toggleHighlight(in_oldActiveElement, false);
    }
    var newActivePath = new domMenu_Hash();
    var intersectPoint;
    if (in_newActiveElement) {
        var actualActiveElement = in_newActiveElement;
        window.status = in_newActiveElement.data.items['statusText'] + ' ';
        if (!in_oldActiveElement) {
            domMenu_cancelTimeout(in_newActiveElement.id, 'close'); 
            domMenu_toggleHighlight(in_newActiveElement, true);
            return false;
        }
        else if (oldActivePath.hasItem(in_newActiveElement.id))
            in_newActiveElement = in_oldActiveElement;
        var tmp_newActivePathElement = in_newActiveElement;
        do {
            if (!intersectPoint && oldActivePath.hasItem(tmp_newActivePathElement.id)) intersectPoint = tmp_newActivePathElement;
            newActivePath.setItem(tmp_newActivePathElement.id, tmp_newActivePathElement); 
            domMenu_cancelTimeout(tmp_newActivePathElement.id, 'close'); 
            if (tmp_newActivePathElement != in_oldActiveElement || actualActiveElement == in_oldActiveElement)
                domMenu_toggleHighlight(tmp_newActivePathElement, true);
        } while ((tmp_newActivePathElement = tmp_newActivePathElement.data.items['parentElement']) && tmp_newActivePathElement.id != basename);
        if (in_newActiveElement.data.items['parentElement'] == in_oldActiveElement) return in_newActiveElement;
        else if (in_newActiveElement == in_oldActiveElement) return in_newActiveElement;
        var intersectSibling;
        if (intersectPoint) for (var i in oldActivePath.items) if (oldActivePath.items[i].data.items['parentElement'] == intersectPoint) {
            intersectSibling = oldActivePath.items[i];
            break;
        }
        var isRootLevel = in_newActiveElement.data.items['level'] == 1 ? true : false;
        var closeDelay = isRootLevel ? settings.items['closeMouseoutMenuDelay'] : settings.items['closeMouseoutSubMenuDelay'];
    } else {
        var isRootLevel = false;
        var closeDelay = settings.items['closeMouseoutMenuDelay'];
        window.status = window.defaultStatus;
    }
    if (typeof(in_closeDelay) != 'undefined') closeDelay = in_closeDelay;
    if (intersectSibling) {
        if (!isRootLevel) domMenu_toggleHighlight(intersectSibling, false);
        else for (var i in domMenu_timeouts['close'].items) if (!oldActivePath.hasItem(i)) {
            var tmp_element = document.getElementById(i);
            if (tmp_element.data.items['basename'] == basename) oldActivePath.setItem(i, tmp_element);
        }
    }
    for (var i in oldActivePath.items) {
        if (newActivePath.hasItem(i)) continue;
        domMenu_cancelTimeout(i, 'close');
        if (isRootLevel) {
            domMenu_toggleHighlight(oldActivePath.items[i], false); 
            domMenu_toggleSubMenu(oldActivePath.items[i], 'hidden');
        } else {
            var tmp_args = new Array();
            tmp_args[0] = oldActivePath.items[i];
            var tmp_function = 'domMenu_toggleHighlight(argv[0], false); domMenu_toggleSubMenu(argv[0], ' + domMenu_quote('hidden') + ');';
            if (oldActivePath.items[i].data.items['level'] == 1) 
                tmp_function += ' domMenu_activeElement.setItem(' + domMenu_quote(basename) + ', false);';
            domMenu_callTimeout(tmp_function, closeDelay, tmp_args, i, 'close');
        }
    }
    return in_newActiveElement;
}
function domMenu_deactivate(in_basename, in_delay)
{
    if (!in_delay) in_delay = 0;
    domMenu_changeActivePath(false, domMenu_activeElement.items[in_basename], in_delay);
}
function domMenu_openEvent(in_this, in_event, in_openDelay)
{
    if (domMenu_isGecko) try { window.getSelection().removeAllRanges(); } catch (e) { }
    var eventObj = domMenu_isIE ? event : in_event;
    var currentTarget = domMenu_isIE ? in_this : eventObj.currentTarget;
    var basename = currentTarget.data.items['basename'];
    if (eventObj.type != 'mousedown' && domMenu_getElement(eventObj[domMenu_eventFrom], basename) == currentTarget) return;
    if (eventObj.type == 'mousedown' && domMenu_activeElement.items[basename]) {
        var settings = domMenu_settings.items[basename];
        domMenu_changeActivePath(false, domMenu_activeElement.items[basename], currentTarget.data.items['level'] == 1 ? settings.items['closeClickMenuDelay'] : settings.items['closeClickSubMenuDelay']);
        return;
    }
    if (currentTarget.data.items['numChildren']) {
        if (currentTarget.data.items['level'] == 1 && domMenu_activeElement.items[basename]) {
            domMenu_activateSubMenu(currentTarget);
            domMenu_activeElement.setItem(basename, domMenu_changeActivePath(currentTarget, domMenu_activeElement.items[basename]));
        } else {
            domMenu_activeElement.setItem(basename, domMenu_changeActivePath(currentTarget, domMenu_activeElement.items[basename]));
            var tmp_args = new Array();
            tmp_args[0] = currentTarget;
            var tmp_function = 'if (!domMenu_activeElement.items[' + domMenu_quote(basename) + ']) { domMenu_activeElement.setItem(' + domMenu_quote(basename) + ', argv[0]); } domMenu_activateSubMenu(argv[0]);';
            domMenu_callTimeout(tmp_function, in_openDelay, tmp_args, currentTarget.id, 'open');
        }
    } else domMenu_activeElement.setItem(basename, domMenu_changeActivePath(currentTarget, domMenu_activeElement.items[basename]));
}
function domMenu_closeEvent(in_this, in_event)
{
    var eventObj = domMenu_isIE ? event : in_event;
    var currentTarget = domMenu_isIE ? in_this : eventObj.currentTarget;
    var basename = currentTarget.data.items['basename'];
    var relatedTarget = domMenu_getElement(eventObj[domMenu_eventTo], basename);
    if (domMenu_activeElement.items[basename]) {
        if (!relatedTarget) domMenu_changeActivePath(false, domMenu_activeElement.items[basename]);
    } else {
        if (currentTarget != relatedTarget) {
            domMenu_cancelTimeout(currentTarget.id, 'open');
            domMenu_toggleHighlight(currentTarget, false);
        }
    }
}    
function domMenu_getElement(in_object, in_basename)
{
    while (in_object) {
        try {
            if (in_object.id && in_object.id.search(new RegExp('^' + in_basename + '(\\[[0-9]\\])*\\[[1-9]\\]$')) == 0)
                return in_object;
            else in_object = in_object.parentNode;
        }
        catch(e) { return false; }
    }
    return false;
}
function domMenu_getOffsets(in_object)
{
    var originalObject = in_object;
    var originalWidth = in_object.offsetWidth;
    var originalHeight = in_object.offsetHeight;
    var offsetLeft = 0;
    var offsetTop = 0;
    while (in_object) {
        offsetLeft += in_object.offsetLeft;
        offsetTop += in_object.offsetTop;
        in_object = in_object.offsetParent;
    }
    return new domMenu_Hash('left',offsetLeft,'top',offsetTop,'right',offsetLeft+originalWidth,'bottom',offsetTop+originalHeight,'leftCenter',offsetLeft+originalWidth/2,'topCenter',offsetTop+originalHeight/2,'radius',Math.max(originalWidth,originalHeight));
}
function domMenu_callTimeout(in_function, in_timeout, in_args, in_basename, in_type)
{
    if (in_timeout == 0) {
        var tmp_function = new Function('argv', in_function);
        tmp_function(in_args);
    }
    else if (in_timeout > 0) {
        var tmp_function = new Function('argv', in_function + ' domMenu_timeouts[' + domMenu_quote(in_type) + '].removeItem(' + domMenu_quote(in_basename) + ');');
        var tmp_args = new Array();
        for (var i = 0; i < in_args.length; i++) tmp_args[i] = in_args[i];
        if (!domMenu_isKonq && !domMenu_isIE50) domMenu_timeouts[in_type].setItem(in_basename, setTimeout(function() { tmp_function(tmp_args); }, in_timeout));
        else {
            var tmp_data = new Array();
            tmp_data['function'] = tmp_function;
            tmp_data['args'] = tmp_args;
            domMenu_timeoutStates[in_type].setItem(in_basename, tmp_data);
            var tmp_type = domMenu_quote(in_type);
            var tmp_basename = domMenu_quote(in_basename);
            domMenu_timeouts[in_type].setItem(in_basename, setTimeout('domMenu_timeoutStates[' + tmp_type + '].items[' + tmp_basename + '][' + domMenu_quote('function') + '](domMenu_timeoutStates[' + tmp_type + '].items[' + tmp_basename + '][' + domMenu_quote('args') + ']); domMenu_timeoutStates[' + tmp_type + '].removeItem(' + tmp_basename + ');', in_timeout));
        }
    }
}
function domMenu_cancelTimeout(in_basename, in_type)
{
    if (!domMenu_isKonq && !domMenu_isIE50) clearTimeout(domMenu_timeouts[in_type].removeItem(in_basename));
    else {
        if (domMenu_timeoutStates[in_type].hasItem(in_basename)) {
            clearTimeout(domMenu_timeouts[in_type].removeItem(in_basename));
            domMenu_timeoutStates[in_type].removeItem(in_basename);
        }
    }
}
function domMenu_correctEdgeBleed(in_width, in_height, in_x, in_y, in_padding, in_axis)
{
    if (domMenu_isIE && !domMenu_isIE5) var pageHeight = document.documentElement.clientHeight;
    else if (!domMenu_isKonq) var pageHeight = document.body.clientHeight;
    else var pageHeight = window.innerHeight;
    var pageYOffset = domMenu_isIE ? document.body.scrollTop : window.pageYOffset;
    var pageXOffset = domMenu_isIE ? document.body.scrollLeft : window.pageXOffset;
    if (in_axis == 'horizontal') {
        var bleedRight = (in_x - pageXOffset) + in_width - (document.body.clientWidth - in_padding);
        var bleedLeft = (in_x - pageXOffset) - in_padding;
        if (bleedRight > 0) in_x -= bleedRight;
        if (bleedLeft < 0) in_x += bleedLeft;
    } else {
        var bleedTop = (in_y - pageYOffset) - in_padding;
        var bleedBottom = (in_y - pageYOffset) + in_height - (pageHeight - in_padding);
        if (bleedBottom > 0) in_y -= bleedBottom;
        if (bleedTop < 0) in_y += bleedTop;
    }
    return new Array(in_x, in_y);
}
function domMenu_toggleSubMenu(in_parentElement, in_style)
{
    var subMenu = in_parentElement.data.items['subMenu'];
    if (subMenu && subMenu.style.visibility != in_style) {
        var settings = domMenu_settings.items[in_parentElement.data.items['basename']];
        var prefix = in_parentElement.data.items['level'] == 1 ? 'menu' : 'subMenu';
        var className = settings.items[prefix + 'ElementClass'];
	if (in_style == 'visible') className += ' ' + settings.items[prefix + 'Element' + (in_style == 'visible' ? 'Active' : 'Hover') + 'Class'];
        in_parentElement.firstChild.className = className;
        if (in_style == 'visible') {
            var tmp_offsets = domMenu_getOffsets(in_parentElement);
            if (in_parentElement.data.items['level'] == 1) {
                tmp_offsets.items['top'] += settings.items['verticalSubMenuOffsetY'];
                tmp_offsets.items['bottom'] += settings.items['verticalSubMenuOffsetY'];
                tmp_offsets.items['left'] += settings.items['verticalSubMenuOffsetX'];
                tmp_offsets.items['right'] += settings.items['verticalSubMenuOffsetX'];
            }
            if (!in_parentElement.data.items['offsets'].compare(tmp_offsets)) {
                in_parentElement.data.items['offsets'] = tmp_offsets;
                if (settings.items['axis'] == 'horizontal' && in_parentElement.data.items['level'] == 1) {
                    var xCoor = tmp_offsets.items['left'];
                    if (settings.items['verticalExpand'] == 'north')
                        var yCoor = tmp_offsets.items['top'] - subMenu.offsetHeight - settings.items['verticalSubMenuOffsetY'];
                    else var yCoor = tmp_offsets.items['bottom'];
                } else {
                    var xCoor = tmp_offsets.items['right'] + settings.items['horizontalSubMenuOffsetX'];
                    var yCoor = tmp_offsets.items['top'] + settings.items['horizontalSubMenuOffsetY'];
                }
                var minWidth = settings.items['subMenuMinWidth'];
                var renderedWidth = subMenu.offsetWidth;
                if (minWidth == 'inherit') minWidth = in_parentElement.offsetWidth + settings.items['subMenuWidthCorrection'];
                else if (minWidth == 'auto') minWidth = renderedWidth;
                if (domMenu_isKonq) subMenu.firstChild.firstChild.firstChild.firstChild.style.width = Math.max(minWidth, renderedWidth) + 'px';
                else subMenu.firstChild.style.width = Math.max(minWidth, renderedWidth) + 'px';
                var coordinates = domMenu_correctEdgeBleed(subMenu.offsetWidth, subMenu.offsetHeight, xCoor, yCoor, settings.items['screenPadding'], settings.items['axis']);
                subMenu.style.left = coordinates[0] + 'px';
                subMenu.style.top = coordinates[1] + 'px';
                if (settings.items['axis'] == 'horizontal' && settings.items['subMenuMinWidth'] == 'inherit') 
                    subMenu.firstChild.style.width = Math.max(in_parentElement.offsetWidth + settings.items['subMenuWidthCorrection'], renderedWidth) + 'px';
            }
        }

        
        if (domMenu_isKonq) {
            in_parentElement.firstChild.style.display = 'none';
            in_parentElement.firstChild.style.display = '';
        }

        subMenu.style.visibility = in_style;
    }
}
function domMenu_toggleHighlight(in_element, in_status)
{
    if (!in_element.data.items['numChildren'] && !in_element.data.items['uri']) return;
    var settings = domMenu_settings.items[in_element.data.items['basename']];
    var prefix = in_element.data.items['level'] == 1 ? 'menu' : 'subMenu';
    var className = settings.items[prefix + 'ElementClass'];
    var highlightElement = in_element.firstChild;
    var pseudoClass;
    if (in_status) {
        if (in_element.data.hasItem('subMenu') && in_element.data.items['subMenu'].style.visibility == 'visible')
            pseudoClass = 'Active';
        else if (in_element.data.items['numChildren'] || in_element.data.items['uri'])
            pseudoClass = 'Hover';
    }
    if (pseudoClass) {
        className += ' ' + settings.items[prefix + 'Element' + pseudoClass + 'Class'];
        if (highlightElement.childNodes.length == 2 && highlightElement.lastChild.style.display == 'none') {
            highlightElement.firstChild.style.display = 'none';
            highlightElement.lastChild.style.display = '';
        }
    } else if (highlightElement.childNodes.length == 2 && highlightElement.firstChild.style.display == 'none') {
        highlightElement.lastChild.style.display = 'none';
        highlightElement.firstChild.style.display = '';
    }
    if (in_status) {
    	if (in_element.data.items['onFocus']) eval(in_element.data.items['onFocus']);
    } else if (in_element.data.items['onBlur']) eval(in_element.data.items['onBlur']);
    highlightElement.className = className;
    if (domMenu_isKonq) {
        highlightElement.style.display = 'none';
        highlightElement.style.display = '';
    }
}
function domMenu_resolveLink(in_this, in_event)
{
    var eventObj = domMenu_isIE ? event : in_event;
    var currentTarget = domMenu_isIE ? in_this : eventObj.currentTarget;
    var basename = currentTarget.data.items['basename'];
    domMenu_changeActivePath(false, domMenu_activeElement.items[basename], 0);
  	if (currentTarget.data.items['onClick']) eval(currentTarget.data.items['onClick']);
    if (currentTarget.data.items['uri']) {
        window.status = 'Resolving Link...';
        if (!currentTarget.data.items['target'] || currentTarget.data.items['target'] == '_self') 
            window.location = currentTarget.data.items['uri'];
        else window.open(currentTarget.data.items['uri'], currentTarget.data.items['target']);
    }
}
function domMenu_quote(in_string) { return "'" + in_string.replace(new RegExp("'", 'g'), "\\'") + "'";
}
