Type.registerNamespace('FundsSelector');

FundsSelector.Selector = function FundsSelector_Selector(expert, detailsLink) {
    this.ExpertMode = expert;
    this.DetailsLink = detailsLink;
    
    this.filter = new FundsSelector.SelectorFilter(this);
    this.init = true;
    this.filter.loadFilterFromCookies();
}
    
    
FundsSelector.Selector.prototype = {
    
    getColor: function FundsSelector_Selector$getColor(type)
    {
     /// <summary>Liefert eine Farbe</summary>
    /// <param name="type">Der Typ für den die Farbe geliefert werden soll</param>
    /// <returns>string</returns>
        var x;
        x=(type%2)*2;  
        x++;//get 1 or 3;
        var result;
        //result= "Color"+x;
		result= "Color1"
       return result;
    },
    
    refreshTable: function FundsSelector_Selector$refreshTable(tabName,sortedCol)
    {
	    var updSort=false;
    
	    if (this.init)
	    { 
		    this.init=false;
		    sortedCol="Name";
		    sortOrder="A";
	    }
	    else
	    {
		    this.filter.loadFilterFromForm();		
	    }
	    
	    //Filtering itself is performed by the fund object isShown method
        //	alert ("Selector refresh - sort:"+sortedCol);
	    if (sortedCol!=null)
	    {
		    if (this.sortedCol==sortedCol)
			    this.sortOrder=(this.sortOrder=="A")?"D":"A";
		    else
			    this.sortedCol=sortedCol;
	    }
	
    
	    var result;
    	
	    var tabsData;
	    if (!this.ExpertMode)
	    {
    
		    this.currentTab=this.tabs[0];
		    tabsData="";
	    }
	    else
	    {
		    if (tabName==null)
		    {
		       if (this.currentTab==null)
				    tabName=this.tabs[0].name;
		       else
		           tabName=this.currentTab.name;
		    }
    		
	   	    tabsData="<table class='TableTabNavigation'><tr>";
	   	    for (i=0;i<this.tabs.length;i++)
		    {
			    if (this.tabs[i].name==tabName)
			    {
				    this.currentTab=this.tabs[i];			
				    tabsData+=this.tabs[i].getTabsHTML(true);
			    }
			    else
			    {
				   tabsData+=this.tabs[i].getTabsHTML(false);
				 }
		    }
    	
		    tabsData+="</tr></table>";
	    }
	    
    //  alert ("have tabs html");
	    result="<table class='ContentFS'>";
	    if (tabsData=="")
		    result+="<tr class='Color1'><td class='HeaderCol' style='width:180px;' colspan='"+ (this.currentTab.columns.length) +"'>&nbsp;</td></tr>";
	    else
		    result+="<tr class='Color1'><td class='HeaderCol' style='width:180px;'>&nbsp;<td class='NoPadding NoBorder' colspan='"+ (this.currentTab.columns.length-1) +"'>"+tabsData+"</td></tr>";

	    result+=this.currentTab.getColumnHeaderHTML(this.sortedCol,this.sortOrder);

	    //Sorting have to come somewhere here - After getting header and before rendering body!

	    if (sortedCol!=null) 
	    {
            for (i=0; i<this.currentTab.columns.length; i++) 
            {
                var sortField=this.currentTab.columns[i].currentField;
                var idx = -1;
         
                if (sortField.header.indexOf("/")>0)
		        {
				        var names = sortField.header.split("/");

				        for (j = 0; j < names.length; j++)
				        {
						        if (names[j]==sortedCol) 
						        {
							        idx = j;
							        break;
						        }   
				        } 
		        }

		        if (sortField.header==sortedCol || idx!=-1)
		        {
			        this.filter.sortFundList(this.currentTab.columns[i], idx);
			        break;
		        }
	        } 
	    }

	    this.filter.filterFundList();
	    var colorI;
	    colorI=0;
	    for (f=0;f<this.funds.length;f++)
	    {
		    if (this.funds[f].isShown())
		    {
			    try
			    {
				    var resFund;
//				    resFund="<tr class='"+ this.getColor( colorI++ )+"'>";
				    resFund="<tr class='"+ this.getColor( colorI++ )+"' style=' BORDER-TOP: #CCCCCC 1px solid;'>";
					resFund += this.currentTab.getCellHTML(this.funds[f], this.DetailsLink);
				    resFund+="</tr>";
				    result+=resFund;
			    }
			    catch (exF)
			    {
				    alert (exF.description);
			    }
		    }
	    }
	
	    result+="</table>";
	    return result;
	
    },


    ReplaceField: function FundsSelector_Selector$ReplaceField(columnID, fieldID)
    {
	    try
	    {
		    this.currentTab.columns[columnID].currentField=this.currentTab.possibleFields[fieldID];
	    }
	    catch (ex)
	    {
		    alert (ex.description);
	    }
    },

    getSort: function FundsSelector_Selector$getSort()
    {
	    return this.sortedCol;
    },

    setSort: function FundsSelector_Selector$setSort(val)
    {
	    this.sortedCol=val;
    }

    
}

FundsSelector.Selector.registerClass('FundsSelector.Selector');



		






