//
// Copyright (c) 2002 ComponentOne L.L.C. All rights reserved.
// Version 1.1.20024.1
//
var isIE = (navigator.userAgent.indexOf('MSIE') != -1);


function c1g_getChildTag(o, tag)
{
	var tmp = o.getElementsByTagName(tag);
	return (tmp && tmp.length > 0) ? tmp[0] : null;
}

function c1g_getGridWidth(gn)
{
	var colWidth = 0;
	var div = c1g_getElementById(gn + "_maindiv");
	if (div)
	{
		var a = div.getElementsByTagName("TABLE");
		if (a && a.length > 0)
			colWidth += c1g_getTableWidth(a[0], gn);
	}

	return colWidth;
}

function c1g_getGridHeight(gn)
{
	var rowHeight=0;
	var div=c1g_getElementById(gn + "_maindiv");
	if (div)
	{
		var a = div.getElementsByTagName("TABLE");
		if (a && a.length > 0)
			rowHeight += c1g_getTableHeight(a[0]);
	}

	return rowHeight;
}

//0-left 1-top 2-right 3-bottom
function c1g_getBorderWidth(table, border)
{
	var borderstyle;
	var borderwidth;
	
	switch(border)
	{
		case 0:
		borderstyle=table.style.borderLeftStyle;
		borderwidth=table.style.borderLeftWidth;
		break;
		
		case 1:
		borderstyle=table.style.borderTopStyle;
		borderwidth=table.style.borderTopWidth;
		break;
		
		case 2:
		borderstyle=table.style.borderRightStyle;
		borderwidth=table.style.borderRightWidth;
		break;
		
		case 3:
		borderstyle=table.style.borderBottomStyle;
		borderwidth=table.style.borderBottomWidth;
		break;
	}
	
	if (borderstyle)
	{
		if (borderstyle!="none" && borderwidth)
			return parseInt(borderwidth);
	}else
	{
		borderwidth=table.border;
		if (borderwidth)	
			return parseInt(borderwidth);
	}
	
	return 0;
}

function c1g_getTableWidth(table, gn)
{	
	var colWidth=0;
	if (table && table.rows.length>0)
	{
		var cellspacing = 0;
		
		if (table.cellSpacing)
			cellspacing = parseInt(table.cellSpacing);

		colWidth = c1g_getBorderWidth(table, 0) + c1g_getBorderWidth(table, 2);
	
		if (table.firstChild)
		{
			var cols = c1g_getChildTag(table, "COLGROUP");
			if (cols)
			{
				var th = document.getElementById(gn + "_scrolldiv").clientWidth;
				var len = cols.childNodes.length;
				for(var i=0; i< len; i++)
				{
					var col = cols.childNodes[i];
					if (col.style.display=="")
					{
						if (col.width != "")
							if (col.width.charAt(col.width.length - 1) != "%")
								colWidth += parseInt(col.width) + cellspacing;
							else
								if (th != 0)
									colWidth += (th / 100) * parseInt(col.width);
					}
				}
			}else
			{
				if (table.rows.length>0)
				{
					var firstRow=table.rows[0];
					for (var i = 0; i < firstRow.cells.length; i++)
					{
						var col = firstRow.cells[i];
						if (col.style.display == "" && col.offsetWidth > 0)
							colWidth += col.offsetWidth + cellspacing;
					}
				}
			}
		}
	}

	return colWidth;
}

function c1g_getTableHeight(table)
{	
	var rowHeight = 0;
	
	if (table)
	{
		var cs = (table.cellSpacing) ? parseInt(table.cellSpacing) : 0;

		rowHeight = c1g_getBorderWidth(table, 1) + c1g_getBorderWidth(table, 3);
		rowHeight = table.offsetHeight - cs;
		
		if (rowHeight < 0)
			rowHeight = 0;
	}

	return rowHeight;
}

function c1g_getSubGridWidth(gn, row, col)
{
	var table = c1g_getSubTable(gn, row, col);
	if (table)
		return c1g_getTableWidth(table, gn);
		
	return 0;
}


function c1g_getSubGridHeight(gn, row, col)
{
	var table=c1g_getSubTable(gn, row, col);
	if (table)
		return c1g_getTableHeight(table);

	return 0;
}

function c1g_syncDummySize(gn)
{
	var dummy=c1g_getElementById(gn + "_dummydiv");
	if (dummy)
	{
		dummy.style.width=c1g_getGridWidth(gn);	
		dummy.style.height=c1g_getGridHeight(gn);
	}
}

function c1g_resetPos(gn)
{
	var dummy = c1g_getElementById(gn + "_dummydiv");
	if (dummy)
	{
		dummy.style.left = 0;
		dummy.style.top = 0;
	}
	
	var table00, table01, tale10, table11;

	var div00 = c1g_getSubDiv(gn, 0, 0);
	if (div00)
	{
		div00.style.left = 0;
		div00.style.top = 0;
	}

	var div01 = c1g_getSubDiv(gn, 0, 1);
	if (div01)
	{
		div01.style.left = 0;
		div01.style.top = 0;
	}

	var div10 = c1g_getSubDiv(gn, 1, 0);
	if (div10)
	{
		div10.style.left = 0;
		div10.style.top = 0;
	}
	
	var div11 = c1g_getSubDiv(gn, 1, 1);
	if (div11)
	{
		div11.style.left=0;
		div11.style.top=0;
	}
}

function c1g_syncMainDivSize(gn)
{
	var sv=c1g_getElementById(gn + "_scrolldiv");
	var gv=c1g_getElementById(gn + "_maindiv");
	if (sv && gv)
	{
		gv.style.left=sv.offsetLeft;
		gv.style.top=sv.offsetTop;

		gv.style.width = sv.clientWidth;
		gv.style.height = sv.clientHeight;
	}
}


function c1g_syncTableCols(table1, table2)
{
	if (table1 && table2)
	{
		var colGroup1 = c1g_getChildTag(table1, "COLGROUP");	
		var colGroup2 = c1g_getChildTag(table2, "COLGROUP");	
		if (colGroup1 && colGroup2)
		{
			var len = colGroup1.childNodes.length;
			if (len==colGroup2.childNodes.length)
			{
				for (var i=0; i < len; i++)
				{	
					var col1 = colGroup1.childNodes[i];
					var col2 = colGroup2.childNodes[i];
					var maxWidth = Math.max(col1.width, col2.width);
					col1.width = col2.width = (maxWidth == 0 ? "" : maxWidth);
				}
			}
		}
	}
}

function c1g_syncTableRows(table1, table2)
{
	if (table1 && table2)
	{
		var len = table1.rows.length;
		if (len==table2.rows.length)
		{
			for(var i=0; i<len; i++)
			{
				var row1=table1.rows[i];
				var row2=table2.rows[i];
				if (row1.offsetHeight > row2.offsetHeight)
				{
					row2.style.height=row1.offsetHeight;
					row1.style.height=row1.offsetHeight;					
				}
				else
				{
					row1.style.height=row2.offsetHeight;
					row2.style.height=row2.offsetHeight;					
				}
			}
		}
	}
}

function c1g_syncRCs(gn)
{
	var	table00=c1g_getSubTable(gn, 0, 0);
	var	table01=c1g_getSubTable(gn, 0, 1);
	var	table10=c1g_getSubTable(gn, 1, 0);
	var	table11=c1g_getSubTable(gn, 1, 1);

	c1g_syncTableCols(table00, table10);
	c1g_syncTableCols(table01, table11);
	c1g_syncTableRows(table00, table01);
	c1g_syncTableRows(table10, table11);
}

function c1g_getSubgridsRowHeight(gn, row)
{
	var h1 = c1g_getSubGridHeight(gn, row, 0);
	var h2 = c1g_getSubGridHeight(gn, row, 1); 
	return Math.max(h1, h2);
}

function c1g_getSubgridsColWidth(gn, col)
{
	var w1 = c1g_getSubGridWidth(gn, 0, col); 
	var w2 = c1g_getSubGridWidth(gn, 1, col); 
	return Math.max(w1, w2);
}

//////////////////////////////////////////////////////-----------------------------------------------------------
//////////////////////////////////////////////////////-----------------------------------------------------------
var st = null;

function c1g_isChildDiv(o)
{
	var res = o.firstChild;

	return (res && res.tagName == "DIV") ? res : null;
}

function c1g_copyStyleAtr(from, to, attr)
{
	if (from.style[attr] && (to.style[attr] == ""))
		to.style[attr] = from.style[attr];
}

function c1g_isWrap(tr, cellIdx)
{
	return (!tr.cells[cellIdx].noWrap && !c1g_getattr(tr, "nowrap")); 
}

function c1g_isFixSize(o)
{
	return (c1g_getattr(o, "fix") != null);
}


function c1g_copyFont(from, to)
{
	c1g_copyStyleAtr(from, to, "fontWeight");
	c1g_copyStyleAtr(from, to, "fontSize");
	c1g_copyStyleAtr(from, to, "fontFamily");
}

function c1g_getSize(o, wrap, width, height)
{
	var a = st.rows[0].cells[0];
	var data = c1g_isChildDiv(o) ? o.firstChild : o;

	a.innerHTML = data.innerHTML;

	a.style.cssText = "";	
	c1g_copyFont(o, a); //td
	c1g_copyFont(o.parentNode, a);//tr
	while (o.tagName != "TABLE") o = o.parentNode;
	c1g_copyFont(o, a) //table
	
	var slRes = new Array(a.offsetWidth, a.offsetHeight);
	var wrRes = new Array(0, 0);
	
	if (wrap)
	{
		if (width && width > 0)
			a.style.width = width;
			
		if (height && height > 0)
			a.style.height = height;
		
		wrRes[0] = Math.max(a.offsetWidth, wrRes[0]);
		wrRes[1] = Math.max(a.offsetHeight, wrRes[1]); 
	}		
	
	return (wrap && wrRes[0] && wrRes[1]) ? wrRes : slRes;
}

function c1g_adjustSubTableSizes(t)
{
	var cg =  c1g_getChildTag(t, "COLGROUP");

	if (cg && t.rows)
	{
		var rows = t.rows;
		var cols = cg.childNodes;
		var cp = (t.cellPadding) ? parseInt(t.cellPadding) * 2 : 0;
		cp += (t.cellSpacing) ? parseInt(t.cellSpacing) * 2 : 0;
		
		var cl = cols.length;
		for (var i = 0; i < cl; i++)
		{
			var size = new Array(0, 0);
			var width = 0;
			var colF = c1g_isFixSize(cols[i]);
			
			var rl = rows.length;
			for (var j = 0; j < rl && i < rows[j].cells.length; j++)
			{
				var rowF = c1g_isFixSize(rows[j]);
				
				if (colF && rowF)
					continue;
				
				width = parseInt(cols[i].width);
				var height = parseInt(rows[j].style["height"]);
				var tmp = c1g_getSize(rows[j].cells[i], c1g_isWrap(rows[j], i), width, height);
		
				size[0] = Math.max(size[0], tmp[0]);
				
				if ((tmp[1] > height) && !rowF)
					rows[j].style["height"] = tmp[1] + cp;

				var div = c1g_isChildDiv(rows[j].cells[i]);
				if (div)
				{
					div.style["width"] = "";
					div.style["height"] = "";
				}
			}
			
			if ((size[0] > width) && !colF)
				cols[i].width = size[0] + cp;
		}
	}
}

function c1g_adjustSizes(gn)
{
	var t00 = c1g_getSubTable(gn, 0, 0);
	var t01 = c1g_getSubTable(gn, 0, 1);
	var t10 = c1g_getSubTable(gn, 1, 0);
	var t11 = c1g_getSubTable(gn, 1, 1);
	
	st = document.createElement("TABLE");
	st.insertRow(-1);
	st.rows[0].insertCell(-1);
	st.style.visibility = "hidden";
	document.body.appendChild(st);

	c1g_adjustSubTableSizes(t00);
	c1g_adjustSubTableSizes(t01);
	c1g_adjustSubTableSizes(t10);
	c1g_adjustSubTableSizes(t11);
	
	c1g_syncTableCols(t00, t10);
	c1g_syncTableCols(t01, t11);
	
	c1g_recalcSizes(t00);
	c1g_recalcSizes(t10);
	c1g_recalcSizes(t01);
	c1g_recalcSizes(t11);
	
	document.body.removeChild(st);
	
	c1g_syncTableRows(t00, t01);
	c1g_syncTableRows(t10, t11);
}

function c1g_recalcSizes(t)
{
	if (t)
	{
		var cols = c1g_getChildTag(t, "COLGROUP");
		if (cols)
		{
			cols = cols.childNodes;
			var rows = t.rows;
			var cp = (t.cellPadding) ? parseInt(t.cellPadding) * 2 : 0;
			cp += (t.cellSpacing) ? parseInt(t.cellSpacing) * 2 : 0;
		
			var rl = rows.length;
			for (var i = 0; i < rl; i++)
			{
				var height = 0;
				var rowF = c1g_isFixSize(rows[i]);
			
				var rcl = rows[i].cells.length;
				for (var j = 0; j < rcl; j++)
				{
					var colF = c1g_isFixSize(cols[j]);
					
					if (rowF && colF)
						continue;
				
					var width = cols[j].width;
				
					if (rows[i].cells[j].style["width"] && !colF)
						rows[i].cells[j].style["width"] = width;
				
					var wrap = c1g_isWrap(rows[i], j);
					if (wrap)
					{
						var tmp = c1g_getSize(rows[i].cells[j], wrap, width - cp - 2, "");
						height = Math.max(height, tmp[1]);
					}
				}
				
				if ((height != 0) && !rowF)
					rows[i].style["height"] = height + cp;
			}
		}
	}
}

//////////////////////////////////////////////////////-----------------------------------------------------------
//////////////////////////////////////////////////////-----------------------------------------------------------

function c1g_syncMainTable(gn)
{
	var totalwidth = 0;	
	var totalheight = 0;	
	var grid = new c1g_getElementById(gn);
	var groupcount=parseInt(c1g_getattr(grid,"GroupCount"));
	var maindiv=c1g_getElementById(gn + "_maindiv");
	
	if (maindiv)
	{
		var colGroups = c1g_getChildTag(maindiv, "COLGROUP");
		
		if (colGroups && colGroups.tagName=="COLGROUP" && colGroups.childNodes.length==2)
		{	
			var v0 = c1g_getSubgridsColWidth(gn, 0);
			if (v0 != 0 && colGroups.childNodes[0].style.display != "none")
				colGroups.childNodes[0].width = v0;
		
			var v1 = c1g_getSubgridsColWidth(gn, 1);
			if (v1 != 0 && colGroups.childNodes[1].style.display != "none")
				colGroups.childNodes[1].width = v1;
		
			if (v0 != 0 && v1 != 0)
				totalwidth = v0 + v1;
			else
				totalwidth = Math.max(v0, v1);
		}
		
		if (grid.rows.length==2)
		{
			var v0 = c1g_getSubgridsRowHeight(gn, 0);
			if (v0 != 0 && grid.rows[0].style.display != "none")
				grid.rows[0].style.height = v0;
			
			var v1 = c1g_getSubgridsRowHeight(gn, 1);
			if (v0 != 0 && grid.rows[1].style.display != "none")
				grid.rows[1].style.height = v1;
		
			if (v0 != 0 && v1 != 0)
				totalheight = v0 + v1;
			else
				totalheight = Math.max(v0, v1); 
		}
		
		grid.style.left = 0;
		grid.style.top = 0;
		grid.style.width = (totalwidth == 0) ? "" : totalwidth;
		grid.style.height = (totalheight == 0) ? "" : totalheight;

		var a = maindiv.getElementsByTagName("TABLE");
		if (a && a.length > 0)
		{
			a[0].style.left = 0;
			a[0].style.top = 0;

			a[0].style.width = (totalwidth == 0) ? "" : totalwidth;
			a[0].style.height = (totalheight == 0) ? "" : totalheight;
		}	
		
		var tmp = document.getElementById(gn + "_BottomPager");
		if (tmp)
		tmp.style.top = "0px";
			
		tmp = document.getElementById(gn + "_TopPager");
		if (tmp)
			tmp.style.top = "0px";
	}
}

var savedTop=0;
var savedLeft=0;
function c1g_onMainDivScroll(gn)
{
	var mv=c1g_getElementById(gn + "_maindiv");
	if (mv)
	{
		var sv=c1g_getElementById(gn + "_scrolldiv");
		if (sv)
		{
			var i = sv.scrollLeft;
			i += mv.scrollLeft;
			sv.scrollLeft = i;

			i = sv.scrollTop;
			i += mv.scrollTop;
			sv.scrollTop = i;
		}

		mv.scrollLeft=0;
		mv.scrollTop=0;
	}
}

function c1g_onScroll(gn)
{
	var sv=c1g_getElementById(gn + "_scrolldiv");

	if (sv)
	{
    	if (sv.scrollLeft!=savedLeft)
		{
			var table01=c1g_getSubTable(gn, 0, 1);
			if (table01)
				table01.style.left=-sv.scrollLeft;

			var table11=c1g_getSubTable(gn, 1, 1);
			if (table11)
				table11.style.left=-sv.scrollLeft;

			savedLeft=sv.scrollLeft;
		}

    	if (sv.scrollTop!=savedTop)
		{
			var table10=c1g_getSubTable(gn, 1, 0);
			if (table10)
				table10.style.top=-sv.scrollTop;

			var table11=c1g_getSubTable(gn, 1, 1);
			if (table11)
				table11.style.top=-sv.scrollTop;
		
			pager = document.getElementById(gn + "_BottomPager");
			if (pager)
				pager.style.top=-sv.scrollTop; 

			savedTop=sv.scrollTop;
			
		}

		var o = c1g_getByName("__" + gn + "_Scroll");
		if (o)
			o.value = savedLeft + "," + savedTop;
	}

	var props = c1g_Props[gn];
	if (isIE)
		c1g_initHeadPos(props);
}



var tmp = null;

function c1g_onclick(src, e)
{
	if (tmp && (typeof(tmp) != "undefined") && (typeof(tmp.href) != "undefined"))
	{
		e.cancelBubble = true;
		e.returnValue = false;

		if (tmp.target)
			window.open(tmp.href, tmp.target);
		else
			window.open(tmp.href, "_self");

		tmp = null;
	}
}


function c1g_onfocus(gn, tn)
{
	var element= window.event.srcElement;
	tmp = window.event.srcElement;
	
	if (element && element.parentElement && element.parentElement.tagName == "TD")
	{
		var offsetLeft = element.parentElement.offsetLeft;
		var offsetTop = element.parentElement.offsetTop;
		element = element.offsetParent;
		while(element)
		{
			if (element.id == gn + "_" + tn)
			{
				if (element.offsetLeft < 0)
				{
					var scrollLeft = -element.offsetLeft;
					if (offsetLeft < scrollLeft)
					{
						var sv=c1g_getElementById(gn + "_scrolldiv");
						if (sv)
							sv.scrollLeft += offsetLeft - scrollLeft - 1;
					}
				}
				
				if (element.offsetTop < 0)
				{
					var scrollTop = -element.offsetTop;
					if (offsetTop < scrollTop)
					{
						var sv=c1g_getElementById(gn + "_scrolldiv");
						if (sv)
							sv.scrollTop += offsetTop - scrollTop - 1;
					}
				}
				break;
			}

			element = element.offsetParent;
		}
	} 
}


var c1g_tempProps = []
function tempProps(initiated, scrollX, scrollY)
{
	this.isInitiated = initiated;
	this.scrollX = scrollX;
	this.scrollY = scrollY;
}

function c1g_layOut(gn, scrollX, scrollY)
{
	c1g_tempProps[gn] = new tempProps(false, scrollX, scrollY);

	//if (isIE)
	//	window.attachEvent("onload", c1g_wndLoad);
	//else
		c1g_baseLayout(gn);
}

function c1g_baseLayout(gn)
{
	if (c1g_getattr(document.getElementById(gn), "AutoStretch") != null)
		c1g_adjustSizes(gn);

	c1g_syncMainTable(gn);
	c1g_syncDummySize(gn);
	c1g_resetPos(gn);
	c1g_syncMainDivSize(gn);
	
	var scroller = c1g_getElementById(gn + "_scrolldiv");
	if (scroller)
	{
		scroller.scrollLeft = c1g_tempProps[gn].scrollX;
		scroller.scrollTop = c1g_tempProps[gn].scrollY;
	}
}

function c1g_wndLoad(sender)
{
	for (var id in c1g_tempProps)
		if (!c1g_tempProps[id].isInitiated)
		{
			c1g_tempProps[id].isInitiated = true;
			c1g_baseLayout(id);
		}
}

function c1g_reLayout(gn)
{	
	c1g_syncMainTable(gn);
	c1g_syncDummySize(gn);
	c1g_syncMainDivSize(gn);
	c1g_onScroll(gn); 
}