﻿// JScript File
function __showCentered(elem)
{
    elem.style.display = 'block';
    var b = Sys.UI.DomElement.getBounds(elem);
    var x = (__windowWidth() - parseInt(b.width,10))/2;
    var y = (__windowHeight() - parseInt(b.height,10))/2 + __scrollY();
    
    Sys.UI.DomElement.setLocation(elem, Math.round(x), Math.round(y));
    elem.style.visibility = 'visible';
}
function __scrollY()
{
    var de = document.documentElement;
    return de.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;
}  
  
function __scrollX()
{
    var de = document.documentElement;
    return de.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;
}
    
function __windowHeight()
{
    var de = document.documentElement;
    return self.innerHeight ||
           ( de && de.clientHeight ) ||
             document.body.clientHeight;
};
    
function __windowWidth()
{
    var de = document.documentElement;
    return self.innerWidth ||
          ( de && de.clientWidth ) ||
            document.body.clientWidth;
}; 

var MenuUtils = new Object();
MenuUtils.addEventHandler = function(id, eventType, handler)
{
    if (window.addEventListener)
    {
        id.addEventListener(eventType, handler, false);
    }
    else
    {
        id.attachEvent("on" + eventType, handler);
    }
};
    
MenuUtils.resetActions = function(hidden_id)
{
    document.getElementById(hidden_id).value = 0;
};

MenuUtils.initActions = function(elem_id, hidden_id, showCustomActions)
{
    var elem = document.getElementById(elem_id);
    if (elem != null)
    {
        MenuUtils.addEventHandler(elem, "change",
        function(e)
        {
            e = e || window.event;
            var el = e.target || e.srcElement;
            document.getElementById(hidden_id).value = el.selectedIndex;
            el.selectedIndex = 0;
        });
    }
    var pane = $get('menuMoreTasksContainer');
    var t = pane.getElementsByTagName('table')[0];
    var showTaskButton = t.rows.length > 0 && showCustomActions == 'True';
    
    // auto hide
    $addHandler(pane, 'mouseout', $$mouseout);
    $addHandler($get('welcome-container'), 'mouseout', $$mouseout);
    
    function $$mouseout(evt)
    {
        if (this.$toid == null)
            this.$toid = 
            setTimeout(function ()
            {
                __doShowMasterMoreTasks(false);
                __doShowWelcomeMenu(false);
            },500);
    };
    
    $addHandler(pane, 'mouseover', $$mouseover);
    $addHandler($get('welcome-container'), 'mouseover', $$mouseover);
    
    function $$mouseover(evt)
    {
        if (this.$toid != null)
        {
            clearTimeout(this.$toid);
            this.$toid = null;
        }
    };    
    
    var items = pane.getElementsByTagName('tr');
    if (items != null)
    {
        for (var i = 0; i < items.length; i++)
        {
            items[i].onclick = function (evt)
            {
                __doShowMasterMoreTasks(false);
                var menuID = this.getAttribute('menu-id');
                if (menuID != null && __doPostBack)
                {
                    $get(hidden_id).value = menuID;
                    __doPostBack('__page', this);
                }
            }
            ;
            items[i].onmouseover = function (evt)
            {
                this.className = 'menu-hot';
            };
            
            items[i].onmouseout = function (evt)
            {
                this.className = 'menu-normal';
            };
        }
    }
    
    $addHandler($get('btnMasterMoreTasks'), 'click', __doMasterMoreTasksHandler);
    $addHandler(document, 'keydown', __doHideMasterMoreTasksHandler);
    
    $get('btnMasterMoreTasks').style.display = showTaskButton ?'block':'none';
    
    // welcome message
    
    $addHandler($get('welcome-info'), 'click', __handleWelcome);
};

function __handleWelcome(evt)
{
    __doHideTaskMenus();
    var pane = $get('welcome-container');
    if (pane.$paneVisible == null)
        pane.$paneVisible = false;
        
    pane.$paneVisible = !pane.$paneVisible;
    var b = Sys.UI.DomElement.getBounds(this);
    var l = Sys.UI.DomElement.getLocation(this);
    l.y += 2;
    var mb = Sys.UI.DomElement.getBounds(pane);
    var offsetx = -2;
    
    //l.x += offsetx;
    // NOTES: It seems that getLocation() take scroll positions into consideration
    //Sys.UI.DomElement.setLocation(pane, l.x + __scrollX(), l.y + b.height - 2);
    //var paneBound = Sys.UI.DomElement.getBounds(this);
    //alert(parseInt(pane.style.width));
    Sys.UI.DomElement.setLocation(pane, (l.x+b.width)-parseInt(pane.style.width)+offsetx, l.y + b.height - 2);
    //Sys.UI.DomElement.setLocation(pane, (l.x), l.y + b.height - 2);
            
    __doShowWelcomeMenu(pane.$paneVisible);
}

function __doHideTaskMenus()
{
    __doShowMasterMoreTasks(false);
    __doShowWelcomeMenu(false);
}

function __doShowWelcomeMenu(show)
{
    var pane = $get('welcome-container');    
    pane.style.display = show?'block':'none';
    pane.$paneVisible = show;
}

function __doHideMasterMoreTasksHandler(evt)
{
    if (evt.keyCode == 27)
    {
        __doHideTaskMenus();
    }
}

function __doShowMasterMoreTasks(show)
{
    var pane = $get('menuMoreTasksContainer');    
    pane.style.display = show?'block':'none';
    pane.$paneVisible = show;
}

function __scrollY()
{
    var de = document.documentElement;
    return de.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;
}  
  
function __scrollX()
{
    var de = document.documentElement;
    return de.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;
}

function __doMasterMoreTasksHandler(evt)
{
    __doHideTaskMenus();
    var pane = $get('menuMoreTasksContainer');
    if (pane.$paneVisible == null)
        pane.$paneVisible = false;
        
    pane.$paneVisible = !pane.$paneVisible;
    var b = Sys.UI.DomElement.getBounds(this);
    var l = Sys.UI.DomElement.getLocation(this);
    l.y += 2;
    var mb = Sys.UI.DomElement.getBounds(pane);
    var offsetx = -105;
    
    l.x += offsetx;
    // NOTES: It seems that getLocation() take scroll positions into consideration
    Sys.UI.DomElement.setLocation(pane, l.x + __scrollX(), l.y + b.height - 2);
            
    __doShowMasterMoreTasks(pane.$paneVisible);
}


MenuUtils.groupItems = new Array();
MenuUtils.initialize = function(parent)
{
    var table = document.getElementById(parent);
    if (table == null) return;
    
    var items = document.getElementById(parent).rows;// getElementsByTagName("tr");
    
    for (var i = 0; i < items.length; i++)
    {
        var elem = items[i];
        if (elem.getAttribute("cat-id") != null)
        {
            var group = document.getElementById(elem.getAttribute("cat-id"));
            group.box = elem;
            group.collapsed = true;
            group.groupItems = this.groupItems;
            group.onmouseover = function()
            {
                this.style.color = "orange";
            };
            
            group.onmouseout = function()
            {
                this.style.color = "#000";
            };
            
            group.onclick = function(e)
            {
                for (var j = 0; j < this.groupItems.length; j++)
                {
                    if (this.groupItems[j] != this) 
                    {
                        this.groupItems[j].box.style.display = "none";
                        this.groupItems[j].collapsed = true;
                        this.groupItems[j].setAttribute("class","group-collapsed");
                    }
                }
                
                this.collapsed = !this.collapsed;
                if (this.collapsed)
                    this.setAttribute("class","group-collapsed");
                else
                    this.setAttribute("class","group-expanded");
                    
                this.box.style.display = this.collapsed?"none":"block";
            };
            
            this.groupItems.push(group);
        }
    }
};
MenuUtils.sidebarGroupItems = new Array();
MenuUtils.InitializeSidebar = function()
{
    for (var i=1;i<=3;i++)
    {
        var group = $get("cat-"+i);
        group.collapsed = true;
        group.sidebarGroupItems = this.sidebarGroupItems;
        group.content = $get("catcont-"+i);       
        if (i > 1){
            group.content.style.height = "0px";
            group.content.style.display = "none";
        }
        group.onmouseover = function()
        {
            this.style.color = "orange";
        };
        
        group.onmouseout = function()
        {
            this.style.color = "#FF540E";
        };
        group.onclick = function(e)
        {
            for (var j = 0; j < this.sidebarGroupItems.length; j++)
            {
                if (this.sidebarGroupItems[j] != this) 
                {
                    this.sidebarGroupItems[j].content.style.height = "0px";
                    this.sidebarGroupItems[j].collapsed = true;
                    this.sidebarGroupItems[j].content.style.display = "none";
                    //this.sidebarGroupItems[j].setAttribute("class","group-collapsed");
                }
            }
            
            this.collapsed = !this.collapsed;
            if (this.collapsed)
            {
                //this.setAttribute("class","group-collapsed");
                this.content.style.height = "0px";
            }
            else
            {
                this.content.style.height = "auto";
                //this.setAttribute("class","group-expanded");
            }    
            this.content.style.display = this.collapsed?"none":"block";
                
        }
        this.sidebarGroupItems.push(group);
        
    };
    
}
var isHome;


