var site_nav=function(){
    return {
        init:function() {
            var nav = $('nav');
            var ul = nav.childElements()[0].remove();
            var new_ul = new Element('ul');
            var lis = ul.childElements();
            lis.each(function(li) {
                var sub = li.select('ul')[0];
                var f = li.firstChild;
                var text = f.nodeValue.strip();
                var h2 = new Element('h2').update(text);
                Element.replace(f,h2);
                var new_ul = new Element('ul').update(li);
                Element.insert(nav,new_ul);
                li.observe('mouseover',function(e) {
                    sub.show();
                });
                li.observe('mouseout',function(e) {
                    sub.hide();
                });
                new_ul.setStyle({width:new_ul.getWidth()+'px'}); // Explicitly set width so it will wrap properly in Firefox
                sub.hide();
            });
        }
    };
}();

var nav_move = function(){
    return {
    init:function() {
        document.body.insertBefore($('nav'),$('page'));
    }
};
}();

var last_modified_display = function(){
    return {
    init:function() {
        var mod = $('modified_date');
        var dat = new Date(document.lastModified);
        var months = 'January February March April May June July August September October November December';
        var month = $w(months)[dat.getMonth()];
        var out = 'Last modified ';
        out += month+' ';
        out += dat.getDate()+', ';
        out += dat.getFullYear()+' ';
        mod.update(out);
    }
};
}();

var cascading_menus = function(){
    return {
    init:function() {
        var cmenus = $$('.cmenu');
        var subs = [];
        cmenus.each(function(cmenu) {
            var cmenu = $(cmenu);
            subs = subs.concat(cmenu.getElementsBySelector('li ul'));
        });
        subs.each(function(sub) {
            var sub = $(sub);
            sub.hide();
            var up = $(sub.up());
            var child = up.firstChild;
            var text = child.nodeValue;
            var node = new Element('span').update(text);
            up.removeChild(child);    // delete that textnode
            up.insert({'top': node}); //insert the new span at the top of the li
            up.addClassName('cmenu-collapsed'); 
            node.observe('click',function(e) {
                sub.toggle();
                up.toggleClassName('cmenu-expanded');
                up.toggleClassName('cmenu-collapsed');
            });
        });
    }
};
}();

var webmail_login = function() {

    var user;
    var pass;
    var feedback;
    var form;

    return {

        init:function() {

            user = $('webmail_user');
            pass = $('webmail_password');
            feedback = $('webmail_feedback');
            form = $('webmail_loginform');

            var userparm = url_parm('user');
            var errors = url_parm('error');
            if (feedback) feedback.hide();
            if (userparm) user.value = userparm;
            if (errors) webmail_login.webmail_feedback(errors);

            if (form) {
                form.observe('submit',function(e) {
                    if ($F(user).blank() || $F(pass).blank()) {
                        webmail_login.webmail_feedback('Username or password blank');
                        Event.stop(e);
                    }
                });
            }
        },

        webmail_feedback:function(msg) {
            feedback.firstDescendant().update(msg);
            if (feedback.visible()) new Effect.Highlight(feedback, { endcolor:'#fff7df' });
            else new Effect.SlideDown(feedback);
        },
    };

    function url_parm(name) {
        var regex = new RegExp( "[\\?&]"+name+"=([^&#]*)" );
        var results = regex.exec( window.location.href );
        if (!results) return null;
        else return unescape(results[1]);
    }
}();

var whiteboxes = function() {
    return {
        init:function() {
            var table_type;
            var row_type;
            var cell_type;
            if (old_ie()) {
                table_type = 'table';
                row_type = 'tr';
                cell_type = 'td';
            }
            else {
                table_type = row_type = cell_type = 'div';
            } 
            var tables = $$('.whitebox');
            tables.each(function(table) {
                var wrapper = new Element('div');

                // The following is an experimental replacement for the chunk below
                var new_table = new Element(table_type).addClassName('table');
                var html = table.innerHTML;
                ['top','','bottom'].each(function(r) {
                    var row = new Element(row_type).addClassName('row');
                    ['left','','right'].each(function(c) {
                        var class_name = r+c == '' ? 'content' : r+c;
                        var cell = new Element(cell_type).addClassName(class_name);
                        if (class_name == 'content') cell.update(html);
                        row.insert(cell);
                    });
                    new_table.insert(row);
                });
                wrapper.insert(new_table);           // Why not just use Element.update()?
                table.innerHTML = wrapper.innerHTML; // Doesn't work in IE 6/7.
                                                     // Table never gets drawn.
            });
        }
    };
    function old_ie() {
        var ver = window.navigator.appVersion;
        var idx = ver.indexOf('MSIE');
        var iever = ver.substring(idx+5,idx+6);
        if (Prototype.Browser.IE && iever < 8 ) return true;
        return false;
    }
}();

var temp_layout_3 = function() {
    var left;
    var center;
    var right;
    return {
        init:function() {
            left = $('leftColumn');
            center = $('centerColumn');
            right = $('rightColumn');
            Event.observe(window,'resize',temp_layout_3.update);
            temp_layout_3.update();
        },
        update:function() {
            var max = Math.max(left.getHeight(),Math.max(center.getHeight()-10,right.getHeight()))+50+'px';
            [left, center, right].each(function(one) {
                one.setStyle({height:max});
            });
        }
    };
}();

Event.observe(window,'load',function() {
    cascading_menus.init();
    last_modified_display.init();
    webmail_login.init();
    whiteboxes.init();
    temp_layout_3.init();
//    nav_move.init();
//    site_nav.init();
});

