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)
	{
		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);
	}
	else
	{
		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);
	}
}

function popUpDrilldown(url,name, width, height)
{
	if (width == null)
		width = 800;
	if (height == null)
		height = 600;
	popUp(url, width, height, false, 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 CUSTOMER FOOTER */