var filterArray = ["visProduktpakker","visUtenProduktpakker","nasjonalt","regionalt","billan","sikretBillan","klimaBillan","under7mBatlan","over7mBatlan","forbrukslan"];
var first = true;
kalkulatorsettings = {
       // fields forteller hvilke felter som skal med, og i hvilken rekkefølge
       fields : ['', 'smalan.leverandorNavn','smalan.markedsomraade','smalan.produktpakkeNavn', 'smalan.produktnavn',
           'smalan.nominellRente', 'effektivRente', 'mndBelop', 'totaleKostnader', 'smalan.leverandor', 'lopetidAr',
           'lopetidMnd', 'lopetidDag', 'smalan.leverandorUrl', 'smalan.markedsomraadeTekst', 'smalan.produktpakke',
           'smalan.href', 'smalan.publiserFra', 'smalan.publiserTil'],
       // Kolonneoppsett for tabellen.
       columnSetup : [
           { "sWidth": "18px", "bSortable": false, "sClass": "border_left align_right","bSearchable": false },
           { "fnRender" : function(oObj) {
               return getLeverandorWww(oObj.aData[oObj.iDataColumn], oObj.aData[13]);
           }, "sType" : "html","bSearchable": false, "sWidth": "150px" },
           { "fnRender": function(oObj) {
               return getMarkedsomradeOutput(oObj.iDataRow, oObj.aData[oObj.iDataColumn], oObj.aData[14]);
           }, "sType" : "html","bSearchable": false, "sWidth": "90px"},
           { "fnRender" : function(oObj) {
               return getProduktlink(oObj.aData[oObj.iDataColumn], oObj.aData[15], '/Bank/Smålån/Produktpakke+produktdetaljer');
           }, "sType" : "html","bSearchable": false, "sClass":"produkt_link", "sWidth": "100px"},
           { "fnRender" : function(oObj) {
               return getProduktlink(oObj.aData[oObj.iDataColumn], oObj.aData[16], '/Bank/Smålån/Smålån+produktdetaljer');
           }, "sType" : "html","bSearchable": false, "sClass":"produkt_link", "sWidth": "150px"},
           { "sClass": "align_right", "fnRender": function(oObj) {
               return oObj.aData[oObj.iDataColumn] + "%";
           }, "sType" : "num","bSearchable": false, "sWidth": "70px" },
           { "sClass": "align_right", "fnRender": function(oObj) {
               return getIntervallOutput(oObj.iDataRow, oObj.aData[oObj.iDataColumn], oObj.aData[17], oObj.aData[18]);
           }, "sType" : "num-html","bSearchable": false, "sWidth": "70px" },
           { "sClass": "align_right", "fnRender": function(oObj) {
               if ($('#m_lopetid').is(':checked')) {
                   return (oObj.aData[oObj.iDataColumn] ? oObj.aData[oObj.iDataColumn] : '-');
               } else {
                   return oObj.aData[10] + '/' + oObj.aData[11];
               }
           },"bSearchable": false, "sWidth": "90px"
           },
           { "sClass": "align_right","bSearchable": false, "sWidth": "80px"},
           { "sClass": "border_right", "sWidth": "55px", "fnRender": function (oObj) {
               return getBankBytteLink(oObj.aData[oObj.iDataColumn]);
           }, "bSortable": false ,"bSearchable": false},
           { "bVisible": false ,"bSearchable": false},
           { "bVisible": false,"bSearchable": false },
           { "bVisible": false,"bSearchable": false },
           { "bVisible" : false,"bSearchable": false },
           { "bVisible" : false,"bSearchable": false },
           { "bVisible" : false,"bSearchable": false },
           { "bVisible" : false,"bSearchable": false },
           { "bVisible" : false,"bSearchable": false },
           { "bVisible" : false,"bSearchable": false }
       ],
	   minLeverandor: {
			pris : 'totaleKostnader',
			leverandor : 'smalan.leverandor'
	   },
       initialSortingColumn : [8,"asc"],
       validationMap : {
           '#lanebelop' : /^\d+$/,
           '#kjopesum' : function(selector) {
               return $('#lanetype').val() == 'forbruk' || $('#kjopesum').val().match(/^\d+$/) != null;
           },
           '#lopetidtermin_value' : /^\d+$/
       },
	   filterContainers : ['#lanetype_container', '#produktpakke_container', '#markedsomrade_container'],
       metadata : function(metadata) {
           if ($('#lanetype_text').val() != 'forbruk') {
               if (metadata.belaningsgrad) {
                   $('#belaningsgrad span').text(metadata.belaningsgrad + '%');
                   $('#belaningsgrad').removeClass("hidden");
               }
           } else {
               $('#belaningsgrad').addClass("hidden");
           }
       },
       noMatchingRows : "<h2>Fant ingen lån</h2><p>Vi finner dessverre ingen lån som passer med dine oppgitte beløp. Vennligst endre disse og forsøk på nytt.</p>",
       inhibitAutomaticLoad: window.location.href.indexOf('lanebelop') == -1
                               && window.location.href.indexOf('kjopesum') == -1
                               && window.location.href.indexOf('lopetid_ar') == -1
                               && window.location.href.indexOf('lopetid_mnd') == -1
   };

function createLoantypeSelectionList() {
	var html =  '<div id="loantype_selection" class="ac_results selection_list">' + // 
                '<ul>';

	html = html + '<li id="bil"><span class="loantype">Ny bil</span></li>';
	html = html + '<li id="bat"><span class="loantype">Ny båt</span></li>';
	html = html + '<li id="caravan"><span class="loantype">Ny caravan</span></li>';
	html = html + '<li id="mc"><span class="loantype">Ny MC</span></li>';
	html = html + '<li id="forbruk"><span class="loantype">Annet</span></li>';
				
	html = html + '</ul></div>';			

	$('#calc_input').css('position', 'relative');
    $($('#calc_input')).after(html);
	$('#lanetype').val('bil');

	$('#loantype_selection LI').click(function() {
		nullstillGrunndataOgFiltrering();
		$('#kjopesum').removeAttr('disabled');
		changeLoantype($(this).text());
        $('#lanetype_text').val($(this).text());
		$('#loantype_selection').hide();
    });

	$('#loantype_selection LI' ).live('mouseover mouseleave', function(event) {            
            if( 'mouseover' == event.type ) {
                $('#loantype_selection LI').removeClass('ac_over');
                $(this).addClass('ac_over');
            } else  {
                $(this).removeClass('ac_over');                    
            }
    });

	handleSelectionListEvents('#lanetype_text', '#loantype_selection');
}

function createPeriodSelectionList() {
	var html =  '<div id="period_selection" class="ac_results selection_list">' + // 
                '<ul>';

	html = html + '<li id="mnd"><span class="period">Måneder</span></li>';
	html = html + '<li id="ar"><span class="period">År</span></li>';
				
	html = html + '</ul></div>';			

	$('#calc_input').css('position', 'relative');
    $($('#calc_input')).after(html);

	$('#period_selection LI').click(function() {
        $('#periode').val($(this).text());
		$('#period_selection').hide();
    });

	$('#period_selection LI' ).live('mouseover mouseleave', function(event) {            
            if( 'mouseover' == event.type ) {
                $('#period_selection LI').removeClass('ac_over');
                $(this).addClass('ac_over');
            } else  {
                $(this).removeClass('ac_over');                    
            }
    });

	handleSelectionListEvents('#periode', '#period_selection');
}


function handleNavigation(event, eventSource, selectionId, callback) {
    var currentSelect = $(selectionId+' LI.ac_over');
    switch(event.keyCode) {
    case 38: // Up
        if( 0 == $(selectionId + ':visible').length) 
        {
//            $(selectionId).show();
            $(eventSource).click();
        }
        if( 0 == currentSelect.length ) {
            $(selectionId+' LI:last').addClass('ac_over');
        }
        else {
            var nextOne = $(currentSelect).prev();
            if( 0 != nextOne.length ) {
                $(nextOne).addClass('ac_over');
                $(currentSelect).removeClass('ac_over');
            }
        }
        break;
    case 40: // Down
        if( 0 == $(selectionId + ':visible').length) 
        {
//            $(selectionId).show();
        $(eventSource).click();
        }
        if( 0 == currentSelect.length ) {
            $(selectionId+' LI:first').addClass('ac_over');
        }
        else {
            var nextOne = $(currentSelect).next();
            if( 0 != nextOne.length ) {
                $(nextOne).addClass('ac_over');
                $(currentSelect).removeClass('ac_over');
            }
        }
        break;
    case 27: // escape
        $(selectionId).hide();
        break;
    case 9: // TAB
    case 13:
        $(eventSource).val($(selectionId+' LI.ac_over').text());
        $(selectionId).hide();

        if( 'function' == typeof callback) {
            callback();
        }
        
        break;
    default:
        return false; // Stop event
    }
}

function clickHandler(field, div) {
    var selectionListDiv = $(div);
    if( 0 == $(':visible', selectionListDiv).length ) {
        var theInput = $(field);
        var inputWidth =  theInput.outerWidth();
        $(selectionListDiv).css('width', inputWidth );
        var inputOffset =  theInput.offset();
        var inputPosition = theInput.position();        
        inputOffset.top = inputOffset.top + $(theInput).height();
        $(selectionListDiv).css('top', inputOffset.top + 'px');
        $(selectionListDiv).css('left', inputOffset.left + 'px');
    
        $(selectionListDiv).show();
    }
    else {
        $(selectionListDiv).focus();
    }
}

function handleSelectionListEvents(field,div){
	$(field)
        .attr('autocomplete', 'off')
        .keypress( function (e){
                handleNavigation(e, this, div, function() { $('A.button').focus();});
        })

        .blur(function(){
            var listItems = $(div + ' LI.ac_over');
            if( 0 != listItems.length ) {
                $(listItems).click();
            }
            else {
                $(div).hide();
            }
        })
        .focus(function() {
            clickHandler(field, div);
        });

    // For some reason a separate event handler is required?
   		$(field).keypress(function(e) {
        switch(e.keyCode) {
            case 38: // Up
            case 40: // Down
            case 27: // escape
            case 9:  // TAB
            case 13: // Enter
                return undefined;
            default:
            return false;
            break;
        }
        });
}

function changeLoantype(loantype){
	$('#lanetype_container').children().children('LI').hide();	
	switch(loantype){
		case 'Ny bil':
			$('#lanetype').val('bil');
			$('#periode').val('År');
			$('.bil').show();
			break;
		case 'Ny båt':
			$('#lanetype').val('bat');
			$('#periode').val('År');
			$('.bat').show();
			break;
		case 'Ny caravan':
			$('#lanetype').val('caravan');
			$('#periode').val('År');
			break;
		case 'Ny MC':
			$('#lanetype').val('motorsykkel');
			$('#periode').val('År');
			break;
		case 'Annet':
			$('#lanetype').val('forbruk');
			$('#kjopesum').val('');
			$('#kjopesum').attr('disabled','disabled');
			$('#periode').val('Måneder');
			$('.generell').show();
			break;
	}
}

function nullstillGrunndataOgFiltrering() {
    $("#lanebelop").val('');
    $("#kjopesum").val('');
    $("#lopetidtermin_value").val('');
    $("#alderstilbudAr").val('');
}

$(document).ready(function() {      
	var lanetype_text_trim = $.trim($('#lanetype_text').val()); 
	createLoantypeSelectionList();
	createPeriodSelectionList();
	changeLoantype(lanetype_text_trim);
	setDefaultFilter(filterArray, first);
	toggleNedbetalingsvalg("smalan");
    $('#periode').val('Måneder');
});

