function validateDirty(nextFunction, blnSave, suppressMessages)
{
	var isDirty=false;
	if(dgi(PageProperties.ToolbarClientID + '_hdnIsDirty')){
		isDirty=(dgi(PageProperties.ToolbarClientID + '_hdnIsDirty').value == '1' ? true : false);
	}
	var isValid = true;
	var errorCombos = new Array();
	if(typeof(suppressMessages) == 'undefined') suppressMessages=false;
	if (blnSave)
	{
		if (!isDirty && !suppressMessages){
			alert('No page changes detected. Click the CANCEL button to exit without making changes.')
			return;
		}
		if (typeof(Page_ClientValidate) == 'function'){
			Page_ClientValidate();
		}
		//The webcombos check for the existance of gWebCombo and populate it with their names
		// otherwise this function laggs when there are alot of controls
		for (i=0; i<gWebCombos.length;i++) {
			var ctl=document.getElementById(gWebCombos[i]);
			//if(typeof(ctl.displayError) != 'undefined'){
				ctl.displayError(false)
				if(ctl.selectedIndex < 0 && ctl.validateRequired)
				{
					if (typeof(ctl.onBeforeValidate) != 'undefined')
					{
						if (!eval(ctl.onBeforeValidate))
						{
							ctl.displayError(true);
							isValid=false;
							errorCombos[errorCombos.length] = ctl.id	
						}
					}else{
						ctl.displayError(true);
						isValid=false;
						errorCombos[errorCombos.length] = ctl.id
					}
				}
			//}
		}
		if (typeof(Page_ValidationSummaries) != "undefined" && !isValid){
			for (i = 0; i < errorCombos.length; i++) {	
				var summary, sums, s;
				if (dgi(errorCombos[i]).errormessage != ''){
					for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
						summary = Page_ValidationSummaries[sums];
						if (summary.style.display!=''){
							summary.innerHTML = '';
							if (summary.innerHTML == '' && typeof(summary.headertext) == "string")
								summary.innerHTML = summary.headertext + '<BR>';
						}	
						if (!(summary.innerHTML.lastIndexOf('<BR>') >= (summary.innerHTML.length -4)))
							summary.innerHTML += '<BR>';
						summary.innerHTML += dgi(errorCombos[i]).errormessage + '<BR>';
						summary.style.display='';
					}
				}else{
					for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
						summary = Page_ValidationSummaries[sums];
						if (summary.style.display!=''){
							summary.innerHTML = '';
							if (summary.innerHTML == '' && typeof(summary.headertext) == "string")
								summary.innerHTML = summary.headertext + '<BR>';
						}
						summary.style.display='';
					}
				}
			}
		}
		if(typeof(Page_IsValid) != 'undefined'){
			if(!Page_IsValid) isValid=false;
		}
		if(!isValid){
			if(!suppressMessages) alert('Errors found on page!\n\nPlease make corrections to all errors indicated in red.');
			return
		}
		
	}else
	{
		if (isDirty && !suppressMessages)
		{
			if (! confirm('Changes were detected on this page. Click OK to continue without saving?'))
			{
				return;
			}
		}
	}
	bypassDirty=true;
	if(nextFunction != null) eval(nextFunction);
	return true;
}

function unvalidate(myValidationGroup){
	// Remove the validator control(s) from display.
	var myValidators = Page_Validators;
	if ((typeof(myValidators) != "undefined") && (myValidators != null)){
		for (i=0;i<myValidators.length;i++){
			var myValidator = myValidators[i];
			if (myValidationGroup == null || IsValidationGroupMatch(myValidator, myValidationGroup)){
				if (myValidator.style.visibility.length > 0 && myValidator.style.display.length == 0){
					myValidator.style.visibility = 'hidden';
				}else if (myValidator.style.display.length > 0 && myValidator.style.visibility.length == 0){
					myValidator.style.display = 'none';
				}
			}
		}
	}

	// Remove the validator summary(ies) from display.
	var mySummaries = Page_ValidationSummaries;
	if ((typeof(mySummaries) != "undefined") && (mySummaries != null)){
		for(i=0;i<mySummaries.length;i++){
			var mySummary = mySummaries[i];
			if (myValidationGroup == null || IsValidationGroupMatch(mySummary, myValidationGroup)){
				mySummary.style.display = 'none';
			}
		}
	}
}

function confirmDelete(nextFunction)
{
	if (! confirm('Are you sure you want to delete this entry?')) return;
	bypassDirty=true;
	if(typeof(nextFunction) == 'string'){
		eval(nextFunction)
	}else{
		nextFunction();
	}
}
function subMenu_ViewClick(args, headerormodule, xtra, viewmenu){
	if(!args)args='';
	if(!xtra)xtra='';
	if(viewmenu==null) viewmenu=false;
	if(args == 'save'){
		popToolbar.Show('winStandard','../shared/saveviewdialog.aspx?module=' + headerormodule + '&viewkey=' + PageProperties.CurrentViewKey + '&args=' + xtra,600,300,'Save View',viewmenu);
	}
	else if(args == 'open'){
		popToolbar.Show('winStandard','../shared/openviewdialog.aspx?module=' + headerormodule + '&args=' + xtra,600,300,'Open View',viewmenu);
	}
	else if(args == 'releaseadvancedview' || args == 'releaseall'){
		Callback.AjaxCallback(args);
	}else{
		Callback.AjaxCallback('quickview', args, headerormodule);
	}
}
function OpenAdvancedView(w, h, strPath){
	var viewpage;
	if(w==null) w=PageProperties.AdvancedViewWidth;
	if(h==null) h=PageProperties.AdvancedViewHeight;
	if(PageProperties.AdvancedViewPagePath!=null && PageProperties.AdvancedViewPagePath!='') strPath = PageProperties.AdvancedViewPagePath;
	if(!strPath){
		var temp = window.location.pathname.toLowerCase().split('/');
		viewpage = replaceAll(temp[temp.length-1],'.aspx','');
		viewpage = viewpage + 'view.aspx';
	}else{
		viewpage=strPath;
	}
	popToolbar.Show('winStandard',viewpage, w, h, 'Advanced View');
}

function subMenu_QueryClick(args)
{
	if(args == 'releaseviewsandqueries' || args == 'releasequery'){
		Callback.AjaxCallback(args);
	}else{
		doPostback('DrillDown', '0,0,../shared/query.aspx');
	}
}
function subMenu_SortClick(strValue, row)
{
	var strSort = '';
	var tables = document.getElementsByTagName('TABLE');
	var row;
	var cell;
	var img;
	var iArray = -1;
	var aSort = new Array();
	var grid = row.parentElement.parentElement;
	
	if (!strValue) strValue = ''
	
	if (strValue != 'release')
	{
		for(var i=0;i<tables.length; i++)
		{
			if(tables[i].className.toLowerCase() == 'gridmain' || tables[i].id.toLowerCase() == 'gridmain')
			{
				row=tables[i].rows[0]
				for(ii=0;ii<row.cells.length;ii++)
				{
					cell = row.cells[ii];
					if (cell.field)
					{
						img = cell.getElementsByTagName('IMG')[0]
						if (img)
						{
							if (img.style.display != 'none')
							{
								iArray += 1;
								aSort[iArray] = cell.sortOrder + ' ' + cell.field + '`' + (img.src.indexOf('asc') > -1 ? 'ASC' : 'DESC');	
							}
						}
					}
				}
			}
		}
		if (aSort.length > 0)
		{
			aSort.sort()
			for (i=0; i<aSort.length; i++)
			{
				strSort = strSort + (strSort == '' ? '' : '|');
				strSort = strSort + aSort[i].substr(aSort[i].indexOf(' ') + 1, aSort[i].length);
			}				
		}	
	}
	Callback.Message('Sorting...').AjaxCallback('SORT', strSort);
}

function viewSelection(id,fmt,optionsdialog,title,dwidth,dheight,tagged,viewkey){
	
	if(!optionsdialog) optionsdialog='';
	if(!title) title='';
	if(!tagged) tagged=false;
	if(!viewkey) viewkey='';
	
	popToolbar.Show('winStandard', '../reporting/ReportViewSelection.aspx?id='+id+'&fmt='+fmt+'&optionsdialog='+
		optionsdialog+'&title='+title+'&tagged='+(tagged ? '1':'0')+'&viewkey='+viewkey+'&width='+dwidth+'&height='+dheight,500,300,'View Selection');
		
}

function addToClipboard(id){
	Callback.Constructor('toolbar','').Message('Adding Image to Clipboard...').AjaxCallback('addtoclipboard',id);
}