function Index(){
    this.elements = new Array();
    this.currentPage = "";
    var myself = this;

    this.catalogPageElements = function(){
        myself.elements.centerWrapper = $( "center-wrapper" );
        myself.elements.logo = $( "logo" );
        myself.elements.title  = $( "title" );
        myself.elements.taskbar = $( "taskbar" );
        myself.elements.content = $( "content" );
        myself.elements.pageTitle = $( "pageTitle" );
        myself.elements.index = $( "index" );
        myself.elements.events = $( "events" );
        myself.elements.calendar = $( "calendar" );
        myself.elements.join_us = $( "join_us" );
        myself.elements.history = $( "history" );
        myself.elements.director = $( "director" );
        myself.elements.members = $( "members" );
        myself.elements.board = $( "board" );
        myself.elements.webmaster = $( "webmaster" );
        myself.elements.footer = $( "footer" );
        myself.elements.sendButton = $dojo( "sendButton" );
        myself.elements.emailForm = $dojo( "emailForm" );
    }

    this.makeButtons = function(){
        var buttons = $etag( $( "taskbar" ), "div" );
        var lastButton = 0;

        for( var i = 0; i < buttons.length; i++ ){
            var element = buttons[i];

            lastButton++;
            element.style.borderRight = "1px solid #666";

            setEventHandler( element, "mouseover", function( evt ){
                var e = evt ? evt : window.event;
                var element = e.targetElement ? e.targetElement :
                    e.srcElement ? e.srcElement : e.target;

                if( myself.currentPage != element.id.substr( 0, element.id.indexOf( "Button" ) ) ){
                    element.style.backgroundImage = "url('images/button-mo.gif')";
                }
            });

            setEventHandler( element, "mouseout", function( evt ){
                var e = evt ? evt : window.event;
                var element = e.targetElement ? e.targetElement :
                    e.srcElement ? e.srcElement : e.target;
                
                if( myself.currentPage != element.id.substr( 0, element.id.indexOf( "Button" ) ) ){
                    element.style.backgroundImage = "url('images/button-bg.gif')";
                }
            });

            setEventHandler( element, "click", function( evt ){
                var e = evt ? evt : window.event;
                var element = e.targetElement ? e.targetElement :
                    e.srcElement ? e.srcElement : e.target;

                myself.showPage( element.getAttribute( "page" ) );
            });
        }

        buttons[buttons.length - 1].style.borderRight = "";
    }

    this.showPage = function( page ){
        if( page != myself.currentPage ){
            var currentLink = $( myself.currentPage + "Button" );
            var clickedLink = $( page + "Button" );

            if( myself.currentPage != "" && currentLink != null ){
                currentLink.style.backgroundImage = "url('images/button-bg.gif')";
            }

            if( clickedLink != null ){
                clickedLink.style.backgroundImage = "url('images/button-selected.gif')";
            }
            myself.currentPage = page;
            
            dojo.style( myself.elements.index, "display", "none" );
            dojo.style( myself.elements.calendar, "display", "none" );
            dojo.style( myself.elements.join_us, "display", "none" );
            dojo.style( myself.elements.history, "display", "none" );
            dojo.style( myself.elements.director, "display", "none" );
            dojo.style( myself.elements.members, "display", "none" );
            dojo.style( myself.elements.board, "display", "none" );
		dojo.style( myself.elements.webmaster, "display", "none" );

            switch( page ){
                case "index":
                    dojo.style( myself.elements.index, "display", "" );
                    myself.elements.pageTitle.innerHTML = "Weelky Announcements";
                    break;
                case "calendar":
                    dojo.style( myself.elements.calendar, "display", "" );
                    myself.elements.pageTitle.innerHTML = "Calendar";
                    break;
                case "join_us":
                    dojo.style( myself.elements.join_us, "display", "" );
                    myself.elements.pageTitle.innerHTML = "Join Us";
                    break;
                case "history":
                    dojo.style( myself.elements.history, "display", "" );
                    myself.elements.pageTitle.innerHTML = "History";
                    break;
                case "director":
                    dojo.style( myself.elements.director, "display", "" );
                    myself.elements.pageTitle.innerHTML = "Director";
                    break;
                case "members":
                    dojo.style( myself.elements.members, "display", "" );
                    myself.elements.pageTitle.innerHTML = "Members";
                    break;
                case "board":
                    dojo.style( myself.elements.board, "display", "" );
                    myself.elements.pageTitle.innerHTML = "Board Members";
                    break;
                case "webmaster":
                    dojo.style( myself.elements.webmaster, "display", "" );
                    myself.elements.pageTitle.innerHTML = "Contact the Webmaster";
                    break;
            }

            myself.adjustContentSize();
        }
    }

    this.adjustContentSize = function(){
        var height = myself.elements.logo.offsetHeight +
            myself.elements.taskbar.offsetHeight +
            myself.elements.title.offsetHeight +
            myself.elements[myself.currentPage].offsetHeight +
            myself.elements.footer.offsetHeight;
        
        dojo.style( myself.elements.centerWrapper, "height", height + "px" );
    }

    this.setLinks = function(){
        var links = $etag( myself.elements.footer, "span" );

        for( var link in links ){
            var element = links[link];

            setEventHandler( element, "mouseover", function( evt ){
                var e = evt ? evt : window.event;
                var element = e.targetElement ? e.targetElement :
                    e.srcElement ? e.srcElement : e.target;

                element.style.color = "#6666ff";
                element.style.fontWeight = "bold";
            });

            setEventHandler( element, "mouseout", function( evt ){
                var e = evt ? evt : window.event;
                var element = e.targetElement ? e.targetElement :
                    e.srcElement ? e.srcElement : e.target;

                element.style.color = "#3333ff";
                element.style.fontWeight = "normal";
            });

            setEventHandler( element, "click", function( evt ){
                var e = evt ? evt : window.event;
                var element = e.targetElement ? e.targetElement :
                    e.srcElement ? e.srcElement : e.target;

                myself.showPage( element.id.substr( 0, element.id.indexOf( "Link" ) ) );
            });
        }
    }

    this.initialize = function(){
        myself.catalogPageElements();
        myself.makeButtons();
        myself.setLinks();

        dojo.connect( myself.elements.sendButton, "onClick", function( evt ){
            if( myself.elements.emailForm.isValid() == true ){
                dojo.xhrPost({
                    url: "./php/sendMessage.php",
                    sync: true,
                    form: "emailForm",
                    load: function( response ){
                        alert( response );

                        if( dojo.string.trim( "" + response ) == "Email Sent Successfully!" ){
                            myself.showPage( "index" );
                        }
                    }
                });
            }
            else {
                myself.elements.emailForm.validate();
            }
        });
        
        dojo.xhrGet({
            url: "./php/getThreeEvents.php",
            sync: true,
            load: function( response ){
                myself.elements.events.innerHTML = response;
            }
        });

        myself.showPage( "index" );
    }

    myself.initialize();
}
