/**
* JS Functions for Scrollable, filtrable, sortable, fixed, selectable, dynamical HTML Tables
* 
* @author Gaetan Lauff
* @copyright Plan Software GmbH, 2001 - 2003
*/

var lastActiveSortElement = false;
var tableOffsetWidth = false;
var tableOffsetHeight = false;
var descend = false;
var lastSortCol = false;

function isyScrollHandler(id)
{
	addEvent(document.getElementById(id), "scroll", setScrollPos, false);
}

function isyClickHandler(id)
{
	addEvent(document.getElementById(id), "click", selectRow, false);
}

function selectRow(evt)
{
	element = getElement(evt);

	if (element == null || element.nodeName == "DIV" || element.id == "")
	{
		return;
	}

    var currentTable = document.getElementById(getTableFrom(element));
    
    if ((baseTable = currentTable.getAttribute('baseTable')) != null)
    {
    	currentTable = document.getElementById(baseTable);
    }
    
    deselectRow(currentTable.id);
    
  	var currentRow = document.getElementById(getRowFrom(element));
  	  	
    var highlightCells 		= currentRow.getElementsByTagName('td');
    
    var highlightBgColor 	= currentTable.getAttribute('backgroundcolorhighlight');
    var highlightTextColor 	= currentTable.getAttribute('textcolorhighlight');
    
    var tableHasFixedColumns = parseInt(currentTable.getAttribute('fixedcolumns'));
    
    if (tableHasFixedColumns)
    {
  		var correspondingRow 	= document.getElementById(currentRow.getAttribute('correspondingRow'));
  		var correspondingCells 	= correspondingRow.getElementsByTagName('td');
  	
    	for (var i = 0; i < correspondingCells.length; i++)
		{
		  	correspondingCells[i].style.backgroundColor = highlightBgColor;
		   	correspondingCells[i].style.color 			= highlightTextColor;
		}
	}
	
    for (var i = 0; i < highlightCells.length; i++)
    {
    	highlightCells[i].style.backgroundColor = highlightBgColor;
    	highlightCells[i].style.color 			= highlightTextColor;
    }
    
    currentTable.setAttribute('lastselectedrowid', currentRow.id);
    document.isycat[currentTable.id].value = currentRow.id;
    // alert("selectRow()"+currentTable.id+"="+currentRow.id);
    
}

function deselectRow(inTable)
{
	var currentTable = document.getElementById(inTable);
	
	if ((restoreRowId = currentTable.getAttribute('lastselectedrowid')) != null)
    {
	    var restoreRow = document.getElementById(restoreRowId);
	    var restoreCells = restoreRow.getElementsByTagName('td');
	    
	    var tableHasFixedColumns = parseInt(currentTable.getAttribute('fixedcolumns'));
	    
	    if (tableHasFixedColumns)
	    {
	  		var correspondingRow 	= document.getElementById(restoreRow.getAttribute('correspondingRow'));
	  		var correspondingCells 	= correspondingRow.getElementsByTagName('td');
	  	
	    	for (var i = 0; i < correspondingCells.length; i++)
			{
			  	correspondingCells[i].style.backgroundColor = restoreRow.style.backgroundColor;
			   	correspondingCells[i].style.color 			= restoreRow.style.color;
			}
		}
			    
	    for (var i = 0; i < restoreCells.length; i++)
	    {
	    	restoreCells[i].style.backgroundColor 	= restoreRow.style.backgroundColor;
	    	restoreCells[i].style.color 			= restoreRow.style.color;
	    }
	}
}

function getColumnFrom(element)
{
	if (element.nodeName == "TD")
	{	
		return element.id
	}
		
	while (element.nodeName != "TD")
	{
		element = element.parentNode;
	}
	
	return element.id
}

/**
* No standard Fuction
*/

function getRowNumFrom(obj)
{
	var rowid	= getRowFrom(obj);
	var tableid	= getTableFrom(obj);
	
	return rowid.substr(tableid.length+1, rowid.length - tableid.length - 1);
}

function getRowFrom(element)
{	
	if (element.nodeName == "TR")
	{	
		return element.id
	}
		
	while (element.nodeName != "TR")
	{
		element = element.parentNode;
	}
	
	return element.id
}

function getTableFrom(element)
{
//alert(getTableFrom.caller);

	if (element.nodeName == "DIV")
	{	
		return element.id;
	}
		
	while (element.nodeName != "DIV")
	{
		element = element.parentNode;
	}

	return element.id;
}

function setScrollPos(evt)
{
	var element = getElementFrom(evt);
	var fixedLine = document.getElementById(element.id+"_FL");
	var fixedColumn = document.getElementById(element.id+"_FC");
	
    if (fixedLine != null)
    {
    	fixedLine.style.left = - document.getElementById(element.id).scrollLeft;
    }
    
    if (fixedColumn != null)
    {
    	fixedColumn.style.top = - document.getElementById(element.id).scrollTop ;	
    }
}
	
function initTable(id)
{
	var isyTable 						= document.getElementById(id);

	var fixedLines 						= isyTable.getAttribute('fixedlines');
	var fixedColumns 					= isyTable.getAttribute('fixedcolumns');
	
	var fixedLinesDiv 					= document.getElementById(isyTable.id + "_FIXED_LINES");
	var fixedColumnsDiv 				= document.getElementById(isyTable.id + "_FIXED_COLUMNS");	
	var absolutlyFixedColumnLineDiv 	= document.getElementById(isyTable.id + "_ABSOLUTLY");

	if (!(bgcol = isyTable.style.backgroundColor)) 
	{
		bgcol = 'white';
	}
	
	if ((selectedRow = isyTable.getAttribute('selected')) == null)
	{
		selectedRow = false;
	}
	
	if ((preSortedColumn = isyTable.getAttribute('presortedcolumn')) == null)
	{
		preSortedColumn = false;
	}
		
	fixedLinesDiv.style.backgroundColor 				= bgcol;
	fixedColumnsDiv.style.backgroundColor 				= bgcol;
	absolutlyFixedColumnLineDiv.style.backgroundColor 	= bgcol;
	
	var fixedLinesHeight 				= 0;
	var fixedLinesWidth 				= 0;
	var fixedColumnsWidth				= 0;
	
	var fixedLineTable 					= "";
	var fixedColumnTable 				= "";
	
	var absolutlyFixedColumnLineHeight 	= 0;
	var absolutlyFixedColumnLine 		= "";
	
	tableLines 							= isyTable.getElementsByTagName('tr');
	
	var isFiltrable						= false;
	var isSortable						= false;
	var filtrableColumnsCounter			= 0;
	var sortWidth						= 0;
	
	if ((userFunction = isyTable.getAttribute('userfunction')) == null)
	{
		userFunction = false;
	}
			
	if (userFunction)
	{
		for (i=0; i < tableLines.length; i++)
		{
			addEvent(tableLines[i], "click", eval(userFunction), true);
		}
	}
			
	if (fixedLines > 0)
	{	
		fixedLinesTableBody = document.createElement('tbody');
		
		for (var i=0; i < fixedLines; i++)
		{
    		origTD = tableLines[i].getElementsByTagName('td');
			tabLin = tableLines[i].cloneNode(false);
			//correctHeight += parseInt(tableLines[i].offsetHeight);
			var filterBoxes = new Array();
			
			for (j=0; j < origTD.length; j++)
			{
				tabLinTd = origTD[j].cloneNode(true);
				tabLinTd.style.width = origTD[j].offsetWidth;
				
				tabLinTd.setAttribute('id', origTD[j].id + "_FL");
				var filterBox = document.createTextNode("");
				
				if(tabLinTd.getAttribute('sortable'))
				{
					var isSortable = true;
					var alignment = getCSSRuleAttribute(origTD[j].className, 'textAlign');
					
					if ((sorttitle = isyTable.getAttribute('sorttitle')) == null)
					{
						var sorttitle = 'Sortieren'
					}
					
					if ((sac = isyTable.getAttribute('sortarrowcorrection')) == null)
					{
						var sac = false;
					}
					
					tabLinTd.setAttribute('title', sorttitle);
					tabLinTd.setAttribute('descend', false);
					tabLinTd.setAttribute('tableId', isyTable.id);
					tabLinTd.setAttribute('columnId', j);
					tabLinTd.style.backgroundRepeat = 'no-repeat';
					addEvent(tabLinTd, "click", sortColumn, false);
					
					if (sac)
					{
						tabLinTd.style.width = parseInt(tabLinTd.style.width) + 15;
					}
					
					if (alignment != 'right')
					{
						tabLinTd.style.backgroundPosition = 'right center';
					}
					else
					{
						tabLinTd.style.backgroundPosition = 'left center';
					}
				}
				
				if (tabLinTd.getAttribute('filtrable'))
				{
					isFiltrable = true;
					filterBox = document.createElement('select');
					filterBox.style.minWidth = "100px";
					filterBox.style.width = "100%";
					filterBox.id = id+"_FILTERBOX_"+j;
					filterBox.name = id+"_FILTERBOX_"+j;
					filterBox.setAttribute('tableId', isyTable.id);
					filterBox.setAttribute('columnId', j);
					addEvent(filterBox, "change", filterColumn, false);
				}

				filterBoxes[j] = filterBox;
				tabLin.appendChild(tabLinTd);
				
				origTD[j].style.width = parseInt(tabLinTd.style.width);
			}

			var filterLine = tabLin.cloneNode(true);
			fixedLinesTableBody.appendChild(tabLin);
			
			if (isFiltrable)
			{
				for (k = 0; k < filterBoxes.length; k++)
				{
					filterLine.childNodes[k].innerHTML = '';
					filterLine.childNodes[k].appendChild(filterBoxes[k]);
					filterLine.style.height = "25px";
				}

				fixedLinesTableBody.appendChild(filterLine);
				//correctHeight += 25;
			}
		}
		
		fixedLinesTable = fixedLinesDiv.childNodes[0];
		fixedLinesTable.setAttribute('id', isyTable.id+"_FL");
		fixedLinesTable.style.position = 'relative';
		fixedLinesTable.style.tableLayout = 'fixed';
		
		fixedLinesDiv.style.width = parseInt(fixedLinesDiv.style.width) - 16;
		fixedLinesTable.style.width = parseInt(isyTable.childNodes[0].offsetWidth);
		
		fixedLinesTable.appendChild(fixedLinesTableBody);
		
		if (isFiltrable)
		{
			for (i = 0; i < fixedLines; i++)
			{
				var correctedHeight = 0;
				allFixedLines = fixedLinesTable.getElementsByTagName('tr');
				
				for (var j=0; j < allFixedLines.length; j++)
				{
					correctedHeight += parseInt(allFixedLines[j].offsetHeight);
				}
				
				tableLines[0].style.height = correctedHeight;
				
			}
		}
			
		fixedLinesDiv.appendChild(fixedLinesTable);
		fixedLinesTableHeight = fixedLinesTable.offsetHeight;
		fixedLinesDiv.setAttribute('baseTable', isyTable.id);
		
		//isyTable.style.top = parseInt(isyTable.style.top) + correctHeight;
		//isyTable.style.height = parseInt(isyTable.style.height) - correctHeight;
	}
	
	if (fixedColumns > 0)
	{
		fixedColumnsTable = document.createElement('table');
		fixedColumnsTableBody = document.createElement('tbody');
		
		tableWidth 	= 0;
		colWidths 	= 0;
		
		for (var i=0; i < tableLines.length; i++)
		{
			var tabCol = tableLines[i].cloneNode(false);
			var filterBoxes = new Array();
			tabCol.id = tableLines[i].id + "_FC";
			tabCol.setAttribute('correspondingRow', tableLines[i].id);
			tableLines[i].setAttribute('correspondingRow', tabCol.id);
			
			tabCol.style.height = tableLines[i].offsetHeight;
			
			for (var j = 0; j < fixedColumns; j++)
			{
				nstd = tableLines[i].getElementsByTagName('td');
				tdtoinsert = nstd[j].cloneNode(true);
				tdtoinsert.style.width = nstd[j].offsetWidth;
				tdtoinsert.setAttribute('id', origTD[j].id + "_FC");
				var filterBox = document.createTextNode("");
				
				if(tdtoinsert.getAttribute('sortable'))
				{
					isSortable = true;
				
					tdtoinsert.setAttribute('descend', false);
					tdtoinsert.setAttribute('tableId', isyTable.id);
					tdtoinsert.setAttribute('columnId', j);
					
					if ((sorttitle = isyTable.getAttribute('sorttitle')) == null)
					{
						var sorttitle = 'Sortieren';
					}
					
					tdtoinsert.setAttribute('title', sorttitle);
					tdtoinsert.style.backgroundImage = 'url(/isycatgifs/blank.gif)';
					tdtoinsert.style.backgroundRepeat = 'no-repeat';
					tdtoinsert.style.backgroundPosition = 'right center';
					
					addEvent(tdtoinsert, "click", sortColumn, true);
				}
				
				if (tdtoinsert.getAttribute('filtrable'))
				{
					isFiltrable = true;
					var filterBox = document.createElement('select');
					filterBox.style.width = "100%";
					filterBox.id = id+"_FILTERBOX_"+j;
					filterBox.name = id+"_FILTERBOX_"+j;
					filterBox.setAttribute('tableId', isyTable.id);
					filterBox.setAttribute('columnId', j);
					addEvent(filterBox, "change", filterColumn, false);
				}
				
				filterBoxes[j] = filterBox;
				tabCol.appendChild(tdtoinsert);	
				colWidths += nstd[j].offsetWidth;
			}
			
			tableWidth = Math.max(tableWidth, colWidths);	
			colWidths = 0;
			
			var filterLine = tabCol.cloneNode(true);
			fixedColumnsTableBody.appendChild(tabCol);
			
			if (isFiltrable)
			{
				for (k = 0; k < filterBoxes.length; k++)
				{
					filterLine.childNodes[k].innerHTML = '';
					filterLine.childNodes[k].appendChild(filterBoxes[k]);
					filterLine.style.height = "25px";
				}

				fixedColumnsTableBody.appendChild(filterLine);
			}		
		}
		
		fixedColumnsTable.style.position 		= 'relative';
		fixedColumnsTable.style.tableLayout 	= 'fixed';
		fixedColumnsTable.style.width 			= tableWidth;
		fixedColumnsTable.style.left 			= 0;
		fixedColumnsTable.style.top 			= 0;
		fixedColumnsTable.style.borderSpacing 	= 0;
		fixedColumnsTable.style.borderCollapse 	= 'collapse';
		fixedColumnsTable.setAttribute('id', isyTable.id+"_FC");
		fixedColumnsTable.appendChild(fixedColumnsTableBody);
		
		fixedColumnsDiv.style.height = parseInt(fixedColumnsDiv.style.height) - 16;
		fixedColumnsDiv.appendChild(fixedColumnsTable);
		fixedColumnsDiv.setAttribute('baseTable', isyTable.id);

		addEvent(document.getElementById(isyTable.id+"_FC"), "click", selectRow, false);
		
	}
	
	if (fixedColumns > 0 && fixedLines > 0)
	{
		absolutlyFixedLineColumnTableBody = document.createElement('tbody');
		absolutlyTabLines = fixedColumnsDiv.getElementsByTagName('tr');
		
		for (var i=0; i < fixedLines; i++)
		{ 
			absolutlyFixedLineColumn = absolutlyTabLines[i].cloneNode(true);
			
			alCohols = absolutlyFixedLineColumn.getElementsByTagName('td');
			
			for (var j=0; j < alCohols.length; j++)
			{ 
				if (alCohols[j].getAttribute('sortable'))
				{
					alCohols[j].id += "_ABSOLUTLY";
					
					if ((sorttitle = isyTable.getAttribute('sorttitle')) == null)
					{
						var sorttitle = 'Sortieren';
					}
					
					alCohols[j].setAttribute('title', sorttitle);
					alCohols[j].setAttribute('descend', 0);
					alCohols[j].setAttribute('tableId', isyTable.id);
					alCohols[j].setAttribute('columnId', j);
				}
			}
				
			absolutlyFixedLineColumnTableBody.appendChild(absolutlyFixedLineColumn);
			absolutlyFixedColumnLineHeight += absolutlyTabLines[i].offsetHeight;
		}
		
		absolutlyFixedLineColumnTable = absolutlyFixedColumnLineDiv.childNodes[0];
		absolutlyFixedLineColumnTable.style.position = 'relative';
		absolutlyFixedLineColumnTable.style.tableLayout = 'fixed';
		absolutlyFixedLineColumnTable.width = fixedColumnsDiv.childNodes[0].offsetWidth;
		absolutlyFixedLineColumnTable.height = fixedLinesDiv.childNodes[0].offsetHeight;
		absolutlyFixedLineColumnTable.appendChild(absolutlyFixedLineColumnTableBody);
		absolutlyFixedColumnLineDiv.appendChild(absolutlyFixedLineColumnTable);
		absolutlyFixedColumnLineDiv.setAttribute('baseTable', isyTable.id);
	}

	addEvent(document.getElementById(isyTable.id), "click", selectRow, false);
	addEvent(document.getElementById(isyTable.id), "scroll", setScrollPos, false);
	
	if (isFiltrable)
	{
		var columns = tableLines[0].getElementsByTagName('TD');
		eval("var filterColumns = "+isyTable.id+"_filterColumns = new Array("+columns.length+");");
		arrayLength = tableLines.length - fixedLines;

		for (var k = 0; k < filterColumns.length; k++)
		{
			if (columns[k].getAttribute('filtrable') != null)
			{
				filterColumns[k] = new Array(arrayLength);
			}
			else
			{
				filterColumns[k] = "NO_FILTER";
			}
		}
		
		lineCount = 0;
		
		for (var i = fixedLines; i < tableLines.length; i++)
		{
			innerColumns = tableLines[i].getElementsByTagName('TD');

			for (var j = 0; j < innerColumns.length; j++)
			{
				var text = innerColumns[j].getAttribute('text');
				
				if (((filtercriterium = innerColumns[j].getAttribute('filtercriterium')) == null) || filtercriterium == '')
				{
					var filtercriterium = text;
				}

				if (filterColumns[j] != "NO_FILTER")
				{
					filterColumns[j][lineCount] = new column(tableLines[i].id, filtercriterium);
				}
			}
				
			lineCount++;
		}
		
		eval(isyTable.id+"_filterColumns = filterColumns");		
		fillFilterBoxes(isyTable.id);
	}
		
	if (isSortable)
	{
		var columns = tableLines[0].getElementsByTagName('TD');
		eval("var sortColumns = "+isyTable.id+"_sortColumns = new Array("+columns.length+");");
		arrayLength = tableLines.length - fixedLines;

		for (var k = 0; k < sortColumns.length; k++)
		{
			sortColumns[k] = new Array(arrayLength);
		}
	
		lineCount = 0;
		
		for (var i = fixedLines; i < tableLines.length; i++)
		{
			innerColumns = tableLines[i].getElementsByTagName('TD');
			
			for (var j = 0; j < innerColumns.length; j++)
			{
				var text = innerColumns[j].getAttribute('text');
				
				if (((sortcriterium = innerColumns[j].getAttribute('sortcriterium')) == null) || sortcriterium == '')
				{
					var sortcriterium = text;
				}

				sortColumns[j][lineCount] = new column(tableLines[i].id, sortcriterium);	
			}
				
			lineCount++;
		}
		
		eval(isyTable.id+"_sortColumns = sortColumns");
	}
	
	if (preSortedColumn)
	{
		sortColumn(preSortedColumn);
	}
	
	if (selectedRow)
	{
		selectRow(selectedRow);
		
		if (ie5)
		{
			scrollToTableElement(selectedRow);
		}
	}
}

function column(id, value)
{
	this.id = id;
	this.value = value;
}

function filterColumn(evt)
{
	var el = getElementFrom(evt);
	
	var colId = el.getAttribute('columnId');
	var tableId = el.getAttribute('tableId');
	
	var activeFilter = new Array();
	var compareFilter = '';
	
	eval("var filterColumns = "+tableId+"_filterColumns;");
	
	filterTable = document.getElementById(tableId).getElementsByTagName('TBODY');
	
	if ((hasFixedColumns = parseInt(document.getElementById(tableId).getAttribute('fixedColumns'))))
	{
		fixedFilterTable = document.getElementById(tableId+"_FC").getElementsByTagName('TBODY');	
	}
	
	for (var k = 0 ; k < filterColumns.length; k++)
	{
		if (filterColumns[k] != "NO_FILTER")
		{
			var rowIdx = k;
			var filterBox = document.getElementById(tableId+"_FILTERBOX_"+k);
			activeFilter[k] = filterBox.options[filterBox.selectedIndex].value;
			compareFilter += filterBox.options[filterBox.selectedIndex].value;
		}
		else
		{
			activeFilter[k] = '';
		}
	}

	var cols = filterColumns.length;
	var rows = filterColumns[rowIdx].length;

	var filter = new Array();
	var hasFilter = true;
	
	for(var k=0; k < rows; k++)
	{
		for (var j=0; j < cols; j++)
		{
			if (filterColumns[j] != "NO_FILTER")
			{
				filter[j] = filterColumns[j][k].value;
				rowToFilter = filterColumns[j][k].id;
			}
			else
			{
				filter[j] = '';
			}
		}
		
		toFilter = '';
				
		for (var u=0; u < filter.length; u++)
		{
			if (activeFilter[u] == "ALL")
			{
				toFilter += "ALL";
			}
			else
			{
				toFilter += filter[u];
			}
		}
		
		if (compareFilter == toFilter)
		{
			document.getElementById(rowToFilter).style.display = '';
				
			if (hasFixedColumns)
			{
				document.getElementById(rowToFilter+"_FC").style.display = '';
			}
		}
		else
		{
			document.getElementById(rowToFilter).style.display = 'none';
			
			if (hasFixedColumns)
			{
				document.getElementById(rowToFilter+"_FC").style.display = 'none';
			}
		}
	}
}
	
function sortColumn(evt)
{
	if (typeof(evt) != "string")
	{
		var el = getElementFrom(evt);
		var col = document.getElementById(getColumnFrom(el));
		var colIdx = col.getAttribute('columnId');
	}
	else
	{
		var el = document.getElementById(evt);
		var col = document.getElementById(getColumnFrom(el) + "_FL");
		var colIdx = col.getAttribute('columnId');
	}
	
	if (el.tagName == "SELECT") return;
	
	var sTable = document.getElementById(getTableFrom(col));
	var baseTable = sTable.getAttribute('baseTable');

	if (baseTable != null)
	{
		sTable = document.getElementById(baseTable);
	}
	
	if ((sortarrows = sTable.getAttribute('sortarrows')) == null)
	{
		var sortarrows = false;
	}

	descend = col.getAttribute('descend');
	
	if(descend || descend == "true")
	{
		col.setAttribute('descend', false);
		
		if (sortarrows)
		{
			col.style.backgroundImage = 'url(/isycatgifs/z-a.gif)';
		}
	}
	else
	{
		col.setAttribute('descend', true);
		
		if (sortarrows)
		{
			col.style.backgroundImage = 'url(/isycatgifs/a-z.gif)';
		}
	}
	
	if (lastSortCol)
	{
		if (lastSortCol != col)
		{
			lastSortCol.style.backgroundImage = 'url(/isycatgifs/blank.gif)';
		}
	}
				
	var sortTable = sTable.getElementsByTagName('TBODY');
	
	eval("var sortColumns = "+sTable.id+"_sortColumns;");
	
	sortColumns[colIdx].sort(IsyCompare);
	
	if ((hasFixedColumns = parseInt(document.getElementById(baseTable).getAttribute('fixedcolumns'))))
	{
		var fixedSortTable = document.getElementById(baseTable+"_FC").childNodes[0];
	}
	
	for (i in sortColumns[colIdx])
	{
		sortTable[0].appendChild(document.getElementById(sortColumns[colIdx][i].id));
		
		if (hasFixedColumns)
   		{
   			fixedSortTable.appendChild(document.getElementById(sortColumns[colIdx][i].id + "_FC"));
   		}
	}
	
	lastSortCol = col;
}

function fillFilterBoxes(id)
{
	var filterArray = eval(id+"_filterColumns");
	var isyTable = document.getElementById(id);
	
	for (var k = 0 ; k < filterArray.length; k++)
	{
		if (filterArray[k] != "NO_FILTER")
		{
			var optionCounter = 1;
			var filterValues = new Array();
				
			for (i in filterArray[k])
			{
				var value = filterArray[k][i].value;
	
				if (!inArray(filterArray[k][i].value, filterValues))
				{
					filterValues[optionCounter++] = value;
				}		
			}
			
			if (filterValues.length > 0)
			{
				var filterBox = document.getElementById(id+"_FILTERBOX_"+k);
				
				filterBox.options.length = filterValues.length;
			
				if ((filterBoxAllText = isyTable.getAttribute('filterboxalltext')) == null)
				{
					var filterBoxAllText = "Alle";
				}
				
				filterBox.options[0].text = filterBoxAllText;
				filterBox.options[0].value = 'ALL';
					
				for (i in filterValues)
				{
					filterBox.options[i].text = filterValues[i];
					filterBox.options[i].value = filterValues[i];
				}
				
				if (ns6)
				{
					filterBox.selectedIndex = -1;
				}
			}
		}	
	}
}

function IsyCompare(a,b)
{
	a = a.value;
	b = b.value;	

	a_tmp = parseFloat(a);
	b_tmp = parseFloat(b);
	
    if (!isNaN(a_tmp))
    {
    	a = a_tmp;
    }
    
    if (!isNaN(b_tmp))
    {
    	b = b_tmp;
    }
    
    var res;
    
    if (typeof(a) == typeof(b))
    {
	    if (a < b)
	    {
	    	res = -1;
	    }
	    else
	    {
	    	if (a == b)
	    	{
	    		res = 0;
	    	}
	    	else
	    	{
	    		res = 1;
	    	}
	    }
	}
	else
	{
		if (typeof(a) == "number")
		{
			res = -1;
		}
		else
		{
			res = 1;
		}
	}
	
    if (descend || descend == "true")
    {
    	res = res * -1;
    }
    
    return res;
}