var ImageCache;
var ButtonStates;
function ButtonState(id)
{
    this.Id = id;
    this.MenuButton = null;
    this.IsHovering = false;
    this.Update = function()
    {
        var ButtonPosition;
        if (!this.MenuButton)
        {
            this.MenuButton = document.getElementById(this.Id);
        }
        if (this.MenuButton)
        {
            switch (this.MenuButton.className)
            {
                case "MenuButtonLeft":
                    ButtonPosition = "Left";
                    break;
                case "MenuButtonMiddle":
                    ButtonPosition = "Middle";
                    break;
                case "MenuButtonRight":
                    ButtonPosition = "Right";
                    break;
                default:
                    ButtonPosition = "Middle";
                    break;
            }
            if (this.IsHovering)
            {
                if (this.IsDown)
                {
                    this.MenuButton.style.backgroundImage = "url(/Images/MenuButton_" + ButtonPosition + "_Down.png)";
                }
                else
                {
                    this.MenuButton.style.backgroundImage = "url(/Images/MenuButton_" + ButtonPosition + "_Down.png)";
                }
            }
            else
            {
                this.MenuButton.style.backgroundImage = "url(/Images/MenuButton_" + ButtonPosition + "_Normal.png)";
            }
        }
    };
    ButtonStates[id] = this;
}
function Initialize()
{
    ButtonStates = new Array();
    ImageCache = new Array();
    AddImage("MenuButton_Left_Normal", "/Images/MenuButton_Left_Normal.png");
    AddImage("MenuButton_Left_Over", "/Images/MenuButton_Left_Over.png");
    AddImage("MenuButton_Left_Down", "/Images/MenuButton_Left_Down.png");
    AddImage("MenuButton_Middle_Normal", "/Images/MenuButton_Middle_Normal.png");
    AddImage("MenuButton_Middle_Over", "/Images/MenuButton_Middle_Over.png");
    AddImage("MenuButton_Middle_Down", "/Images/MenuButton_Middle_Down.png");
    AddImage("MenuButton_Right_Normal", "/Images/MenuButton_Right_Normal.png");
    AddImage("MenuButton_Right_Over", "/Images/MenuButton_Right_Over.png");
    AddImage("MenuButton_Right_Down", "/Images/MenuButton_Right_Down.png");
    new ButtonState("MenuButtonHome");
    new ButtonState("MenuButtonMineCraft");
    new ButtonState("MenuButtonGo");
    new ButtonState("MenuButtonIllusions");
    new ButtonState("MenuButtonReferences");
    new ButtonState("MenuButtonContactUs");
    new ButtonState("MenuButtonAboutUs");
}
function AddImage(name, uri)
{
    var I = new Image;
    I.src = uri;
    ImageCache[name] = I;
}
function MenuButtonOver(element)
{
    ButtonStates[element.id].IsHovering = true;
    ButtonStates[element.id].Update();
}
function MenuButtonOut(element)
{
    ButtonStates[element.id].IsHovering = false;
    ButtonStates[element.id].Update();
}
function HighlightMatches(html, searchTerm) 
{
    var NewText;
    var LowerCaseHtml;
    var Index;
    var re = new RegExp("<\\/?mark[^>]*?>", "g");
    searchTerm = searchTerm.toLowerCase();
    NewText = "";
    LowerCaseHtml = html.toLowerCase();
    html = html.replace(re, "");
    while (LowerCaseHtml.length > 0)
    {
        Index = LowerCaseHtml.indexOf(searchTerm, 0);
        if (Index < 0)
        {
            break;
        }
        else
        {
            if ((LowerCaseHtml.indexOf(">", Index) >= LowerCaseHtml.indexOf("<", Index)) && (LowerCaseHtml.indexOf("/script>", Index) >= LowerCaseHtml.indexOf("<script", Index)))
            {
                 NewText += html.substring(0, Index) + "<mark class=\"SearchMatch\">" + html.substr(Index, searchTerm.length) + "</mark>";
                 html = html.substr(Index + searchTerm.length);
                 LowerCaseHtml = html.toLowerCase();
            }
            else
            {
                 NewText += html.substring(0, Index) + html.substr(Index, searchTerm.length);
                 html = html.substr(Index + searchTerm.length);
                 LowerCaseHtml = html.toLowerCase();
            }
        }
    }
    return NewText + html;
}
function SearchPage(searchText, treatAsPhrase, warnOnFailure)
{
    if (treatAsPhrase)
    {
        searchArray = [searchText];
    }
    else
    {
        searchArray = searchText.split(" ");
    }
    if (!document.body || (typeof(document.body.innerHTML) == "undefined"))
    {
        return false;
    }
    var bodyText = document.body.innerHTML;
    for (var i = 0; i < searchArray.length; i++)
    {
        bodyText = HighlightMatches(bodyText, searchArray[i]);
    }
    document.body.innerHTML = bodyText;
    return true;
}
Initialize();

