
//  ______________
// |              |
// |   addEvent   | by Aaron Moore
// |______________|
//
function addEvent(element, listener, handler) {
    // if the system is not set up, set it up, and
    // store any outside script's event registration in the first handler slot
    if(typeof element[listener] != 'function' ||
    typeof element[listener + '_num'] == 'undefined'){
        element[listener + '_num'] = 0;
        if(typeof element[listener] == 'function'){
            element[listener + 0] = element[listener];
            element[listener + '_num']++;
        }
        element[listener] = function(e){
            var r = true;
            e = (e) ? e : window.event;
            for(var i = 0; i < element[listener + '_num']; i++)
                if(element[listener + i](e) === false) r = false;
            return r;
        }
    }
    // if handler is not already stored, assign it
    for(var i = 0; i < element[listener + '_num']; i++)
        if(element[listener + i] == handler) return;
    element[listener + element[listener + '_num']] = handler;
    element[listener + '_num']++;
}

//  _________________
// |                 |
// |   removeEvent   | by Aaron Moore
// |_________________|
//
function removeEvent(element, listener, handler) {
    // if the system is not set up, or there are no handlers to remove, exit
    if(typeof element[listener] != 'function' ||
    typeof element[listener + '_num'] == 'undefined' ||
    element[listener + '_num'] == 0) return;
    // loop through handlers,
    // if target handler is reached, begin overwriting each
    // handler with the handler in front of it until one before the last
    var found = false;
    for(var i = 0; i < element[listener + '_num']; i++){
        if(!found)
            found = element[listener + i] == handler;
        if(found && (i+1) < element[listener + '_num'])
            element[listener + i] = element[listener + (i+1)];
    }
    //if handler was found, decrement the handler count
    if(found)
        element[listener + '_num']--;
}

//  ______________________
// |                      |
// |   Search Box Text    | by Sean Landman
// |______________________|
//
var sB = {                                                                                // doFocus
    doFocus: function(e) {
        if (this.value == 'Search' && this.noinput) {
            this.value = '';
            this.style.color = '#444';
        }
    },
                                                                                           // doBlur
    doBlur: function(e) {
        if (this.value == '') {
            this.value = 'Search';
            this.noinput = true;
            this.style.color = '#777';
        } else {
            this.noinput = false;
        }
    },
                                                                                            // setUp
    setUp: function(e) {
        if (document.getElementById && document.getElementById('searchbox')) {

            var box = document.getElementById('searchbox');
            if (box.value == 'Search') {
                box.style.color = '#777';
                box.noinput = true;
            } else {
                box.style.color = '#444';
                box.noinput = false;
            }
            addEvent(box, 'onfocus', sB.doFocus);
            addEvent(box, 'onblur', sB.doBlur);

        }
    }
}

//  ______________________
// |                      |
// |   Expandable Menus   | by Sean Landman
// |______________________|
//
var eM = {                                                                           // activateMenu
    activateMenu: function(e) {
        if(this.expanded) {
            this.alt = 'Expand Menu';
            this.ul.style.display = 'none';
            this.expanded = false;
        } else {
            this.alt = 'Collapse Menu';
            this.ul.style.display = 'block';
            this.expanded = true;
        }
        
        if (e.stopPropagation) {
            e.stopPropagation();
        } else {
            e.cancelBubble = true;
        }
    },
                                                                                        // mouseOver
    mouseOver: function(e) {
        this.style.cursor = 'pointer';
        this.src = this.orangeOpen;
        
        if (e.stopPropagation) {
            e.stopPropagation();
        } else {
            e.cancelBubble = true;
        }
    },
                                                                                         // mouseOut
    mouseOut: function(e) {
        this.style.cursor = 'default';

        if (this.expanded) {
            if(this.current) {
                this.src = this.orangeOpen;
            } else {
                this.src = this.tanOpen;
            }
        } else {
            if(this.current) {
                this.src = this.orangeClosed;
            } else {
                this.src = this.tanClosed;
            }
        }
        
        if (e.stopPropagation) {
            e.stopPropagation();
        } else {
            e.cancelBubble = true;
        }
    },
                                                                                            // setUp
    setUp: function(e) {
        var blah = 'This Is A String';
        if (document.getElementById && document.getElementById('menu') &&
        document.getElementsByTagName &&
        blah.toLowerCase && blah.indexOf && blah.replace) {

            var lis = document.getElementById('menu').getElementsByTagName('li');
            for (var i = 0; i < lis.length; i++) {
                if (lis[i].getElementsByTagName('ul').length > 0) {
                    lis[i].className += ' eM';
                    var image = document.createElement('img');
                    image.width = '15px';
                    image.height = '18px';
                    image.style.width = '15px';
                    image.style.height = '18px';
                    if ((' ' + document.getElementsByTagName('body')[0].className + ' ').indexOf(' school ') == -1) {
                        var ending = '.gif';
                    } else {
                        var ending = '-school.gif';
                    }
                    image.tanClosed = '/graphics/tanclosed'+ending;
                    image.tanOpen = '/graphics/tanopen'+ending;
                    image.orangeClosed = '/graphics/orangeclosed'+ending;
                    image.orangeOpen = '/graphics/orangeopen'+ending;
                    if ((' ' + lis[i].className + ' ').indexOf(' current ') == -1) {
                        image.src = image.tanClosed;
                        image.alt = 'Expand Menu';
                        image.expanded = false;
                        image.current = false;
                    } else {
                        image.src = image.orangeOpen;
                        image.alt = 'Collapse Menu';
                        image.expanded = true;
                        image.current = true;
                    }
                    lis[i].insertBefore(image, lis[i].firstChild);
                    image.ul = lis[i].getElementsByTagName('ul')[0];
                    addEvent(image, 'onclick', eM.activateMenu);
                    addEvent(image, 'onmouseover', eM.mouseOver);
                    addEvent(image, 'onmouseout', eM.mouseOut);
                }
            }

        }
    }
};

//  _________________
// |                 |
// |   URL Naming    | by Sean Landman
// |_________________|
//
var uN = {                                                                            // updateField
    updateField: function() {
        if (this.value) {
            var str = this.value.toLowerCase();
            str = str.replace(/[^a-z\- ]+/g, '');
            str = str.replace(/\s+/g, '-');
            uN.targetBox.value = str;
        }
    },
                                                                                            // setUp
    setUp: function() {
        var testStr = 'This Is A String';
        if (document.getElementById && document.getElementById('title') &&
        document.getElementById('urlname') &&
        testStr.toLowerCase && testStr.replace) {

        var origBox = document.getElementById('title');
        uN.targetBox = document.getElementById('urlname');
        addEvent(origBox, 'onchange', uN.updateField);
        addEvent(origBox, 'onkeyup', uN.updateField);

        }
    }
};

//  __________________
// |                  |
// |   buttonHover    | by Sean Landman
// |__________________|
//
var buttonHover = {                                                                  // changeButton
    changeButton: function() {
        if ((' ' + this.className + ' ').indexOf(' hover ') == -1) {
            this.className += ' hover';
        } else {
            this.className = (' ' + this.className + ' ').replace(/ hover /, '');
        }
    },
                                                                                            // setUp
    setUp: function() {
        var testStr = 'This Is A String';
        if (document.getElementsByTagName &&
        typeof document.getElementsByTagName('body')[0].className == 'string' &&
        testStr.replace && testStr.indexOf) {

            var x = document.getElementsByTagName('button');
            for (var i = 0; i < x.length; i++) {
                var button = x[i];
                addEvent(button, 'onmouseover', buttonHover.changeButton);
                addEvent(button, 'onmouseout', buttonHover.changeButton);
            }

        }
    }
};

//  ______________________
// |                      |
// |   Show Select Box    | by Sean Landman
// |______________________|
//
var sSB = {                                                                      // handleVisibility
    handleVisibility: function(e) {
        if (this.radio.checked) {
            this.div.className = (' ' + this.div.className + ' ').replace(/ hidden /, '');
        } else if ((' ' + this.div.className + ' ').indexOf(' hidden ') == -1) {
            this.div.className += ' hidden';
        }
        if (e.stopPropagation) {
            e.stopPropagation();
        } else {
            e.cancelBubble = true;
        }
    },
                                                                                            // setUp
    setUp: function() {
        var testStr = 'This Is A String';
        if (document.getElementById &&
        document.getElementById('sSBfieldset') &&
        document.getElementById('sSBdiv') &&
        document.getElementById('cat4') &&
        typeof document.getElementById('cat4').checked != 'undefined' &&
        typeof document.getElementById('cat4').className == 'string' &&
        testStr.replace && testStr.indexOf) {
        
        var fs = document.getElementById('sSBfieldset');
        fs.div = document.getElementById('sSBdiv');
        fs.radio = document.getElementById('cat4');
        if (fs.radio.checked) {
            fs.div.className = (' ' + fs.div.className + ' ').replace(/ hidden /, '');
        } else if ((' ' + fs.div.className + ' ').indexOf(' hidden ') == -1) {
            fs.div.className += ' hidden';
        }
        addEvent(fs, 'onclick', sSB.handleVisibility);

        }
    }
};

//  ______________________
// |                      |
// |   PageManager Menu   | by Sean Landman
// |______________________|
//
var pMM = {                                                                          // activateMenu
    activateMenu: function(e) {
        if(this.expanded) {
            this.symbolNode.nodeValue = '+'
            this.title = 'Expand Section';
            this.ul.style.display = 'none';
            this.expanded = false;
        } else {
            this.symbolNode.nodeValue = '-'
            this.title = 'Collapse Section';
            this.ul.style.display = 'block';
            this.expanded = true;
        }
        
        if (e.stopPropagation) {
            e.stopPropagation();
        } else {
            e.cancelBubble = true;
        }
        
        if (e.preventDefault) {
            e.preventDefault();
        } else {
            e.returnValue = false;
        }
        
        accentColors();
        
        return false;
    },
                                                                                            // setUp
    setUp: function() {
        var blah = 'This Is A String';
        if (document.getElementById && document.getElementsByTagName &&
        document.getElementById('pagemanager') &&
        document.getElementById('pagemanager').appendChild &&
        typeof document.getElementById('pagemanager').style != 'undefined' &&
        typeof document.getElementById('pagemanager').style.display != 'undefined' &&
        typeof document.getElementById('pagemanager').parentNode != 'undefined' &&
        document.createTextNode && document.createElement && blah.indexOf) {

            var x = document.getElementById('pagemanager').getElementsByTagName('div');
            for (var i = 0; i < x.length; i++) {
                var div = x[i];
                if ((' ' + div.className + ' ').indexOf(' expandtab ') != -1) {
                    var uls = div.parentNode.parentNode.getElementsByTagName('ul');
                    if (uls && uls.length > 1) {
                        var a = document.createElement('a');
                        a.href = '#';
                        var symbol = document.createTextNode('+');
                        a.symbolNode = symbol;
                        a.appendChild(symbol);
                        a.title = 'Expand Section';
                        a.expanded = false;
                        a.ul = div.parentNode.parentNode.getElementsByTagName('ul')[1];
                        a.ul.style.display = 'none';
                        div.appendChild(a);
                        addEvent(a, 'onclick', pMM.activateMenu);
                    }
                }
            }

        }
    }
};

//  __________________
// |                  |
// |   accentColors   | by Sean Landman
// |__________________|
//
function accentColors() {
    var testStr = 'This Is A String';
    if (document.getElementsByTagName &&
    document.getElementById &&
    document.getElementById('pagemanager') &&
    typeof document.getElementById('pagemanager').parentNode != 'undefined' &&
    typeof document.getElementById('pagemanager').nodeName == 'string' &&
    typeof document.getElementById('pagemanager').className == 'string' &&
    testStr.toLowerCase && testStr.replace) {

    var x = document.getElementById('pagemanager').getElementsByTagName('ul');
    for (var i = 0; i < x.length; i++) {
        if (x[i].style.display != 'none') {
            x[i].style.display = 'block';
        }
    }
    var x = document.getElementById('pagemanager').getElementsByTagName('li');
    var counter = 0;
    for (var i = 0; i < x.length; i++) {
        var li = x[i];
        if (li.parentNode.parentNode.nodeName.toLowerCase() == 'li' ||
        li.parentNode.parentNode.id.toLowerCase() == 'pagemanager') {
            var divs = li.getElementsByTagName('div');
            if (divs && divs.length > 0) {
                var el = li.parentNode;
                var hidden = false;
                while (el.nodeName.toLowerCase() != 'div') {
                    if (el.style.display == 'none') {
                        hidden = true;
                    }
                    el = el.parentNode;
                }
                if (!hidden) {
                    divs[0].className = (' ' + divs[0].className + ' ').replace(/ accentcolor /, '');
                    if (counter%2 == 0) {
                        divs[0].className += ' accentcolor';
                    }
                    counter++;
                }
            }
        }
    }

    }
}

//  ___________________
// |                   |
// |   externalLinks   | by Kevin Yank
// |___________________|
//
function externalLinks() {
    if (document.getElementsByTagName) {

    var x = document.getElementsByTagName('a');
    for (var i=0; i < x.length; i++) {
        var a = x[i];
        if (a.href && a.rel && a.rel == 'external') {
            a.target = '_blank';
        }
    }

    }
}

// Start the Scripts
if(window && document) {
    addEvent(window, 'onload', sB.setUp);
    addEvent(window, 'onload', eM.setUp);
    addEvent(window, 'onload', uN.setUp);
    addEvent(window, 'onload', sSB.setUp);
    addEvent(window, 'onload', buttonHover.setUp);
    addEvent(window, 'onload', pMM.setUp);
    addEvent(window, 'onload', function() { setTimeout('accentColors()', 1); } );
    addEvent(window, 'onload', externalLinks);
}