﻿//benchheader.js
var m_bBenchHeaderLoaded = false;
var m_strSelectedBenchHeaderID = "";
var m_strButtonTextContainerClass = "toolbarImgTxtCtnr";
var m_strButtonTextContainerHilightClass = "toolbarImgTxtCtnrHilight";
var m_strBenchHeaderDivClass = "divBenchHeader";
var m_strBenchHeaderExtraDivClass = "divBenchHeaderExtra";
var m_strBenchWidgetClass = "benchWidget";
var m_strBuddyImageClass = "buddyImage";
var m_strToolbarImageClass = "toolbarImage";
var m_strToolbarTextClass = "toolbarText";
var m_strToolbarTextDisabledClass = "toolbarTextDisabled";
var m_strBenchHeaderHTML = "<div class='" + m_strBenchHeaderDivClass + "' >";
var m_strBenchHeaderCurrentToolset = "";
var m_strBenchHeaderID = "";
var m_aHeaderSets = null;
var m_nHeaderSetIndex = 0;

Type.registerNamespace('TabDocWebLib');

TabDocWebLib.BenchHeader = function(element)
{
    TabDocWebLib.BenchHeader.initializeBase(this, [element]);
};

TabDocWebLib.BenchHeader.prototype = {
    initialize: function()
    {
        TabDocWebLib.BenchHeader.callBaseMethod(this, 'initialize');
        var e = this.get_element();
        SetClientSideBenchHeaderId(e.id);
        ControllerSetBenchHeaderID(e.id);
    },
    dispose: function()
    {
        $clearHandlers(this.get_element());
        TabDocWebLib.BenchHeader.callBaseMethod(this, 'dispose');
    },
    BenchHeaderAssertHeaderSet: function(headerSetName)
    {
        if (IsNullOrEmpty(headerSetName))
        {
            headerSetName = "toolbar.blank";
        }
        if (m_strBenchHeaderCurrentToolset != headerSetName)
        {
            m_strBenchHeaderCurrentToolset = headerSetName;
            ResetBenchHeader();
            var bExtra = false;
            var headerSet = GetHeaderSet(headerSetName);
            if (!IsNullOrEmpty(headerSet))
            {
                for (var i = 0; i < headerSet.HeaderCount; i++)
                {
                    var headerSetItem = headerSet.HeaderInfo[i];
                    if (!IsNullOrEmpty(headerSetItem))
                    {
                        SetBenchHeaderItem(headerSetItem.Name, headerSetItem.Text, headerSetItem.Enabled ? headerSetItem.Image : headerSetItem.ImageDisabled, headerSetItem.Type);
                    }
                }
                if (!IsNullOrEmpty(headerSet.Extra))
                {
                    bExtra = headerSet.Extra;
                }
            }
            DoDrawBenchHeader(bExtra);
        }
    }
};






TabDocWebLib.BenchHeader.registerClass('TabDocWebLib.BenchHeader', Sys.UI.Control);



function ResetBenchHeader()
{
    m_strBenchHeaderHTML = "<div class='" + m_strBenchHeaderDivClass + "' >";
    m_bBenchHeaderLoaded = false;
}

function SetBenchHeaderItem(id, text, SubMenuImgUrl, type)
{
    var strID = id;

    switch (type)
    {
        case "toolbarButton":
            {
                m_strBenchHeaderHTML += "<span " +
            "id='" + strID + "' " +
            "class='" + m_strButtonTextContainerClass + "' " +
            "onclick='BenchHeaderClicked( &quot;" + strID + "&quot;, event );' " +
            "onmousedown='BenchHeaderMouseDown( &quot;" + strID + "&quot;, event );' " +
            "onmouseup='BenchHeaderMouseUp( &quot;" + strID + "&quot;, event );' " +
            "onmouseover='BenchHeaderMouseOver( &quot;" + strID + "&quot;, event );' " +
            "onmouseout='BenchHeaderMouseOut( &quot;" + strID + "&quot;, event );'>" +
            "<img id='" + "img." + id + "' alt='" + text + "' title='" + text + "'src='" + SubMenuImgUrl + "' class='" + m_strToolbarImageClass + "' />" +
            "<span id='" + "span." + id + "' class='" + m_strToolbarTextClass + "'>" +
            text +
            "</span>" +
            "</span>";
            }
            break;
        case "toolbarDropList":
            {
                m_strBenchHeaderHTML += "<span " +
            "id='" + strID + ".span' " +
            "class='" + m_strButtonTextContainerClass + "' " +
            ">" +
            "<img id='" + "img" + id + "' alt='" + text + "'" + " title='" + text + "'" + "src='" +
            SubMenuImgUrl + "'" +
            "class='" + m_strBuddyImageClass + "' />" +
//            "onclick='BenchHeaderClicked(&quot;" + strID + "&quot;, event );'/>" +
            "<select id='" + strID + "' " +
            "class='" + m_strBenchWidgetClass + "' " +
            "onchange='DropListSelection(&quot;" + strID + "&quot;, event );'>" +
                //            "onchange='PanelInputOnChange( event );'>" +

            "<!--SELECT_options-->" +
            "</select>" +
            "</span>";
            }
            break;
        default:
            break;
    }
}


function DrawBenchHeader(elementID, extra)
{
    m_strBenchHeaderHTML += "</div>";

    if (!IsNullOrEmpty(extra))
    {
        if (extra === true)
        {
            m_strBenchHeaderHTML += "<div id='divBenchHeaderExtra' class='" + m_strBenchHeaderExtraDivClass + "' >";
            m_strBenchHeaderHTML += "</div>";
        }
    }
    else
    {
        extra = false;
    }

    var element = document.getElementById(elementID);
    if (!IsNullOrEmpty(element))
    {
        var currentStyleHeight = element.style.height;
        if (extra === true)
        {
            if (currentStyleHeight != "52px")
            {
                element.style.height = "52px";
                //                ResizeWorkspace();
            }
        }
        else
        {
            if (currentStyleHeight != "26px")
            {
                element.style.height = "26px";
                //                ResizeWorkspace();
            }
        }
        element.innerHTML = m_strBenchHeaderHTML;
        m_bBenchHeaderLoaded = true;
    }
}


function BenchHeaderMouseDown(headerID, evtObj)
{
    var headerItem = document.getElementById(headerID);
    if (!IsNullOrEmpty(headerItem))
    {
        headerItem.className = m_strButtonTextContainerClass;
    }
}

function BenchHeaderMouseUp(headerID, evtObj)
{

}

function BenchHeaderClicked(headerID, evtObj)
{
    var headerSetItem = GetHeaderSetItem(m_strBenchHeaderCurrentToolset, headerID);
    if (!IsNullOrEmpty(headerSetItem) && headerSetItem.Enabled)
    {
        var src = evtObj.srcElement;
        if (!IsNullOrEmpty(src))
        {
            var headerItem = null;
            ProcessBenchHeaderItem(headerID);
            if (!IsNullOrEmpty(headerSetItem) && headerSetItem.Enabled)
            {
                headerItem = document.getElementById(headerID);
                if (!IsNullOrEmpty(headerItem))
                {
                    headerItem.className = m_strButtonTextContainerHilightClass;
                }
            }
            else
            {
                headerItem = document.getElementById(headerID);
                if (!IsNullOrEmpty(headerItem))
                {
                    headerItem.className = m_strButtonTextContainerClass;
                }
            }
        }
    }
}

function BenchHeaderMouseOver(headerID, evtObj)
{
    var headerSetItem = GetHeaderSetItem(m_strBenchHeaderCurrentToolset, headerID);
    if (!IsNullOrEmpty(headerSetItem) && headerSetItem.Enabled)
    {
        var headerItem = document.getElementById(headerID);
        if (!IsNullOrEmpty(headerItem))
        {
            headerItem.className = m_strButtonTextContainerHilightClass;
        }
    }
}

function BenchHeaderMouseOut(headerID, evtObj)
{
    var headerItem = document.getElementById(headerID);
    if (!IsNullOrEmpty(headerItem))
    {
        headerItem.className = m_strButtonTextContainerClass;
    }
}


//function BenchHeaderDropListIconClicked( headerID, evtObj )
//{
//    var src = evtObj.srcElement;
//    if(  !IsNullOrEmpty(src  ))
//    {
//        ProcessBenchHeaderItem( headerID );
//    }
//}

function DropListSelection(headerID, evtObj)
{
    var src = evtObj.srcElement;
    if (!IsNullOrEmpty(src))
    {
        var element = document.getElementById(src.id);
        if (!IsNullOrEmpty(element))
        {
            var details = src.id + "|" + element.options[element.selectedIndex].value;
            FireBenchTrigger(details);

        }
    }
}





function ControllerSetBenchHeaderID(id)
{
    m_strBenchHeaderID = id;
}

function SetHeaderSetCount(headerSetCount)
{
    m_nHeaderSetIndex = 0;
    m_aHeaderSets = new Array(headerSetCount);
}

function HeaderSet(name, headerCount, extra)
{
    this.Name = name;
    this.HeaderCount = headerCount;
    this.Extra = extra;
    this.HeaderInfo = new Array(headerCount);
}

function HeaderSetItem(name, text, image, type)
{
    this.Name = name;
    this.Text = text;
    this.Image = image;
    this.Type = type;
    this.ImageDisabled = null;
    this.Enabled = true;
}

function SetHeaderSetItemEnabled(headerSetName, headerSetItemName, bEnabled)
{
    var headerSetItem = GetHeaderSetItem(headerSetName, headerSetItemName);
    if (!IsNullOrEmpty(headerSetItem))
    {
        headerSetItem.Enabled = bEnabled;
        var element = document.getElementById("img." + headerSetItemName);
        if (!IsNullOrEmpty(element))
        {
            if (bEnabled)
            {
                element.setAttribute('src', headerSetItem.Image);
            }
            else
            {
                element.setAttribute('src', headerSetItem.ImageDisabled);
            }
        }
        element = document.getElementById("span." + headerSetItemName);
        if (!IsNullOrEmpty(element))
        {
            if (bEnabled)
            {
                element.setAttribute('class', m_strToolbarTextClass);
            }
            else
            {
                element.setAttribute('class', m_strToolbarTextDisabledClass);
            }
        }
    }
}

function SetHeaderSetDisabledImage(headerSetName, headerSetItemName, imageDisabled)
{
    var headerSetItem = GetHeaderSetItem(headerSetName, headerSetItemName);
    if (!IsNullOrEmpty(headerSetItem))
    {
        headerSetItem.ImageDisabled = imageDisabled;
    }
}

function GetHeaderSetItem(headerSetName, headerSetItemName)
{
    var headerSetItem = null;
    var headerSet = GetHeaderSet(headerSetName);
    if (!IsNullOrEmpty(headerSet))
    {
        for (var i = 0; i < headerSet.HeaderInfo.length; i++)
        {
            var o = headerSet.HeaderInfo[i];
            if (!IsNullOrEmpty(o))
            {
                if (o.Name === headerSetItemName)
                {
                    headerSetItem = headerSet.HeaderInfo[i];
                    break;
                }
            }
        }
    }

    return headerSetItem;
}


function DefineHeaderSet(name, headerCount, extra)
{
    var headerSet = new HeaderSet(name, headerCount, extra);
    m_aHeaderSets[m_nHeaderSetIndex] = headerSet;
    m_nHeaderSetIndex++;
}

function DefineHeaderSetItem(headerSetName, index, headerSetItemName, text, image, type, textClass)
{
    var headerSetItem = new HeaderSetItem(headerSetItemName, text, image, type, textClass);
    var headerSet = GetHeaderSet(headerSetName);

    if (!IsNullOrEmpty(headerSet))
    {
        headerSet.HeaderInfo[index] = headerSetItem;
    }
}

function GetHeaderSet(name)
{
    var headerSet = null;

    if (!IsNullOrEmpty(name))
    {
        if (!IsNullOrEmpty(m_aHeaderSets))
        {

            if (m_aHeaderSets.length > 0)
            {
                for (var i = 0; i < m_aHeaderSets.length; i++)
                {
                    var o = m_aHeaderSets[i];
                    if (o.Name == name)
                    {
                        headerSet = m_aHeaderSets[i];
                        break;
                    }
                }
            }
        }
    }
    return headerSet;
}






function DoDrawBenchHeader(extra)
{
    if (!IsNullOrEmpty(m_strBenchHeaderID) && !IsNullOrEmpty(extra))
    {
        DrawBenchHeader(m_strBenchHeaderID, extra);
    }
}


if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();