// Globals
var MENUITEM_HEIGHT = 17;   // The height of each menu item (can depend on topnavbutton style)
                            // This is used to give a height to each TR in the menu table.

// 
//  Top Navigation Objects
//
function TopNavMenu(sID, nLeft, nTop, nWidth, nHeight) // optional parameters: series of TopNavLink objects
{
    // Properties
    this.id = sID;          // unique string used to construct ids for various elements; ex. "company"
    this.left = nLeft;      // absolute positioning: left
    this.top = nTop;        // absolute positioning: top
    this.width = nWidth;    // width of div
    this.height = nHeight;  // height of div
    this.isActive = false;  // is this menu currently active
    this.links = new Array(arguments.length-5); // array of TopNavLink objects
    var nTemp = 0;
    for( nTemp = 0; nTemp < arguments.length-5; nTemp++)
        this.links[nTemp] = arguments[nTemp+5];

    // Methods
    this.writeDiv = function() 
    {
        document.writeln("<div id=\"topsubnavdiv_" + this.id + "\" style=\"position:absolute; left:" + this.left + "; top:" + this.top + "; visibility:hidden;\">");

        if( this.links.length > 0 )
        {
            document.writeln("<table class=\"topnavtable\" cellspacing=\"0\" cellpadding=\"0\">");
        
            var nTemp = 0;
            for( nTemp = 0; nTemp < this.links.length; nTemp++ )
            {
                document.writeln("<tr height=\"" + MENUITEM_HEIGHT + "\">");
                document.writeln("<td height=\"" + MENUITEM_HEIGHT + "\" id=\"topsubnavtd_" + this.links[nTemp].id + "\" class=\"topnavbutton\" onmouseover=\"TopSubNavMouseOver('" + this.links[nTemp].id + "');\" onmouseout=\"TopSubNavMouseOut('" + this.links[nTemp].id + "');\"><a id=\"topsubnavlink_" + this.links[nTemp].id + "\" class=\"topnavbutton\" href=\"" + this.links[nTemp].href + "\">" + this.links[nTemp].linkText + "</a></td>");
                document.writeln("</tr>");
            }
    
            document.writeln("</table>");
        }
    
        document.writeln("</div>");
    }

    this.mouseOver = function() 
    {
        // Activate this menu
        this.activate();

        // Deactivate the others
        var nTemp = 0;
        for( nTemp = 0; nTemp < topMenus.length; nTemp++ )
        {
            if( topMenus[nTemp].id != this.id )
                topMenus[nTemp].deactivate();
        }
    }
    
    this.mouseOut = function()
    {
        // Mark self as active so DocumentMouseMove() will start testing for this one
        this.isActive = true;
    }

    this.activate = function()
    {
        // Switch to rollover image
	    var imgElem = document.getElementById("topnavimg_" + this.id);
        if( imgElem != null )
           imgElem.src = "/images/nav_" + this.id + "_ro.gif"; 

        // Show the div
        var subNavDiv = document.getElementById("topsubnavdiv_" + this.id);
        if( subNavDiv != null )
            subNavDiv.style.visibility = "visible";
    }

    this.deactivate = function()
    {
        // Switch to regular image
	    var imgElem = document.getElementById("topnavimg_" + this.id);
        if( imgElem != null )
           imgElem.src = "/images/nav_" + this.id + ".gif"; 

        // Hide the div
        var subNavDiv = document.getElementById("topsubnavdiv_" + this.id);
        if( subNavDiv != null )
            subNavDiv.style.visibility = "hidden";

        // Mark self as inactive
        this.isActive = false;
    }
}

function TopNavLink(sID, sHREF, sLinkText)
{
    // Properties
    this.id = sID;              // unique string used to construct ids for various elements; ex. "company_careers"
    this.href = sHREF;          // the href; ex. "company/careers.html"
    this.linkText = sLinkText;  // the link text; ex. "Careers"
}

//
//  Side Navigation Effects
//
function SideNavMouseOver(sTDID, sLinkID)
{
	tdElem = document.getElementById(sTDID);
	linkElem = document.getElementById(sLinkID);
	if( tdElem.className == 'sidenavbutton' )
	{
		tdElem.className = 'sidenavbuttonro';
		linkElem.className = 'sidenavbuttonro';
	}
	else if( tdElem.className == 'sidenavbuttonsub' )
	{
		tdElem.className = 'sidenavbuttonsubro';
		linkElem.className = 'sidenavbuttonsubro';
	}
}
function SideNavMouseOut(sTDID, sLinkID)
{
	tdElem = document.getElementById(sTDID);
	linkElem = document.getElementById(sLinkID);
	if( tdElem.className == 'sidenavbuttonro' )
	{
		tdElem.className = 'sidenavbutton';
		linkElem.className = 'sidenavbutton';
	}
	else if( tdElem.className == 'sidenavbuttonsubro' )
	{
		tdElem.className = 'sidenavbuttonsub';
		linkElem.className = 'sidenavbuttonsub';
	}
}
function TopSubNavMouseOver(sID)
{
	var tdElem = document.getElementById("topsubnavtd_" + sID);
	var linkElem = document.getElementById("topsubnavlink_" + sID);
	tdElem.className = 'topnavbuttonro';
	linkElem.className = 'topnavbuttonro';
}
function TopSubNavMouseOut(sID)
{
	var tdElem = document.getElementById("topsubnavtd_" + sID);
	var linkElem = document.getElementById("topsubnavlink_" + sID);
	tdElem.className = 'topnavbutton';
	linkElem.className = 'topnavbutton';
}
function GoToPage(sURL)
{
	document.location.href = sURL;
}

function DocumentMouseMove(e)
{
	if(document.getElementById)
    {
        var ie5 = (document.getElementById && document.all); 
        var ns6 = (document.getElementById && !document.all); 

    	var x = 0;
        var y = 0;
        if( ie5 )
        {
            x = event.x;
            y = event.y;
        }
        else if( ns6 )
        {
            x = e.clientX;
            y = e.clientY;
        }

        // Loop through menu definitions
        var i = 0;
        for( i = 0; i < topMenus.length; i++ )
        {
            // Find active menu
            if( topMenus[i].isActive )
            {
                // Get the div
                var subNavDiv = document.getElementById("topsubnavdiv_" + topMenus[i].id);
                if( subNavDiv == null )
                    return;
        
                // If we have left bounds of div, deactivate it
                var nLeft = topMenus[i].left;
                var nRight = nLeft + topMenus[i].width;
                var nTop = topMenus[i].top;
                var nBottom = topMenus[i].top + topMenus[i].height;
                if( x < nLeft || x > nRight || y < nTop || y > nBottom)
                {
                    topMenus[i].deactivate();
                    return;
                }                
            }
        }
	}
}

document.onmousemove = DocumentMouseMove;

// Construct company menu
var linkCompanyOverview = new TopNavLink("company_overview", "/company/index.html", "About Us");
var linkCompanyNews = new TopNavLink("company_news", "/company/news.html", "News Room");
var linkCompanyPress = new TopNavLink("company_press", "/company/press_releases/2004/index.html", "Press Releases");
var linkCompanyEvents = new TopNavLink("company_events", "/company/events.html", "Events");
var linkCompanyCareers = new TopNavLink("company_careers", "/company/careers.html", "Jobs");
var linkCompanyInvestor = new TopNavLink("company_investor", "http://www.mkr-group.com/tumbleweed/ir.html", "Investors");
var linkCompanyLibrary = new TopNavLink("company_library", "/company/library.html", "Library");
var linkCompanyContactUs = new TopNavLink("company_contactus", "/company/contact_form.html", "Contact Us");
var menuCompany = new TopNavMenu("company", 10, 99, 175, 160, linkCompanyOverview, linkCompanyNews, linkCompanyPress, linkCompanyEvents, linkCompanyCareers, linkCompanyInvestor, linkCompanyLibrary, linkCompanyContactUs);

// Construct products menu
var linkProductsOverview = new TopNavLink("products_overview", "/products/index.html", "Overview");
var linkProductsAntiSpam = new TopNavLink("products_antispam", "/products/antispam/mailgate.html", "Anti-Spam");
var linkProductsEmailSecurity = new TopNavLink("products_emailsecurity", "/products/email_security.html", "Email Security");
var linkProductsSecureFileTransfer = new TopNavLink("products_securefiletransfer", "/products/securetransport_form.html", "Secure File Transfer");
var linkProductsOCSP = new TopNavLink("products_ocsp", "/products/validationauthority.html", "OCSP Identity Validation");
var menuProducts = new TopNavMenu("products", 89, 99, 175, 150, linkProductsOverview, linkProductsAntiSpam, linkProductsEmailSecurity, linkProductsSecureFileTransfer, linkProductsOCSP);

// Construct solutions menu
var linkSolutionsOverview = new TopNavLink("solutions_overview", "/solutions/index.html", "Overview");
var linkSolutionsFinancial = new TopNavLink("solutions_financial", "/solutions/finance.html", "Finance");
var linkSolutionsHealthcare = new TopNavLink("solutions_healthcare", "/solutions/healthcare.html", "Healthcare");
var linkSolutionsGovernment = new TopNavLink("solutions_government", "/solutions/government.html", "Government");
var menuSolutions = new TopNavMenu("solutions", 167, 99, 93, 70, linkSolutionsOverview, linkSolutionsFinancial, linkSolutionsHealthcare, linkSolutionsGovernment);

// Construct support menu
var linkSupportGlobal = new TopNavLink("support_global", "/support/index.html", "Overview");
var linkSupportTAC = new TopNavLink("support_tac", "http://kb1.tumbleweed.com/?cid=2&c=12&cpc=AqdtGfSSN7pxT34V2RDU5Gb07uQX0kn8iy3co4BbvV82c", "Global Support Portal");
var linkSupportDocumentation = new TopNavLink("support_documentation", "/support/documentation.html", "Support Information");
var linkSupportPSO = new TopNavLink("support_pso", "/support/professional_services.html", "Professional Services");
var linkSupportTraining = new TopNavLink("support_training", "/support/training.html", "Training");
var linkSupportContact = new TopNavLink("support_contact", "/support/contact.html", "Contact Support");
var menuSupport = new TopNavMenu("support", 247, 99, 170, 120, linkSupportGlobal, linkSupportTAC, linkSupportDocumentation, linkSupportPSO, linkSupportTraining, linkSupportContact);

// Construct buynow menu
var menuBuyNow = new TopNavMenu("buynow", 315, 99, 0, 0);

// Construct partners menu
var linkPartnersOverview = new TopNavLink("partners_overview", "http://www.tumbleweed.com/company/partners.html", "Program Overview");
var linkPartnersSignup = new TopNavLink("partners_signup", "http://www.tumbleweed.com/dynamic/test.php", "Partner Sign-up");
var linkPartnersPartnerZone = new TopNavLink("partners_partnerzone", "https://extralink.tumbleweed.com/login.html", "Secure PartnerZone Portal");
var linkPartnersTechpartners = new TopNavLink("partners_techpartners", "http://www.tumbleweed.com/partners/technology_partners.html", "Technology Partners");
var menuPartners = new TopNavMenu("partners", 389, 99, 163, 189, linkPartnersOverview, linkPartnersSignup, linkPartnersPartnerZone, linkPartnersTechpartners);

// Construct array of menus
var topMenus = new Array(6);
topMenus[0] = menuCompany;
topMenus[1] = menuProducts;
topMenus[2] = menuSolutions;
topMenus[3] = menuSupport;
topMenus[4] = menuBuyNow;
topMenus[5] = menuPartners;
