    ////////////////////////////////////////////////////
    // Scriptinfo:
    // ===========
    // Author: Julian Mollik
    // Email: jule@creative-coding.net
    // Website: http://www.creative-coding.net/
    // Created: 10/2008
    //
    // Copyright 2008 Julian Mollik
    // Illegal distribution prohibited
    ////////////////////////////////////////////////////

    function showAccessibilityInfo() {
        // hide banner
        Effect.Fade('banner');
        
        // hide help
        Effect.Fade('help');
        
        // show accessibility info
        Effect.SlideDown('accessibility');
    }
    
    function hideAccessibilityInfo() {
        // hide accessibility info
        Effect.SlideUp('accessibility');
        
        // show banner
        Effect.Appear('banner');
        
        // show help
        Effect.Appear('help');
    }
    
    function hideEntry(iEntry, sType) {
        // hide entry
        Effect.BlindUp('entry' + iEntry);
        
        // change control-link
        $('control' + iEntry).onclick = function() {showEntry(iEntry, sType); return false;};
        $('control' + iEntry).title = 'show this ' + sType;
        $('control' + iEntry).replaceChild(document.createTextNode('show'), $('control' + iEntry).firstChild);
        
        // add onclick to info-control-link
        $('infocontrol' + iEntry).onclick = function() {showEntry(iEntry); return false;};
        
        if (Prototype.Browser.IE) {
            // internet explorer does not show background-color unless there is a border (wtf!?)
            $('entry' + iEntry).setStyle({borderTop: '1px solid #EEEEEE'});
        }
    }
    
    function showEntry(iEntry, sType) {
        // show entry
        Effect.BlindDown('entry' + iEntry);
        
        // change control-link
        $('control' + iEntry).onclick = function() {hideEntry(iEntry, sType); return false;};
        $('control' + iEntry).title = 'hide this ' + sType;
        $('control' + iEntry).replaceChild(document.createTextNode('hide'), $('control' + iEntry).firstChild);
        
        // remove onclick of info-control-link
        $('infocontrol' + iEntry).onclick = null;
        
        if (Prototype.Browser.IE) {
            // internet explorer does not show background-color unless there is a border (wtf!?)
            $('entry' + iEntry).setStyle({borderTop: '1px solid #EEEEEE'});
        }
    }
    
    function highlightEntry(iEntry) {
        $('entry' + iEntry).setStyle({backgroundColor: '#EEEEEE'});
        $('entryheader' + iEntry).setStyle({backgroundColor: '#EEEEEE'});
        
        // internet explorer has problems with hightlighting <ul>s
        if (Prototype.Browser.IE) {
            // get all elements to be highlighted
            var aSubEntries        = $('entry' + iEntry).select('[class="subentry"]');
            var aSubEntriesControl = $('entry' + iEntry).select('[class="subentrycontrol"]');
            var aSubEntriesContent = $('entry' + iEntry).select('[class="subentrycontent"]');
            // merge elements into one big array
            var aSubEntriesAll = aSubEntries.concat(aSubEntriesControl.concat(aSubEntriesContent));
            aSubEntriesAll.each(function(element, index) {
                element.setStyle({backgroundColor: '#EEEEEE'});
            });
        }
    }
    
    function downlightEntry(iEntry) {
        $('entry' + iEntry).setStyle({backgroundColor: 'transparent'});
        $('entryheader' + iEntry).setStyle({backgroundColor: 'transparent'});
        
        // internet explorer has problems with downlighting <ul>s
        if (Prototype.Browser.IE) {
            // get all elements to be downlighted
            var aSubEntries        = $('entry' + iEntry).select('[class="subentry"]');
            var aSubEntriesControl = $('entry' + iEntry).select('[class="subentrycontrol"]');
            var aSubEntriesContent = $('entry' + iEntry).select('[class="subentrycontent"]');
            // merge elements into one big array
            var aSubEntriesAll = aSubEntries.concat(aSubEntriesControl.concat(aSubEntriesContent));
            aSubEntriesAll.each(function(element, index) {
                element.setStyle({backgroundColor: 'transparent'});
            });
            
            // internet explorer does not show background-color unless there is a border (wtf!?)
            $('entry' + iEntry).setStyle({borderTop: '1px solid transparent'});
        }
    }
    
    function hideSubEntry(iSubEntry, sType) {
        // hide subentry
        Effect.BlindUp('subentrycontent' + iSubEntry);
        
        // change control-link
        $('subentrycontrollink' + iSubEntry).onclick = function() {showSubEntry(iSubEntry, sType); return false;};
        $('subentrycontrollink' + iSubEntry).title = 'show this ' + sType;
        $('subentrycontrollink' + iSubEntry).replaceChild(document.createTextNode('show'), $('subentrycontrollink' + iSubEntry).firstChild);
    }
    
    function showSubEntry(iSubEntry, sType) {
        // show subentry
        Effect.BlindDown('subentrycontent' + iSubEntry);
        
        // change control-link
        $('subentrycontrollink' + iSubEntry).onclick = function() {hideSubEntry(iSubEntry, sType); return false;};
        $('subentrycontrollink' + iSubEntry).title = 'hide this ' + sType;
        $('subentrycontrollink' + iSubEntry).replaceChild(document.createTextNode('hide'), $('subentrycontrollink' + iSubEntry).firstChild);
    }
    
    function highlightSubEntry(iSubEntry) {
        $('subentry' + iSubEntry).setStyle({backgroundColor: '#EEEEEE'});
        if (Prototype.Browser.IE) {
            // ie can't hightlight the whole li-element
            $('subentrycontent' + iSubEntry).setStyle({backgroundColor: '#EEEEEE'});
            $('subentrycontrol' + iSubEntry).setStyle({backgroundColor: '#EEEEEE'});
        }
    }
    
    function downlightSubEntry(iSubEntry) {
        $('subentry' + iSubEntry).setStyle({backgroundColor: 'transparent'});
        if (Prototype.Browser.IE) {
            // ie can't downlight the whole li-element
            $('subentrycontent' + iSubEntry).setStyle({backgroundColor: 'transparent'});
            $('subentrycontrol' + iSubEntry).setStyle({backgroundColor: 'transparent'}); 
        }
    }
    
    // sets the ancor in the address bar of the browser, the given sAnchor does not have to include the #-sign
    // if an anchor exists, it will be replaced
    function setAnchorInAddressBar(sAnchor) {
        // get position of the #-sign (if available)
        var iSign = document.location.href.indexOf('#');
        if (iSign == -1) {
            // no previous anchor available
            document.location.href = document.location.href + '#' + sAnchor;    
        }
        else {
            document.location.href = document.location.href.substr(0, iSign) + '#' + sAnchor;
        }
        
        
    }
    
    // This script is (C) Copyright 2004 Jim Tucek
    // Leave these comments alone!  For more info, visit
    // www.jracademy.com/~jtucek/email/ 
    function forego(agility,agriculture,apartment) {
        agility += ' ';
        var cleverness = agility.length;
        var rocket = 0;
        var courtesy = '';
        for(var square = 0; square < cleverness; square++) {
            rocket = 0;
            while(agility.charCodeAt(square) != 32) {
                rocket = rocket * 10;
                rocket = rocket + agility.charCodeAt(square)-48;
                square++;
            }
            courtesy += String.fromCharCode(light(rocket,agriculture,apartment));
        }
        parent.location = 'm'+'a'+'i'+'l'+'t'+'o'+':'+courtesy;
    }

    function forgive(decision,diablura,drawing) {
        decision += ' ';
        var time = decision.length;
        var phrase = 0;
        for(var history = 0; history < time; history++) {
            phrase = 0;
            while(decision.charCodeAt(history) != 32) {
                phrase = phrase * 10;
                phrase = phrase + decision.charCodeAt(history)-48;
                history++;
            }
            document.write(String.fromCharCode(light(phrase,diablura,drawing)));
        }
    }

    function light(incredulity,language,lottery) {
        if (lottery % 2 == 0) {
            magic = 1;
            for(var wall = 1; wall <= lottery/2; wall++) {
                movement = (incredulity*incredulity) % language;
                magic = (movement*magic) % language;
            }
        }
        else {
            magic = incredulity;
            for(var orange = 1; orange <= lottery/2; orange++) {
                movement = (incredulity*incredulity) % language;
                magic = (movement*magic) % language;
            }
        }
        return magic;
    }
