/* http://www.dustindiaz.com/rock-solid-addevent/ */
function addEvent( obj, type, fn ) {
    if (obj.addEventListener) {
        obj.addEventListener(type, fn, false);
        EventCache.add(obj, type, fn);
    }
    else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
        obj.attachEvent( "on"+type, obj[type+fn] );
        EventCache.add(obj, type, fn);
    }
    else {
        obj["on"+type] = obj["e"+type+fn];
    }
}

var EventCache = function(){
    var listEvents = [];
    return {
        listEvents : listEvents,
        add : function(node, sEventName, fHandler){
            listEvents.push(arguments);
        },
        flush : function(){
            var i, item;
            for(i = listEvents.length - 1; i >= 0; i = i - 1){
                item = listEvents[i];
                if(item[0].removeEventListener){
                    item[0].removeEventListener(item[1], item[2], item[3]);
                };
                if(item[1].substring(0, 2) != "on"){
                    item[1] = "on" + item[1];
                };
                if(item[0].detachEvent){
                    item[0].detachEvent(item[1], item[2]);
                };
                item[0][item[1]] = null;
            };
        }
    };
}();

addEvent(window,'unload', EventCache.flush);


/* toggle elements are visible by defaults, for browsers
   without javascript. We change them at document load */
function close_toggle() {
    var theKids = document.body.getElementsByTagName('h4');
    for (var i=0; i<theKids.length; i++) {
        var el = theKids[i];
        if (el.className && el.className.match('toggle')) {
            el.className = 'toggle closed';
            addEvent(el, 'mousedown', EventToggle);
        }
    }
}
addEvent(window, 'load', close_toggle);

function toggle(el) {
    // toggle between closed or not
    if (el.className.match('toggle'))
        if (el.className.match(' closed'))
            el.className = el.className.replace(/ closed/gi, '');
        else
            el.className = el.className + ' closed';
}

function EventToggle() {
    toggle(this);
}

/* Detection of the browser window size. See
   http://www.quirksmode.org/viewport/compatibility.html */
function setScreenClass(){
    var fmt;
    /* Everyone but... */
    if (self.innerWidth)
        fmt = self.innerWidth;
    /* ... IE 7. Note that this also works in Opera, Konquero, and recent
     Geckos (but not old ones...) */
    else if (document.documentElement && document.documentElement.clientWidth)
        fmt = document.documentElement.clientWidth;

    var cls = (fmt>=985)?'large':(fmt>=800?'normal':'normal small');
    document.getElementById('container').className=cls;
};
addEvent(window, 'load', setScreenClass);
addEvent(window, 'resize', setScreenClass);


/* Beautifying of the search input box */
function google() {
    var f = document.getElementById('searchbox_007309032891663714025:3vqwvhwwt4a');
    if (f && f.q) {
        var q = f.q;
        var n = navigator;
        var l = location;
        if (n.platform == 'Win32') {
            q.style.cssText = 'border: 1px solid #7e9db9; padding: 2px;';
        }
        var b = function() {
            if (q.value == '') {
                q.style.background =
                '#FFFFFF url(css/images/searchbox.png) left no-repeat';
            }
        };
        var f = function() {
            q.style.background = '#ffffff';
        };
        q.onfocus = f;
        q.onblur = b;
        if (!/[&?]q=[^&]/.test(l.search)) {
            b();
        }
    }
};
