var funcNames = ["Sum", "Min", "Max", "Cnt"];
function DataGridViewCol(pLabel, pDataType, pWidth, pAlign, pMsgIndex)
{
	var t = this;
	t.label = pLabel;
	t.dataType = pDataType;
	t.width = (pWidth < 1 ? 1 : pWidth);
	t.align = pAlign;
	t.index = pMsgIndex;//column order
	t.groupFunc = 0;//1=sum;2=min;4=max;8=count
	t.isGroup = false;
}
function DataGridViewRow(pRow, pIndex)
{
	var t = this;
	t.row = pRow;
	t.index = pIndex;
	t.isGroup = false;
	t.key;
}
function DataGridView(pGrid, pVarName)
{
	//debugger
	var t = this;
	t.grid = pGrid;
	t.varName = pVarName;
	t.cols;//array of DataGridViewCol
	t.rows;
	t.origRows;
	t.blankRow;
	// constants
	t.style = "css/datagrid.css";
	t.browser = 1;
	t.showCheck = false;
	// others
	t.selItm = null;
	t.draggedCol;
	t.sortCol = null;
	t.sortOrder = 0;
	// event handlers
	t.keyHandler;
	t.selectHandler;
	t.dblClickHandler;
	t.mouseClickHandler;
	t.win;
	
	t.groupCols;
	t.allowGroup = false;
	
	t.init = function init()
	{
		
		t.cols = new Array();
		t.origRows = new Array();
		t.rows = null;
		t.groupCols = new Array();
		t.sortCol = null;
		//t.win.alert("Hello");
	}
	
	t.addCol = function addCol(pLabel, pDataType, pWidth, pMsgIndex, pGroupFunc)
	{
		if (pDataType == 1) 
			pAlign = "left";
		else 
			if ((pDataType == 2) || (pDataType == 3)) 
				pAlign = "right";
			else 
				pAlign = "center";
		var lCol = new DataGridViewCol(pLabel, pDataType, pWidth, pAlign, pMsgIndex);
		lCol.groupFunc = pGroupFunc;
		t.cols.push(lCol);
	}
	t.addCols = function addCols(pGridCols)
	{
		for (lPtr = 0; lPtr < pGridCols.length; lPtr++) 
			t.addCol(pGridCols[lPtr][0], pGridCols[lPtr][1], pGridCols[lPtr][2], pGridCols[lPtr][3], pGridCols[lPtr].length > 4 ? pGridCols[lPtr][4] : 0);
	}
	t.addRowAt = function(pRow, pInx, pKey)
	{
		//Insert Row At specified Index
		var ix = t.origRows.length;
		var lRowO = new DataGridViewRow(pRow, 0);
		if (pKey != null) lRowO.key = pKey;
		if (ix == 0) 
			lRowO.index = 0;
		else 
			lRowO.index = (ix);
		t.rows.splice(pInx, 0, lRowO);
	}
	t.addRow = function addRow(pRow, pKey)
	{
		lIdx = t.origRows.length;
		var lRow = new DataGridViewRow(pRow, lIdx);
		if (pKey != null) lRow.key = pKey;
		t.origRows.push(lRow);
	}
	t.getHdr = function getHdr()
	{
		
		var lEvHdl = "var tWin=window.top;";
		lEvHdl += "var bjs=tWin.getBaseJS(window);"
		lEvHdl += "function hs(ev){parent." + t.varName + ".handleScroll(ev);}";
		lEvHdl += "function regEventHdlr(){";
		lEvHdl += "var lst=new Array();";
		lEvHdl += "lst.push([document, 'keydown', handleKey]);";		
		//lEvHdl += "lst.push([document, 'scroll', parent." + t.varName + ".handleScroll]);";
		lEvHdl += "lst.push([window, 'scroll', hs]);";
		//lEvHdl += "lst.push([document, 'help', function(ev){ev.stop();return false;}]);";
		//lEvHdl += "lst.push([window, 'help', function(ev){ev.stop();return false;}]);";
		if (t.mouseClickHandler != null) {
			lEvHdl += "lst.push([document, 'mouseup', parent." + t.mouseClickHandler + "]);";
			lEvHdl += "lst.push([document, 'mousedown', parent." + t.mouseClickHandler + "]);";
		}
		//lEvHdl +="alert(parent." + t.varName + ".handleScroll);";
		lEvHdl += "bjs.regListeners(lst);";
		lEvHdl += "}";
		lEvHdl += "function handleKey(pEvent){";
//		lEvHdl +="parent." + t.varName + ".keyDown(pEvent);";
		lEvHdl +="parent." + t.varName + ".rowKeyDown(pEvent.srcEm(),pEvent);";
		//lEvHdl += "tWin.handleKey(pEvent);";
		lEvHdl += "}";
		
		
		var lHdr = "<html><head><link rel='stylesheet' type='text/css' href='" + t.style + "'/><script language=JavaScript>" + lEvHdl + "</script></head>";
		
		lHdr += "<body class=bodystyl onload='javascript:regEventHdlr();' onhelp='javascript:return false;'>";
		return lHdr;
	}
	t.show = function show()
	{
		
		var lDoc = t.grid.contentWindow.document;
		var lHdr = "", lCol;
		var lHtml = t.getHdr() + "<form id=dataform name=dataform>";
		if (t.rows == null) t.rows = t.origRows;
		var lFunc = "='javascript:parent." + t.varName + ".dragCol(event,\"";
		var lCellWid = 0;
		var lCellHdr = "";
		if (t.allowGroup) {
			lCellWid += 15;
			lCellHdr += "<input class=btnsml type=button value='-' onclick=javascript:parent." + t.varName + ".toggleGrp(-1,this)>";
		}
		if (t.showCheck) {
			lCellWid += 25;
			lCellHdr += "<input type=checkbox onclick=javascript:parent." + t.varName + ".selectAll(this)>";
		}
		lTotWid = 0;
		for (lCPtr = 0; lCPtr < t.cols.length; lCPtr++) 
			lTotWid += t.cols[lCPtr].width;
		if (t.allowGroup) {
			lHdr += "<table class=tblstyl><tr><td class=cellhdr width=80px>Group By :</td>";
			lGrpWid = lTotWid;
			for (lCPtr = 0; lCPtr < t.groupCols.length; lCPtr++) {
				lCol = t.groupCols[lCPtr];
				lHdr += "<td class=cellhdr width=" + lCol.width + "><input class=btnsml type=button value='X' onclick=javascript:parent." + t.varName + ".removeGroup(" + lCPtr + ")>" + lCol.label + "</td>";
				lGrpWid -= lCol.width;
			}
			lGrpWid += lCellWid - 80;
			if (lGrpWid < 120) lGrpWid = 120;
			lHdr += "<td width=" + lGrpWid + "px class=cellhdr align=center ondragenter='return false;' ondragover='return false;' ondrop" + lFunc + "D\",-1)'>&gt;&gt; Drop here &lt;&lt;</td></tr></table>";
		}
		lHdr += "<table class=tblstyl style='table-layout:fixed' width=" + lTotWid + ">";
		lColHdr = "";
		if (lCellWid > 0) lColHdr += "<col width=" + lCellWid + ">";
		for (lPtr = 0; lPtr < t.cols.length; lPtr++) 
			lColHdr += "<col width=" + t.cols[lPtr].width + ">";
		lHdr += lColHdr;
		//header
		if (lCellWid > 0) lHdr += "<tr><td width=" + lCellWid + "px class=cellhdr align=right>" + lCellHdr + "</td>";
		for (lPtr = 0; lPtr < t.cols.length; lPtr++) {
			lCol = t.cols[lPtr];
			lNm="";
			if(t.browser==1)
			lNm="_anch_"+lPtr;
			lHdr += "<td style=overflow:hidden; width=" + lCol.width + "px align=" + lCol.align + " class=cellhdr ondragenter='return false;' ondragover='return false;' ondrop" + lFunc + "D\"," + lPtr + ")' ondblclick='javascript:parent." + t.varName + ".sort(" + lPtr + ")'>";
			lHdr += "<a class=hdrlnk title='Double click to sort. Drag and drop to move column' style='text-decoration:none' name='"+lNm+"' id='"+lNm+"' href=" + (t.browser == 1 ? "#"+lNm : "javascript:void(0)") + " ondragstart" + lFunc + "S\"," + lPtr + ")'>" + lCol.label;
			if ((t.sortCol != null) && (t.sortCol.index == lCol.index)) {
				if (t.sortOrder == 1) lHdr += '' + "&nbsp;&Delta;";//"^";
				if (t.sortOrder == -1) lHdr += '' + "&nbsp;&nabla;";//"v";
			}
			lHdr += "</a></td>\n";
		}
		lHdr += "</tr></table>\n";
		lHtml += "<div id=datahdr name=datahdr style='position:absolute;top:0px;left:0px'>" + lHdr + "</div>";
		lHtml += lHdr;
		//onkeydown='javascript:parent."+t.varName+".keyDown(event)'
		lHtml += "<table id=datatable name=datatable class=tblstyl style='table-layout:fixed' width=" + lTotWid + " >";
		lHtml += lColHdr;
		// rows
		lFunc = "='javascript:parent." + t.varName + ".";
		for (lRPtr = 0; lRPtr < t.rows.length; lRPtr++) {
			lRow = t.rows[lRPtr];
			lRowSuff = (lRow.isGroup ? "g" : (lRPtr % 2));
			lTrNm="tr_id_"+lRPtr;
			lTmp = "<tr id='"+lTrNm+"' name='"+lTrNm+"' class=rowdata" + lRowSuff + " onClick" + lFunc + "clickRow(this);' ondblclick" + lFunc + "dblClickRow(this)'>";
			for (lPtr = 0; lPtr < t.cols.length; lPtr++) {
				lCol = t.cols[lPtr];
				if ((lPtr == 0) && (lCellWid > 0)) lTmp += "<td width=" + lCellWid + "px class=celldata" + lRowSuff + " align=right>" + (lRow.isGroup ? "<input class=btnsml id='btnGrp" + lRPtr + "' name='btnGrp" + lRPtr + "' type=button value='-' onclick=javascript:parent." + t.varName + ".toggleGrp(" + lRPtr + ",this)>" : "") + (t.showCheck ? ("<input type=checkbox id=chkSel" + lRPtr + " name=chkSel" + lRPtr + " value=" + lRPtr + (lRow.isGroup ? " onclick=parent." + t.varName + ".selectGrp(" + lRPtr + ",this)" : "") + ">") : "") + "</td>";
				lTmp += "<td style=overflow:hidden; width=" + lCol.width + "px align=" + lCol.align + " class=celldata" + lRowSuff + ">";
				if (lRow.isGroup && lCol.groupFunc > 0) {
					if (lCol.groupFunc > 0) {
						lData = lRow.row[lCol.index];
						lCellData = null;
						lRawData = null;
						lFCnt = 0;
						for (lTPtr = 0; (lData != null) && (lTPtr < lData.length); lTPtr++) {
							if (lData[lTPtr] != null) {
								lRawData = lData[lTPtr];
								lCellData = (lCellData == null ? "" : (lCellData + "<br>")) + funcNames[lTPtr] + "=" + lRawData;
								lFCnt++;
							}
						}
						if (lFCnt == 1) lCellData = lRawData;
					}
				}
				else 
					lCellData = lRow.row[lCol.index];
				if (lCellData == null || (lCol.isGroup && !lRow.isGroup)) lCellData = '';
				
				if (lPtr == 0) {
					lTmp += "<input type=text readonly class=rowdata" + lRowSuff + " style='height:100%;width:100%;border:0px' onfocus" + lFunc + "rowFocus(this)' onkeydown" + lFunc + "rowKeyDown(this,event)' value='" + lCellData + "'>";//</td>
				}
				else 
					lTmp += lCellData;
				lTmp += "</td>\n";
			}
			lTmp += "</tr>\n";
			lHtml += lTmp;
		}
		lHtml += "</table></form></body></html>";
		if(t.grid.contentWindow.bjs)
		  t.grid.contentWindow.bjs.unRegListener();
		lDoc.open();
		lDoc.write(lHtml);
		lDoc.close();
		//initialize
		t.selItm = null;
	}
	//Added by vishal
	t.remove=function()
	{
        if(t.selItm==null)return false;
		var lNd=t.selItm.parentNode.parentNode;
		var lTab=lNd.parentNode;
        var lNIx=lNd.rowIndex;
		var lNnd=lTab.rows[lNIx+1];
        lNd.parentNode.removeChild(lNd);
        t.rows.splice(lNIx,1);
        t.selItm=null;
		t.clickRow(lNnd);
		return true;
    }
	t.selectedIdx=function(pFlg){
        if (t.selItm != null) {
			var lNd=t.selItm.parentNode.parentNode;
			if (pFlg)return (isNaN(lNd.id.replace("tr_id_",""))?-1:parseInt(lNd.id.replace("tr_id_",""),10));
			else return lNd.rowIndex;
		}
		else 
			return -1;
    }
    t.selectRow=function(pIdx){
		if(pIdx>=0)
		{
            var lEm=t.grid.contentWindow.document.getElementById("tr_id_" + pIdx);
			if (lEm != null) 
			{
				var lRow = t.rows[lEm.rowIndex];
                if(lRow==null || lRow.isGroup)return;
				t.clickRow(lEm);
			}
        }
    }
	t.selectedRow = function selectedRow()
	{
		if (t.selItm != null) {
			var lRow = t.rows[t.selItm.parentNode.parentNode.rowIndex];
			return (lRow.isGroup ? null : lRow.row);
		}
		return null;
	}
	t.selectGrp = function selectGrp(pIndex, pSelAll)
	{
		for (lRPtr = pIndex + 1; lRPtr < t.rows.length; lRPtr++) {
			if (t.rows[lRPtr].isGroup) break;
			var lOpt = t.grid.contentWindow.document.getElementById("chkSel" + lRPtr);
			lOpt.checked = pSelAll.checked;
		}
	}
	t.selectAll = function selectAll(pSelAll)
	{
		for (lRPtr = 0; lRPtr < t.rows.length; lRPtr++) {
			var lOpt = t.grid.contentWindow.document.getElementById("chkSel" + lRPtr);
			lOpt.checked = pSelAll.checked;
		}
	}
	t.toggleGrp = function toggleGrp(pIndex, pObj)
	{
		var lDoc = t.grid.contentWindow.document;
		var lRows = lDoc.getElementById("datatable").rows;
		var lDisp = pObj.value == "-" ? "none" : "";
		var lNewVal = (pObj.value == "-" ? "+" : "-");
		for (lRPtr = pIndex + 1; lRPtr < t.rows.length; lRPtr++) {
			if (t.rows[lRPtr].isGroup && (pIndex >= 0)) break;
			if (!t.rows[lRPtr].isGroup) 
				lRows[lRPtr].style.display = lDisp;
			else 
				lDoc.getElementById("btnGrp" + lRPtr).value = lNewVal;
		}
		pObj.value = lNewVal;
		t.handleScroll();
	}
	t.selectedRows = function selectedRows()
	{
		if (!t.showCheck) 			
			return null;
		var lRetRows = new Array();
		for (var lRPtr = 0; lRPtr < t.rows.length; lRPtr++) {
			if (t.rows[lRPtr].isGroup) continue;
			var lOpt = t.grid.contentWindow.document.getElementById("chkSel" + lRPtr);
			if (lOpt.checked) lRetRows.push(t.rows[lRPtr].row);
		}
		return lRetRows;
	}
	// event handlers
	t.keyDown = function keyDown(pEvent)
	{
		if (pEvent.stop) {
			pEvent.stop();
		}
		if (t.keyHandler != null) eval("t.win." + t.keyHandler + "(pEvent);");
		
	}
	t.rowFocus = function rowFocus(pSrc)
	{
		if (t.selItm != null) {
			lRow = t.selItm.parentNode.parentNode;
			lRowSuff = (lRow.rowIndex) % 2;
			if (t.rows[lRow.rowIndex].isGroup) lRowSuff = 'g';
			lRow.className = "rowdata" + lRowSuff;
			if (t.selItm.type == "text") t.selItm.className = "rowdata" + lRowSuff;
		}
		t.selItm = pSrc;
		lRow = t.selItm.parentNode.parentNode;
		var lClassName = 'rowsel';
		if (t.rows[lRow.rowIndex].isGroup) lClassName += 'g';
		lRow.className = lClassName;
		if (t.selItm.type == "text") t.selItm.className = lClassName;
		if (t.selectHandler != null) eval("t.win." + t.selectHandler + "(" + lRow.rowIndex + ")");
	}
	t.rowKeyDown = function rowKeyDown(pSrc, pEvent)
	{
		lRow = pSrc.parentNode.parentNode;
		lKey = pEvent.keyCode;
//			alert("rowkeydown1");
		if(lRow==null&&t.selItm!=null)lRow=(t.selItm.parentNode.parentNode);
		else if(lRow==null) return;
		if(lRow.rowIndex==null&&t.selItm==null)return;//parentNode.parentNode.
		if(lRow.parentNode==null)lRow=(t.selItm.parentNode.parentNode);
		var lFlg = true;
		if (lKey == 40) {
			if (lRow.rowIndex < lRow.parentNode.rows.length - 1) {
				t.clickRow(lRow.parentNode.rows[lRow.rowIndex + 1]);
				lFlg = false;
			}
		}
		else if (lKey == 38) {
			if (lRow.rowIndex > 0) {
				t.clickRow(lRow.parentNode.rows[lRow.rowIndex - 1]);
				lFlg = false;
			}
		}
		else if (t.keyDown != null) 
		{
//			alert("rowkeydown");
            t.keyDown(pEvent);
//			eval("t.win." + t.keyHandler + "(pEvent);");
            lFlg = false;
		}
		if (!lFlg) {
			pEvent.stopPropagation ? pEvent.stopPropagation() : pEvent.cancelBubble = true;
            pEvent.preventDefault ? pEvent.preventDefault() : pEvent.returnValue = false;
//			pEvent.returnValue = false;
//			pEvent.cancelBubble = true;
		}
	}
	t.clickRow = function clickRow(pRow)
	{
		try {
			lCellId = (t.showCheck || t.allowGroup) ? 1 : 0;
			if (pRow == null) 				
				return;
			if (t.browser == 1) 
				pRow.cells[lCellId].children[0].focus();
			else 
				//pRow.cells[lCellId].childNodes[0].focus();	
				pRow.cells[lCellId].childNodes[0].onfocus();
		} 
		catch (lEx) {
		}
	}
	t.clickRowNo = function clickRowNo(pRowNo)
	{
		if (t.browser == 1) {
			var lRows = t.grid.contentWindow.document.getElementById("datatable").rows;
			if (lRows.length > pRowNo) t.clickRow(lRows[pRowNo]);
		}
	}
	t.dblClickRow = function dblClickRow(pRow)
	{
		if (t.dblClickHandler != null) eval("t.win." + t.dblClickHandler + "(" + pRow.rowIndex + ")");
	}
	t.dragCol = function dragCol(pEvent, pMode, pCol)
	{
		if (pMode == "S") {
			t.draggedCol = pCol;
		}
		else 
			if (pMode == "D") {
				if (t.draggedCol != pCol) {
					lCol = t.cols[t.draggedCol];
					if (pCol == -1) {
						t.addGroup(lCol);
						t.group();
					}
					else {
						t.cols.splice(t.draggedCol, 1);
						t.cols.splice(pCol, 0, lCol);
					}
					t.draggedCol = -1;
					t.show();
				}
			}
	}
	t.sort = function sort(pCol)
	{
		if ((t.sortCol != null) && (t.cols[pCol].index == t.sortCol.index)) 
			t.sortOrder = (t.sortOrder == 0 ? 1 : (t.sortOrder == 1 ? -1 : 0));
		else 
			t.sortOrder = 1;
		t.sortCol = t.cols[pCol];
		if (t.sortOrder != 0) t.quickSort(0, t.rows.length - 1);
		t.show();
	}
	t.quickSort = function quickSort(pStart, pEnd)
	{
		var k = Math.round((pStart + pEnd) / 2);
		var i = pStart;
		var j = pEnd;
		while (j > i) {
			while (t.compare(i, k)) 
				++i;
			while (t.compare(k, j)) 
				j = j - 1;
			if (i == k) 
				k = j;
			else 
				if (j == k) k = i;
			if (i <= j) {
				var lRow = t.rows[i];
				t.rows[i] = t.rows[j];
				t.rows[j] = lRow;
				++i;
				j = j - 1;
			}
		}
		if (pStart < j) t.quickSort(pStart, j);
		if (i < pEnd) t.quickSort(i, pEnd);
	}
	t.compare = function compare(pRow1, pRow2)
	{
		var lData1, lData2;
		for (lGPtr = 0; lGPtr < t.groupCols.length; lGPtr++) {
			lData1 = t.parseData(t.rows[pRow1], t.groupCols[lGPtr]);
			lData2 = t.parseData(t.rows[pRow2], t.groupCols[lGPtr]);
			if (lData1 < lData2) 
				return true;
			else 
				if (lData1 > lData2) 					
					return false;
		}
		if (t.rows[pRow1].isGroup) 
			return true;
		else 
			if (t.rows[pRow2].isGroup) 				
				return false;
		if (t.sortCol != null) {
			lData1 = t.parseData(t.rows[pRow1], t.sortCol);
			lData2 = t.parseData(t.rows[pRow2], t.sortCol);
			if (t.sortOrder == 1) 
				return (lData1 < lData2);
			else 
				if (t.sortOrder == -1) 					
					return (lData1 > lData2);
		}
		return false;
	}
	t.parseData = function parseData(pRow, pCol)
	{
		lOData = pRow.row[pCol.index];
		if (pCol.dataType == 1) 
			return (lOData == null ? '' : lOData);
		else 
			if ((lOData == null) || (lOData == '')) 
				return null;
			else 
				if (pCol.dataType == 2) 
					return parseInt(lOData);
				else 
					if (pCol.dataType == 3) 
						return parseFloat(lOData);
					else 
						return lOData;
	}
	t.group = function group()
	{
		for (var lCPtr = 0; lCPtr < t.cols.length; lCPtr++) 
			t.cols[lCPtr].isGroup = false;
		t.rows = t.origRows;
		if ((t.groupCols == null) || (t.groupCols.length == 0) || (t.origRows.length == 0)) 			
			return;
		for (var lCPtr = 0; lCPtr < t.groupCols.length; lCPtr++) 
			t.groupCols[lCPtr].isGroup = true;
		t.quickSort(0, t.origRows.length - 1);
		t.rows = new Array();
		var lGrpRow = null;
		var lSame, lData1, lData2;
		for (var lRPtr = 0; lRPtr < t.origRows.length; lRPtr++) {
			lSame = (lGrpRow != null);
			lRow = t.origRows[lRPtr];
			for (var lCPtr = 0; lSame && (lCPtr < t.groupCols.length); lCPtr++) {
				lData1 = t.parseData(lGrpRow, t.groupCols[lCPtr]);
				lData2 = t.parseData(lRow, t.groupCols[lCPtr]);
				if (lData1 != lData2) lSame = false;
			}
			if (!lSame) {
				lGrpRow = new DataGridViewRow(new Array(), 0);
				lGrpRow.isGroup = true;
				for (var lCPtr = 0; lCPtr < t.groupCols.length; lCPtr++) {
					var lColIdx = t.groupCols[lCPtr].index;
					lGrpRow.row[lColIdx] = lRow.row[lColIdx];
				}
				t.rows.push(lGrpRow);
			}
			t.rows.push(lRow);
			// summaries
			
			for (var lCPtr = 0; lCPtr < t.cols.length; lCPtr++) {
				var lCol = t.cols[lCPtr];
				if (lCol.groupFunc > 0) {
					var lGrpCell = lGrpRow.row[lCol.index];
					var lData1 = t.parseData(lRow, lCol);
					if (lGrpCell == null) {
						lGrpCell = new Array(4);
						lGrpRow.row[lCol.index] = lGrpCell;
					}
					if ((lCol.groupFunc & 1) > 0) lGrpCell[0] = lGrpCell[0] == null ? lData1 : lData1 + lGrpCell[0];
					if ((lCol.groupFunc & 2) > 0) lGrpCell[1] = lGrpCell[1] == null ? lData1 : (lData1 < lGrpCell[1] ? lData1 : lGrpCell[1]);
					if ((lCol.groupFunc & 4) > 0) lGrpCell[2] = lGrpCell[2] == null ? lData1 : (lData1 > lGrpCell[2] ? lData1 : lGrpCell[2]);
					if ((lCol.groupFunc & 8) > 0) lGrpCell[3] = lGrpCell[3] == null ? 1 : lGrpCell[3] + 1;
				}
			}
		}
	}
	t.addGroup = function addGroup(pCol)
	{
		for (lGPtr = t.groupCols.length - 1; lGPtr >= 0; lGPtr--) {
			if (t.groupCols[lGPtr] == pCol) t.groupCols.splice(lGPtr, 1);
		}
		t.groupCols.push(pCol);
	}
	t.removeGroup = function removeGroup(pIndex)
	{
		t.groupCols.splice(pIndex, 1);
		t.group();
		t.show();
	}
	t.handleScroll = function handleScroll()
	{
		var lDoc = t.grid.contentWindow.document;
		//lDoc.all["datahdr"].style.top = lDoc.body.scrollTop;
		lDoc.getElementById("datahdr").style.top = lDoc.body.scrollTop;
	}
	t.clear = function clear()
	{
		var lDoc = t.grid.contentWindow.document;
		var lHtml = t.getHdr() + "</body></html>";
		lDoc.open();
		lDoc.write(lHtml);
		lDoc.close();
	}
	//t.clear();
}

