function moveContentToMasterPagePlaceholder() {
     // Find root content node on calling page
     var contentNode = getNode("contentRoot");

     // Insert page title (note that currentPageTitle is set by containing page)
     var pageTitleNode = document.createElement("h2");
     contentNode.insertBefore(pageTitleNode, contentNode.firstChild);
     pageTitleNode.innerHTML = currentPageTitle;

     // Find placeholder node in master page content
     var contentPlaceholder = getNode("contentPlaceholder");

     // Move content to placeholder
     contentPlaceholder.insertBefore(contentNode, null);  
 }

 function getNode(id) {
     var node = document.getElementById(id);
     if (!node)
         alert("Element with id '" + id + "' not found");
     return node;
 }

var MenuItemsV2 = {};
var MenuItemsV3 = {};

function initializeMenuData() {
    initializeMenuDataV2();
    initializeMenuDataV3();
}

function initializeMenuDataV3() {
    var m = MenuItemsV3;
    addMenuItem(m, "/"   , 1, "Vocola", "default.asp");
    addMenuItem(m, "/v3/", 1, "Vocola 3", "default.asp");
    addMenuItem(m, "/v3/", 2,    "Changes from V2", "ChangesFromV2.asp");
    addMenuItem(m, "/v3/", 1, "Using Vocola");
    addMenuItem(m, "/v3/", 2,    "Command Files");
    addMenuItem(m, "/v3/", 2,    "Command Sequences");
    addMenuItem(m, "/v3/", 2,    "Options Panel");
    addMenuItem(m, "/v3/", 2,    "Log Window");
    addMenuItem(m, "/v3/", 1, "Built-in Commands", "BuiltinCommands.asp");
    addMenuItem(m, "/v3/", 2,    "Access User Interface");
    addMenuItem(m, "/v3/", 2,    "Open Command Files");
    addMenuItem(m, "/v3/", 2,    "Insert Keystrokes");
    addMenuItem(m, "/v3/", 2,    "Modify Dictation");
    addMenuItem(m, "/v3/", 2,    "Cheat Sheet");
    addMenuItem(m, "/v3/", 2,    "Sample Commands");
    addMenuItem(m, "/v3/", 1, "Dictation");
    addMenuItem(m, "/v3/", 2,    "Correction");
    addMenuItem(m, "/v3/", 2,    "Dictation Shortcuts");
    addMenuItem(m, "/v3/", 1, "Language Tutorial");
    addMenuItem(m, "/v3/", 2,    "Keystroke Commands");
    addMenuItem(m, "/v3/", 2,    "Quotes and Whitespace", "QuotesAndWhitespace.asp");
    addMenuItem(m, "/v3/", 2,    "Alternative Words");
    addMenuItem(m, "/v3/", 2,    "Defining Variables");
    addMenuItem(m, "/v3/", 2,    "Substituting Actions");
    addMenuItem(m, "/v3/", 2,    "Function Calls");
    addMenuItem(m, "/v3/", 2,    "Function Library and $using", "FunctionLibrary.asp");
    addMenuItem(m, "/v3/", 2,    "Special Forms");
    addMenuItem(m, "/v3/", 2,    "Defining Functions");
    addMenuItem(m, "/v3/", 2,    "Special Variables");
    addMenuItem(m, "/v3/", 2,    "Contextual Commands");
    addMenuItem(m, "/v3/", 2,    "Include Statements");
    addMenuItem(m, "/v3/", 2,    "Comments");
    addMenuItem(m, "/v3/", 1, "Language Reference");
    addMenuItem(m, "/v3/", 2,    "Keystroke Syntax");
    addMenuItem(m, "/v3/", 2,    "Action Evaluation");
    addMenuItem(m, "/v3/", 2,    "Formal Grammar");
    addMenuItem(m, "/v3/", 2,    "Function Library", getLibraryUrl("Library"));
    addMenuItem(m, "/v3/", 1, "Download and Install", "DownloadAndInstall.asp");
    addMenuItem(m, "/v3/", 2,    "What's New", "WhatsNew.asp");
    addMenuItem(m, "/v3/", 2,    "Convert Vocola 2 Files");
    addMenuItem(m, "/v3/", 1, "Support");
    addMenuItem(m, "/v3/", 2,    "Troubleshooting");
    addMenuItem(m, "/v3/", 2,    "Wish List");
    addMenuItem(m, "/v3/", 2,    "Voice Resources");
    addMenuItem(m, "/v3/", 1, "Extensions");
    addMenuItem(m, "/v3/", 2,    "Extension Basics");
    addMenuItem(m, "/v3/", 2,    "Creating Extensions");
    addMenuItem(m, "/v3/", 2,    "Using Automation");
    addMenuItem(m, "/v3/", 2,    "Vocola API");
    addMenuItem(m, "/v3/", 2,    "Function Attributes");
    //    addMenuItem(m, "/v3/", 1, "My RSI Story");
    addMenuItem(m, "/v3/", 1, "Site Map");
}  

function initializeMenuDataV2() {
    var m = MenuItemsV2;
    addMenuItem(m, "/"   , 1, "Vocola", "default.asp");
    addMenuItem(m, "/v2/", 1, "Vocola 2", "default.asp");
    addMenuItem(m, "/v2/", 1, "Using Vocola");
    addMenuItem(m, "/v2/", 1, "Language Tutorial");
    addMenuItem(m, "/v2/", 2,    "Keystroke Commands");
    addMenuItem(m, "/v2/", 2,    "Quotes And Whitespace");
    addMenuItem(m, "/v2/", 2,    "Alternative Words");
    addMenuItem(m, "/v2/", 2,    "Defining Variables");
    addMenuItem(m, "/v2/", 2,    "Substituting Actions");
    addMenuItem(m, "/v2/", 2,    "Capturing Dictation");
    addMenuItem(m, "/v2/", 2,    "Function Calls");
    addMenuItem(m, "/v2/", 2,    "Built-in Functions", "BuiltinFunctions.asp");
    addMenuItem(m, "/v2/", 2,    "Defining Functions");
    addMenuItem(m, "/v2/", 2,    "Contextual Commands");
    addMenuItem(m, "/v2/", 2,    "Include Statements");
    addMenuItem(m, "/v2/", 2,    "Comments");
    addMenuItem(m, "/v2/", 2,    "Unimacro Actions");
    addMenuItem(m, "/v2/", 1, "Command Sequences");
    addMenuItem(m, "/v2/", 1, "Install Vocola");
    addMenuItem(m, "/v2/", 1, "Vocola Versions");
    addMenuItem(m, "/v2/", 1, "Converting DVC Files");
    addMenuItem(m, "/v2/", 1, "Troubleshooting");
    addMenuItem(m, "/v2/", 1, "Support");
    addMenuItem(m, "/v2/", 1, "Wish List");
    //    addMenuItem(m, "/v2/", 1, "My RSI Story");
    addMenuItem(m, "/v2/", 1, "Voice Resources");
    addMenuItem(m, "/v2/", 1, "Site Map");
}  

function emitMenuV2() { emitMenu(MenuItemsV2); }
function emitMenuV3() { emitMenu(MenuItemsV3); }

function emitMenu(menuItems) {
    // Note that currentPageTitle is set by containing page
    var selectedGroup = "";
    var selectedMenuItem = menuItems[currentPageTitle];
    if (selectedMenuItem != undefined)
        selectedGroup = selectedMenuItem["group"];
    writeMenuHtml(menuItems, currentPageTitle, selectedGroup);
}

var currentGroup;

function addMenuItem(menuItems, prefix, level, pageTitle, link) {
    var group;
    if (level == 1) {
        group = "top";
        currentGroup = pageTitle;
    } else
        group = currentGroup;
    if (link == undefined)
        link = pageTitle.replace(/ /g, "") + ".asp";
    if (link.indexOf("/") != 0)
        link = prefix + link;
    menuItems[pageTitle] = {"group": group, "link": link};
}

function writeMenuHtml(menuItems, currentPageTitle, selectedGroup) {
    for (pageTitle in menuItems) {
        var item = menuItems[pageTitle];
        var group = item["group"];
        if (group == "top" || group == selectedGroup || group == currentPageTitle) {
            var indent = (group == "top" ? "&nbsp;&nbsp;" : "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
            var className = (pageTitle == currentPageTitle ? "menuCellSelected"
                             : pageTitle == selectedGroup ? "menuCellLevel2"
                             : group == "top" ? "menuCell"
                             : "menuCellLevel2");
            var link = item["link"];
            document.write("<tr><td class='" + className + "' onClick='document.location.href=" + '"' + link + '";' + "'>\n"
                           + "<a href='" + link + "'>" + indent + pageTitle + "&nbsp;&nbsp;</a>\n"
                           + "</td></tr>\n");
        }
    }
}

function emitSiteMapV2() { emitSiteMap(MenuItemsV2); }
function emitSiteMapV3() { emitSiteMap(MenuItemsV3); }

function emitSiteMap(menuItems) {
    var first = true;
    for (pageTitle in menuItems) {
        if (first)
            first = false;
        else {
            var item = menuItems[pageTitle];
            var className = (item["group"] == "top" ? "siteMapLevel1" : "siteMapLevel2");
            var link = item["link"];
            document.write("<p class='" + className + "'><a href='" + link + "'>" + pageTitle + "</a></p>\n");
        }
    }
}
