function HideOrShowUpperValue(operatorCtrlID, upperValueCtrlID) 
{ 
	var operatorCtrl = document.getElementById(operatorCtrlID);	
	var txt = operatorCtrl.options[operatorCtrl.selectedIndex].value; 

	var upperValueCtrl = document.getElementById(upperValueCtrlID);	
	
	if (txt == 'Between' || txt == 'Contains')
	{
		upperValueCtrl.style.display = '';
	}
	else
	{
		upperValueCtrl.style.display = 'none';
	}
}

function HideOrShowContainsValueForChoiceField(operatorCtrlID, containValueCtrlID, nonContainValueCtrlID) 
{ 
	var operatorCtrl = document.getElementById(operatorCtrlID);	
	var txt = operatorCtrl.options[operatorCtrl.selectedIndex].value; 

	var containValueCtrl = document.getElementById(containValueCtrlID);	
	var nonContainValueCtrl = document.getElementById(nonContainValueCtrlID);	
	
	if (txt == 'Contains')
	{
		containValueCtrl.style.display = '';
		nonContainValueCtrl.style.display = 'none';
	}
	else
	{
		containValueCtrl.style.display = 'none';
		nonContainValueCtrl.style.display = '';
	}
}

function SwitchControl(controlId) 
{
    var control = document.getElementById(controlId);
    var container = control.parentNode;
    var children = container.childNodes;
    for (i=0; i<children.length; i++) 
    {
        children[i].style.display = 'none';
    }
    control.style.display = '';
}

function UpdateToolbarButton(togglePanelButtonId, togglePanelButtonText, getToolbarFunctionName) 
{
    var toolbar = eval(getToolbarFunctionName);
    var togglePanelButton = toolbar.FindItemByValue(togglePanelButtonId);
    togglePanelButton.SetText(togglePanelButtonText);
}

function SetContextMenuItem(gridId, item)
{
	document.getElementById(gridId+'_ContextMenuItem').value = item;
}

var editedDocUrl = null;

function AdjustDocumentLibraryMenuItem(gridId, menuId, isFileCheckedOut, fileName)
{
	WPSC.MSOMenu_SetVisible(menuId, gridId+'CheckIn', isFileCheckedOut);
	WPSC.MSOMenu_SetVisible(menuId, gridId+'UndoCheckOut', isFileCheckedOut);
	WPSC.MSOMenu_SetVisible(menuId, gridId+'CheckOut', !isFileCheckedOut);
	
	var lastPeriodIndex = fileName.lastIndexOf('.');
	
	var editDocumentVisible = false;
	
	editedDocUrl = null;
	
	if (lastPeriodIndex != -1)
	{
		var extension = fileName.substring(lastPeriodIndex);
		
		if (extension == '.doc' ||
			extension == '.xls' ||
			extension == '.ppt' ||
			extension == '.vsd' ||
			extension == '.htm' ||
			extension == '.xml')
		{
			editDocumentVisible = true;
			editedDocUrl = fileName;
		}
	} 
	
	WPSC.MSOMenu_SetVisible(menuId, gridId+'EditDocument', editDocumentVisible);
}

function AdjustContextMenu(selectedRow, ctxMenu)
{	
    if (selectedRow != null)
	{	
		var checkoutMenuItem = ctxMenu.FindItemByValue('CheckOut');
		
		if (checkoutMenuItem != null)
		{
			var checkinMenuItem = ctxMenu.FindItemByValue('CheckIn');
			var undoCheckoutMenuItem = ctxMenu.FindItemByValue('UndoCheckOut');
			
			var checkoutUser = selectedRow.KeyValues['CheckoutUser'];
			
			if (checkoutUser == null || checkoutUser.length == 0)
			{
				checkoutMenuItem.Enable();
				checkinMenuItem.Disable();
				undoCheckoutMenuItem.Disable();
			}
			else
			{
				checkoutMenuItem.Disable();
				checkinMenuItem.Enable();
				undoCheckoutMenuItem.Enable();

			}
		}		
	}		
}

function AdjustVersionHistoryMenuItem(gridId, menuId, isCurrentVersion)
{
	WPSC.MSOMenu_SetVisible(menuId, gridId+'RestoreVersion', !isCurrentVersion);
	WPSC.MSOMenu_SetVisible(menuId, gridId+'DeleteVersion', !isCurrentVersion);
}

function LinkToOutlook(type,weburl,guid,webname,listname,listurl)
{
	var defaultLinkText = 'Link to Calendar';
	var linkText = GetStssyncAppName(defaultLinkText);
	if (linkText)
	{
		//ExportHailStorm('calendar','http://connect.wolterskluwer.com/sites/projectmanagement/ProjectTemplate','{93956220-13B9-4339-96D3-DE1BACF84FAF}','ProjectTemplate','Events','http://connect.wolterskluwer.com/sites/projectmanagement/ProjectTemplate/Lists/Events/AllItems.aspx','FALSE');		
		ExportHailStorm(type,weburl,guid,webname,listname,listurl,'FALSE');
	}
	else
	{
		alert("You don't have Outlook installed on your machine");
	}
	
	return false;
}

// function for sorting list or ordering position
function Reorder(eSelect, fieldId, iCurrentField, numSelects)
{
    var eForm = eSelect.form;
    var iNewOrder = eSelect.selectedIndex + 1;
    var iPrevOrder;
    var positions = new Array(numSelects);
    var ix;

    for (ix = 0; ix < numSelects; ix++)
    {
	    positions[ix] = 0;
    }
    for (ix = 0; ix < numSelects; ix++)
    {
        positions[eSelect.form[fieldId + ix].selectedIndex] = 1;
    }
    for (ix = 0; ix < numSelects; ix++)
    {
	    if (positions[ix] == 0)
	    {
			iPrevOrder = ix + 1;
			break;
	    }
    }
    if (iNewOrder != iPrevOrder)
    {
	    var iInc = iNewOrder > iPrevOrder? -1:1
	    var iMin = Math.min(iNewOrder, iPrevOrder);
	    var iMax = Math.max(iNewOrder, iPrevOrder);
	    for (var iField = 0; iField < numSelects; iField++)
	    {
			if (iField != iCurrentField)
			{
			    if (eSelect.form[fieldId + iField].selectedIndex + 1 >= iMin && eSelect.form[fieldId + iField].selectedIndex + 1<= iMax)
			    {
					eSelect.form[fieldId + iField].selectedIndex += iInc;
				}
			}
	    }
    }
}

/********************************************************************
/* The function to convert javascript date to ISO8601 datetime string
/********************************************************************/
function ConvertToISO8601DateTimeString(d)
{
	var retVal = d.getUTCFullYear() + '-' + 
				 MakeSure2Digits(d.getUTCMonth()+1) + '-' + 
				 MakeSure2Digits(d.getUTCDate()) + 'T' + 
				 MakeSure2Digits(d.getUTCHours()) + ':' + 
				 MakeSure2Digits(d.getUTCMinutes()) + ':' + 
				 MakeSure2Digits(d.getUTCSeconds()) + 'Z';
				 
	return retVal;
}

function MakeSure2Digits(val)
{
	var retVal = '0' + val;
	
	if (retVal.length > 2)
	{
		retVal = val;
	}
	
	return retVal;
}


// The function to print a certain webpart
function PrintWebPart(webPartID, cssFiles)
{
	var windowUrl = '/_layouts/QuestSoftware/WAWebPartPrint.htm';
	var uniqueName = new Date();
	var windowName = 'Print' + uniqueName.getTime();
	var printWindow = window.open(windowUrl, windowName, 'toolbar=0, menubar=0, location=0, resizable=1, scrollbars=1, directories=0');
	
	var theWebPart = document.getElementById(webPartID);	
		
	var styleSheetLink = printWindow.document.getElementById('StyleSheetLink');

	if (styleSheetLink != null)
	{
		styleSheetLink.href = cssFiles;
	}	
	
	var webPartContent= printWindow.document.getElementById('WebPartContent');	
	
	if (webPartContent!= null)
	{
		webPartContent.innerHTML = theWebPart.innerHTML;
	}
	
	printWindow.document.close();
	printWindow.focus();
}

var radGridRowIndex = -1;
var currentRadGrid = null;

// The function to set the index of the row that is currently pointed to. This is needed by the 
// context menu stuff.
function SetMouseOverRowIndex(rowIndex)
{ 
	if(this.Rows[rowIndex].ItemType != "NestedView")
	{
		radGridRowIndex = rowIndex;
		currentRadGrid = this;
	}
}

