/*
             \|/
            .-*-
           / /|\
          _L_
        ,"   ".
    (\ /  O O  \ /)
     \|    _    |/
       \  (_)  /
       _/.___,\_
     (_/ doom  \_)
         ready, the end is near
*/

    var doomready = new Object();
    
    doomready = {
        add: function(fn) {
            if (doomready.loaded) return fn();
            var observers = doomready.observers;
            if (!observers) observers = doomready.observers = [];
            observers[observers.length] = fn; // Arraypush is not supported by Mac IE 5
            if (doomready.callback) return;
            doomready.callback = function() {
                if (doomready.loaded) return;
                doomready.loaded = true;
                if (doomready.timer) {
                    clearInterval(doomready.timer);
                    doomready.timer = null;
                }
                var observers = doomready.observers;
                for (var i = 0, length = observers.length; i < length; i++) {
                    var fn = observers[i];
                    observers[i] = null;
                    fn(); // make 'this' as window
                }
                doomready.callback = doomready.observers = null;
            };
    
            var ie = !!(window.attachEvent && !window.opera);
            var webkit = navigator.userAgent.indexOf('AppleWebKit/') > -1;
            if (document.readyState && webkit) { // Apple WebKit (Safari, OmniWeb, ...)
                doomready.timer = setInterval(function() {
                    var state = document.readyState;
                    if (state == 'loaded' || state == 'complete') {
                        doomready.callback();
                    }
                }, 50);
            }
            else if (document.readyState && ie) { // Windows IE
                var src = (window.location.protocol == 'https:') ? '://0' : 'javascript:void(0)';
                document.write(
                    '<script type="text/javascript" defer="defer" src="' + src + '" ' +
                    'onreadystatechange="if (this.readyState == \'complete\') doomready.callback();"' +
                    '><\/script>');
            }
            else {
                if (window.addEventListener) { // for Mozilla browsers, Opera 9
                    document.addEventListener("DOMContentLoaded", doomready.callback, false);
                    window.addEventListener("load", doomready.callback, false); // Fail safe
                }
                else if (window.attachEvent) {
                window.attachEvent('onload', doomready.callback);
                }
                else { // Legacy browsers (e.g. Mac IE 5)
                    var fn = window.onload;
                    window.onload = function() {
                        doomready.callback();
                        if (fn) fn();
                    }
                }
            }
        }
    }

/*--- spam protection ---*/

    function getAdr(prefix, postfix, text) {
        document.write('<a href="mailto:' + prefix + '@' + postfix + '">' + (text ? text.replace(/&quot;/g, '"').replace(/%EMAIL%/, prefix + '@' + postfix).replace('[at]', '@') : prefix + '@' + postfix) + '</a>');
    }


/*--- swap image ---*/

    function swapImage(element, newimage) {
        var oldsrc = element.src;
        element.src = newimage;
        if (!element.onmouseout) {
            element.onmouseout = function () {
                swapImage(this, oldsrc);
            }
        }
    }

/*--- hover ---*/

    function init_hover() {
        var tags = new Array('tr');
        for(t=0; t<tags.length; t++) {
            var eles = document.getElementsByTagName(tags[t]);
            for(var i = 0; i < eles.length; i++) {
                eles[i].onmouseover = function() { addClass(this, 'hover'); }
                eles[i].onmouseout = function() { removeClass(this, 'hover'); }            
            }
        }
    }

    doomready.add(function() {
        init_hover();
    });

/*--- focus ---*/

    function init_focus() {
        var tags = new Array('input','button','textarea');
        for(t=0; t<tags.length; t++) {
            var eles = document.getElementsByTagName(tags[t]);
            for(i=0; i<eles.length; i++) {
                eles[i].oldonfocus = eles[i].onfocus;
                eles[i].oldonblur = eles[i].onblur;
                eles[i].onfocus = function() { addClass(this, 'focus'); if(this.oldonfocus) this.oldonfocus(); }
                eles[i].onblur = function() { removeClass(this, 'focus'); if(this.oldonblur) this.oldonblur(); }
            }
        }
    }

    doomready.add(function() {
        init_focus();
    });

/*--- add/remove class ---*/

    function addClass(obj, newclass) {
        if(obj.className.indexOf(newclass) == -1)
            obj.className += " " + newclass;
    }
    
    function removeClass(obj, oldclass) {
        var classes = obj.className.split(' ');
        for(i=0; i<classes.length; i++) {
            if(classes[i].indexOf(oldclass) > -1)
                classes[i] = "";
        }
        obj.className = classes.join(' ');
    }

/*--- getElementsByClassName ---*/

    function getElementsByClassName(strClass, strTag, objContElm) {
        strTag = strTag || "*";
        objContElm = objContElm || document;
        var objColl = objContElm.getElementsByTagName(strTag);
        if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
        var arr = new Array();
        var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
        var arrClass = strClass.split(delim);
        for (var i = 0, j = objColl.length; i < j; i++) {
            var arrObjClass = objColl[i].className.split(' ');
            if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
            var c = 0;
            comparisonLoop:
            for (var k = 0, l = arrObjClass.length; k < l; k++) {
                for (var m = 0, n = arrClass.length; m < n; m++) {
                    if (arrClass[m] == arrObjClass[k]) c++;
                    if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
                        arr.push(objColl[i]);
                        break comparisonLoop;
                    }
                }
            }
        }
        return arr;
    }

/*--- validform ---*/

    var custom_required_text = new Object();
    function init_forms() {
        var content = document.getElementById('content');
        if(content) {
            var forms = content.getElementsByTagName('form');
            for(f=0; f<forms.length; f++) {
                init_form(forms[f]);
            }
        }
        var email_empfaenger = document.getElementById('email_empfaenger');
        if(email_empfaenger) {
            if(email_empfaenger.tagName.toLowerCase() == 'select') {
                var options = email_empfaenger.getElementsByTagName('option');
                for(o=0; o<options.length; o++) {
                    options[o].value = options[o].value.replace('+at+', '@');
                }
            }
            else {
                email_empfaenger.value = email_empfaenger.value.replace('+at+', '@');
            }
        }
    }

    function init_form(form) {
        var required = getElementsByClassName('required', '*', form);
        for(i=0; i<required.length; i++) {
            required[i].onblur = function() {
                validate(this);
            }
        }
        form.onsubmit = function() {
            var doSubmit = true;
            var list = new Array();
            var required = getElementsByClassName('required', '*', this);
            for(v=0; v<required.length; v++) {
                if(! validate(required[v])) {
                    doSubmit = false;
                    list.push(required[v]);
                }
            }
            var checkboxeles = getElementsByClassName('required_checkbox', '*', this);
            for(i=0; i<checkboxeles.length; i++) {
                valid = false;
                checkboxes = checkboxeles[i].getElementsByTagName('input');
                for(c=0; c<checkboxes.length; c++) {
                    if(checkboxes[c].type == 'checkbox') {
                        checkboxeles[i].name = checkboxes[c].name; // we need the name to check for custom_required_texts
                        if(checkboxes[c].checked)
                            valid = true;
                    }
                }
    
                if(valid == false) {
                    doSubmit = false;
                    set_msg(checkboxeles[i], label_valid_checkbox);
                    list.push(checkboxeles[i]);
                } 
                else {
                    clear_msg(checkboxeles[i]);
                }
            }
            var radioeles = getElementsByClassName('required_radio', '*', this);
            for(i=0; i<radioeles.length; i++) {
                valid = false;
                radios = radioeles[i].getElementsByTagName('input');
                for(c=0; c<radios.length; c++) {
                    if(radios[c].type == 'radio') {
                        radioeles[i].name = radios[c].name; // we need the name to check for custom_required_texts
                        if(radios[c].checked)
                            valid = true;
                    }
                }
    
                if(valid == false) {
                    doSubmit = false;
                    set_msg(radioeles[i], label_valid_radio);
                    list.push(radioeles[i]);
                } 
                else {
                    clear_msg(radioeles[i]);
                }
            }

        if(doSubmit == false)
            show_error(list);
            return doSubmit;
        }
    }

    function validate(el) {
        var valid = true;
        clear_msg(el);
        switch(el.type) {
            case 'text':
            case 'textarea':
            case 'select-one':
                if(el.value != '') {
                    if(el.className.indexOf('email') > -1) {
                        var regEmail = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
                        if(el.value.toUpperCase().match(regEmail)){
                            valid = true;
                        }
                        else {
                            valid = false;
                            set_msg(el, label_valid_email);
                        }
                    }
                    if(el.className.indexOf('number') > -1) {
                        if(el.value == Math.round(el.value)) {
                            valid = true;
                        }
                        else {
                            valid = false;
                            set_msg(el, label_valid_postal_code);
                        }
                    }
                }
                else {
                    valid = false;
                    set_msg(el);
                }
                break;
        }
    
        return valid;
    }

    function set_msg(el, msg) {
        if(msg == undefined) {
            msg = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + label_valid_required;
        }

        if(custom_required_text[el.name])
            msg = custom_required_text[el.name];

        el.errorMessage = msg;
        if(el.parentNode.className.indexOf('error') == -1)
            el.parentNode.className += ' error';
    }

    function clear_msg(el) {
        var classes = el.parentNode.className.split(' ');
        for(i=0; i<classes.length; i++) {
            if(classes[i].indexOf('error') > -1)
                classes[i] = "";
        }
        el.parentNode.className = classes.join(' ');
        el.errorMessage = "";
    }

    function show_error(list) {
        errorlist = '<ul>';
        for(i=0; i<list.length; i++) {
            el = list[i];
            if(el.errorMessage != undefined)
                errorMessage = el.errorMessage;
            else
                var errorMessage = el.parentNode.getElementsByTagName('span')[0].innerHTML.replace(' *', '') + ' ' + label_valid_required;
    
            errorlist += '<li>' + errorMessage + '</li>';
        };
        errorlist += '</ul>';
    
        var validationMessage = document.getElementById('validationMessage');
        validationMessage.innerHTML = '<h2 title="' + label_valid_error + '">' + label_valid_error + '</h2>' + errorlist;
        document.location.href = '#validationMessage';
    }

    doomready.add(function() {
        init_forms();
    });

/*--- search ---*/

    function init_search() {
        if (document.getElementById('search')) {
            var search_string = label_form_value;
            var searchinput = document.getElementById('fld_search');
            searchinput.search_string = search_string;
            var searchform = document.getElementById('search');
            searchinput.onfocus = function(e) {
                if (this.value == this.search_string) {
                    this.value = '';
                }
            }
            searchinput.onblur = function(e) {
                if (this.value == '') {
                    this.value = this.search_string;
                }
            }
        }
    }

    doomready.add(function() {
        init_search();
    });

/*--- filter/sort selection ---*/

    // Function for the special objects: Veranstaltungen, Presse, Offene Stellen, ...

    function init_selection() {
        var form_selections_obj = document.getElementById('form_selections');
        if (form_selections_obj) {
            form_selections_obj.getElementsByTagName('button')[0].style.display = 'none';
            selects = form_selections_obj.getElementsByTagName('select');
            for(i=0; i<selects.length; i++) {
                selects[i].onchange = form_selections_change;
            }
        }
    }
    
    function form_selections_change() {
        urlparm = '?';
        selects = document.getElementById('form_selections').getElementsByTagName('select');
        for(i=0; i<selects.length; i++) {
            urlparm += selects[i].name + '=' + selects[i].value;
            if (i!=selects.length-1) {
                urlparm += '&';
            }
        };
        location.href=urlparm;
    }

    doomready.add(function() {
        init_selection();
    });

/*--- alternativ x-menu ---*/

    var navImagesNormal = new Array();
    var navImagesHover = new Array();

    function init_nav() {
        if(document.getElementById('nav')) {

            var nav = document.getElementById('nav');
            var lis = nav.getElementsByTagName('li');

            /* Sub- und Locationsmenue ausblenden */
            document.getElementById('content').onmouseover = document.getElementById('content_bg').onmouseover = function() {
                for (j=0; j<lis.length; j++) {
                    removeClass(lis[j], 'hover');
                    removeClass(lis[j], 'active_element');
                    var img = lis[j].getElementsByTagName('img')[0];
                    if (img && navImagesNormal[lis[j].number])
                        img.src = navImagesNormal[lis[j].number];
                }

                hide_submenus();
                ShowIFrame();
            }

            for (var i = 0; i < lis.length; i++) {
                if(lis[i].parentNode.id == 'nav') {
                    lis[i].number = i;
                    lis[i].getElementsByTagName('A')[0].href="#";
                    lis[i].onmouseover = function() {
                        var img = this.getElementsByTagName('img');
                        if(img[0] && navImagesHover[this.number])
                            img[0].src = navImagesHover[this.number];
                        addClass(this, 'hover')
                    }

                    lis[i].onclick = function() {
                        HideIFrame();
                        hide_submenus();

                        for (j=0; j<lis.length; j++) {
                            removeClass(lis[j], 'active_element');

                            var img = lis[j].getElementsByTagName('img')[0];
                            if (img && navImagesNormal[lis[j].number])
                                img.src = navImagesNormal[lis[j].number];
                        }
                        addClass(this, 'active_element');

                        show_submenu(this.getElementsByTagName('UL')[0].getElementsByTagName('LI'));
                        this.getElementsByTagName('UL')[0].style.display = 'block';

                        var img = this.getElementsByTagName('img');
                        if(img[0] && navImagesHover[this.number])
                            img[0].src = navImagesHover[this.number];

                    }

                    lis[i].onmouseout = function() {
                        removeClass(this, 'hover');

                        if (this.className.indexOf('hover') == -1 && this.className.indexOf('active_element') == -1) {
                            var img = this.getElementsByTagName('img');
                            if(img[0] && navImagesNormal[this.number])
                                img[0].src = navImagesNormal[this.number];
                        }
                    }

                    var img = lis[i].getElementsByTagName('img');
                    if(img[0] && img[0].onmouseover) {
                        navImagesNormal[i] = img[0].src;
                        img[0].onmouseover();
                        navImagesHover[i] = img[0].src;
                        img[0].onmouseout();
                        img[0].onmouseover = function() {};
                        img[0].onmouseout = function() {};
                    }
                    var anchors = lis[i].getElementsByTagName('A');
                    for(j=0; j<anchors.length; j++) {
                        anchors[j].title = '';
                    }
                }
            }
        }
    }


    function hide_sub_elements(elements) {
        for (k=0; k<elements.length; k++) {
            if (elements[k].style.display == 'block') {
                fader({
                    obj: elements[k],
                    inorout: 'out',
                    maxopacity: 1,
                    alphastep: 0.05,
                    oncomplete: function() {}
                });
            }
        }
    }


    function hide_submenus() {
        var hide_uls = new Array(document.getElementById('nav').getElementsByTagName('UL'), document.getElementById('locations').getElementsByTagName('UL')[0].getElementsByTagName('UL'));

        for (l=0; l<hide_uls.length; l++) {
            if (navigator.appVersion.indexOf('IE 8.') > -1) {
                for (m=0; m<hide_uls[l].length; m++) {
                    hide_sub_elements(hide_uls[l][m].getElementsByTagName('LI'));
                }
            } else {
                hide_sub_elements(hide_uls[l]);
            }
        }
    }

    function show_submenu(elements) {

        if (navigator.appVersion.indexOf('IE 8.') > -1) {
            for (k=0; k<elements.length; k++) {
                fader({
                    obj: elements[k],
                    inorout: 'in',
                    maxopacity: 1,
                    alphastep: 0.05,
                    oncomplete: function() {}
                });
            }
        } else {
            fader({
                obj: elements[0].parentNode,
                inorout: 'in',
                maxopacity: 1,
                alphastep: 0.05,
                oncomplete: function() {}
            });
        }
    }


/*--- Iframe im IE6 ausblenden ---*/

    function HideIFrame() {
        if (navigator.appVersion.indexOf("MSIE 6.") > -1 && document.getElementsByTagName("IFRAME")[0]) {
            document.getElementsByTagName("IFRAME")[0].style.visibility = "hidden";
        }
    }

    function ShowIFrame() {
        if (navigator.appVersion.indexOf("MSIE 6.") > -1 && document.getElementsByTagName("iframe")[0]) {
            sel = document.getElementsByTagName("iframe")[0];
            sel.style.visibility = "visible";
        }
    }

    doomready.add(function() {
        init_nav();
    });

/*--- locations-menu ---*/

    function init_locations() {
        var locations = document.getElementById('locations').getElementsByTagName('UL')[0];
        var uls = locations.getElementsByTagName('UL');

        for (i=0; i<uls.length; i++) {
            uls[i].parentNode.getElementsByTagName('A')[0].onclick = function() {
                getlocation(this);

                var lis = document.getElementById('nav').getElementsByTagName('li');
                for (j=0; j<lis.length; j++) {
                    removeClass(lis[j], 'hover');
                    removeClass(lis[j], 'active_element');
                    var img = lis[j].getElementsByTagName('img')[0];
                    if (img && navImagesNormal[lis[j].number])
                        img.src = navImagesNormal[lis[j].number];
                }

                return false;
            }
        }
    }

    function getlocation(object) {
        hide_submenus();
        HideIFrame();
        show_submenu(object.parentNode.getElementsByTagName('LI'));
        object.parentNode.getElementsByTagName('UL')[0].style.display = 'block';
    }

    doomready.add(function() {
        init_locations();
    });

/*--- display elements onmouseover ---*/

    var hover_links = new Array();
    hover_links.push(new Array());
    // To add more links, follow the same pattern
    // hoverLinks.push(new Array('linkid', 'elementid'));

    function init_show_elements() {
        for (i = 0; i < hover_links.length; i++) {
            var link = document.getElementById(hover_links[i][0]);
            if (link) {
                link.el = document.getElementById(hover_links[i][1]);
                if (link.el) {
                    link.onmouseover = function() {
                        this.el.style.display = 'block';
                    };
                    link.onmouseout = function() {
                        this.el.style.display = 'none';
                    }
                    link.onclick = function() {
                        return false;
                    }
                }
            }
        }
    }

    doomready.add(function() {
        init_show_elements();
    });

/*--- fader ---*/

    // more info: atikon-forum -> tutorials

    var faderQueue = new Array();
    var faderInterval;

    function fader(options) {
        var obj = options.obj;
        var inout = options.inorout;
        var maxopacity = options.maxopacity;
        var alphastep = options.alphastep;
        var oncomplete = options.oncomplete;

        obj.oncomplete = oncomplete;
        obj.alphastep = alphastep;
        obj.maxopacity = maxopacity;
        if(!obj.currentopacity) {
            if(inout == 'in') {
                obj.currentopacity = 0;
                opacity(obj, 0);
            }
            else {
                obj.currentopacity = maxopacity;
                opacity(obj, maxopacity);
            }
        }
        obj.fade = inout;
        obj.style.display = 'block';

        faderQueue.push(obj);
        if(!faderInterval) {
            faderInterval = window.setInterval('darthFader()', 20);
        }
    }

    function darthFader() {
        if(faderQueue.length > 0) {
            for(i=0; i<faderQueue.length; i++) {
                var obj = faderQueue[i];

                if(obj.fade == 'in') {
                    obj.currentopacity += obj.alphastep;
                    opacity(obj, obj.currentopacity);

                    if(obj.currentopacity >= obj.maxopacity) {
                        if(obj.oncomplete) {
                            obj.oncomplete(obj);
                        }
                        faderQueue.splice(i, 1); // remove object from queue
                    }
                }
                else {
                    obj.currentopacity -= obj.alphastep;

                    opacity(obj, obj.currentopacity);

                    if(obj.currentopacity <= 0 ) {
                        obj.style.display = 'none';
                        if(obj.oncomplete) {
                            obj.oncomplete(obj);
                        }
                        faderQueue.splice(i, 1); // remove object from queue
                    }
                }
            }

            if(faderQueue.length <= 0) {
                window.clearInterval(faderInterval);
                faderInterval = undefined;
            }
        }
    }


    function opacity(obj, value) {
        if(value < 0)
            value = 0;
        if(value > 1)
            value = 1;
        value = Math.round(value*100)/100;
        obj.style.opacity = value;
        obj.style.filter = 'alpha(opacity=' + value*100 + ')';
    }


/*--- positionplan / requires newelement and darthFader ---*/

    function newelement (newid) {
        if (document.createElement) {
            var el = document.createElement('div');
            el.id = newid;
            with (el.style) {
                display = 'block';
                position = 'absolute';
            }
            el.innerHTML = '&nbsp;';
            document.body.appendChild(el);
        }
    }


    function init_positionplan() {
        var positionplan = getElementsByClassName('positionplan', 'div');
        var positionplan_nav = getElementsByClassName('positionplan_nav', 'ul');
        if (positionplan) {
            for (i=0; i<positionplan.length; i++) {

                positionplan_nav[i].style.display = 'block';
                anchor_elements = positionplan_nav[i].getElementsByTagName('A');

                for (j=0; j<anchor_elements.length; j++) {
                    anchor_elements[j].onclick = function() {
                        changeImage(this.href);
                        var anchors = this.parentNode.parentNode.getElementsByTagName('A');
                        for (k=0; k<anchors.length; k++) {
                            anchors[k].className = '';
                        }
                        this.className = 'active';
                        return false;
                    }

                    if (j == anchor_elements.length-1) {
                        anchor_elements[j].className = 'active';
                    }
                }
            }
        }
    }

    var positionplan_direction = 1;

    function changeImage(new_url) {
        var pictures = getElementsByClassName('pictures', 'div')[0].getElementsByTagName('IMG');
        var backpic = pictures[0];
        var frontpic = pictures[1];

        if (positionplan_direction == 1) {

            backpic.src = new_url;
            if (backpic.complete == true) {
                fader({
                    obj: frontpic,
                    inorout: 'out',
                    maxopacity: 1,
                    alphastep: 0.05,
                    oncomplete: function() {
                        positionplan_direction = 2;
                    }
                });
            } else {
                backpic.onload = function() {
                    fader({
                        obj: frontpic,
                        inorout: 'out',
                        maxopacity: 1,
                        alphastep: 0.05,
                        oncomplete: function() {
                            positionplan_direction = 2;
                        }
                    });
                }
            }
        } else {

            frontpic.src = new_url;
            if (frontpic.complete == true) {
                fader({
                    obj: frontpic,
                    inorout: 'in',
                    maxopacity: 1,
                    alphastep: 0.05,
                    oncomplete: function() {
                        positionplan_direction = 1;
                    }
                });
            } else {
                frontpic.onload = function() {
                    fader({
                        obj: frontpic,
                        inorout: 'in',
                        maxopacity: 1,
                        alphastep: 0.05,
                        oncomplete: function() {
                            positionplan_direction = 1;
                        }
                    });
                }
            }
        }
        return false;
    }

    doomready.add(function() {
        init_positionplan();
    });



/*--- Überschriften-Titel ausblenden ---*/

    function deleteTitleAlt() {
        var title = document.getElementById('title');
        if (title) {
            title.getElementsByTagName('IMG')[0].alt = "";
        }
    }

    doomready.add(function() {
        deleteTitleAlt();
    });


/*--- ganzes Element verlinken ---*/

    var wholelinkarray_ul = new Array('quicklinks', 'linkcollection');
    var wholelinkarray_div = new Array('overview', 'onlinetool_overview', 'news_preview');

    function init_wholelinks() {
        for (i=0; i<wholelinkarray_ul.length; i++) {
            var elemente = getElementsByClassName(wholelinkarray_ul[i], '*');
            for (j=0; j<elemente.length; j++) {
                lis = elemente[j].getElementsByTagName('LI');
                for (k=0; k<lis.length; k++) {
                    var link_url = lis[k].getElementsByTagName('A')[0];
                    lis[k].onclick = function() {
                        anchor = this.getElementsByTagName('A')[0];
                        if (anchor.target == '_blank') {
                            neuesFenster = window.open(this.getElementsByTagName('A')[0].href);
                            neuesFenster.focus();
                            return false;
                        } else {
                            window.location = this.getElementsByTagName('A')[0].href;
                        }
                    }
                    lis[k].onmouseover = function() {
                        this.style.cursor = 'pointer';
                        addClass(this, 'hover');
                    }
                    lis[k].onmouseout = function() {
                        removeClass(this, 'hover');
                    }
                }
            }
        }

        for (i=0; i<wholelinkarray_div.length; i++) {
            var elemente = getElementsByClassName(wholelinkarray_div[i], 'div');
            for (j=0; j<elemente.length; j++) {
                entities = elemente[j].getElementsByTagName('DIV');
                for (k=0; k<entities.length; k++) {
                    var link_url = entities[k].getElementsByTagName('A')[0];
                    entities[k].onclick = function() {
                         window.location = this.getElementsByTagName('A')[0].href;
                    }
                    entities[k].onmouseover = function() {
                        this.style.cursor = 'pointer';
                        addClass(this, 'hover');
                    }
                    entities[k].onmouseout = function() {
                        removeClass(this, 'hover');
                    }
                }
            }
        }
    }

    doomready.add(function() {
        init_wholelinks();
    });
