
var dom = (document.getElementsByTagName) ? true : false;
var ie5 = (document.getElementsByTagName && document.all) ? true : false;
//var arrowUp, arrowDown;

/*if (ie5 || dom)
	initSortTable();
*/
function RemoveLinks(linkname)
{
	for (var i = 0 ; i<document.anchors.length;i++)
	{
		if (document.anchors[i].name==linkname)
		{
		
			document.anchors[i].className='LinkNoLine';
		}
		/*else
		{
			alert(document.anchors[i].name);
		}*/
	}
}
function setInnerText(el,newtext) {
	
	
	var str = "";
	/*var div_el=document.createElement("<div class=\"test\">");
	div_el.firstChild.nodeValue="bla";
	el.appendChild(div_ el);
	*/
	//el.appendChild(document.getElementById("divempty"));
	//(document.createTextNode("&nbsp;"))
	//el.style = 'none';
	//el.style="test";
	//el.bgColor ="#e7ebff";
	//el.style.color="red";
	//alert (el.style.color);
	//ForeColor
	for (var i=0; i<el.childNodes.length; i++) {
		switch (el.childNodes.item(i).nodeType) {
			case 1: //ELEMENT_NODE
				if (el.childNodes.item(i).name == "cat")
				{
					//alert("catinvisible");
					el.childNodes.item(i).name = "catinvisible";
				}
				
				str += setInnerText(el.childNodes.item(i),newtext);
				
				//el.childNodes.item(i).style.color ="#e7ebff";
				//alert('element: ' + str);
				break;
			case 3:	//TEXT_NODE
				str += el.childNodes.item(i).nodeValue;
				el.childNodes.item(i).nodeValue=document.getElementById("divempty").firstChild.nodeValue;
				
				/*alert(el.childNodes.item(i).nodeValue);
				if (el.childNodes.item(i).nodeValue != " ")
				{
					el.childNodes.item(i).nodeValue=newtext;
				}*/
				//=replace(el.childNodes.item(i).nodeValue,newtext);
				//el.childNodes.item(i).style.color ="#e7ebff";
				//el.childNodes.item(i).nodeValue.style.display = 'none';
				//alert('text: ' + str);
				break;
		}
		
	}
	//alert(str);
	RemoveLinks("catinvisible");
	return str;
}


function alerttimeout(rownum)
{
	alert(rownum);
}
function HideDuplicateCategory(tableid)
{
	alert("HideDuplicateCategory");
	 var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
	//alert(table);// =="undefined");         
	if (typeof(table)=="undefined" || table==null)
	{
	return;
	}
	 if (table.rows.length == 0)
	{
		return;
	}

//	alert("start HideDuplicateCategory");
	/*var tBody = tableNode.tBodies[0];
	var trs = tBody.rows;
	var a = new Array();
	
	for (var i=0; i<trs.length; i++) {
		a[i] = trs[i];
	}*/
	//col1=table.rows[0].cells[0]
	var cat="";
	var currcat="";
	var el;
	var oldtext="";
	var catcnt=0;
	for (var i=1; i < table.rows.length; i++)
	{
		/*if (i  % 5 == 0 || i==1)
		{
			alert("row" + i);
		}*/
		/*if (i  % 5 == 0 || i==1)
		{
			var timeout=setTimeout("alerttimeout(" + i + ")",500);
		}*/
		currcat=getInnerText(table.rows[i].cells[0]);
		if (cat == currcat)
		{
			//alert("duplicate " + cat + " on row " + i);
			//el = table.rows[i].cells[0];
			oldtext=setInnerText(table.rows[i].cells[0]," ");

			//alert(table.rows[i].cells[0].innerHtml);
			//alert(table.rows[i].cells[0].childNodes.item(0).nodeType);
			//alert(table.rows[i].cells[0].firstChild.childNodes.firstChild.nodeType);
			//alert(table.rows[i].cells[0].nodeValue);
			//table.rows[i].cells[0].firstChild.nodeValue="bla";
		}
		else
		{
			catcnt++;
		}
		if(catcnt % 2 == 0)
		{
			table.rows[i].bgColor="#e7ebff";
		}
		else
		{
			table.rows[i].bgColor="white";
		}

		cat=currcat;
		//alert(getInnerText(table.rows[i].cells[0]));
	}

}
function setInnerTextPortfolio(el,newtext) {
	
	
	var str = "";
	/*var div_el=document.createElement("<div class=\"test\">");
	div_el.firstChild.nodeValue="bla";
	el.appendChild(div_ el);
	*/
	//el.appendChild(document.getElementById("divempty"));
	//(document.createTextNode("&nbsp;"))
	//el.style = 'none';
	//el.style="test";
	//el.bgColor ="#e7ebff";
	//el.style.color="red";
	//alert (el.style.color);
	//ForeColor
	
	for (var i=0; i<el.childNodes.length; i++) {
		//alert("type=" + el.childNodes.item(i).nodeType);
		switch (el.childNodes.item(i).nodeType) {
			
			case 3:	//TEXT_NODE
				//alert("Type 3");
				str += el.childNodes.item(i).nodeValue;
				el.childNodes.item(i).nodeValue=newtext;//document.getElementById("divempty").firstChild.nodeValue;
				
				/*alert(el.childNodes.item(i).nodeValue);
				if (el.childNodes.item(i).nodeValue != " ")
				{
					el.childNodes.item(i).nodeValue=newtext;
				}*/
				//=replace(el.childNodes.item(i).nodeValue,newtext);
				//el.childNodes.item(i).style.color ="#e7ebff";
				//el.childNodes.item(i).nodeValue.style.display = 'none';
				//alert('text: ' + str);
				break;
		}
		
	}
	//alert(str);
	//RemoveLinks("catinvisible");
	return str;
}

function SetPortfolioViewValues(tableid,extended)
{
	
	
    //alert('gettable');
	 var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
	//alert('gottable');
	//to avoid javascript errors: check first if the table is in the html
	 //alert(table);// =="undefined");         
	 if (typeof(table)=="undefined" || table==null)
	 {
		return;
	}
	if (table.rows.length == 0)
	{
		return;
	 }
	
	var currval = 0;
	var currtext = "";
	var el;
	var oldtext = "";
	var idxadvice = 0;
	var idxvaluation = 0;
	var idxvars = 0;
	//var catcnt=0;
	if(!extended)
		{
			idxadvice = 7;
			idxvaluation = 8;
			idxvars = 6;
			rownum=5;
		}
		else
		{
			idxadvice = 9;
			idxvaluation = 8;
			idxvars = 7;
			rownum=3;
		}
	for (var i=1; i < table.rows.length; i++)
	{
		
		if (table.rows[i].cells.length > 1)//check if this row is not a blue line
		{
			
			if (i < table.rows.length-rownum)//don't check on empty advice or evaluation in the last 3 rows
			{
				//alert("getinnertext");
				//if there is no advice or evaluation in our database: set '-'
				currtext = getInnerText(table.rows[i].cells[idxadvice]);
				//alert("*" + currtext + "*");
				if (currtext==" ")
				{
					//alert("set - ");
					oldtext = setInnerTextPortfolio(table.rows[i].cells[idxadvice],"-");
				}
				if (idxvaluation < table.rows[i].cells.length) // in portfolio BH: no valuation
				{
					currtext = getInnerText(table.rows[i].cells[idxvaluation]);
					//alert("*" + currtext + "*");
					if (currtext==" ")
					{
						//alert("set - ");
						oldtext = setInnerTextPortfolio(table.rows[i].cells[idxvaluation],"-");
					}
				}
			}
			
			if ((!extended) && (i >= table.rows.length-5)) //percentage is in the third column
			{
				//alert("reset idxvars");
				idxvars = 3;  //third column (start counting from 0)
			}
			//remove percentages and set colours
			currtext = getInnerText(table.rows[i].cells[idxvars]);
			currval =  toNumber(currtext);
			//alert(currtext);
			//alert(currval);
			if (currtext=="%")
			{
				oldtext = setInnerTextPortfolio(table.rows[i].cells[idxvars],"-");
			}
			else if (currval < 0)
			{
				table.rows[i].cells[idxvars].style.color ="#CC3300";
			}
			else if (currval >=0)
			{
				table.rows[i].cells[idxvars].style.color ="#009900";	
			}
		}	
		/*else
		{
		alert("blue line");
		}*/
	}

}


function ChangeText(divid,text)
{
   var d_text = document.getElementById(divid);
   d_text.firstChild.nodeValue=text;
}

/*function initSortTable(ColsToHide) {
	//alert(ColsToHide);
	//var HideColsArr=new Array(7,8,9,10);
	//alert(HideColsArr.length);
	if (ie5 || dom)
	{
		//alert(ColsToHide.length);
		for(var i=0;i < ColsToHide.length;i++)
		{
			hideColumn(ColsToHide[i],'aTable');
		}
	}
}*/

function ChangeTable(f,idtable,maxcols)
{
	var checkcnt=0;
	for (var i = 0; i < f.elements.length; i++)
	{
		var e = f.elements[i];
		if (e.type =='checkbox')
		{
			if (e.checked)
			{
				checkcnt++;
				if (checkcnt > maxcols)
				{
					alert('Maximum number of cols=' + maxcols);
					return;
				}
			}
		}
	}
	
	ShowColumns(f,idtable);
}

function ShowInitialColumns(f,tableid){
//first hide all columns except the 2 first 
var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
 //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

/*
don't hide:  style="display:none" for each td in TT_FundCompareTable_FR.html
for (var i=3;i<table.rows[0].cells.length;i++)
{
	hideColumn(i,tableid);
}
*/
//check now which fields are checked and show the
//corresponding columns
 for (var i = 0; i < f.elements.length; i++)
 {
	var e = f.elements[i];
	//alert('*' + e.type + '*');
	//if (e.type =='checkbox')
	//{
		if (e.checked)
		{
			showColumn(e.value,tableid);
		}
/*		else
		{
			hideColumn(e.value,tableid);
		}*/
	//}
	//else if (e.type =='hidden')
	//{
	//	showColumn(e.value);
	//}
 } 
}

function ShowTableColumns(tableid,howmany,where)
{
 var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
 //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }
 var collen;
 collen = table.rows[0].cells.length;
 var currpos=GetLastColnr(tableid);
 if (where=='last')
 {
	//alert(collen-howmany);
	for (var i=1; i <= currpos-howmany; i++) //column 0 is always visible
	{
		hideColumn(i,tableid);
	}
	for (var i=currpos+1; i < collen-1; i++)
	{
		hideColumn(i,tableid);
	}
}
/* else if(where=='first')
 {
	for (var i=collen-howmany; i < collen; i++)
	{
		hideColumn(i,tableid);
	}
 
 }*/ 
 //alert(collen);
 //alert(table.rows[2].cells[2].innerHTML);
 //table.rows[2].cells[2].innerHTML);
//hide left arrow if there are no columns before

//alert(currpos-howmany);
if (currpos-howmany <=0)
{
	var previmgid = tableid + 'PreviousImg'; 
	var previmg = document.all ? document.all[previmgid] :
				document.getElementById(previmgid);
	var blancimgpath= "/site_images/SP/stocks/pix.gif";
	previmg.src = blancimgpath;
	//always show column 0 (label column)
	showColumn(0,tableid);
}


}

function ShowColumns(f,tableid){
	//alert(f.elements.length);
 //var f = document.ChooseFields;
 for (var i = 0; i < f.elements.length; i++)
 {
	var e = f.elements[i];
	//alert('*' + e.type + '*');
	//if (e.type =='checkbox')
	//{
		if (e.checked)
		{
			showColumn(e.value,tableid);
		}
		else
		{
			hideColumn(e.value,tableid);
		}
	//}
	//else if (e.type =='hidden')
	//{
	//	showColumn(e.value);
	//}
 } 
}
function trim(inputString) {
 return inputString.replace(/^\s*(\b.*\b|)\s*$/, "$1");
 
} // End "trim" function

function GetLastColnr(tableid)
{
    var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);

	 //alert(table);// =="undefined");         
	if (typeof(table)=="undefined" || table==null)
	{
		return;
	}
	if (table.rows.length == 0)
	{
		return;
	}

	var lastcolnr;
	var collen = table.rows[0].cells.length;
	for (var i=1;i < collen; i++)
	{
		var celltekst = trim(getInnerText(table.rows[0].cells[i]));
		//alert("*" + celltekst + "*");
		if (celltekst=='')
		{
			//alert(i-1);
			return i-1;
			//alert("*" + trim(getInnerText(table.rows[0].cells[i])) + "*");
			break;
		}
	}
}
function SwitchColumn(tableid,howmany,curpos,direction)
{
  var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
   //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

  var nextimgid = tableid + 'NextImg'; 
  var previmgid = tableid + 'PreviousImg'; 
  var nextimg = document.all ? document.all[nextimgid] :
				document.getElementById(nextimgid);
  var previmg = document.all ? document.all[previmgid] :
				document.getElementById(previmgid);
  var previmgpath= "/site_images/SP/stocks/fleche_gche.gif";
  var nextimgpath= "/site_images/SP/stocks/fleche_drte.gif";
  var blancimgpath= "/site_images/SP/stocks/pix.gif";
  var lastcolnr =GetLastColnr(tableid);

  var newcurpos;
  if(direction=='previous')
  { 
	//alert("hide " + curpos);
	hideColumn(curpos,tableid);
	
	/*for (var i=curpos-howmany; i<=curpos-1;i++)
	{
		showColumn(i,tableid);
	}*/
	var showcol=curpos-howmany;
	//alert("show " + showcol);
	showColumn(showcol,tableid);
	
	
	newcurpos = curpos-1
	
	if (newcurpos - howmany > 0)  //show previous image
	{
		previmg.src=previmgpath;
		previmg.onclick = function() {SwitchColumn(tableid,howmany,newcurpos,'previous');}
	}
	else //don't show previous image
	{
		previmg.src = blancimgpath;
	}
	//show next image	
    nextimg.src = nextimgpath;
    nextimg.onclick = function() {SwitchColumn(tableid,howmany,newcurpos,'next');}
  }
  else
  {
	newcurpos = curpos + 1
	var hidecol2=newcurpos-howmany;
	//alert ("hide " + hidecol2);
	hideColumn(hidecol2,tableid);
	
	//for (var i = newcurpos; i
	//alert ("show " + newcurpos);
	showColumn(newcurpos,tableid);
	
	
	if (newcurpos == lastcolnr)  //don't show next image
	{
		nextimg.src = blancimgpath;
	}
	else //show next image
	{
		nextimg.src = nextimgpath;
		nextimg.onclick = function() {SwitchColumn(tableid,howmany,newcurpos,'next');}

	}
	//show previous image	
    previmg.src = previmgpath;
    previmg.onclick = function() {SwitchColumn(tableid,howmany,newcurpos,'previous');}
  }

}

function testtable(tableid,howmany,curpos,direction)
{
  //testtable(tableid,col,row)
  //for (var r = 0; r < table.rows.length; r++)
  //alert(table.rows[row].cells[col].innerText);
  /*	var tmp, table;

	if (ie5)
		tmp = e.srcElement;
	else if (dom)
		tmp = e.target;

	table = getParent(tmp, "TABLE");
	alert(table.rows[row].cells[col].innerHTML);
*/
  var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
   //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

  var nextimgid = tableid + 'NextImg'; 
  var previmgid = tableid + 'PreviousImg'; 
  var nextimg = document.all ? document.all[nextimgid] :
				document.getElementById(nextimgid);
  var previmg = document.all ? document.all[previmgid] :
				document.getElementById(previmgid);
  //alert(el.src);
  //alert(nextimg.src);
  var collen;
  collen = table.rows[0].cells.length;
  var maxcolnr = collen-2;
  //alert('maxcolnr=' + maxcolnr);
  // to do: als totaal aantal kolommen <= howmany!!!
  var modulo = maxcolnr % howmany;
  lastcurpos = (modulo == 0) ? howmany : modulo;
  //alert('lastcurpos=' + lastcurpos);
  var previmgpath= "/site_images/SP/stocks/fleche_gche.gif";
  var nextimgpath= "/site_images/SP/stocks/fleche_gche.gif";
  var blancimgpath= "/site_images/SP/stocks/pix.gif";
  var newcurpos;
  if(direction=='previous')
  { 
    newcurpos = curpos - howmany;
	//alert('newcurpos=' + newcurpos);
	for(var i = curpos; i > newcurpos; i--)
	{
		//alert('hide ' + i);
		hideColumn(i,tableid);
	}
	//var firstcolnr = newcurpos-howmany;//newcurpos - howmany > 0 ? newcurpos-howmany : 1
	//alert('firstcolnr=' + firstcolnr);
	for(var i = newcurpos; i > newcurpos-howmany ; i--)
	{
		if (i > 0)
		{
			//alert('show ' + i);
			showColumn(i,tableid);
		}
	}
	
	if (newcurpos - howmany > 0)  //show previous image
	{
		previmg.src=previmgpath;
		previmg.onclick = function() {testtable(tableid,howmany,newcurpos,'previous');}
	}
	else //don't show previous image
	{
		previmg.src = blancimgpath;
	}
	//show next image	
    nextimg.src = nextimgpath;
    nextimg.onclick = function() {testtable(tableid,howmany,newcurpos,'next');}
  }
  else if(direction=='next')
  {
    newcurpos = curpos + howmany;
	//alert('newcurpos=' + newcurpos);
	
	var firstcolnrtohide = curpos-(howmany-1);//newcurpos - howmany > 0 ? newcurpos-howmany : 1
	//alert('firstcolnrtohide=' + firstcolnrtohide);
	for(var i = firstcolnrtohide; i <= curpos; i++)
	{
		if (i > 0)
		{
			//alert('hide ' + i);
			hideColumn(i,tableid);
		}
	}
	
	for(var i = curpos + 1; i <= newcurpos; i++)
	{
		if (i > 0)
		{
			//alert('show ' + i);
			showColumn(i,tableid);
		}
	}
	
	if (newcurpos == maxcolnr)  //don't show next image
	{
		nextimg.src = blancimgpath;
	}
	else //show next image
	{
		nextimg.src = nextimgpath;
		nextimg.onclick = function() {testtable(tableid,howmany,newcurpos,'next');}

	}
	//show previous image	
    previmg.src = previmgpath;
    previmg.onclick = function() {testtable(tableid,howmany,newcurpos,'previous');}
	
  }
  //if ( )  
  
  
}
function HideTableRows(tableid,howmany,where)
{
	var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
 //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

	var collen;
	rowlen = table.rows.length;
	//alert(rowlen);
	if (where=='last')
	{
		for(var i=rowlen-howmany; i <rowlen;i++)
		{
			hideRow(i,tableid)
		}
	}
	else
	{
		alert('not implemented');
	}
}

function ShowTableRows(tableid,howmany,where)
{
	var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);

	 //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

	var collen;
	rowlen = table.rows.length;
	//alert(rowlen);
	if (where=='last')
	{
		for(var i=rowlen-howmany; i <rowlen;i++)
		{
			showRow(i,tableid)
		}
	}
	else
	{
		alert('not implemented');
	}
}

function hideRow (rowIndex,tableid)
{
  var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
   //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

table.rows[rowIndex].style.display = 'none';

}

function showRow (rowIndex,tableid)
{
  var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
   //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

		table.rows[rowIndex].style.display = '';

}

function hideColumn (colIndex,tableid) {
//	alert('hidecol ' + colIndex);
 var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
  //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

  for (var r = 0; r < table.rows.length; r++)
    table.rows[r].cells[colIndex].style.display = 'none';
 
	
}
function showColumn (colIndex,tableid) {
//	alert('showcol ' + colIndex);
  /*var table = document.all ? document.all.aTable :
              document.getElementById('aTable');*/
  var table = document.all ? document.all[tableid] :
              document.getElementById(tableid);
   //alert(table);// =="undefined");         
 if (typeof(table)=="undefined" || table==null)
 {
	return;
 }
 if (table.rows.length == 0)
 {
	return;
 }

  for (var r = 0; r < table.rows.length; r++)
    table.rows[r].cells[colIndex].style.display = '';
 
}

function sortTable(tableNode, nCol, bDesc, sType) {
	
	var tBody = tableNode.tBodies[0];
	var trs = tBody.rows;
	var a = new Array();
	
	for (var i=0; i<trs.length; i++) {
		a[i] = trs[i];
	}
	
	a.sort(compareByColumn(nCol,bDesc,sType));
	
	for (var i=0; i<a.length; i++) {
		tBody.appendChild(a[i]);
	}
	//set row colors
	//alert("set colours");
	SetAlternateRowColors(tBody,"#FFFFFF","#e7ebff");

	
	/*for (var j=0;j<tBody.rows.length;j++)
	{
		var modj=j % 2;
		//alert(modj);
		if(modj == 0)
		{
			//alert("row" + j + " white");
			tBody.rows[j].bgColor="white";
		}
		else
		{
			//alert("row" + j + " blue");
			tBody.rows[j].bgColor="#e7ebff";
		}
		//alert(tBody.rows[i].bgColor.toString());
	}*/
}

function SetAlternateRowColors(tBodyel,color1,color2)
{
	/*var tBodyel = document.all ? document.all[SectionId] :
              document.getElementById(SectionId);
             */
	//alert(tBodyel.id);
	for (var j=0;j<tBodyel.rows.length;j++)
	{
		var modj=j % 2;
		
		tBodyel.rows[j].className = "";
		if(modj == 0)
		{
			
			tBodyel.rows[j].bgColor=color1;//"white"
		}
		else
		{
			
			tBodyel.rows[j].bgColor=color2;//"#e7ebff"
		}
		//alert(tBody.rows[i].bgColor.toString());
	}
}

function sortTableSection(tableNode, nCol, bDesc, sType,SectionId) {
	
	//var tBody = tableNode.tBodies[0];
	//var tBody = tableNode.tBodies["BODY2"];
	var tBody = document.all ? document.all[SectionId] :
              document.getElementById(SectionId);
	//alert("sorting part " + tBody.id);
	var trs = tBody.rows;
	var a = new Array();
	
	for (var i=0; i<trs.length; i++) {
		a[i] = trs[i];
	}
	
	a.sort(compareByColumn(nCol,bDesc,sType));
	
	for (var i=0; i<a.length; i++) {
		tBody.appendChild(a[i]);
	}
	//set row colors
	//alert("set colours");
	//tBodyel=tBody;
	
	SetAlternateRowColors(tBody,"#e7ebff","white");
	
	/*for (var j=0;j<tBodyel.rows.length;j++)
	{
		var modj=j % 2;
		//alert(modj);
		if(modj == 0)
		{
			//alert("row" + j + " white");
			tBodyel.rows[j].bgColor="white";
		}
		else
		{
			//alert("row" + j + " blue");
			tBodyel.rows[j].bgColor="#e7ebff";
		}
		//alert(tBody.rows[i].bgColor.toString());
	}*/
}


function CaseInsensitiveString(s) {
	return String(s).toUpperCase();
}

function parseDate(s) {
	//alert(s);
	if (s.length==0)
	{
		s="01/01/1900";
	}
	var d,s1;
	s1 = s.replace(/\-/g, '/');
	var datesplit=s1.split('/');
	//alert(datesplit[0]);
	//alert(datesplit[1]);
	//alert(datesplit[2]);
	var dday,dmonth,dyear;
	dday = parseInt(datesplit[0].toString(),10);
	dmonth = parseInt(datesplit[1].toString(),10);
	dyear = parseInt(datesplit[2].toString(),10);
	dyear = dyear < 100 ? dyear + 2000 : dyear;
	//alert(dday.toString());
	//alert(dmonth.toString());
	//alert(dyear.toString());

	d = new Date(dyear,dmonth,dday);//Date.parse('08/03/02');
	//alert(Date.parse(d.toString()));
	return Date.parse(d.toString());

 
}

/* alternative to number function
 * This one is slower but can handle non numerical characters in
 * the string allow strings like the follow (as well as a lot more)
 * to be used:
 *    "1,000,000"
 *    "1 000 000"
 *    "100cm"
 */
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}
function toNumber(s) {
	var s_num;
	if (trim(s) == "-") 
	{
		//alert("*" + s + "*");
		s_num="-9999";
	}
	else
	{
		s_num = s.replace(/[^0-9\.-]/g, "");
	}
    //return Number(s.replace(/[^0-9\.-]/g, ""));
    return Number(s_num);
}

function compareByColumn(nCol, bDescending, sType) {
	var c = nCol;
	var d = bDescending;
	
	var fTypeCast = String;
	
	if (sType == "Number")
		fTypeCast = toNumber;
	else if (sType == "Date")
		fTypeCast = parseDate;
	else if (sType == "CaseInsensitiveString")
		fTypeCast = CaseInsensitiveString;

	return function (n1, n2) {
		if (fTypeCast(getInnerText(n1.cells[c])) < fTypeCast(getInnerText(n2.cells[c])))
			return d ? -1 : +1;
		if (fTypeCast(getInnerText(n1.cells[c])) > fTypeCast(getInnerText(n2.cells[c])))
			return d ? +1 : -1;
		return 0;
	};
}


function sortColumn(e,direction) {

	var tmp, el, tHeadParent;

	if (ie5)
		tmp = e.srcElement;
	else if (dom)
		tmp = e.target;

	tHeadParent = getParent(tmp, "THEAD");
	el = getParent(tmp, "TD");
	
	if (tHeadParent == null)
		return;
		
	if (el != null) {
	    
		var p = el.parentNode;
		var i;
		
		if (direction=='desc')
		{
			el._descending = true;
		}
		else
		{
			el._descending = false;
		}
		
		/*if (el._descending)	// catch the null
			el._descending = false;
		else
			el._descending = true;
		*/
		/*if (tHeadParent.arrow != null) {
			if (tHeadParent.arrow.parentNode != el) {
				tHeadParent.arrow.parentNode._descending = null;	//reset sort order		
			}
			tHeadParent.arrow.parentNode.removeChild(tHeadParent.arrow);
		}*/

		/*if (el._descending)
			tHeadParent.arrow = arrowDown.cloneNode(true);
		else
			tHeadParent.arrow = arrowUp.cloneNode(true);
		*/
		//el.appendChild(tHeadParent.arrow);
		
			

		// get the index of the td
		for (i=0; i<p.cells.length; i++) {
			if (p.cells[i] == el) break;
		}
		
		var table = getParent(el, "TABLE");
		// can't fail
		
		sortTable(table,i,el._descending, el.getAttribute("type"));
		//alert("finished");
	}
}

function sortColumnSection(e,direction) {

	var tmp, el, tHeadParent;

	if (ie5)
		tmp = e.srcElement;
	else if (dom)
		tmp = e.target;

	tHeadParent = getParent(tmp, "THEAD");
	//alert(tHeadParent.tagName + "; id="+ tHeadParent.id);
	var HeadingId, BodyId;
	HeadingId = tHeadParent.id;
	BodyId=HeadingId.replace("HEAD","BODY");
	//alert(BodyId);
	//id
	el = getParent(tmp, "TD");

	if (tHeadParent == null)
		return;
		
	if (el != null) {
	    
		var p = el.parentNode;
		var i;
		
		if (direction=='desc')
		{
			el._descending = true;
		}
		else
		{
			el._descending = false;
		}
		
		
		// get the index of the td
		for (i=0; i<p.cells.length; i++) {
			if (p.cells[i] == el) break;
		}

		var table = getParent(el, "TABLE");
		// can't fail
		
		sortTableSection(table,i,el._descending, el.getAttribute("type"),BodyId);
		
	}
	
}

function getInnerText(el) {
	if (ie5) return el.innerText;	//Not needed but it is faster
	
	var str = "";
	
	for (var i=0; i<el.childNodes.length; i++) {
		switch (el.childNodes.item(i).nodeType) {
			case 1: //ELEMENT_NODE
				str += getInnerText(el.childNodes.item(i));
				break;
			case 3:	//TEXT_NODE
				str += el.childNodes.item(i).nodeValue;
				break;
		}
		
	}
	//alert(str);
	return str;
}

function getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
		return el;
	else
		return getParent(el.parentNode, pTagName);
}

//JBG 2005-11-28
function ShowPercentSign(tableName, idList)
{
	var table = document.getElementById(tableName);
	if (typeof(table)=="undefined" || table==null)
	{
		return;
	}
	for (i=0;i<table.rows.length;i++)
	{
		if (idList.indexOf("," + table.rows[i].id + ",") >= 0)
		{
			var row = table.rows[i];
			for (j=1;j<row.cells.length-1;j++)
			{
				if (row.cells[j].childNodes.length > 0 && !ContainsImage(row.cells[j].childNodes))
				{
					if (row.cells[j].innerText != '&nbsp;')
					{
						row.cells[j].insertAdjacentHTML('beforeEnd', '%');
					}
				}	
			}
		}
	}
}

function ContainsImage(collection)
{
	var contains = false;
	for (var i=0;i<collection.length;i++)
	{
		var item = collection.item(i);
		switch (item.nodeType) 
		{
			case 1: //ELEMENT_NODE
				if (item.tagName == "IMG")
				{
					contains = true;
					break;
				}
				else
				{
					contains = contains || ContainsImage(item.childNodes);
				}
				break;
			case 3:	//TEXT_NODE
				
				break;
		}
		if (contains)
		{
			break;
		}
	}
	return contains;
}
