﻿
var menuFadeTimeout = 350;
var menuCloseTimeout = 500;
var menuCloseTimer;
var currentMenuItem;

function openProjectMenu(link)
{
    if (link)
    {
        var popupProjectMenu = $get("popupProjectMenu");

        if (popupProjectMenu == null)
        {
            popupProjectMenu = document.createElement("div");
            popupProjectMenu.id = "popupProjectMenu";
            popupProjectMenu.onmouseover = cancelCloseMenuTimer;
            popupProjectMenu.onmouseout = startCloseMenuTimer;

            if (window.ActiveXObject)
            {
                popupProjectMenu.style.marginLeft = "-46px";
            }

            var projectMenu = $get("projectMenu");
            if (projectMenu)
            {
                popupProjectMenu.innerHTML = projectMenu.innerHTML;
                projectMenu.innerHTML = "";
            }

            link.parentNode.appendChild(popupProjectMenu);
        }

        openMenu("popupProjectMenu");
    }
}

function openMenu(id)
{
    // cancel close timer
    cancelCloseMenuTimer();

    if (currentMenuItem == null || currentMenuItem.id != id)
    {
        // close last item
        closeMenu();

        // show the new item
        currentMenuItem = $get(id);
        if (currentMenuItem)
        {
            currentMenuItem.style.display = "block";
        }
    }
}

function closeMenu()
{
    // close the item
    if (currentMenuItem)
    {
        currentMenuItem.style.display = "none";
        currentMenuItem = null;
    }
}

document.onclick = closeMenu;

function startCloseMenuTimer()
{
    menuCloseTimer = setTimeout(closeMenu, menuCloseTimeout);
}

function cancelCloseMenuTimer()
{
    if (menuCloseTimer)
    {
        clearTimeout(menuCloseTimer);
        menuCloseTimer = null;
    }
}

function opacity(id, opacStart, opacEnd, millisec)
{
    //speed for each frame 
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens 
    if (opacStart > opacEnd)
    {
        for (i = opacStart; i >= opacEnd; i--)
        {
            setTimeout("changeOpac(" + i + ",'" + id + "', false)", (timer * speed));
            timer++;
        }
    }
    else if (opacStart < opacEnd)
    {
        for (i = opacStart; i <= opacEnd; i++)
        {
            setTimeout("changeOpac(" + i + ",'" + id + "', true)", (timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers 
function changeOpac(opacity, id, showing)
{
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";

    if (opacity == 0)
    {
        $get(id).style.display = (showing ? "block" : "none");
    }
}

// show the featured projects
function showFeatured()
{
    var flash = $get("flashIntro");
    var features = $get("features");

    if (flash && features)
    {
        flash.style.display = "none";
        opacity("features", 0, 100, 1250);
    }
}