// JavaScript Document

function createBookmarkLink(Title, URL){
    if (window.sidebar) {
        window.sidebar.addPanel(Title, URL, "");
    } else if (window.external) {
        window.external.AddFavorite(URL, Title);
    }
    return true;
}

function send_site(url){
    mail_str = "mailto:?subject=SRB Empfehlung:";
    mail_str += "&body=Hallo, folgende Seite kann ich nur weiterempfehlen:%0ASRB Software Consulting " + url;
    location.href = mail_str;
}


function $(element){
    if (!element.id) {
        element = document.getElementById(element);
    }
    return element;
}

function addEventHandler(node, type, f){
    if (!node) {
        return false;
    }
    if (node.addEventListener) {
        node.addEventListener(type, f, false);
    } else if (node.attachEvent) {
        node.attachEvent("on" + type, f);
    } else {
        node["on" + type] = f;
    }
    return node;
}

var fcn = {
    basePath: window.basePath,
    
    setClassName: function(element, mClass){
        if (!(element = $(element))) 
            return;
        if (element.className !== mClass) {
            element.className = mClass;
            return element;
        }
        element.className = '';
        return false;
    },
    
    saveUserSetting: function(settingKey, settingValue){
        task = 'saveUserSetting';
        parameters = {
            method: 'post',
            postBody: 'task=' + escape(task) + '&settingKey=' + escape(settingKey) + '&settingValue=' + escape(settingValue)
        };
        new Ajax.Request(basePath + 'backend/?action=input', parameters);
    },
    
    getBoxSettings: function(boxId){
        task = 'getBoxSettings';
        parameters = {
            method: 'post',
            postBody: 'task=' + escape(task) + '&boxId=' + escape(boxId)
        };
        new Ajax.Updater(boxId + 'Content', basePath + 'backend/?action=output', parameters);
    },
    
    visibility: function(element){
        if (!(element = $(element))) 
            return;
        var elementStyle = element.style;
        if (elementStyle.display == 'block' || !elementStyle.display) {
            elementStyle.display = 'none';
            return true;
        }
        elementStyle.display = 'block';
        return true;
    },
    
    setupInputBox: function(node){
        node = menu.getTarget(node);
        console.log(node);
        if (node.value.length === 0) {
            node.value = node.stdValue;
            return;
        }
        if (!node.stdValue) {
            node.stdValue = node.value;
        }
        if (node.value === node.stdValue) {
            node.value = '';
        }
    },
    
    submitParentForm: function(node){
        while (node.nodeName.toLowerCase() !== 'form') {
            node = node.parentNode;
        }
        node.submit();
        return false;
    },
    
    toggleImageActive: function(node, active){
        node = document.getElementById(node);
        if (node.src.indexOf('-aktiv') > -1 && active === true) {
            return false;
        }
        if (active === true) {
            node.src = node.src.replace('.gif', '-aktiv.gif');
            return false;
        }
        node.src = node.src.replace('-aktiv', '');
    }
};

var menu = {
    getTarget: function(e){
        e = e || window.event;
        return e.target || e.srcElement;
    },
    
    getElementXY: function(element){
        var pos = {
            x: 0,
            y: 0
        };
        
        if (!element.offsetParent && element.x && element.y) {
            pos.x += element.x;
            pos.y += element.y;
            return pos;
        }
        
        while (element) {
            pos.x += element.offsetLeft;
            pos.y += element.offsetTop;
            element = element.offsetParent;
        }
        return pos;
    },
    
    toggleActive: function(node){
        node.className = !node.className ? 'active' : '';
    },
    
    setPosition: function(node, parentNode){
        var offsetWidth, xOffset;
        
        node.style.display = 'block';
        offsetWidth = node.offsetWidth;
        
        if (offsetWidth < parentNode.offsetWidth) {
            offsetWidth = parentNode.offsetWidth;
        }
        
        if (parentNode.offsetWidth > offsetWidth) {
            xOffset = (parentNode.offsetWidth - offsetWidth) / 2
        } else {
            xOffset = (offsetWidth - parentNode.offsetWidth) / 2
        }
        var parentPos = menu.getElementXY(parentNode);
        
        offsetWidth -= 2;
        
        node.style.top = parentPos.y + 20 + 'px';
        node.style.left = parentPos.x - 11 + 'px';
        node.style.width = offsetWidth + 'px';
        
        node.style.display = 'none';
        
        return node;
    },
    
    setupSubmenuShowEvents: function(node, parentNode){
        parentNode.toggleSubNav = new Function('', " fcn.visibility('" + node.id + "');")
        
        addEventHandler(node, 'mouseover', parentNode.toggleSubNav);
        addEventHandler(node, 'mouseout', parentNode.toggleSubNav);
        
        addEventHandler(parentNode, 'mouseover', parentNode.toggleSubNav);
        addEventHandler(parentNode, 'mouseout', parentNode.toggleSubNav);
    },
    
    mouseOverEvent: function(node){
        node = menu.getTarget(node);
        if (node.nodeName.toLowerCase() === 'a') 
            node = node.parentNode;
        menu.toggleActive(node);
    },
    
    setupSubmenuMouseoverEvents: function(node){
        var elements = node.getElementsByTagName('LI');
        for (var i = 0, end = elements.length; i < end; ++i) {
            addEventHandler(elements[i], 'mouseover', menu.mouseOverEvent);
            addEventHandler(elements[i], 'mouseout', menu.mouseOverEvent);
        }
    },
    
    init: function(node){
        if (!(node = $(node))) 
            return;
        var entrys = node.getElementsByTagName('DIV');
        var i, ii, e, subE;
        for (i = 0; i < entrys.length; ++i) {
            if (!entrys[i].id || !(subE = $('subMenu_' + entrys[i].id))) {
                continue;
            }
            menu.setupSubmenuShowEvents(subE, entrys[i]);
            menu.setupSubmenuMouseoverEvents(subE);
            menu.setPosition(subE, entrys[i]);
        }
    }
};
function subsub_show(id)
{
	document.getElementById(id).style.display = "block";
}
function subsub_hide(id)
{
	document.getElementById(id).style.display = "none";
}
