function getLeft(obj){
    var topValue= 0,leftValue= 0;
    while(obj){
	leftValue+= obj.offsetLeft;
	topValue+= obj.offsetTop;
	obj= obj.offsetParent;
    }
    finalvalue = leftValue + "," + topValue;
    return leftValue;
}

function getTop(obj){
    var topValue= 0,leftValue= 0;
    while(obj){
	leftValue+= obj.offsetLeft;
	topValue+= obj.offsetTop;
	obj= obj.offsetParent;
    }
    finalvalue = leftValue + "," + topValue;
    return topValue;
}
/*
function createFloatingHeader(tableHeader){		
	var t = document.createElement("table");
	t.setAttribute("class","list-table");
	t.className = 'list-table';		
	t.style.fontSize = '110px';
	//var tbody = document.createElement("tbody");
	var tbody = document.createElement("thead");
	tbody.id = "parametric-table-head";
	var headerChildren = tableHeader.children;
	var headerLength = headerChildren.length;
	for(var i=0;i<headerLength;i++){
		var hChild = headerChildren[i];
		var hTag = hChild.tagName;
		if(hTag == 'tr'){
			var row = document.createElement("tr");
			var rChildren = hChild.children;			
			var rLength = rChildren.length;
			var rId = hChild.id;
			//row.id = rId+"-floater";
			row.id = "lblrow";
			for(var j=0;j < rLength;j++){
				var rChild = rChildren[j];
				var rTag = rChild.tagName;
				if(rTag == 'th'){
					var cell = document.createElement("th");
					var cellWidth = rChild.offsetWidth;
					var cellValue = rChild.innerHTML+"l";					
					cell.style.width = (cellWidth-1)+"px";				
	
					//if(cellValue.indexOf('Series') != -1){
					//	alert('Cell Width = '+cellWidth+'\nCell Value = '+cellValue);
					//}
						
					cell.style.padding = "0px";					
					cell.innerHTML = cellValue;			
					row.appendChild(cell);
				}
			}
			tbody.appendChild(row);
		}
	}
	t.appendChild(tbody);	
	return t;
}
*/

window.setInterval(listenForScroll,1000);  

function listenForScroll(){			
	try{window.onscroll = getHeader;}catch(e){}
	try{window.onresize = getHeader;}catch(e){}
}

function getWidths(header){
	var newHeader = document.createElement("thead");
	//newHeader.id = "parametric-table-head";
	var newHeaderRow = document.createElement("tr");
	newHeaderRow.id = "lblrow";
	//newHeaderRow.setAttribute();
	for(var i=0,j = header.children[0].children.length;i<j;i++){
		var oldCol = header.children[0].children[i];			
		var newCol = document.createElement("th");

		/*
		NO COLSPAN NEEDED, THIS IS *NEW* TABLE
		var oldColSpan = oldCol.getAttribute("colspan");
		if(oldColSpan && oldColSpan > 1) {
			newCol.setAttribute("colspan", oldColSpan);
		}
		*/

		//alertMax("Setting width of column "+i+" to "+oldCol.offsetWidth);
		
		// Try-and-error: Adjust these to match CSS settings 
		// of the table header cells (padding, frame width etc)
		var colWidthOffset = -7;
		var imgWidthOffset = 2;
		
		
		if(Prototype.Browser.IE == true) {
			//alertMax("IE");
			colWidthOffset = 0;
			imgWidthOffset = -4.25;
		}
		
		newCol.style.width = (oldCol.offsetWidth + colWidthOffset)+"px";
		newCol.width = (oldCol.offsetWidth + colWidthOffset)+"px";
		newCol.style.height = oldCol.offsetHeight+"px";
		newCol.height = oldCol.offsetHeight+"px";
		newCol.innerHTML = oldCol.innerHTML;
		
		
		var hSpacer = document.createElement("img");
//		hSpacer.src = ("/images/spacer1x1-bk.gif");
		hSpacer.src = ("/images/spacer1x1.gif");
		hSpacer.setAttribute("height", "1px");
		hSpacer.width = (oldCol.offsetWidth + colWidthOffset + imgWidthOffset);
		//hSpacer.setAttribute("width", (oldCol.offsetWidth + colWidthOffset + 2));
		newCol.appendChild(hSpacer);
		
		
		// CSS fixes, style isn't always applied automatically
		newCol.style.backgroundColor = "#B1D017";
		newCol.style.whiteSpace = "normal";
		//newCol.style.padding = "2px";
		newCol.style.fontSize = "85%";
		newCol.style.border = "1px solid #ddd";		
		newHeaderRow.appendChild(newCol);		
	}	
	newHeader.appendChild(newHeaderRow);
	//alert("newHeader\n"+newHeader.innerHTML);

	//alertMax("NEW HEADER\n"+newHeader.innerHTML);

	return newHeader;
}

function getHeader(){
	//var table = document.getElementById('parametric-table');
	var header = document.getElementById('parametric-table-head');	
	var body = document.getElementById('parametric-table-body');
	var floatDiv = document.getElementById('float-header');floatDiv.innerHTML = '';	
	var floatTable = document.createElement("table");
	floatTable.setAttribute("class","list-table");
	//floatTable.id = "parametric-table";
	floatTable.style.marginLeft = "0px";
	floatTable.style.borderCollapse = "collapse";
	//floatTable.style.width = "980px";
	//if(globalTableWidth =='narrow') { floatTable.style.width = "980px"; }
	
	//floatDiv.style.border = "1px solid red";
	//floatDiv.height = "18px";
	//floatTable.bgcolor="green"
	
	var newHeader = getWidths(header);
	

	var width = body.offsetWidth;
	var top = getTop(body);
	var left = getLeft(body);
	if(globalTableWidth =='narrow') {
		left = 0;
	}
	
	/* Set scroll variables */
	var scroll = window.pageYOffset;		
	if(!scroll){scroll =  document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop}
	
	
	
	var leftOffset = -1;
	var topOffset = 0;
	if(globalTableWidth =='narrow') {
		leftOffset = 6;
		topOffset = -150;
	}

	if(Prototype.Browser.IE == true) {
		if(globalTableWidth =='narrow') {
		}
		if(globalTableWidth =='maximum') {
			leftOffset = 0;
		}
	}

	
	if(scroll > top){		
		floatTable.appendChild(newHeader);
		//floatTable.style.width = (width+6)+'px'; // TODO Avoid this hack?
		floatTable.style.width = (width)+'px';
		floatDiv.appendChild(floatTable);
		floatDiv.style.position = 'absolute';
		floatDiv.style.display = '';							
		floatDiv.style.top = (scroll + topOffset)+"px";

		floatDiv.style.left = (left + leftOffset)+"px"; // TODO Avoid this hack?
		//floatDiv.style.left = (left)+"px";
//alert(left + leftOffset);
		//alertMax("NEW DIV\n"+floatDiv.innerHTML);
	}	

	
}


function attatchHeader(){	
	/* Set scroll variables */
	var scroll = window.pageYOffset;		
	if(!scroll){scroll =  document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop}
	//alert(scroll);			
}




var alertMaxCount = 1;
var alertedCount = 0;
function alertMax(msg) {
	if(alertedCount < alertMaxCount) {
		alert(msg);
		alertedCount++;
	}
}
