var parent;
var sortOrder;
function SelectorTableField(name, headerTxt, type, sortable, selector)
{
try
{
this.attributeName=name;
this.header=getLabel(headerTxt,getLanguage());
this.type=type;
this.sortable=sortable;
this.parent=selector;
this.sortOrder="A";
var names=name.split("/");
for (nIDX=1;nIDX<names.length;nIDX++)
	this.sortOrder+="/A";

}
catch (exF)
{
 alert ("error in field: "+exF.message);
}
}


SelectorTableField.prototype.compareValues=compareValues;
SelectorTableField.prototype.getHeaderHTML=getHeaderHTML;
SelectorTableField.prototype.getCellHTML=getCellHTML;
SelectorTableField.prototype.getFieldSubindex=getFieldSubindex;
SelectorTableField.prototype.getFieldValue=getFieldValue;
SelectorTableField.prototype.getSelect=getSelect;
SelectorTableField.prototype.selectable=selectable;
 

function getFieldSubindex(subName)
{
	if (this.attributeName.indexOf("/")>0)
	{
		var spl=this.attributeName.split("/");
		for (iix=0;iix<spl.length;iix++)
		{
			if (spl[iix]==subName)
				return iix;
		}
	}
	
	return 0;
}

function getFieldValue(fund)
{
	var attr;
	attr=new Array();
//	alert (this.attributeName);
//	alert (this.attributeName.indexOf("/"));
	if (this.attributeName.indexOf("/")>0)
	{
		var names;
		names = this.attributeName.split("/");
//		alert (names.length);
		for (k=0;k<names.length;k++)
		{
			
			var fld;
			fld="fund."+names[k];
//			alert (fld);
			attr[k]=eval(fld);
		}
	}
	else
	{
//		alert ("fund."+this.attributeName);
		attr[0]=eval("fund."+this.attributeName);
	}
//	alert (attr);
	return attr;
} 
		
function compareValues(fund, searchCriteria,idxID)
{
// Compares field values	
	var attr;
	
	if (idxID!=null)
		attr = eval("fund."+this.attributeName.split("/")[idxID]);
	else
		attr = eval("fund."+this.attributeName);
		
	var result;
		
	result = "compare"+this.type+"(\""+attr+"\",\""+searchCriteria+"\")";
	
	var test;
//if (this.header=="Name/ISIN/WKN")
//			alert(result);	
	test =  eval(result);
//if (this.header=="Name/ISIN/WKN")
//			alert(test);	
	return test;

}

function getHeaderHTML(sortCol,sortOrder,colID)
{
	
	
	var tHeader = this.header;//getLabel(this.header,getLanguage());
	if (!this.sortable )
	{
	if (!this.selectable())
			return tHeader;
	else
			return this.getSelect(colID);
	}
//	alert ("field sorting order: " + this.sortOrder);
	var attr;
	var names;
	var sorting;
	
	var tabName=this.parent.currentTab.name;
	if (tHeader.indexOf("/")>0)
	{
		var names;
		names = tHeader.split("/");
//		alert (names.length);
		attr = this.parent.currentTab.sortedFieldName;
		sorting = this.sortOrder.split("/");
		
	}
	else
	{
		names=new Array(1);
		names[0]=tHeader;
		attr=tHeader;
		sorting=new Array(1);
		sorting[0]=this.sortOrder;
	}
//	alert (attr);

	var result;
    result = "";
    var headerText;
    headerText="";
    
    for (iH=0;iH<names.length;iH++)
	{
	if (names[iH]==sortCol)
	  {
		sorting[iH]=sortOrder;
		this.sortOrder="";
		for (iS=0;iS<sorting.length;iS++)
		{	
			if (iS>0)
				this.sortOrder+="/";
			
			this.sortOrder+=sorting[iS];
		}
	  }
	}
    
    for (iH=0;iH<names.length;iH++)
	{
//	  var sortOrder;
//	  sortOrder=sorting[iH];
	  var image;
//	  alert (names[iH]);
	  image="<img src=\"";
	
	
	  if (names[iH]==sortCol)
	  {
		if (sorting[iH]=="A")
			image+="/images/icon_sort_up_hi.gif";
		else
			image+="/images/icon_sort_down_hi.gif";	
	  }
	  else
	  {
	
		if (sorting[iH]=="A")
				image+="/images/icon_sort_up.gif";
	     else
				image+="/images/icon_sort_down.gif";
	  }
	
	  image+="\">";
//	  alert (image);
	  if (colID==0 || !this.selectable())
	  {
		headerText+="<a class='SortLink' onclick='refresh(\""+tabName+"\",\""+names[iH]+"\");'>";
		headerText+=image+"&nbsp;";
		headerText+=names[iH]+"</a>";
	  }
	  else
	  {
//		headerText+="<table cellspacing=2 style='margin-left: -7pt !important; padding-left: -7pt !important;' class='NoMarginNoBorder NW'><tr><td><a class='SortLink' onclick='refresh(\""+tabName+"\",\""+names[iH]+"\");'>";
		headerText+="<table cellspacing=2 class='NoMarginNoBorder NW'><tr><td><a class='SortLink' onclick='refresh(\""+tabName+"\",\""+names[iH]+"\");'>";
		headerText+=image;
		headerText+="</a></td><td> ";
		headerText+=this.getSelect(colID);
		headerText+="</td></tr></table>";
//		alert (headerText);	
	  }
	}
 
 //alert (headerText);
	
 return headerText;

}

function getCellHTML(fund)
{
	var attr;
	attr=new Array(0);
//	alert (this.attributeName);
//	alert (this.attributeName.indexOf("/"));
	if (this.attributeName.indexOf("/")>0)
	{
		var names;
		names = this.attributeName.split("/");
//		alert (names.length);
		for (k=0;k<names.length;k++)
		{
			
			var fld;
			fld="fund."+names[k];
//			alert (fld);
			attr[k]=eval(fld);
		}
	}
	else
	{
		attr[0]=eval("fund."+this.attributeName);
	}
//	alert (attr);
	var result;
    result = "format"+this.type;
    if (this.type=="Currency")
	{
		//result+=  fund.Currency;
		//Erzeugt den Aufruf formatCurrencyGeneral(value, currency)
		result+= "General(\"" + attr[0] + "\",\"" + fund.Currency + "\");";
		//alert(result);
	}
	else
	{
		result+="(\"";
		for (i=0;i<attr.length;i++)
		{
	//		alert(attr[i]);
			if (i>1)
			{
				result+="<span style='font-weight:normal;'>";
				result+=" / ";
				result+=attr[i];
				result+="</span>";
			}
			else if (i>0)
			{
				
				result+="<BR><span style='font-weight:normal;'>";
				result+=attr[i];
				result+="</span>";
			}
			else
			{
				result+=attr[i];
			}
		}
		result+="\")";
	}
    
    //alert (result);

	var res = eval(result);
	return res; //"<span style='align:left !important;'>"+res+"</span>";
	
}

function getSelect(currColumn)
{

  var result="<select name='"+this.attributeName+currColumn+"Select'";
  result+=" class='Color4'";
  
  var len;
  len = Math.round(520/(this.parent.currentTab.columns.length-1))-18;
 
  if (this.sortable)
  {
    len = len - 12;
	result+=" style='width:"+len+"px; margin-left:2px;'";
  }
  else
  {
    result+=" style='width:"+len+"px; margin-left:-2px;'";
  }
  result+=" onchange='selectColumn("+currColumn+","+this.attributeName+currColumn+"Select.selectedIndex)'>";
  
  for (var fldID=0;fldID<this.parent.currentTab.possibleFields.length;fldID++)
	{
		
		var cField = this.parent.currentTab.possibleFields[fldID];
		
		var lbl;
		try
		{
			lbl = cField.header;//getLabel(cField.header,getLanguage());
		}
		catch (exs)
	    {
			alert (exs.description);
	    }
	    if (cField.header==this.header)
			result+="<option selected value="+fldID+">"+lbl+"</option>";
	    else
			result+="<option value="+fldID+">"+lbl+"</option>";
	}
	
	result+="</select>";
 
 // alert (result);
  return result;
}

function selectable()
{ 
	return this.parent.currentTab.selectable();
}