var IMF_headerOffset = 1;
var refreshTab = null;
var tbody = 0;
var batchColumns = false;
var batchCounter = 0;
//Opera hack:
if(window.opera)
{
	tbody = 1;
}

function sort_submit(column,order)
{
	document.updateform.sort.value = column;
	document.updateform.sortorder.value = order;
	document.updateform.action = document.updateform.action.replace(/(&IMF_page)(\d*)(=)(\d+)/g, "&IMF_page=1");
	document.updateform.action = document.updateform.action.replace(/(\?IMF_page)(\d*)(=)(\d+)/g, "?IMF_page=1");
	if(document.updateform.page)
	{
		document.updateform.page.value = 1;
	}
	if(document.updateform.page1)
	{
		document.updateform.page1.value = 1;
	}
	check_submit();
	document.updateform.submit();
}

function applyFilter(filter,append)
{
	if(document.getElementById("IMF_currentFilter"))
	{
		document.getElementById("IMF_currentFilter").value = filter.name;
	}
	//check_submit();
	//document.updateform.submit();
	//alert(document.updateform.submit());
	document.getElementById("updateform").submit();
	//document.forms["updateform"].submit();
	//return true;
}


function check_and_reset_filter(id)
{
	if (document.getElementById("f_"+id+"_min"))
	{
		if ((document.getElementById("f_"+id+"_min").options[0].selected != true || document.getElementById("f_"+id+"_max").options[0].selected != true))
		{
			document.getElementById("f_"+id+"_min").options[0].selected = true;
			document.getElementById("f_"+id+"_max").options[0].selected = true;
			return true;
		}
	}
	else if (document.getElementById("f_"+id))
	{
		if (document.getElementById("f_"+id).options)
		{
			 if (document.getElementById("f_"+id).options[0] != "" && document.getElementById("f_"+id).options[0].selected != true)
			 {
				document.getElementById("f_"+id).options[0].selected = true;
				return true;
			 }
		}
		else if (document.getElementById("f_"+id).value)
		{
			if (document.getElementById("f_"+id).value != "")
			{
				document.getElementById("f_"+id).value = "";
				return true;
			}
		}
	}
	return false;
}


function reload_page()
{
	check_submit();
	document.updateform.submit();
}

function reset_filter(id)
{
	if (check_and_reset_filter(id))
	{
		reload_page();
	}
}

function IMF_getCellClassname(rowIndex)
{
	var className = '';
	
	if(!document.getElementById("markedRow_" + IMF_tableCounter) || rowIndex != document.getElementById("markedRow_" + IMF_tableCounter).value || document.getElementById("markedRow_" + IMF_tableCounter).value == "")
	{
		if(IMF_alternatingActive == true)
		{
			if((rowIndex + 1) % 2 == 0)
			{
				className = IMF_tableClassStandard;
			}
			else
			{
				className = IMF_tableClassAlternate;
			}
		}
		else	
		{	
			className = IMF_tableClassStandard;
		}
	}
	else
	{
		className = IMF_tableClassClicked;
	}	
	
	return className;
}

function IMF_createColumn(entries, IMF_columnId)
{
	modifyTopRowColspan("increase");
	modifyGroupHeaderElement(IMF_shortName[IMF_columnId]["group"], "increase");

	var theTable = document.getElementById(IMF_tableId);
	var deleteCell = IMF_createCellForDeleteFunction(IMF_columnId, theTable.rows[0].cells.length);
	
	var theGroupTH = document.getElementById("IMF_psGroup_id_" + IMF_shortName[IMF_columnId]["group"]);
	var nextId = IMF_shortName[IMF_columnId]["next"];
	while (nextId != -1 && (undefined == document.getElementById("IMF_psCol_id_" + nextId)))
	{
		nextId = IMF_shortName[nextId]["next"];
	}
	if (nextId != -1)
	{
		headerCellIndex = document.getElementById("IMF_psCol_id_" + nextId).cellIndex;
	}

	headerRowIndex = theGroupTH.parentNode.rowIndex;	
	if (nextId == -1)
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex].appendChild(deleteCell);
	}
	else
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex].insertBefore( deleteCell, theTable.tHead.rows[IMF_headerOffset + headerRowIndex].cells[headerCellIndex]);
	}
	sortCell = IMF_createCellForSortFunction(IMF_columnId);
	if (nextId == -1)
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 1].appendChild(sortCell);
	}
	else
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 1].insertBefore( sortCell, theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 1].cells[headerCellIndex]);
	}
	headerCell = IMF_createCellForHeader(IMF_columnId);
	if (nextId == -1)
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 2].appendChild(headerCell);
	}
	else
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 2].insertBefore( headerCell, theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 2].cells[headerCellIndex]);
	}
	filterCell = IMF_createCellForFilter(IMF_columnId, theTable);
	if (nextId == -1)
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 3].appendChild(filterCell);
	}
	else
	{
		theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 3].insertBefore( filterCell, theTable.tHead.rows[IMF_headerOffset + headerRowIndex + 3].cells[headerCellIndex]);
	}
   	if(document.getElementById("IMF_refresher"))
	{
		document.getElementById("IMF_refresher").style.width = IMF_maxDocumentWidth(IMF_tableId) + "px";
	}
   	if(typeof(entries) != "object" && entries == "")
   	{
   		var cell = document.createElement("td");
   		cell.innerHTML = "?";
   		for(var i = 0; i < theTable.tBodies[tbody].rows.length; i++)
   		{
   			cell.className = IMF_getCellClassname(i);
   			if (nextId == -1)
			{
				theTable.tBodies[tbody].rows[i].appendChild(cell);
			}
			else
			{
				theTable.tBodies[tbody].rows[i].insertBefore(cell, theTable.tBodies[tbody].rows[i].cells[headerCellIndex]);
			}
   		}
   	}
   	else
   	{
   		for (var i = 0; i < entries.length; i++)  // loop on each row entry
	   	{
	   		for (var j = 0; j < entries[i].childNodes.length; j++) // loop on key/value entries within one entry node
	   		{
	        	var knoten = entries[i].childNodes[j];
				var cell = document.createElement("td");
				switch (knoten.nodeName)
				{
		        	case "key":
		        		break;
		        	case "value":
		        		if(theTable.tBodies[tbody].rows[i])
		        		{
		        			if (knoten.firstChild)
		        			{
		        				cell.innerHTML = knoten.firstChild.nodeValue;
		        			}
		        			else
		        			{
		        				cell.innerHTML = "&nbsp;";
		        			}
		        			cell.className = IMF_getCellClassname(i);
		        			if (nextId == -1)
		        			{
		        				theTable.tBodies[tbody].rows[i].appendChild(cell);
		        			}
		        			else
		        			{
		        				theTable.tBodies[tbody].rows[i].insertBefore(cell, theTable.tBodies[tbody].rows[i].cells[headerCellIndex]);
		        			}
		        		}
		        		break;
				}
	   		}
	    }
   	}
	modifyTabCheckbox(IMF_columnId, "checked");
	IMF_shortName[IMF_columnId]["displayed"] = true;
	deleteActionInfo();
}

function IMF_readContent(args)
{
	var xml;
	var request = XMLHTTP_requests[arguments[0]];
	xml = request.responseXML;
	var errmsg = "";
	if(xml == null && xml.getElementsByTagName("error"))
    {
    	var errors = xml.getElementsByTagName("error");
    	for(var i = 0; i < errors.length; i++)
    	{
    		for(var j = 0; j< errors[i].length; j++)
    		{
    			var err = errors[i].childNodes[j];
    			switch(err.nodeName)
    			{
    				case "errcode":
						errcode = err.firstChild.nodeValue;
						break;
    				case "errmsg":
    					errmsg = err.firstChild.nodeValue;
    					break;
    			}
    		}    		
    	}
    }
	if(xml != null && xml.getElementsByTagName("entry"))
	{
		var entries = xml.getElementsByTagName("entry");
	}
	if(errmsg != "")
	{
		var errText = '<div id="IMF_errorMsg"><span id="IMF_errorCode">' + errcode + '</span><br /><span id="IMF_errorText">' + errmsg + '</span></div>';
		IMF_displayErrorbox(errText);
		var entries = "";
	}
	IMF_createColumn(entries, arguments[1]);
}

function IMF_getContent(args)
{
	var theTable = window.document.getElementById(IMF_tableId);
	if (theTable.tBodies[tbody].rows[0].cells[0].className == "") // if no content shown so far
	{
		return false;
	}
	var IMF_columnId = args;
	var request = XMLHttp_do_call ("GET", "XML", IMF_asynchFile + IMF_columnId, "", "IMF_readContent", IMF_columnId);
}

function IMF_createFilter(form, id, formAction)
{
	var millis = 500;
	var date = new Date();
	var curDate = null;
	do
	{
		curDate = new Date();
	}
	while (curDate - date < millis);
	docClickLoader.submitInto(form, id, formAction);
}

function IMF_createCellForDeleteFunction(id,col_number)
{
	var cell = document.createElement('th');
	var center_tag = document.createElement('center');
	var acronym_tag = document.createElement('acronym');
	var image = document.createElement('img');
	cell.className = IMF_classTHead;
	cell.id = "IMF_psCol_id_" + id;
	acronym_tag.title = IMF_acronymTagTitle;
	acronym_tag.className = IMF_acronymTagClass;
	image.src = IMF_imgSrc + "trash_icon.gif";
	image.onClick="hideColumn("+id+");";
	if (image.getAttribute("onClick") == null)
	{
		var clicker = document.createAttribute("onClick");
		clicker.nodeValue = "hideColumn("+id+");";
		image.setAttributeNode(clicker);
	}
	acronym_tag.appendChild(image);
	var acronym_tag2 = document.createElement("acronym");
	var image2 = document.createElement("img");
	acronym_tag2.title = IMF_acronymTagTwoTitle;
	acronym_tag2.className = IMF_acronymTagClass;
	image2.src = IMF_imgSrc + "no_filter.gif";
	acronym_tag2.appendChild(image2);
	center_tag.appendChild(acronym_tag);
	center_tag.innerHTML += "&nbsp;";
	center_tag.appendChild(acronym_tag2);
	cell.appendChild(center_tag);
	return cell;
}

function IMF_createCellForSortFunction(IMF_columnId)
{
	var cell = document.createElement("th");
	var acronym_tag = document.createElement("acronym");
	var image = document.createElement("img");
	// create first arrow
	cell.className=IMF_classTHead;
	acronym_tag.title = IMF_acronymSortUpTitle;
	acronym_tag.className = IMF_acronymTagClass;
	image.src = IMF_imgSrc + "picto_up.gif";
	image.vspace=3;
	image.onClick='sort_submit("' + IMF_columnId + '","ASC");';
	if (image.getAttribute("onClick") == null)
	{
		var clicker = document.createAttribute("onClick");
		clicker.nodeValue = 'sort_submit("' + IMF_columnId + '","ASC");';
		image.setAttributeNode(clicker);
	}
	acronym_tag.appendChild(image);
	var acronym_tag2 = document.createElement("acronym");
	var image2 = document.createElement("img");
	acronym_tag2.title = IMF_acronymSortDownTitle;
	acronym_tag2.className = IMF_acronymTagClass;
	image2.src = IMF_imgSrc + "picto_down.gif";
	image2.vspace=3;
	image2.onClick='sort_submit("' + IMF_columnId + '","DESC");';
	if (image2.getAttribute("onClick") == null)
	{
		var clicker = document.createAttribute("onClick");
		clicker.nodeValue = 'sort_submit("' + IMF_columnId + '","DESC");';
		image2.setAttributeNode(clicker);
	}
	acronym_tag2.appendChild(image2);
	cell.appendChild(acronym_tag);
	cell.innerHTML += "&nbsp;";
	cell.appendChild(acronym_tag2);
	return cell;
}

function IMF_createCellForHeader(IMF_columnId)
{
	var cell = document.createElement("th");
	cell.className = IMF_classTHead;
	cell.innerHTML = IMF_shortName[IMF_columnId]["label"];
	return cell;
}

function IMF_createCellForFilter(IMF_columnId,theTable)
{
	var cell = document.createElement("th");
	cell.className = IMF_classTHead;
	cell.id = "select_" + IMF_columnId;
	cell.innerHTML = '<center><img src="'+ IMF_imgSrc + 'spinner.gif" border="0" /></center>';
	var getFilterFormular = document.getElementById("getFilterForm");
	getFilterFormular.IMF_columnId.value = IMF_columnId;
	filter_name = cell.id;
	IMF_createFilter(getFilterFormular,filter_name,"submit");
	return cell;
}

function IMF_createFilterRow(IMF_columnId,theTable)
{
	var cell = document.createElement("th");
	cell.className = IMF_classTHead;
	cell.id = "select_" + IMF_columnId;
	cell.innerHTML = '<center><img src="'+ IMF_imgSrc + 'spinner.gif" border="0" /></center>';
	var getFilterFormular = document.getElementById("getFilterForm");
	getFilterFormular.IMF_columnId.value = IMF_columnId;
	filter_name = cell.id;
		//replace index
	theTable.tHead.rows[IMF_headerOffset + 5].appendChild(cell);
	IMF_createFilter(getFilterFormular,filter_name,"submit");
}

function IMF_dynamicSiteDimensions()
{
	var height = 0;
	var width = 0;
	if(typeof(window.innerWidth) == "number")
	{
		//Non-IE
		width = window.innerWidth;
		height = window.innerHeight;
	}
	else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
	{
		//IE 6+ in 'standards compliant mode'
		width = document.documentElement.clientWidth;
		height = document.documentElement.clientHeight;
	}
	else if(document.body && (document.body.clientWidth || document.body.clientHeight))
	{
		//IE 4 compatible
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}
	var re = new Array(width, height);
	return re;
}

function IMF_maxDocumentWidth(id)
{
	var idWidth = 0;
	if(document.getElementById(id))
	{
		idWidth = document.getElementById(id).offsetWidth + document.getElementById(id).offsetLeft;
	}
	if(idWidth < document.body.offsetWidth)
	{
		idWidth = document.body.offsetWidth;
	}
	return idWidth;
}

function IMF_hideDisplayColumn(checkbox, id, refId, refText, todo)
{
	if(batchColumns == false)
	{
		if(!document.getElementById("IMF_refresher"))
		{
			var ref = document.createElement("div");
			ref.id = "IMF_refresher";
			ref.className = "IMF_refresher";
			ref.style.width = IMF_maxDocumentWidth(refId) + "px";
			ref.style.height = document.body.scrollHeight + "px";
			document.body.appendChild(ref);
			var dim = IMF_dynamicSiteDimensions();
			var loadingBox = document.createElement("div");
			loadingBox.className = "IMF_loadingBox";
			loadingBox.id = "IMF_loadingBox";
			loadingBox.innerHTML = refText;
			document.body.appendChild(loadingBox);
		}
		else
		{
			document.getElementById("IMF_loadingBox").innerHTML = refText;
			document.getElementById("IMF_loadingBox").style.display ="block";
			document.getElementById("IMF_refresher").innerHTML = "";
			document.getElementById("IMF_refresher").style.width = IMF_maxDocumentWidth(refId) + "px";
			document.getElementById("IMF_refresher").style.height = document.body.scrollHeight + "px";
			document.getElementById("IMF_refresher").style.display = "block";
		}
	}
	if (todo == 1 || (checkbox != false && checkbox.checked == true))
	{
		IMF_getContent(id);
	}
	else
	{
		hideColumn(id);
	}
	IMF_refreshPagingLinks();
}

function IMF_selectAllColumns(values, refId, refText, docids, todo)
{
	batchColumns = true;
	if(!document.getElementById("IMF_refresher"))
	{
		var ref = document.createElement("div");
		ref.id = "IMF_refresher";
		ref.className = "IMF_refresher";
		ref.style.width = IMF_maxDocumentWidth(refId) + "px";
		ref.style.height = document.body.scrollHeight + "px";
		document.body.appendChild(ref);
		var dim = IMF_dynamicSiteDimensions();
		var loadingBox = document.createElement("div");
		loadingBox.className = "IMF_loadingBox";
		loadingBox.id = "IMF_loadingBox";
		loadingBox.innerHTML = refText;
		document.body.appendChild(loadingBox);
	}
	else
	{
		document.getElementById("IMF_loadingBox").innerHTML = refText;
		document.getElementById("IMF_loadingBox").style.display ="block";
		document.getElementById("IMF_refresher").innerHTML = "";
		document.getElementById("IMF_refresher").style.width = IMF_maxDocumentWidth(refId) + "px";
		document.getElementById("IMF_refresher").style.height = document.body.scrollHeight + "px";
		document.getElementById("IMF_refresher").style.display = "block";
	}
	if(todo == 1)
	{
		checkIt = true;
	}
	else
	{
		checkIt = false;
	}
	var splitV = values.split(",");
	batchCounter = 0;
	for(var i = 0; i < splitV.length; i++)
	{
		if(splitV[i] != "")
		{
			if(document.getElementById(docids + splitV[i]))
			{
				if(document.getElementById(docids + splitV[i]).checked != checkIt)
				{
					document.getElementById(docids + splitV[i]).checked = checkIt;
					batchCounter++;
					IMF_hideDisplayColumn(false, splitV[i], refId, refText, todo);
				}
			}
		}
	}
	if(batchCounter == 0)
	{
		deleteActionInfo();
	}
}

function deleteActionInfo()
{
	var delInfo = false;
	if(batchColumns == true)
	{
		if(batchCounter > 0)
		{
			batchCounter--;
		}
		else
		{
			batchCounter = 0;
		}
		if(batchCounter == 0)
		{
			batchColumns = false;
			delInfo = true;
		}
	}
	else
	{
		delInfo = true;
	}
	if(delInfo == true)
	{
		IMF_deleteBox("IMF_refresher");
		IMF_deleteBox("IMF_loadingBox");
	}
}

function showColumn (IMF_columnId)
{
	modifyTopRowColspan("increase");
	
	var theTable = document.getElementById(IMF_tableId);
	deleteRow = IMF_createCellForDeleteFunction(IMF_columnId,theTable.rows[0].cells.length);
	//replace index
	theTable.tHead.rows[IMF_headerOffset + 2].appendChild(deleteRow);
	sortRow = IMF_createCellForSortFunction(IMF_columnId);
	theTable.tHead.rows[IMF_headerOffset + 3].appendChild(sortRow);
	headerRow = IMF_createCellForHeader(IMF_columnId);
	theTable.tHead.rows[IMF_headerOffset + 4].appendChild(headerRow);
	IMF_createFilterRow(IMF_columnId,theTable);
	var count = 0;
	for(var i = 0; i < theTable.tBodies[tbody].rows.length; i++)
	{
		count++;
		var cell = document.createElement("td");

		if(!document.getElementById("markedRow_" + IMF_tableCounter) || i != document.getElementById("markedRow_" + IMF_tableCounter).value || document.getElementById("markedRow_" + IMF_tableCounter).value == "")
		{
			if(IMF_alternatingActive == true)
			{
				if(count % 2 == 0)
				{
					cell.className = IMF_tableClassStandard;
				}
				else
				{
					cell.className = IMF_tableClassAlternate;
				}
			}
			else	
			{	
				cell.className = IMF_tableClassStandard;
			}
		}
		else
		{
			cell.className = IMF_tableClassClicked;
		}
		cell.appendChild(document.createTextNode("\u00a0"));
		theTable.tBodies[tbody].rows[i].appendChild(cell);
	}
	getContent(IMF_columnId);
}

function IMF_refreshPagingLinks()
{
	var page = IMF_pagingPage;
	var url = IMF_pagingUrl;
	var displayed = document.getElementsByName("IMF_d[]");
	if(page == '')
	{
		page = 1;
	}
	var f = new Array();
	var l = new Array();
	var r = document.getElementsByTagName("*");
	var c = 0;
	for(var t = 0; t < r.length; t++)
	{
		if(r[t].className)
		{
			if(r[t].className == "IMF_searchDisplayPagenate")
			{
				f[c] = r[t];
				if(r[t].getElementsByTagName("li"))
				{
					var cl = r[t].getElementsByTagName("li").length;
					l[c] = new Array();
					for(var j = 0; j < cl; j++)
					{
						if(r[t].getElementsByTagName("li")[j].getElementsByTagName("a")[0])
						{
							var link = r[t].getElementsByTagName("li")[j].getElementsByTagName("a")[0].href;
							link = link.match(/(\?|&)(IMF_page)(\d*)(=)(\d+)/g);
							l[c][j] = link[0].split("=")[1];						
						}
					}
				}
				c++;
			}
		}
	}
	url = url.replace(/(&IMF_d\[\])(=)(\d+)/g, '');
	url = url.replace(/(&displayed\[\])(=)(\d+)/g, '');
	url = url.replace(/(&IMF_d%5B%5D)(=)(\d+)/g, '');
	url = url.replace(/(&displayed%5B%5D)(=)(\d+)/g, '');
	url = url.replace(/(\?|&)(IMF_page)(\d*)(=)(\d+)/g, '');
	url = url.replace(/(\&IMF_showSelection=1)/g, '');
	var urlpart = url.search(/\?/);
	if(urlpart == -1)
	{
		var u = "?";
	}
	else
	{
		var u = "&";
	}
	var baseUrl = url;
	var y = 0;
	for(var i = 0; i < displayed.length; i++)
	{
		if(displayed[i].checked == true)
		{
			if(y == 0)
			{
				baseUrl += u;
			}
			else
			{
				baseUrl += "&";
			}
			baseUrl += "IMF_d[]=" + displayed[i].value;
			y++;
		}
	}
	urlPart = baseUrl.search(/\?/);
	if(urlPart == -1)
	{
		u = "?";
	}
	else
	{
		u = "&";
	}
	var showSelection = "";
	if(document.getElementById("IMF_showSelection"))
	{
		if(document.getElementById("IMF_showSelection").value == 1)
		{
			showSelection = "&IMF_showSelection=1";
		}
	}
	for(var t = 0; t < f.length; t++)
	{
		if(f[t].getElementsByTagName("li"))
		{
			for(var j = 0; j < f[t].getElementsByTagName("li").length; j++)
			{
				if(f[t].getElementsByTagName("li")[j].getElementsByTagName("a")[0])
				{
					f[t].getElementsByTagName("li")[j].getElementsByTagName("a")[0].href = baseUrl + u + "IMF_page=" + l[t][j] + showSelection;
				}
			}
		}
	}
	return true;
}


function deleteColumns(columns)
{
	for (var i = columns.length-1; i >= 0;i--)
	{
		document.updateform.hidden.options[columns[i]] = null;
	}
}

function modifyTabCheckbox(id, mode)
{
	var checkbox = document.getElementById("IMF_d_" + id);
	checkbox.checked = (mode == "checked");
}

function modifyTopRowColspan(mode)
{
	if (mode == "reduce") 
		modValue = -1;
		else
		modValue = 1;
	var topRow = document.getElementById("IMF_psToprowRow0");
	topRow.colSpan = topRow.colSpan + modValue;
	topRow = document.getElementById("IMF_psToprowRow1");
	topRow.colSpan = topRow.colSpan + modValue;
}
	
function modifyGroupHeaderElement(index, mode)
{
	var headerCell = document.getElementById("IMF_psGroup_id_" + index);
	
	if (mode == "reduce") {
		if (headerCell.colSpan == 1) {
			headerCell.parentNode.removeChild(headerCell);
		} else
			headerCell.colSpan--;
	} else {
		if (headerCell == undefined) {
			var headerCell = document.createElement("th");
			headerCell.className = "IMF_psGroupHeaders";
			headerCell.innerHTML = IMF_groups[index]['name'];
			headerCell.id = "IMF_psGroup_id_" + index;
			headerRow = document.getElementById("IMF_psGroup_id_00").parentNode;
			headerCell.colSpan = 1;
			if (headerRow.getElementsByTagName("th").length == 1) {
				headerRow.appendChild(headerCell);
			} else {
				nextId = index + 1;
				while (nextId < IMF_groups.length && (undefined == document.getElementById("IMF_psGroup_id_" + nextId))) {
					nextId++;
				}
				if (nextId < IMF_groups.length) {
					nextGroupCell = document.getElementById("IMF_psGroup_id_" + nextId);
					headerRow.insertBefore(headerCell, headerRow.getElementsByTagName("th")[nextGroupCell.cellIndex]);
				} else {
					headerRow.appendChild(headerCell);
				}
			}
		} else {
			headerCell.colSpan++;
		}
	}
}

function hideColumn (id)
{
	if(typeof document.getElementById(IMF_tableId) != "undefined") {
		var table = document.getElementById(IMF_tableId);
	} else {
		if (document.all) {
			var table = eval("document.all." + IMF_tableId);
		} else return false;
	}
	id_name = "IMF_psCol_id_" + id;
	var tableRow = document.getElementById(id_name).parentNode;
	var r=tableRow.rowIndex;

	var del_id = 0;
	for (var j = 0; j < tableRow.cells.length; j++)
	{
   		if (tableRow.cells[j].id == id_name)
   		{
			del_id = j;
		}
	}
	if (del_id == 0)
	{
		return true;
	}
	modifyTabCheckbox(id, "reset");

	var reload_necessary = check_and_reset_filter(id);
	if (document.updateform.sort.value == id)
	{
		reload_necessary = true;
		document.updateform.sort.value = '';
		document.updateform.sortorder.value = '';
	}
	if (reload_necessary)
	{
		reload_page();
	}

	modifyTopRowColspan("reduce");
	modifyGroupHeaderElement(IMF_shortName[id]["group"], "reduce");
	
	while (r < table.rows.length && table.rows[r].cells[0].colSpan == 1)
	{
		table.rows[r].removeChild(table.rows[r].cells[del_id]);
		r++;
	}
	
	IMF_shortName[id]["displayed"] = false;

	deleteActionInfo();
}

function createExport (mode)
{
	//check_submit();
		// possible modes: excel, pdf
	document.updateform.mode.value = mode;
	document.updateform.submit();
	document.updateform.mode.value = "udate_form";
}

function check_submit()
{
	return true;
}


function IMF_ps_tabs(nr, classname)
{
	var end = document.getElementById("IMF_groupnumbers").value;
	for(var i = 1; i <= end; i++)
	{
		if(document.getElementById("IMF_columnGroup_" + i))
		{
			document.getElementById("IMF_columnGroup_" + i).className = "";
		}
		if(document.getElementById("IMF_columnContent_" + i))
		{
			document.getElementById("IMF_columnContent_" + i).style.display = "none";
		}
	}
	if(document.getElementById("IMF_columnAll"))
	{
		document.getElementById("IMF_columnAll").className = '';
	}
	if(document.getElementById("IMF_columnGroup_" + nr))
	{
		document.getElementById("IMF_columnGroup_" + nr).className = classname;
	}
	if(document.getElementById("IMF_columnContent_" + nr))
	{
		document.getElementById("IMF_columnContent_" + nr).style.display = "block";
	}
	if(document.getElementById("IMF_chosenTab"))
	{
		document.getElementById("IMF_chosenTab").value = nr;
	}
}

function IMF_ps_all_tabs(classname)
{
	var end = document.getElementById("IMF_groupnumbers").value;
	for(var i = 1; i <= end; i++)
	{
		if(document.getElementById("IMF_columnGroup_" + i))
		{
			document.getElementById("IMF_columnGroup_" + i).className = "";
		}
		if(document.getElementById("IMF_columnContent_" + i))
		{
			document.getElementById("IMF_columnContent_" + i).style.display = "block";
		}
	}
	if(document.getElementById("IMF_columnAll"))
	{
		document.getElementById("IMF_columnAll").className = classname;
	}
}

function IMF_displayErrorbox(text)
{
	var errorText = "";
	if(text.match(/(<div id="IMF_errorMsg">\s)(.*\s){0,}(<\/div>)/))
	{
		var errorCode = 0;
		var errorMsg = "";
		if(text.match(/(<span id="IMF_errorCode">)(.*)(<\/span>)/))
		{
			errorCode = RegExp.$2;
		}
		if(text.match(/(<span id="IMF_errorText">)(.*)(<\/span>)/))
		{
			errorMsg = RegExp.$2;
		}
		errorText = errorMsg + "<br />(Code " + errorCode + ")<br /><br />&raquo; <a href='#' onClick='this.blur(); IMF_deleteBox(\"IMF_errorBox\"); return false;'>" + IMF_closeText + "</a>";
	}
	if(!document.getElementById("IMF_errorBox"))
	{
		var errorBox = document.createElement("div");
		errorBox.className = "IMF_errorBox";
		errorBox.id = "IMF_errorBox";
		errorBox.innerHTML = errorText;
		document.body.appendChild(errorBox);
	}
	else
	{
		document.getElementById("IMF_errorBox").innerHTML = errorText;
		document.getElementById("IMF_errorBox").style.display ="block";
	}
}

function IMF_deleteBox(id)
{
	if(document.getElementById(id))
	{
		document.getElementById(id).innerHTML = "";
		document.getElementById(id).style.display = "none";
	}	
}

function displayErrorBox(docText)
{
	if(docText.match(/(<div id="IMF_errorMsg">)/i))	
	{
		IMF_displayErrorbox(docText);
		docText = "";
	}
	return docText;
}