﻿//toolbar.js

var m_strVerticalDivClass = "verticalItemDivider";

var m_menuItemContainer = "menuItemContainer";
var m_menuItemContainerMouseOver = "menuItemContainerMouseOver";
var m_menuItemText = "menuItemText";
var m_menuItemImage = "menuItemImage";









var m_strMenuTextMouseOverClass = "menuTextMouseOver";
var m_strMenuTextClass = "menuText";

var m_strDropDownMenuClass = "dropDownMenuClass";
var m_strDropDownMenuBodyClass = "dropDownMenuBodyClass";
var m_strMenuSpanClass = "dropDownMenuSpanClass";
var m_strDropDownMenuHilightClass = "dropDownMenuHilightClass";
var m_strBannerImg = "";
var m_strBannerUrl = "";
var m_strBanerAlt = "";
var m_strImageActive = "";
var m_strImageInactive = "";
var m_strImageActivityClass = "";
var m_nActivityCount = 0;
var m_strImageLogin = "";
var m_strTextLogin = "";
var m_strImageLogout = "";
var m_strTextLogout = "";
var m_ToolbarMenu = null;
var newLineChar = String.fromCharCode(10);
var m_charDoubleQuotes = String.fromCharCode(34);
var m_strHTML = "<!--menu.titles-->";
var m_nXpos = 0;
var m_nYpos = 0;

var m_strCurrentMenuElementId = "";
var m_strCurrentMenuItemId = "";



Type.registerNamespace('TabDocWebLib');

TabDocWebLib.ToolbarControl = function(element)
{
    TabDocWebLib.ToolbarControl.initializeBase(this, [element]);
};

TabDocWebLib.ToolbarControl.prototype = {
    initialize: function()
    {
        TabDocWebLib.ToolbarControl.callBaseMethod(this, 'initialize');

    },

    dispose: function()
    {
        $clearHandlers(this.get_element());
        TabDocWebLib.ToolbarControl.callBaseMethod(this, 'dispose');
    }
};



function ToolbarControlInitialize()
{


    FinalizeToolbar("idHomeBarMenuPane");

    InitializeHomeBarBanner();
    InitializeActivityPanel();





}



function InfoPanelClicked(id, evtObj)
{
    var src = evtObj.srcElement;
    if (!IsNullOrEmpty(src))
    {
        ProcessInfoPaneltem(evtObj, id);
    }
}

function FinalizeToolbar(elementID)
{
    var element = document.getElementById(elementID);
    if (!IsNullOrEmpty(element))
    {
        element.innerHTML = m_strHTML;
    }
}

function DrawToolbarUser(user)
{
    var oDiv = document.getElementById("idLoginInfo");
    if (!IsNullOrEmpty(oDiv))
    {
        for (var i = oDiv.childNodes.length - 1; i >= 0; i--)
        {
            oDiv.removeChild(oDiv.childNodes[i]);
        }

        var oSpan = document.createElement("span");
        if (!IsNullOrEmpty(oSpan))
        {
            oSpan.className = "infoPanelText";
            oSpan.innerText = user;
            oDiv.appendChild(oSpan);
        }
    }
}



function SetupLoginLink(strImageLogin, strTextLogin, strImageLogout, strTextLogout)
{
    m_strImageLogin = strImageLogin;
    m_strTextLogin = strTextLogin;
    m_strImageLogout = strImageLogout;
    m_strTextLogout = strTextLogout;
}

function InitializeLoginLink(strStateRequired)
{
    var oDiv = document.getElementById("idLoginLink");
    if (!IsNullOrEmpty(oDiv))
    {
        for (var i = oDiv.childNodes.length - 1; i >= 0; i--)
        {
            oDiv.removeChild(oDiv.childNodes[i]);
        }

        var img = document.createElement("img");
        if (!IsNullOrEmpty(img))
        {
            img.id = "idLoginImage";
            img.className = "infoPanelImage";

            if (strStateRequired == "log.in")
            {
                img.src = m_strImageLogin;
                img.alt = strStateRequired;
            }
            else if (strStateRequired == "log.out")
            {
                img.src = m_strImageLogout;
                img.alt = strStateRequired;
            }
            oDiv.appendChild(img);
        }

        var oSpan = document.createElement("span");
        if (!IsNullOrEmpty(oSpan))
        {
            oSpan.id = "idLoginText";
            oSpan.className = "infoPanelText";

            if (strStateRequired == "log.in")
            {
                oSpan.innerText = m_strTextLogin;
            }
            else if (strStateRequired == "log.out")
            {
                oSpan.innerText = m_strTextLogout;
            }
            oDiv.appendChild(oSpan);
        }
    }
}


function SetupActivityPanel(strImageActive, strImageInactive, strClassName)
{
    m_strImageActive = strImageActive;
    m_strImageInactive = strImageInactive;
    m_strImageActivityClass = strClassName;
}

function InitializeActivityPanel()
{
    var oDiv = document.getElementById("idActivityPanel");
    if (!IsNullOrEmpty(oDiv))
    {
        for (var i = oDiv.childNodes.length - 1; i >= 0; i--)
        {
            oDiv.removeChild(oDiv.childNodes[i]);
        }

        var img = document.createElement("img");
        img.className = m_strImageActivityClass;
        img.id = "idActivityImage";
        img.src = m_strImageInactive;
        img.alt = "activity";
        oDiv.appendChild(img);
    }
}


function SetupHomeBarBanner(strBannerImg, strBannerUrl, strBannerAlt)
{
    m_strBannerImg = strBannerImg;
    m_strBannerUrl = strBannerUrl;
    m_strBanerAlt = strBannerAlt;
}

function SetActivityOn()
{
    ++m_nActivityCount;

    if (m_nActivityCount == 1)
    {
        var img = document.getElementById("idActivityImage");
        if (!IsNullOrEmpty(img))
        {
            img.src = m_strImageActive;
        }
    }
}

function SetActivityOff()
{
    if (m_nActivityCount > 0)
    {
        --m_nActivityCount;
    }
    if (m_nActivityCount === 0)
    {
        var img = document.getElementById("idActivityImage");
        if (!IsNullOrEmpty(img))
        {
            img.src = m_strImageInactive;
        }
    }
}

function InitializeHomeBarBanner()
{
    var oDiv = document.getElementById("idHomeBarBanner");
    if (!IsNullOrEmpty(oDiv))
    {
        //        for (var i = oDiv.childNodes.length - 1; i >= 0; i--)
        //        {
        //            oDiv.removeChild(oDiv.childNodes[i]);
        //        }
        var a = document.createElement('a');
        //var href = document.createAttribute('href');
        var img = document.createElement("img");
        img.setAttribute('src', m_strBannerImg);
        img.setAttribute('alt', m_strBanerAlt);
        img.setAttribute('border', '0');
        img.setAttribute('cursor', 'hand');
        //        oImg.setAttribute('height', '50px');
        //        oImg.setAttribute('width', '100px');
        a.setAttribute('href', m_strBannerUrl);
        a.appendChild(img);
        oDiv.appendChild(a);
    }
}




//function AddMenu( strMenuId, strText, strImgUrl )
//{
//    strMenuId = "homeBarMenu_" + strMenuId;
//    var strTag = "<!--menu.titles-->";
//    var strHTML = "";
//    var strDivId = "toolbarMenuItem" + strMenuId;

//    strHTML += "<span";
//    strHTML += " id='" + strDivId + "'";
//    strHTML += " class='" + m_menuItemContainer + "'";
//    strHTML += " onmouseout='mouseMenu( &quot;out&quot;, &quot;" + strMenuId + "&quot;, &quot;" + strDivId + "&quot;, event ); ";
//    strHTML += " menuCheckExit( event );'";
//    strHTML += " onmouseover='mouseMenu( &quot;over&quot;, &quot;" + strMenuId + "&quot;, &quot;" + strDivId + "&quot;, event );' >";
//    if (!IsNullOrEmpty(strImgUrl))
//    {
//        strHTML += "<img class='" + m_menuItemImage + "' id='" + "img" + strMenuId + "' src='" + strImgUrl + "'  alt='" + "image" + "'/>";
//    }

//    strHTML += "<span";
//    strHTML += " class='" + m_menuItemText + "'";
//    strHTML += " > ";
//    strHTML += strText;
//    strHTML += "</span></span>";
//    strHTML += strTag;
//    m_strHTML = m_strHTML.replace(strTag, strHTML);
//}

function AddMenu(strMenuId, strText, strImgUrl)
{
    strMenuId = "homeBarMenu_" + strMenuId;
    var strTag = "<!--menu.titles-->";
    var strHTML = "";
    var strDivId = "toolbarMenuItem" + strMenuId;

    strHTML += "<span";
    strHTML += " id='" + strDivId + "'";
    strHTML += " class='" + m_menuItemContainer + "'";
    strHTML += " onmouseout='menuItemContainerMouseOut( &quot;" + strMenuId + "&quot;, &quot;" + strDivId + "&quot;, event ); ' >";

    if (!IsNullOrEmpty(strImgUrl))
    {
        strHTML += "<img class='" + m_menuItemImage + "' id='" + "img" + strMenuId + "' src='" + strImgUrl + "'  alt='" + "image" + "'/>";
    }

    strHTML += "<span";
    strHTML += " class='" + m_menuItemText + "'";
    strHTML += " onmouseover='menuItemTextMouseOver(  &quot;" + strMenuId + "&quot;, &quot;" + strDivId + "&quot;, event );'> ";
    strHTML += strText;
    strHTML += "</span></span>";
    strHTML += strTag;
    m_strHTML = m_strHTML.replace(strTag, strHTML);
}

function menuItemContainerMouseOut(strMenuId, divId, evtObj)
{

    var toolBarmenuItem = document.getElementById(divId);
    if (!IsNullOrEmpty(toolBarmenuItem))
    {

        var targetElement = null;
        if (!isIE)
        {
            targetElement = evtObj.relatedTarget;
        }
        else
        {
            targetElement = evtObj.toElement;
        }

        evtObj.cancelBubble = true;
        if (!IsNullOrEmpty(targetElement) && !IsNullOrEmpty(evtObj.srcElement) && !IsNullOrEmpty(m_ToolbarMenu))
        {



            if (targetElement.className != "menuItemContainerMouseOver" && targetElement != m_ToolbarMenu && targetElement.className != "dropDownMenuClass" && targetElement.className != "dropDownMenuBodyClass")
            {


                //            if (targetElement != m_ToolbarMenu && !RecurseFindParent(m_ToolbarMenu, targetElement))
                //            {
                ToolbarMenuDismiss();
                //                toolBarmenuItem.className = m_menuItemContainer;
            }
        }

    }
}

function menuItemTextMouseOver(strMenuId, divId, evtObj)
{
    var toolBarmenuItem = document.getElementById(divId);
    if (!IsNullOrEmpty(toolBarmenuItem))
    {
        //        ToolbarMenuDismiss();
        toolBarmenuItem.className = m_menuItemContainerMouseOver;
        m_strCurrentMenuItemId = divId;
        doMenu(strMenuId, toolBarmenuItem, evtObj);
    }
}



function AddSubMenu(strMenuId, strMenuText, strMenuUrl, strImgUrl)
{
    //todo: add params for  alt='" + MenuHelpStr + "' etc. on img tags

    strMenuId = "homeBarMenu_" + strMenuId + "_subMenu";
    var strAppend = "";
    var strTag = "<!--" + strMenuId + "-->";
    var nTagPos = m_strHTML.indexOf(strTag);
    if (nTagPos <= 0)
    {
        strAppend += "<div id='" + strMenuId + "'";
        strAppend += " class='" + m_strMenuSpanClass + "'";
        strAppend += " style='display:none;position:absolute;width:200px;padding-top:0px;padding-left:0px;padding-bottom:10px;z-index:5;'";
        strAppend += " onmouseout='subMenuCheckExit( event );'";
        strAppend += " >";
    }
    var strDivHTML = "<div id='" + strMenuUrl + "' class='" + m_strDropDownMenuBodyClass + "'" +
	" onmouseover='MenuElementMouseOver( this, &quot;" + strMenuUrl + "&quot;, event);'" +
	" onclick='mouseMenuSelect( event, &quot;" + strMenuUrl + "&quot; );'" +
    "><img class='" + m_strDropDownMenuClass + "'id='" + "img" + strMenuId + "' src='" + strImgUrl + "'  alt='" + strMenuText + "' style ='margin:4px;'/>" +
    "<span class='" + m_strDropDownMenuClass + "' style ='position:absolute; left:28px; vertical-align:middle; margin-top:4px;'>" +
    strMenuText + "</span></div>" + strTag;
    if (nTagPos <= 0)
    {
        strAppend += strDivHTML + "</div>";
        m_strHTML += strAppend;
    }
    else
    {
        m_strHTML = m_strHTML.replace(strTag, strDivHTML);
    }
}















function MenuElementMouseOver(sender, strMenuId, evtObj)
{
    if (strMenuId != m_strCurrentMenuElementId)
    {
        var menuItem = null;
        if (!IsNullOrEmpty(m_strCurrentMenuElementId))
        {
            menuItem = document.getElementById(m_strCurrentMenuElementId);
            if (!IsNullOrEmpty(menuItem))
            {
                menuItem.className = m_strDropDownMenuBodyClass;
            }
        }
        menuItem = document.getElementById(strMenuId);
        if (!IsNullOrEmpty(menuItem))
        {
            m_strCurrentMenuElementId = strMenuId;
            menuItem.className = m_strDropDownMenuHilightClass;
        }
    }
}

//function mouseMenu(id, strMenuId, divId, evtObj)
//{
//    //    var targetElement = null;
//    //    if (!isIE)
//    //    {
//    //        targetElement = evtObj.relatedTarget;
//    //    }
//    //    else
//    //    {
//    ////        targetElement = evtObj.fromElement;
//    //        targetElement = evtObj.toElement;
//    //    }
//    var toolBarmenuItem = document.getElementById(divId);
//    if (!IsNullOrEmpty(toolBarmenuItem))
//    {
//        switch (id)
//        {
//            case "out":
//                {
//                    //                    if (!IsNullOrEmpty(m_ToolbarMenu) && !IsNullOrEmpty(targetElement))
//                    //                    {

//                    //                        if (targetElement.id !== m_ToolbarMenu.id)
//                    //                        {
//                    //                            ToolbarMenuDismiss();
//                    //                        }


//                    toolBarmenuItem.className = m_menuItemContainer;

//                }
//                break;
//            case "over":
//                {
//                    //                    if (!RecurseFindParent( targetElement, toolBarmenuItem ))
//                    //                    {
//                    ToolbarMenuDismiss();
//                    toolBarmenuItem.className = m_menuItemContainerMouseOver;
//                    doMenu(strMenuId, toolBarmenuItem, evtObj);
//                    //                    }
//                }
//                break;
//            default:
//                break;
//        }
//    }
//}


function mouseMenuSelect(evtObj, strTopic)
{

    ToolbarMenuDismiss();

    ProcessMenu(evtObj, strTopic);


    return false;
}

function doMenu(strMenuId, divToolbarMenuItem, evtObj)
{
    //evtObj.cancelBubble = true;

    var row1 = document.getElementById("idRow1");
    var row2 = document.getElementById("idRow2");
    var row3 = document.getElementById("idRow3");

    var thisMenu = document.getElementById(strMenuId + "_subMenu");
    if (IsNullOrEmpty(thisMenu))
    {
        return false;
    }

    if (thisMenu == m_ToolbarMenu)
    {
        m_ToolbarMenu.style.display = "inline-block";
        return true;
    }

    m_ToolbarMenu = thisMenu;

    var subElement = null;
    for (var j = 0; j < m_ToolbarMenu.childNodes.length; j++)
    {
        subElement = m_ToolbarMenu.childNodes[j];
        if (!IsNullOrEmpty(subElement) && subElement.tagName == "DIV")
        {
            subElement.className = m_strDropDownMenuBodyClass;
        }
    }

    //set dropdown menu display position
    m_nXpos = evtObj.srcElement.offsetLeft + evtObj.srcElement.offsetParent.offsetLeft;
    //m_nXpos = divToolbarMenuItem.offsetLeft;

    if (!isIE)
    {
        if (m_nXpos + parseInt(m_ToolbarMenu.style.width, 10) > document.body.clientWidth)
        {
            m_nXpos = document.body.clientWidth - parseInt(m_ToolbarMenu.style.width, 10);
        }
    }
    else
    {
        if (m_nXpos + parseInt(m_ToolbarMenu.style.posWidth, 10) > document.body.clientWidth)
        {
            m_nXpos = document.body.clientWidth - parseInt(m_ToolbarMenu.style.posWidth, 10);
        }
    }



    if (!IsNullOrEmpty(row1) && !IsNullOrEmpty(row2) && !IsNullOrEmpty(row3))
    {
        m_nYpos = (row1.offsetHeight + row2.offsetHeight + row3.offsetHeight + 2);
    }

    m_ToolbarMenu.style.top = m_nYpos + "px";
    m_ToolbarMenu.style.left = m_nXpos + "px";
    m_ToolbarMenu.style.clip = "rect(0 0 0 0)";


    // delay 2 millsecond to allow the value of m_ToolbarMenu.offsetHeight be set
    window.setTimeout("showMenu()", 2);
    return true;
}

function showMenu()
{
    if (!IsNullOrEmpty(m_ToolbarMenu))
    {
        var row3 = document.getElementById("idRow3");

        // mouse away from bottom of menu setup:
        var nOffsetTop = m_ToolbarMenu.offsetTop;
        var nOffsetHeight = m_ToolbarMenu.offsetHeight;


        m_ToolbarMenu.style.clip = "rect(auto auto auto auto)";
        m_ToolbarMenu.style.position = "fixed";
        m_ToolbarMenu.style.zIndex = 2;
        m_ToolbarMenu.style.display = "inline-block";
    }
}

function ToolbarMenuDismiss()
{


    if (!IsNullOrEmpty(m_strCurrentMenuItemId))
    {
        var toolBarmenuItem = document.getElementById(m_strCurrentMenuItemId);
        if (!IsNullOrEmpty(toolBarmenuItem))
        {
            toolBarmenuItem.className = m_menuItemContainer;
            m_strCurrentMenuItemId = "";
        }
    }

    if (!IsNullOrEmpty(m_ToolbarMenu))
    {

        m_strCurrentMenuElementId = "";
        m_ToolbarMenu.style.display = "none";
        m_ToolbarMenu = null;
    }
}

//function menuCheckExit(evtObj)
//{
//    var targetElement = null;
//    if (!isIE)
//    {
//        targetElement = evtObj.relatedTarget;
//    }
//    else
//    {
//        targetElement = evtObj.toElement;
//    }

//    evtObj.cancelBubble = true;
//    if (!IsNullOrEmpty(targetElement) && !IsNullOrEmpty(evtObj.srcElement) && !IsNullOrEmpty(m_ToolbarMenu))
//    {
//        if (targetElement != m_ToolbarMenu && !RecurseFindParent(m_ToolbarMenu, targetElement))
//        {
//            ToolbarMenuDismiss();
//        }
//    }
//}

function subMenuCheckExit(evtObj)
{
    var targetElement = null;
    if (!isIE)
    {
        targetElement = evtObj.relatedTarget;
    }
    else
    {
        targetElement = evtObj.toElement;
    }
    evtObj.cancelBubble = true;
    if (!IsNullOrEmpty(targetElement) && !IsNullOrEmpty(evtObj.srcElement) && !IsNullOrEmpty(m_ToolbarMenu))
    {
        if (!RecurseFindParent(m_ToolbarMenu, targetElement))
        {
            ToolbarMenuDismiss();
        }
    }
}


TabDocWebLib.ToolbarControl.registerClass('TabDocWebLib.ToolbarControl', Sys.UI.Control);
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();