// JavaScript Document
var oTableColHeader;
var oTableRowHeader;
var oTableBody;

var numVisibleCols = 3;

function init(){
	oTableColHeader 	= document.getElementById('propertiesColHeader').getElementsByTagName('table')[0];
	oTableRowHeader 	= document.getElementById('propertiesRowHeader').getElementsByTagName('table')[0];
	oTableBody 			= document.getElementById('propertiesBody').getElementsByTagName('table')[0];
}


function hideCols(){
	for(var i = 4; i < oTableColHeader.getElementsByTagName('tr')[0].getElementsByTagName('th').length; i++){
		hideHeaderCol(i);
		hideBodyCol(i-1);
	}
}

// hide single complete (header + body) col
// index = index of header column
function hideCol(colIndex){
	try{
		hideHeaderCol(colIndex);
		hideBodyCol((colIndex-1));
		
		numVisibleCols = numVisibleCols - 1;
	}catch(e){
		handleException(e);
	}
	
	document.getElementsByTagName('body')[0].className = 'visiblecols' + numVisibleCols;
}


// hide col in header by index
function hideHeaderCol(colIndex){
	var aHeaderRows = oTableColHeader.getElementsByTagName('tr');
	
	for(var i = 0; i < aHeaderRows.length; i++){
		aHeaderRows[i].getElementsByTagName('th')[colIndex].style.display = 'none';
	}
}


//  hide col in body by index
function hideBodyCol(colIndex){
	var aBodyRows = oTableBody.getElementsByTagName('tr');
	
	for(var i = 0; i < aBodyRows.length; i++){
		aBodyRows[i].getElementsByTagName('td')[colIndex].style.display = 'none';
	}
}


// show single complet (header + body) col
// index = index of header column
function showCol(colIndex){
	if(numVisibleCols == 3){
		alert(text.comparison);
		return;
	}
	
	try{
		showHeaderCol(colIndex);
		showBodyCol((colIndex-1));	
		
		numVisibleCols = numVisibleCols + 1;
	}catch(e){
		handleException(e);
	}
	
	document.getElementsByTagName('body')[0].className = 'visiblecols' + numVisibleCols;
}


// show col in header by index
function showHeaderCol(colIndex){
	var aHeaderRows = oTableColHeader.getElementsByTagName('tr');
	
	for(var i = 0; i < aHeaderRows.length; i++){
		aHeaderRows[i].getElementsByTagName('th')[colIndex].style.display = '';
	}
}


// show col in body by index
function showBodyCol(colIndex){
	var aBodyRows = oTableBody.getElementsByTagName('tr');
	
	for(var i = 0; i < aBodyRows.length; i++){
		aBodyRows[i].getElementsByTagName('td')[colIndex].style.display = '';
	}
}


// syncs height between rows in rowheader and rows in body
function syncHeight(){
	var iHeight;
	
	for(var i = 0; i < oTableRowHeader.getElementsByTagName('tr').length; i++){
		
		// simple i.e. check to preven offsetHeight <> border bug
		if(document.all){
			iHeight = oTableRowHeader.getElementsByTagName('tr')[i].getElementsByTagName('th')[1].clientHeight;
		}else{
			iHeight = oTableRowHeader.getElementsByTagName('tr')[i].getElementsByTagName('th')[1].offsetHeight;
		}
		
		for(var ii = 0; ii < oTableBody.getElementsByTagName('tr')[i].getElementsByTagName('td').length; ii++){
			oTableBody.getElementsByTagName('tr')[i].getElementsByTagName('td')[ii].style.height =  iHeight + 'px';
		}
	}
}


//
var oColSelector;
function initColSelector(selectBy){
	if(!oColSelector) oColSelector = document.getElementById('colSelector');
	
	var aHeaderCols;
	
	// trash current options
	oColSelector.options.length = 0;
	
	switch(selectBy){
		case 'DIN':
			aHeaderCols = oTableColHeader.getElementsByTagName('tr')[3].getElementsByTagName('th');
			oColSelector.setAttribute('selectBy', 'DIN');
			
			oColSelector.options[0] = new Option(text.din, 'null');
			break;
			
		case 'commercial':
			aHeaderCols = oTableColHeader.getElementsByTagName('tr')[4].getElementsByTagName('th');
			oColSelector.setAttribute('selectBy', 'commercial');
			
			oColSelector.options[0] = new Option(text.commercial, 'null');
			break;
			
		default: //material
			aHeaderCols = oTableColHeader.getElementsByTagName('tr')[2].getElementsByTagName('th');
			oColSelector.setAttribute('selectBy', 'material');
			
			oColSelector.options[0] = new Option(text.material, 'null');
			break;
	}
	
	
	// start at 1 because of rowheaders
	for(var i = 1; i < aHeaderCols.length; i++){
		oColSelector.options[i] = new Option(aHeaderCols[i].firstChild.nodeValue, i);
	}
}


function handleException(error){
	if(typeof(error) == 'object'){
		alert('invalid option selected \n'
				+ 'message: ' + error.message + '\n'
				+ 'name: ' + error.name + '\n'
				+ 'number: ' + error.number);	
	}else{
		alert('invalid option selected \n'
			  	+ 'unkown error \n'
				+ 'details: ' + error);	
	}
}


/*
	WINDOW ONLOAD
*/
var language = 'nl';

window.onload = function(){
	init();
	
	hideCols();
	
	syncHeight();
	
	initColSelector();
}
/*
	// WINDOW ONLOAD
*/

