var filterArray = ["2169","2172","2401","2167","2173","2445","2402","2353","2446","2435","2366","2436","2374","2174","2174","2175","2403","2450","2397","2398","2399","2180","2430","2431","2185","2178","2182","2183","2184","2186","2178","2407","2405","2404","2177","rety2d","retgavg1yr","retgavg3yr","retgavg5yr","retgavg7yr","retgavg1yr"];
var first = true;
kalkulatorsettings = {
    fields : ['','security_name','groupname','price', 'rety2d', 'retgavg1yr', 'retgavg3yr', 'retgavg5yr', 'retgavg7yr', 'retgavg10yr','maxsalescharge', 'maxredemptfee', 'mgmtcommision', 'volatility5yr', 'sharperatio5yr', 'navdate', '@sid', 'groupid'],
    columnSetup : [
        { "sClass": "border_left", "sWidth": "14px",  "bSortable": false},
        { "fnRender" : function(oObj) {
            return getFondslink($("#detaljerSideUrl").val(), oObj.aData[oObj.iDataColumn], oObj.aData[16]);
        }, "sType" : "html", "sClass":"produkt_link_fond", "sWidth": "100px"},
        { "sWidth": "95px" },
        { "sClass" : "align_right", "fnRender" : function(oObj) {
            return formatNumber(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "83px"},
        { "sClass" : "align_right filter_y2d","fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum",  "sWidth": "95px"},
        {"sClass" : "align_right filter_1y", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "95px" },
        {"sClass" : "align_right filter_3y", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "95px" },
        {"sClass" : "align_right filter_5y", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "95px" },
        {"sClass" : "align_right filter_7y", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "95px" },
        {"sClass" : "align_right filter_10y", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "120px" },
        { "sClass" : "align_right", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "80px" },
        { "sClass" : "align_right", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "92px" },
        { "sClass" : "align_right", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "105px" },
        { "sClass" : "align_right", "fnRender" : function(oObj) {
            return formatPercentage(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "60px" },
        { "sClass" : "align_right", "fnRender" : function(oObj) {
            return formatNumber(oObj.aData[oObj.iDataColumn], 2)
        }, "sType" : "missingnum", "sWidth": "50px" },
        { "sClass" : "nowrap", "sWidth": "73px" },
        { "bVisible" : false },
        { "bVisible" : false }
    ],
    initialSortingColumn : [ 5, "desc" ],
    validationMap : {},
	noreload: true,
    metadata : outputGroupFilter,
    filtering: true,
	filterContainers : ['#avkastningsperiode_container', '#filter_container'],
    preprocess: doFilter,
    postprocess: updateFondsavkastningsHeader,
    insertAllInFirstGo: true,
    noMatchingRows : "<h2>Fant ingen produkter</h2><p>Vi finner dessverre ingen produkter som passer med dine filtreringskriterier. Vennligst endre disse og forsøk på nytt.</p>"
};

function formatNumber(number, decimals) {
    if (isNaN(number)) {
        return '';
    }
    if (number == '') {
        return '';
    }
	return parseFloat(number).toFixed(decimals).replace('.', ',');
}

function formatPercentage(number, decimals) {
	var value = formatNumber(number, decimals);
	return (value == '') ? '' : value + '%';
}

function updateRadioSelection(element) {
	var wrapperLI = $(element).closest('LI');
	wrapperLI.children('span').removeClass('radio').addClass('radio_active');
	wrapperLI.siblings('li').children('span').removeClass('radio_active').addClass('radio');
}

function selectFondRadioFilter() {
	updateRadioSelection(this);
	updateFondsavkastningsHeader();
	doSort();
}

function selectActiveFilters(container) {
	var groups = [];
	var selected = $(container + " .filter_active");
    if (selected.length == 0) {
		$(container + " [id]").each(function() {
        	groups.push(this.id); 
        });
	} else {
		selected.each(function() {
	    	groups.push(this.id);
	    });	
	}
	return groups;	
}

function doFilter() {
    if (oTable != null) {
		var groups = selectActiveFilters(".fond_wrapper");
        oTable.fnFilter(groups.join('|'), 17, false);
    }
}

function doSort() {
    var settings = oTable.fnSettings();
    var currentSort = settings.aaSorting;
    var column = currentSort[0][0];
    if (column >= 4 && column <= 9) {
               switch ($("#avkastningsperiode_container .radio_active input").attr('id')) {
	            case 'rety2d':
	                oTable.fnSort([
	                    [ 4, "desc" ]
	                ]);
	                break;
	            case 'retgavg1yr':
	                oTable.fnSort([
	                    [ 5, "desc" ]
	                ]);
	                break;
	            case 'retgavg3yr':
	                oTable.fnSort([
	                    [ 6, "desc" ]
	                ]);
	                break;
	            case 'retgavg5yr':
	                oTable.fnSort([
	                    [ 7, "desc" ]
	                ]);
	                break;
	            case 'retgavg7yr':
	                oTable.fnSort([
	                    [ 8, "desc" ]
	                ]);
	                break;
	            case 'retgavg10yr':
	                oTable.fnSort([
	                    [ 9, "desc" ]
	                ]);
	                break;
	            default:
	                var defaultSort = defaultSort()
	                oTable.fnSort([
	                    [ defaultSort, "desc" ]
	                ]);
	        }
    }
}

function defaultSortColumn() {
    switch ($('#kalkulatortype').text()) {
        case 'pengemarkedsfond':
            return 5;
        case 'obligasjonsfond':
            return 6;
        case 'kombinasjonsfond':
            return 7;
        case 'aksjefond':
            return 8;
        case 'rentefond':
            return 5;
        default:
            return 5;
    }
}

function getAvkastningInput() {
	switch ($('#kalkulatortype').text()) {
		case 'pengemarkedsfond':
		    return 'input#retgavg1yr';
		case 'obligasjonsfond':
		    return 'input#retgavg3yr';
		case 'kombinasjonsfond':
		    return 'input#retgavg5yr';
		case 'aksjefond':
		    return 'input#retgavg7yr';
        case 'rentefond':
            return 'input#retgavg1yr';
		default:
		    return 'input#retgavg1yr';
	}	
}

function setValgtAvkastning() {
  	var avkastning = getAvkastningInput();
	$(avkastning).attr('checked', true);
	updateRadioSelection($(avkastning));
}

function updateFondsavkastningsHeader() {
    var toHide;
    var toShow;
    switch ($("#avkastningsperiode_container .radio_active input").attr('id')) {
        case 'rety2d':
            toHide = $('.filter_7y,.filter_1y,.filter_3y,.filter_5y,.filter_10y',null == oTable ? null : oTable.fnSettings().nTable);
            toShow = $('.filter_y2d',null == oTable ? null : oTable.fnSettings().nTable);
            break;
        case 'retgavg1yr':
            toHide = $('.filter_y2d,.filter_7y,.filter_3y,.filter_5y,.filter_10y',null == oTable ? null : oTable.fnSettings().nTable);
            toShow = $('.filter_1y',null == oTable ? null : oTable.fnSettings().nTable);
            break;
        case 'retgavg3yr':
            toHide = $('.filter_y2d,.filter_1y,.filter_7y,.filter_5y,.filter_10y',null == oTable ? null : oTable.fnSettings().nTable);
            toShow = $('.filter_3y',null == oTable ? null : oTable.fnSettings().nTable);
            break;
        case 'retgavg5yr':
            toHide = $('.filter_y2d,.filter_1y,.filter_3y,.filter_7y,.filter_10y',null == oTable ? null : oTable.fnSettings().nTable);
            toShow = $('.filter_5y',null == oTable ? null : oTable.fnSettings().nTable);
            break;
        case 'retgavg7yr':
            toHide = $('.filter_y2d,.filter_1y,.filter_3y,.filter_5y,.filter_10y',null == oTable ? null : oTable.fnSettings().nTable);
            toShow = $('.filter_7y',null == oTable ? null : oTable.fnSettings().nTable);
            break;
        case 'retgavg10yr':
        default:
            toHide = $('.filter_y2d,.filter_1y,.filter_3y,.filter_5y,.filter_7y',null == oTable ? null : oTable.fnSettings().nTable);
            toShow = $('.filter_10y',null == oTable ? null : oTable.fnSettings().nTable);
            break;
    }
    $(toHide).hide();
    $(toShow).show();
    $(toShow,null == oTable ? null : oTable.fnSettings().nTable).each(function() {
        var t = $(this).text();
        if (t.match('\s*-')) {
            $(this).addClass('negative-number');
        }
        else {
            $(this).removeClass('negative-number');
        }
    });

    hideLoader();
	setDefaultFilter(filterArray, first);
	first = false;
}

function outputGroupFilter(metadata) {
    var itemTemplate = '<li><span class="filter" id="%1"><a href="#"><span>%3</span></a></span><img src="/images/btn_deselect.gif" alt="Velg bort filtrering" class="hide deselect_filter"></li>';
    var itemOutput = '';
    for (var section in metadata) {
		var name = metadata[section]["@name"];
		var group = $(metadata[section]["group"]); 
		$.each(group, function(i,item){
			itemOutput = itemTemplate.replace("%1", item["id"]).replace("%3", item["name"]);
			if(item["name"].toLowerCase().indexOf("bransjefond") != -1)
				$('#' + 'filter_container' + ' ul#bransjefondsliste').append(itemOutput);
			else
				$('#' + 'filter_container' + ' ul#fondsliste').append(itemOutput);
			
		});
    }
}

$(document).ready(function() {
	$(':radio').live('click', selectFondRadioFilter);
	setValgtAvkastning();
});


