// $Id: menus.js,v 1.53 2010/05/27 22:31:57 www Exp $
// Javascript to generate the navigation menus.

var debugWindow;

function debug(msg) {
    /**
    window.defaultStatus = msg;
    **/
    if (debugWindow == null || debugWindow.document == null) {
	debugWindow = window.open();
    }
    debugWindow.document.write(msg + "<br>");
}

// positions, sizes
var homeNavImgHeight      = 18;
var homeNavImgHeight_NS   = 16;
var dropdownImgHeight     = 17;

// Widths of the links on the navigation bar:
var initialSpaceWidth  = 10;
var homeWidth          = 43;
var aboutWidth         = 50;
var peopleWidth        = 54;
var technicalWidth     = 68;

// Widths of the bodies of the dropdown menus:
var defaultDropdownWidth       = 100;
var aboutDropdownWidth        = 130;
var peopleDropdownWidth        = 130;
var technicalDropdownWidth = 140;
var myAccountWidth               = 90;
var myGroupsWidth               = 90;
var myAccountDropdownWidth               = 110;
var loginWidth                 = 60;

var homeDropdownVOffset     = 22;
var homeDropdownVOffset_NS  = 18;

//keywords
var code     = "code";
var format   = "format";
var itemoff  = "itemoff";
var leveloff = "leveloff";
var pos      = "pos";
var size     = "size";
var style    = "style";
var sub      = "sub";
var url      = "url";

//styles
// var navbar_color = {"border":"#666666",	// not used
// 		    "shadow":"#DBD8D1",	// not used
// 		    "bgON":"#CCCC99",
// 		    "bgOVER":"#666699"};

var navbar_color = {"bgON":"#000066",
		    "bgOVER":"#000066"};

var navbar_space_color = {"bgON":"#000066",
			  "bgOVER":"#000066"};

var item_color = {"bgON":"white",
		  "bgOVER":"white",
                  "shadow":"#006"};

var navbar_css = {"ON":"clsNavbarOn",
		  "OVER":"clsNavbarOver"};

var navbar_css_NS = {"ON":"clsNavbarOnNS",
		     "OVER":"clsNavbarOverNS"};

var navbar_space_css = {"ON":"clsNavbarOn",
		        "OVER":"clsNavbarOn"};

var navbar_space_css_NS = {"ON":"clsNavbarOnNS",
		           "OVER":"clsNavbarOnNS"};

var item_css = {"ON":"clsItemOn",
		"OVER":"clsItemOver"};

var label_item_css = {"ON":"clsItemOn",
		      "OVER":"clsItemOn"};

var my_account_css = {"ON":"clsMyAccountOn",
		   "OVER":"clsMyAccountOver"};

var my_account_css_NS = {"ON":"clsMyAccountOnNS",
		      "OVER":"clsMyAccountOverNS"};

var login_css = {"ON":"clsLoginOn",
		   "OVER":"clsLoginOver"};

var login_css_NS = {"ON":"clsLoginOnNS",
		      "OVER":"clsLoginOverNS"};

var my_account_disabled_css = {"ON":"clsMyAccountOn",
			    "OVER":"clsMyAccountOn"};

var NAVBAR_STYLE = {"border":0,
		    "shadow":0,
		    "color":navbar_color,
		    "css":navbar_css};

var NAVBAR_SPACE_STYLE = {"border":0,
			  "shadow":0,
			  "color":navbar_space_color,
			  "css":navbar_space_css};

/*
var ITEM_STYLE = {"border":0,
		  "shadow":0,
		  "color":item_color,
		  "css":item_css};
*/

var ITEM_STYLE = {"border":0,
		  "shadow":2,
		  "color":item_color,
		  "css":item_css};

var LABEL_ITEM_STYLE = {"border":0,
		  "shadow":0,
		  "color":item_color,
		  "css":label_item_css};

var MY_ACCOUNT_STYLE = {"border":0,
		     "shadow":0,
		     "color":navbar_color,
		     "css":my_account_css};

/*
var FOO_STYLE = {"border":5,
		     "shadow":0,
		     "color":navbar_color,
		     "css":my_account_css};
*/

var LOGIN_STYLE = {"border":0,
		   "shadow":0,
		   "color":navbar_color,
		   "css":login_css};

var MY_ACCOUNT_DISABLED_STYLE = {"border":0,
			      "shadow":0,
			      "color":navbar_space_color,
			      "css":my_account_disabled_css};

if (document.layers) {
    NAVBAR_STYLE = {"border":0,
		    "shadow":0,
		    "color":navbar_color,
		    "css":navbar_css_NS};

    NAVBAR_SPACE_STYLE = {"border":0,
			  "shadow":0,
			  "color":navbar_space_color,
			  "css":navbar_space_css_NS};

    MY_ACCOUNT_STYLE = {"border":0,
		     "shadow":0,
		     "color":navbar_color,
		     "css":my_account_css_NS};

    LOGIN_STYLE = {"border":0,
		   "shadow":0,
		   "color":navbar_color,
		   "css":login_css_NS};

    MY_ACCOUNT_DISABLED_STYLE = {"border":0,
			      "shadow":0,
			      "color":navbar_space_color,
			      "css":my_account_css_NS};

};

// The "mygroups" parameter is unused.  The menus used to include a dropdown
// menu of the user's groups, and another of the features of the current
// group.  See the embedded.eecs.berkeley.edu & chess.eecs.berkeley.edu
// websites.
//
function buildMenus(navTop,
		    user,
		    group,
		    mygroups,           // unused
		    groupHasCalendar,   // unused
		    userHasCalendars,   // unused
		    usingHTTPS,
		    myAccountProtocol,	// Either "http", "https" or "disabled"
		    sslPortExtension,
		    proxy_targets,
                    is_webmaster,
                    is_admin
		    ) {

    if (document.layers) {
	// To support Netscape 4.7:
	navImgTop            = navTop + 4;
	homeNavImgHeight     = homeNavImgHeight_NS;
	homeDropdownVOffset  = homeDropdownVOffset_NS;
    } else {
	navImgTop            = navTop;
    }

    var allNavsWidth = homeWidth
		     + aboutWidth
		     + peopleWidth
		     + technicalWidth;

    var userPartWidth = myAccountWidth + myGroupsWidth + loginWidth;

    var middleSpaceWidth = 800 - allNavsWidth - userPartWidth;

    var homeSectionXPos      = 0;
    var homeSectionYPos      = navImgTop;

    document.write("<table width=\"100%\" background=\"/images/2009/menus/menu_bar_bkg.gif\"><tr><td height=\""
                   + homeNavImgHeight
                   + "\">&nbsp;</td></tr></table>");

    var httpURL;
    var httpsURL;

    if (usingHTTPS) {
	httpURL = "http://" + document.domain;
	httpsURL = "";
    } else {
	httpURL = "";
	httpsURL = "https://" + document.domain + sslPortExtension;
    }

    var aboutSubItems = [
		{style:ITEM_STYLE,
		 size:[dropdownImgHeight,defaultDropdownWidth],
		 itemoff:[dropdownImgHeight,0]},
		{code:"overview",   url:httpURL + "/about/overview/index.htm"},
		{code:"org chart",  url:httpURL + "/about/org_chart/index.htm"},
		{code:"sponsors",   url:httpURL + "/about/sponsors/index.htm"},
		{code:"universites",  
                        url:httpURL + "/about/universities/index.htm"},
//		{code:"workspaces", url:httpURL + "/gsrc"},
		{code:"faq",        url:httpURL + "/gsrc/faq"},
                {code:"site map",   url:httpURL + "/sitemap.html"},
                {code:"contact us", url:httpURL + "/about/contact_us/"}
	    ];

    var peopleSubItems = [
		{style:ITEM_STYLE,
		 size:[dropdownImgHeight,peopleDropdownWidth],
		 itemoff:[dropdownImgHeight,0]},
		{code:"directory",
		 url:httpURL + "/people/directory/index.htm"},
		{code:"research team",
		 url:httpURL + "/admininfo/theme_teams/"},
		{code:"advisors",
		 url:httpURL + "/people/advisors/index.htm"},
		{code:"org chart", 
                 url:httpURL + "/about/org_chart/index.htm"},
		{code:"students", 
                 url:httpURL + "/students/summary"}
	    ];

    if (user != "") {
        peopleSubItems[peopleSubItems.length] = 
            {code:"awards", url:"/admininfo/awards/"};
    }

    if (user != "") {
        var technicalSubItems = [
		{style:ITEM_STYLE,
		    size:[dropdownImgHeight,technicalDropdownWidth],
		    itemoff:[dropdownImgHeight,0]},
		{code:"publications",
		    url:httpURL + "/pubs/"},
		{code:"seminars/workshops",
		    url:httpURL + "/pubs/workshops"},
		{code:"reports",
		    url:httpURL + "/pubs/reports"},
		{code:"talks",
		    url:httpURL + "/pubs/talks/"},
		{code:"posters",
		    url:httpURL + "/pubs/posters/"},
//		{code:"demos",
//		    url:httpURL + "/pubs/presentations/demos/"},
		{code:"downloads",
		    url:httpURL + "/pubs/downloads/"}
	    ];

//        technicalSubItems[technicalSubItems.length] = 
//            {code:"patents", url:"/admininfo/patents/"};
        technicalSubItems[technicalSubItems.length] = 
            {code:"pub count", url:"/admininfo/pubcount/"};
    }

    var HOME_MENU_ITEMS = [
	{pos:[homeSectionXPos,homeSectionYPos],
	 size:[homeNavImgHeight, homeWidth],
	 itemoff:[0,homeWidth],
	 leveloff:[homeDropdownVOffset,0],
	 style:NAVBAR_STYLE},
	{code:"&nbsp;",
	 format:{
	    size:[homeNavImgHeight,initialSpaceWidth],
	    itemoff:[0,0],
            leveloff:[homeDropdownVOffset,0],
	    style:NAVBAR_SPACE_STYLE}},
	{code:"home", url:httpURL + "/index.html",
		    format:{size:[homeNavImgHeight,homeWidth],
                            itemoff:[0,initialSpaceWidth]}},
	{code:"about", url:httpURL + "/about/overview/index.htm",
		    format:{size:[homeNavImgHeight,aboutWidth],
			    itemoff:[0,homeWidth],
			    leveloff:[homeDropdownVOffset,0]},
            sub: aboutSubItems
	},
	{code:"people", url:httpURL + "/people/directory/index.htm",
			format:{size:[homeNavImgHeight,peopleWidth],
				itemoff:[0,aboutWidth],
				leveloff:[homeDropdownVOffset,0]},
            sub: peopleSubItems
	}
    ];

    //
    // Redirect to login if not logged in already.
    //
    if (user != "") {
        HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = 
	{code:"technical", url:httpURL + "/pubs/",
            format:{size:[homeNavImgHeight,technicalWidth],
                      itemoff:[0,peopleWidth],
                      leveloff:[homeDropdownVOffset,0]},
            sub: technicalSubItems
	}
    } else {
        HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = 
	{code:"technical", url:httpURL + "/login/",
            format:{size:[homeNavImgHeight,technicalWidth],
                      itemoff:[0,peopleWidth],
                      leveloff:[homeDropdownVOffset,0]},
            sub: technicalSubItems
	}
    }

    //
    // Add the space before "my-account login":
    //
    HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = {
	code:"&nbsp;",
	format:{
	    size:[homeNavImgHeight,middleSpaceWidth],
	    itemoff:[0,technicalWidth],
            leveloff:[homeDropdownVOffset,0],
	    style:NAVBAR_SPACE_STYLE
	}
    };

    //
    // Add 'my account', 'logout' if user logged in, else space and 'login':
    //
    if (user == "") {
        HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = {
            code:"&nbsp;",
            format:{
                size:[homeNavImgHeight,myGroupsWidth],
                itemoff:[0,middleSpaceWidth],
                style:NAVBAR_SPACE_STYLE
            }
        };
	HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = {
	    code:"login",
	    url:httpURL + "/login/",
	    format:{
		size:[homeNavImgHeight,loginWidth],
		itemoff:[0,myAccountWidth],
		style:LOGIN_STYLE
	    }
	};
    } else {

        //
        // Construct array of my-account menu items:
        //
        switch(myAccountProtocol) {
            case 'http':
            case 'https':
                var myAccountSubItems =
                           [{style:ITEM_STYLE,
                             size:[dropdownImgHeight,myAccountDropdownWidth],
                             itemoff:[dropdownImgHeight,0]}];
                myAccountSubItems[myAccountSubItems.length] = {
                    code:"profile",
                    url:httpURL + "/options/account/profile/"
                };
                myAccountSubItems[myAccountSubItems.length] = {
                    code:"change password",
                    url:httpURL + "/options/account/password/"
                };

                if (is_webmaster || is_admin) {
                    myAccountSubItems[myAccountSubItems.length] = {
                        code:"gsrcadmin",
                        url:httpURL + "/gsrcadmin/"
                    };
                }

                if (proxy_targets != null && proxy_targets.length > 0) {
                    if (proxy_targets[0] == "any user") {
                        myAccountSubItems[myAccountSubItems.length] = {
                            code:"masquerade",
                            url:httpURL + "/options/power/masquerade/"
                        }
                    } else {
                        myAccountSubItems[myAccountSubItems.length] = {
                            code:"masquerade as ...",
                            url:"javascript:;",
                            format:{
                                style:LABEL_ITEM_STYLE
                            }
                        };
                        for (var i = 0; i < proxy_targets.length; i++) {
                            myAccountSubItems[myAccountSubItems.length] = {
                                code:"&nbsp;&nbsp;&nbsp;&nbsp;" + proxy_targets[i],
                                url:httpURL + "/options/account/profile/?masqName="
                                            + proxy_targets[i]
                            };
                        }
                    }
                }

                HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = {
                    code:"my account",
                    url:httpURL + "/options/account/profile/",
                    format:{
                        size:[homeNavImgHeight,myAccountWidth],
                        itemoff:[0,middleSpaceWidth],
                        style:MY_ACCOUNT_STYLE
                    },
                    sub: myAccountSubItems
                };

                break;
            default:
                break;
        }

	HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = {
	    code:"my groups",
	    url:httpURL + "/mygroups/",
	    format:{
		size:[homeNavImgHeight,myAccountWidth],
		itemoff:[0,myAccountWidth],
		style:MY_ACCOUNT_STYLE
	    }
	};

	HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = {
	    code:"logout",
	    url:httpURL + "/logout/",
	    format:{
		size:[homeNavImgHeight,loginWidth],
		itemoff:[0,myAccountWidth],
		style:MY_ACCOUNT_STYLE
	    }
	};
    }

    if (!document.layers) {
	HOME_MENU_ITEMS[HOME_MENU_ITEMS.length] = {
	    code:"&nbsp;",
	    format:{
		size:[homeNavImgHeight,"100%"],
	        itemoff:[0,loginWidth],
	        style:NAVBAR_SPACE_STYLE
	    }
	};
    }

    var homeMenu = new COOLjsMenu("HomeMenu", HOME_MENU_ITEMS);
}

