var exclude=1;
var agt=navigator.userAgent.toLowerCase();
var win=0;var mac=0;var lin=1;
if(agt.indexOf('win')!=-1){win=1;lin=0;}
if(agt.indexOf('mac')!=-1){mac=1;lin=0;}
var lnx=0;if(lin){lnx=1;}
var ice=0;
var ie=0;var ie4=0;var ie5=0;var ie6=0;var ie7=0;var com=0;var dcm;
var op5=0;var op6=0;var op7=0;
var ns4=0;var ns6=0;var ns7=0;var mz7=0;var kde=0;var saf=0;
if(typeof navigator.vendor!="undefined" && navigator.vendor=="KDE"){
	var thisKDE=agt;
	var splitKDE=thisKDE.split("konqueror/");
	var aKDE=splitKDE[1].split("; ");
	var KDEn=parseFloat(aKDE[0]);
	if(KDEn>=2.2){
		kde=1;
		ns6=1;
		exclude=0;
		}
	}
else if(agt.indexOf('webtv')!=-1){exclude=1;}
else if(typeof window.opera!="undefined"){
	exclude=0;
	if(/opera[\/ ][5]/.test(agt)){op5=1;}
	if(/opera[\/ ][6]/.test(agt)){op6=1;}
	if(/opera[\/ ][7-9]/.test(agt)){op7=1;}
	}
else if(typeof document.all!="undefined"&&!kde){
	exclude=0;
	ie=1;
	if(document.documentElement && typeof document.documentElement.style.maxHeight!="undefined"){
		ie7=1;
	}
	else if(typeof document.getElementById!="undefined"){
		ie5=1;
		if(agt.indexOf("msie 6")!=-1){
			ie6=1;
			dcm=document.compatMode;
			if(dcm!="BackCompat"){com=1;}
			}
		}
	else{ie4=1;}
	}
else if(typeof document.getElementById!="undefined"){
	exclude=0;
	if(agt.indexOf("netscape/6")!=-1||agt.indexOf("netscape6")!=-1){ns6=1;}
	else if(agt.indexOf("netscape/7")!=-1||agt.indexOf("netscape7")!=-1){ns6=1;ns7=1;}
	else if(agt.indexOf("gecko")!=-1){ns6=1;mz7=1;}
	if(agt.indexOf("safari")!=-1 || (typeof document.childNodes!="undefined" && typeof document.all=="undefined" && typeof navigator.taintEnabled=="undefined")){mz7=0;ns6=1;saf=1;}
	}
else if((agt.indexOf('mozilla')!=-1)&&(parseInt(navigator.appVersion)>=4)){
	exclude=0;
	ns4=1;
	if(typeof navigator.mimeTypes['*']=="undefined"){
		exclude=1;
		ns4=0;
		}
	}
if(agt.indexOf('escape')!=-1){exclude=1;ns4=0;}
if(typeof navigator.__ice_version!="undefined"){exclude=1;ie4=0;}

function getElementSafe(id)
{
	var retval;
	if(document.getElementById){
		retval = document.getElementById(id);
	}
	else if(document.all){
		retval = document.all[id];
	}
	else if(document.layers)
	{
		retval = document.layers[id];
	}
	return retval;
}

/* Gets the window position for IE and Firefox, at least */
function windowLeft() {return typeof window.screenLeft != 'undefined' ? window.screenLeft : typeof window.screenX != 'undefined' ?  window.screenX : 0;} 
function windowTop() {return typeof window.screenTop != 'undefined' ? window.screenTop : typeof window.screenY != 'undefined' ?  window.screenY : 0;} 

function popUp(url, width, height, menubar, name, top, left) 
{
	var strName;
	if(!top)
	{
		if(height)
		{
			top = (screen.height / 2 - height / 2);
			if(document.body.offsetHeight == height)
			{
				top += 50;
				if(Math.abs(windowTop() - top) < 50)
				{
					top += 50;
				}
			}
		}
		else
			top = 50;
	}
	if(!left)
	{
		if(width)
		{
			left = (screen.width / 2 - width / 2);
			if(document.body.offsetWidth == width)
			{
				left += 50;
				if(Math.abs(windowLeft() - left) < 50)
				{
					left += 50;
				}
			}
		}
		else
			left = 100;
	}
	if(name) strName = name; else strName = "popup"
	if(menubar) 
	{
	    var winObj = window.open(url, strName, 'toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=yes,left=' + left + ',top=' + top + ',width=' + width + ',height=' + height);
	    winObj.focus();
	}
	else {
	    var winObj = window.open(url, strName, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,left=' + left + ',top=' + top + ',width=' + width + ',height=' + height);
	    winObj.focus();
	}
}

function popUpDrilldown(url,name, width, height)
{
	if (width == null)
		width = 800;
	if (height == null)
		height = 600;
	popUp(url, width, height, false, name);
}

function popUpReport(url,name, width, height)
{
	if (width == null)
		width = 1024;
	if (height == null)
		height = 768;
	popUp(url, width, height, true, name);
}

function popUpReport(url, name, width, height, menu) {
    if (width == null)
        width = 1024;
    if (height == null)
        height = 768;
    popUp(url, width, height, menu, name);
}
function popUpConfirmation(url,name)
{
	popUp(url, 360, 240, false, name);
}

function popUpLookup(url,hiddenName)
{
	var retVal = false;
	var returnId = "";
	returnId = window.showModalDialog(url,'','dialogHeight:400px;dialogWidth:500px');
	if(returnId != "" && returnId != undefined)
	{
		var hiddenField = document.getElementById(hiddenName);
		hiddenField.value = returnId;
		retVal = true;
	}
	return(retVal);
}

function resetDivHeight(divName, lessHeight)
{
	var divElement = getElementSafe(divName);
	if(!divElement)
		alert('could not find ' + divName);
	var divHeight = document.body.clientHeight - lessHeight;
	if(divHeight > 0)
		divElement.style.height = divHeight + 'px';
}

function resetDivWidth(divName, lessWidth)
{
	var divElement = getElementSafe(divName);
	if(!divElement)
		alert('could not find ' + divName);
	var divWidth = document.body.clientWidth - lessWidth;
	if(divWidth > 0)
		divElement.style.width = divWidth + 'px';
}

function resetDivAbsoluteWidth(divName, absWidth)
{
	var divElement = getElementSafe(divName);
	if(!divElement)
		alert('could not find ' + divName);	
	if(absWidth > 0)
		divElement.style.width = absWidth + 'px';
}

function addEvent(obj, evType, fn)
{ 
	if (obj.addEventListener)
	{ 
	  obj.addEventListener(evType, fn, false); 
	  return true; 
	}
	else if (obj.attachEvent)
	{ 
	  var r = obj.attachEvent("on"+evType, fn); 
	  return r; 
	}
	else
	{ 
	  return false; 
	} 
}

/* for Dev purposes */
function showWidth(control)
{
	alert(control.id + '\'s width = ' + control.offsetWidth);
}
function showHeight(control)
{
	alert(control.id + '\'s height  = ' + control.offsetHeight);
}

var pageHeaderHeight = 63;
var gutterCurveTopHeight = 30;
var searchBarAreaHeight = 33;
var listToolbarHeaderHeight = 38;
var listToolbarHeight = 34;
var listColumnHeight = 21;
var listPageTable = 21;
var gridFooterHeight = 20;
var listFooterHeight = 12;
var pageFooterHeight = 46;
var bottomMargin = 17; // offset by 7 for firefox

/* Fix IE Background Image Flicker */
if (ie) {
	try {
		document.execCommand("BackgroundImageCache", false, true);
	} catch(e) {}
}

/* BEGIN CUSTOMER FOOTER */
var gridFooterTimeoutDelay = 200;

function buildPagerHtml(grid,footerId)
{
	var htmlPager = "";
	var mid = Math.floor(maxPagerSpan / 2);
	var startPage = grid.PageCount <= maxPagerSpan ? 0 : Math.max(0, grid.CurrentPageIndex - mid);
	// adjust range for last few pages
	if (grid.PageCount > maxPagerSpan)
	{
	  startPage = grid.CurrentPageIndex < (grid.PageCount - mid) ? startPage : grid.PageCount - maxPagerSpan;
	}
	
	var endPage = grid.PageCount <= maxPagerSpan ? grid.PageCount : Math.min(startPage + maxPagerSpan, grid.PageCount);
	
	var buildCustomFooterScript2 = "buildCustomFooter(" + grid.Id + ",\\'" + footerId + "\\');";
	var buildCustomFooterScript = "buildCustomFooter(" + grid.Id + ",'" + footerId + "');";

	if (grid.PageCount > maxPagerSpan && grid.CurrentPageIndex > mid)
	{
	  htmlPager += "<a href=\"#\" onclick=\"" + grid.Id + ".Page(0);" + buildCustomFooterScript + "return false;\">&laquo;&nbsp;First</a>&nbsp;...&nbsp;";
	  htmlPager += "<a href=\"#\" onclick=\"" + grid.Id + ".PreviousPage();" + buildCustomFooterScript + "return false;\">&lt;</a>&nbsp;";
	}
	
	for (var page = startPage; page < endPage; page++)
	{
		var showPage = page + 1;
		if (page == grid.CurrentPageIndex)
		{
			htmlPager += showPage + '&nbsp;';
		}
		else
		{
			htmlPager += "<a href=\"#\" onclick=\"" + grid.Id + ".Page(" + page + ");" + buildCustomFooterScript + "return false;\">" + showPage + "</a>&nbsp;";
		}
	}
	
	if (grid.PageCount > maxPagerSpan && grid.CurrentPageIndex < grid.PageCount - mid)
	{
		htmlPager += "<a href=\"#\" onclick=\"" + grid.Id + ".NextPage();" + buildCustomFooterScript + "return false;\">></a>&nbsp;...&nbsp;";
		htmlPager += "<a href=\"#\" onclick=\"" + grid.Id + ".Page(" + (grid.PageCount - 1) + ");" + buildCustomFooterScript + "return false;\">Last&nbsp;&raquo;</a>&nbsp;";
	}
	
	return htmlPager;
}

function buildPageXofYHtml(grid)
{
	var htmlPageXofY;

	if(grid.PageCount == 0)
		htmlPageXofY = '0 items';
	else
		htmlPageXofY = "Page&nbsp;<strong>" + (grid.CurrentPageIndex + 1) + "</strong>&nbsp;of&nbsp;<strong>" + (grid.PageCount) + "</strong>&nbsp;(" + grid.RecordCount + '&nbsp;items)';

	return htmlPageXofY;
}

function onPage(newPage,grid,gridId)
{
	// delay call so that Grid's client properties have their new values
	setTimeout("showCustomFooter();",gridFooterTimeoutDelay);
	return true;
}

var grids = new Array();
var gridIds = new Array();
var tableIds = new Array();
var maxPagerSpan = 5; // should be at least 2

function buildCustomFooter(grid, footerId)
{
	if (typeof(grid) != 'undefined')
	{
		var pagerCellId = footerId + '_pagerCell';
		var pagerCell = document.getElementById(pagerCellId);
		var pagerHtml = buildPagerHtml(grid,footerId);
		pagerCell.innerHTML = pagerHtml;
		
		var indexCellId = footerId + '_indexCell';
		var indexCell = document.getElementById(indexCellId);
		var pageXofYHtml = buildPageXofYHtml(grid);
		indexCell.innerHTML = pageXofYHtml;
	}
	else
	{
		setTimeout('buildCustomFooter(' + grid.Id + '\'' + footerId + '\');', gridFooterTimeoutDelay);
	}
}
/* END CUSTOM FOOTER */