﻿var currentTab = '';
var showDefectsRSS = true;
var showFeaturesRSS = true;
var showTasksRSS = true;
var showIncidentsRSS = true;
var rssUrl = '';
var handlingWindowResize = false;
var needGridRefresh = false;
var lastColWidth = 0;
var selectedMenuItem = null;

function wikiPageLinkClicked(projectId, pageId, projectName, addToHistory)
{
    if (projectId == -1)
    {
        alert('<%= GetResourceString("projects_wiki_LinkPermissionDeniedMessage", true) %>');
        return;
    }

    Axosoft.CustomerPortal.services.OnTimeService.ViewWikiPage(pageId, addToHistory, changeWikiPage);
}

function itemsGrid_Load()
{
	//force IE to reposition position: relative controls by setting the parent's display
	var container = document.getElementById(itemsGridContainerClientId);
	if (typeof container == 'object' && container.style.display != 'none')
	{
		container.style.display = container.style.display == 'block' ? '' : 'block';
	}

	setItemsGridColumnsFixedWidth();
	updateGridContainerHeight();

	if (!handlingWindowResize)
	{
		handlingWindowResize = true;
		resizeRightSide();
		AddEvent(window, 'resize', onWindowResize);
	}
}
function onItemsGridCallbackComplete()
{
	setItemsGridColumnsFixedWidth();
	updateGridContainerHeight();
}
function gridColumnResized(gridColumn, changeSize)
{
	setItemsGridColumnsFixedWidth();
	return true;
}
function gridColumnReordered(oldIndex, newIndex)
{
	return true;
}
function onWindowResize()
{
	resizeRightSide();
}
function closeHomeIbox()
{
	hideIbox();
	if(needGridRefresh)
	{
		forceGridCallback();
	}
}
function mainTabSelected(sender, args)
{
	var tab = args.get_tab();
	if(currentTab == tab.get_value())
		return false;
	currentTab = tab.get_value();
	if(currentTab == "Projects")
	{
		$get(wikiContainerClientId).style.display = "";
		$get(itemsGridContainerClientId).style.display = "none";
		Axosoft.CustomerPortal.services.OnTimeService.UpdateCurrentSelectedTab(currentTab);
	}
	else
	{
		$get(wikiContainerClientId).style.display = "none";
		$get(itemsGridContainerClientId).style.display = "";
		itemsGridCallback.Callback(currentTab);
	}
	updateRSS(currentTab);
	return true;
}
function LoginContact(showDefectTab, showFeatureTab, showIncidentTab, useTab)
{
	window.location = window.location;
	return;
}
function changePageSize(delta)
{
	Axosoft.CustomerPortal.services.OnTimeService.UpdateCustomerContactPageSize(delta, onChangePageSizeComplete);
}
function doLogout()
{
	var logoutComplete = function(url)
		{
			url = unescape(url);
			window.location = url;
		}
	Axosoft.CustomerPortal.services.OnTimeService.LogoutCustomerContact(logoutComplete);
}
function forceGridCallback()
{
	itemsGridCallback.Callback();
}
function onChangePageSizeComplete(result)
{
	if(result)
		itemsGridCallback.Callback(currentTab);
}
function getSelectedGridItems()
{
	var gridItems = null;
	try
	{
		gridItems = itemsGrid.GetSelectedItems();
	}
	catch(ex)
	{
		gridItems = null;
	}

	return gridItems;
}
function itemsGridCallback_BeforeCallback()
{
	if (typeof itemsGrid != 'undefined' && itemsGrid)
		itemsGrid.dispose();
	if (typeof itemsGridToolbarFilterMenu != 'undefined' && itemsGridToolbarFilterMenu)
		itemsGridToolbarFilterMenu.dispose();
	if (typeof itemsGridToolbarMenu != 'undefined' && itemsGridToolbarMenu)
		itemsGridToolbarMenu.dispose();
}
function updateRSS(itemTypeName)
{
	if (typeof mainTabStrip == 'undefined') return;
	
	var rssLink = document.getElementById('rssLink');
	if(itemTypeName == undefined)
	{
		var currentTab = mainTabStrip.GetSelectedTab();
		if(currentTab && currentTab != null)
			itemTypeName = currentTab.Value;
	}
	var itemType = 0;
	if(itemTypeName == "Features")
	    itemType = 1;
	if (itemTypeName == "Tasks")
	    itemType = 2;
	else if (itemTypeName == "Incidents")
	    itemType = 3;
	else if (itemTypeName == "Projects")
	    itemType = -1;

	var showRSS = false;
	if(itemType == 0 && showDefectsRSS)
		showRSS = true;

	if(itemType == 1 && showFeaturesRSS)
	    showRSS = true;

	if (itemType == 2 && showTasksRSS)
	    showRSS = true;

	if(itemType == 3 && showIncidentsRSS)
		showRSS = true;

	if(showRSS)
	{
		rssLink.href = (unescape(rssUrl)).replace("{0}", itemType.toString());
		document.getElementById(rssDivClientId).style.display = "block";
	}
	else
	{
		document.getElementById(rssDivClientId).style.display = "none";
	}
}
function getLastColumnWidth()
{
	return itemsGrid.Table.Columns[itemsGrid.Table.Columns.length - 1].get_width();
}
function resizeRightSide()
{
	var left = document.getElementById(leftSideClientId);
	var collapsed = true;
	if(left && left != null && left.style.display != 'none')
		collapsed = false;

	//get width of container div
	var container = document.getElementById('masterContainer');
	var containerWidth = container.offsetWidth;
	if (containerWidth < 1)
		return;

	var rightWidth = containerWidth - 20;
	if(!collapsed)
	{
		var leftWidth = left.offsetWidth;
		rightWidth -= leftWidth + 23;
	}

	var rightSide = document.getElementById(rightSideClientId);
	if(rightWidth < 0)
		rightWidth = 0;
	rightWidth = rightWidth.toString() + 'px';
	
	rightSide.style.width = rightWidth;
	if(document.getElementById(itemsGridContainerClientId))
		document.getElementById(itemsGridContainerClientId).style.width = rightWidth;
	if(typeof itemsGridCallback != "undefined")
		itemsGridCallback.element.style.width = rightWidth;
	if(document.getElementById(itemsGridControlDirectParentDivClientId))
		document.getElementById(itemsGridControlDirectParentDivClientId).style.width = rightWidth;
	document.getElementById(mainDivClientId).style.width = rightWidth;
	document.getElementById('tabStripContainer').style.width = rightWidth;

	if(typeof itemsGrid == "undefined" || !itemsGrid)
		return;
	itemsGrid.render();
}
function updateGridContainerHeight()
{
	var combinedHeight = itemsGrid.element.offsetHeight;

	if(itemsGridToolbarMenu.element.childNodes.length > 0)
	{
		combinedHeight += itemsGridToolbarMenu.element.childNodes[0].offsetHeight;
		if(getBrowserInformation().Browser == 'ie')
		{
			combinedHeight += parseInt(itemsGridToolbarMenu.element.parentNode.parentNode.parentNode.style.marginTop, 10);
		}
		itemsGridToolbarMenu.element.style.height = itemsGridToolbarMenu.element.childNodes[0].offsetHeight.toString() + 'px';
	}
	if(itemsGridToolbarFilterMenu.element.childNodes.length > 0)
	{
		combinedHeight += itemsGridToolbarFilterMenu.element.childNodes[0].offsetHeight + document.getElementById(itemsGridControlGridFooterClientId).offsetHeight;
		if(getBrowserInformation().Browser == 'ie')
			combinedHeight += parseInt(itemsGridToolbarFilterMenu.element.parentNode.style.marginTop, 10);
		itemsGridToolbarFilterMenu.element.style.height = itemsGridToolbarFilterMenu.element.childNodes[0].offsetHeight.toString() + 'px';
	}

	document.getElementById(itemsGridControlDirectParentDivClientId).style.height = (itemsGrid.element.offsetHeight).toString() + 'px';
	itemsGridCallback.element.style.height = combinedHeight.toString() + 'px';
	document.getElementById(gridContainerDivClientId).style.height = combinedHeight.toString() + 'px';

	// hide slider
	if (itemsGrid.SliderGripDomObj && itemsGrid.get_pageCount() <= 1)
	{
		itemsGrid.SliderGripDomObj.style.visibility = 'hidden';
	}
}

// ItemsGridControl
if (typeof window.CustomerPortal_ItemsGrid == 'undefined')
{
	window.CustomerPortal_ItemsGrid = new Object();
	CustomerPortal_ItemsGrid.canEdit = false;
	CustomerPortal_ItemsGrid.viewUrl = '';
	CustomerPortal_ItemsGrid.editUrl = '';
}
function gridPaging(newPageIndex)
{
    unSelectGridItems();
    return true;
}
function onSearchUpdateComplete(result)
{
    if(result)
    {
        updateItemsGridData();
    }
}
function onsearchKeyPress(evt)
{
    var e = evt? evt : window.event;
    if(!e) return;
    var key = 0;
    if (e.keyCode) { key = e.keyCode; } // for moz/fb, if keyCode==0 use 'which'
    else if (typeof(e.which)!= 'undefined') { key = e.which; } 
    
    if(key.toString() == '13')
    {
        doSearch();
        return false;
    }
        
    return true;
}
function ItemsGridToolbarMenuItemSelected(menuItem)
{
    if(menuItem.NavigateUrl.length > 0)
    {
        return true;
    }
    
    var gridItems = getSelectedGridItems();
    if(gridItems != null && gridItems.length == 1)
    {
        var itemId = gridItems[0].Cells[0].Value;
        var url = '';
        if(menuItem.Value == "Edit")
        {
            url = unescape(CustomerPortal_ItemsGrid.editUrl);
        }
        if(menuItem.Value == "View")
        {
            url = unescape(CustomerPortal_ItemsGrid.viewUrl);
        }
        
        if(url.length > 0)
        {
            url = url.replace('{0}', itemId);
            window.location = url;
            return;
        }
    }
}
function viewItem()
{
	var gridItems = getSelectedGridItems();
    if(gridItems != null && gridItems.length == 1)
    {
        var itemId = gridItems[0].Cells[0].Value;
		var url = unescape(CustomerPortal_ItemsGrid.viewUrl);
		url = url.replace('{0}', itemId);
		window.location = url;
		return;
	}
}
function itemsGridOnDoubleClick(sender, eventArgs)
{
	viewItem();
}
function ItemsGridToolbarFilterMenuItemSelected(menuItem)
{
    if(selectedMenuItem != null)
        return false;
        
    Axosoft.CustomerPortal.services.OnTimeService.UpdateCustomerContactFilter(menuItem.Value, onGridFilterUpdateComplete);
    selectedMenuItem = menuItem;
    return true;
}
function onGridFilterUpdateComplete(result)
{
    if(result)
    {
        updateFilterMenuChecks(selectedMenuItem.ParentItem, selectedMenuItem);
        updateItemsGridData();
    }
    
    selectedMenuItem = null;
}
function updateFilterMenuChecks(parentItem, selectedMenuItem)
{
	var subItems = parentItem.GetItems();
	var len = subItems.length;
    for(var i=0;i<len;i++)
    {
        if(subItems[i].Enabled)
        {
            subItems[i].SetProperty('Look-LeftIconUrl', 'empty.gif');
            subItems[i].SetProperty('Look-LeftIconWidth', '5');
        }
    }
    var isFirst = (subItems.length <= 1 || subItems[0] == selectedMenuItem);
    
    selectedMenuItem.SetProperty('Look-LeftIconUrl', 'bullet.gif');
    selectedMenuItem.SetProperty('Look-LeftIconWidth', '5');

    parentItem.SetProperty('Look-CssClass', (isFirst ? 'ItemsGridToolbarMenuItem' : 'ItemsGridToolbarMenuItemOver'));
    
    selectedMenuItem.ParentMenu.Render();
}
       
function gridItemSelected(gridItem)
{
    setTimeout('afterGridItemSelected()', 50);
    return true;
}
function afterGridItemSelected()
{
    var gridItems = getSelectedGridItems();
    if(gridItems != null && gridItems.length == 1)
    {
        var gridItem = gridItems[0];
        updateToolbarMenu(gridItem);
    }
}
function updateItemsGridData()
{
    unSelectGridItems();
    updateToolbarMenu();

    itemsGrid.Callback();
}
function unSelectGridItems()
{
    //unselect selected items since the selection isn't right
    var selectedItems = getSelectedGridItems();
    
    if(selectedItems != null)
    {
        for(var i=0;i<selectedItems.length;i++)
        {
            itemsGrid.UnSelect(selectedItems[i]);
        }
    }
}
function updateToolbarMenu(gridItem)
{
    var changed = false;
    
    if(gridItem == undefined)
    {
        if(itemsGridToolbarMenu.GetItems('View').Enabled)
        {
            itemsGridToolbarMenu.GetItems('View').SetProperty('Enabled', false);
            changed = true;
        }
        
        if(itemsGridToolbarMenu.GetItems('Edit').Enabled)
        {
            itemsGridToolbarMenu.GetItems('Edit').SetProperty('Enabled', false);
            changed = true;
        }
    }
    else
    {
        if(!itemsGridToolbarMenu.GetItems('View').Enabled)
        {
            itemsGridToolbarMenu.GetItems('View').SetProperty('Enabled', true);
            changed = true;
        }
        
        var canEditRow = gridItem.Cells[1].Value;
        var editItem = itemsGridToolbarMenu.GetItems('Edit');
        if(CustomerPortal_ItemsGrid.canEdit && canEditRow)
        {
            if(!editItem.Enabled)
            {
                editItem.SetProperty('Enabled', true);
                changed = true;
            }
        }
        else
        {
            //only change it if it needs to be changed, to avoid excessive flicker
            if(editItem.Enabled)
            {
                editItem.SetProperty('Enabled', false);
                changed = true;
            }
        }
    }
    
    if(changed)
    {
        itemsGridToolbarMenu.Render();
    }
}
function doSearch()
{
    var searchBox = document.getElementById(txtSearchClientId);
    var searchList = document.getElementById(ddlSearchFieldsClientId);
    if(searchBox)
    {
        Axosoft.CustomerPortal.services.OnTimeService.UpdateCustomerContactSearchString(searchBox.value, searchList.value, onSearchUpdateComplete);
    }
}
function clearSearch()
{
    var searchBox = document.getElementById(txtSearchClientId);
    if(searchBox.value.length == 0)
        return;
    searchBox.value = '';
    doSearch();
}


