var faktor = 0.002577;
var runtime_init = 24;
	
var configIR6 = new Object();
configIR6.durations = new Object();
	
var configIR5 = new Object();
configIR5.durations = new Object();
	
var configIR4 = new Object();
configIR4.durations = new Object();
	
var configIR3 = new Object();
configIR3.durations = new Object();
	
var configIR2 = new Object();
configIR2.durations = new Object();
	
var configIR1 = new Object();
configIR1.durations = new Object();
	
var config = new Object();
config.durations = new Object();
	
config.fee = 0.02;
config.liquidation = 12;


var imgList = ["./img/slider-disabled.png", "./img/slider.png"];
var preloadImg = []
for(var i = 0, imgSrc; imgSrc = imgList[i]; i++) {
        preloadImg[i] = new Image();
        preloadImg[i].src = "./" + imgSrc;
};
function updateKredit() {
	var v = parseInt(document.getElementById('slider-kredit').value) || 0;
	document.getElementById('kredit_input').value = formatEuro(Math.round(v/100)*100);
	updateRate();
}
function updateRuntime() {
	var v = parseInt(document.getElementById('slider-runtime').value) || 0;
    document.getElementById('runtime_input').value = formatMonth(v);
	updateRate();
}
function onNettoInputChange(target,fix){
	var str = target.value
	str = stripFloat(str);
	str = parseFloat(str.replace(/,/g, "."));
	str = (str>0)?str:0;
	str = valNetto(str);
	if(fix){
		target.value = formatNetto(str);
	}
	updateRate();
}
function onRuntimeInputChange(target){
	var str = target.value;
	str = strip(str);
	str = valMonth(str);
	var arr = new Array(12,18,24,30,36,42,48,54,60,66,72,78,84);
	for(var i=0;i<arr.length;i++){
		if(arr[i+1]>=str){
			id = (str - arr[i] < arr[i+1] -str)?i:i+1;
			break;
		}
	}
	target.value = formatMonth(arr[id]);
	document.getElementById('slider-runtime').value = arr[id];
	//fdSliderController.updateSlider('slider-runtime');
    runtime_init = arr[id];
	updateRate();
}
function changeRuntime(dif){
    //console.log("DIFF: "+dif);
	//fdSliderController.increment('slider-runtime',dif);
    if (runtime_init >= 12 && runtime_init <= 84) {
        if ((dif == -1 && runtime_init == 12) || (dif == 1 && runtime_init == 84)) {}
        else runtime_init+=dif*6;
        
    }
    
    document.getElementById('runtime_input').value = formatMonth(runtime_init);
    updateRate();
	
    //formatMonth(document.getElementById('slider-runtime').value);
	
}
function onKreditInputChange(target,fix){
	var str = target.value
	str = strip(str);
	str = valKredit(str);
	if(fix){
		target.value = formatEuro(str);
	}
	document.getElementById('slider-kredit').value = str;
	//fdSliderController.updateSlider('slider-kredit');
	updateRate();
}
function changeKredit(dif){
	var str = document.getElementById('kredit_input').value;
	str = strip(str);
	str = parseInt(str)+dif;
	str = valKredit(str);
	str = Math.round(str/100)*100;
	document.getElementById('kredit_input').value = formatEuro(str);
	document.getElementById('slider-kredit').value = str;
	fdSliderController.updateSlider('slider-kredit');
	updateRate();
}
function updateRate(){
	var netto = stripFloat(document.getElementById('netto_input').value);
	netto = parseFloat(netto.replace(/,/g, "."));
	netto = (netto>0)?netto:0;
	var kredit = strip(document.getElementById('kredit_input').value);
	var runtime = strip(document.getElementById('runtime_input').value);
	var rate = getRate(netto,kredit,runtime);
	annum = getAnnum(runtime);
	var k = parseInt(kredit);
	if(k>=2500 && k<=50000){
		document.getElementById('annum_label').innerHTML = annum+" % effekt. Jahreszins";
		document.getElementById('rate').innerHTML= formatNumber(rate,2,true)+" \u20AC";
	}else{
		document.getElementById('annum_label').innerHTML = "0 % effekt. Jahreszins";
		document.getElementById('rate').innerHTML= formatNumber(0,2,true)+" \u20AC";
	}
}
function initCalculator(){

	config.durations[12] = {duration:12,nominal:0.244,annum:3.990};
	config.durations[18] = {duration:18,nominal:2.634,annum:5.290};
	config.durations[24] = {duration:24,nominal:2.474,annum:4.490};
	config.durations[30] = {duration:30,nominal:3.316,annum:4.990};
	config.durations[36] = {duration:36,nominal:3.089,annum:4.490};
	config.durations[42] = {duration:42,nominal:4.028,annum:5.290};
	config.durations[48] = {duration:48,nominal:3.879,annum:4.990};
	config.durations[54] = {duration:54,nominal:3.890,annum:4.890};
	config.durations[60] = {duration:60,nominal:3.879,annum:4.790};
	config.durations[66] = {duration:66,nominal:3.948,annum:4.790};
	config.durations[72] = {duration:72,nominal:4.387,annum:5.190};
	config.durations[78] = {duration:78,nominal:4.530,annum:5.290};
	config.durations[84] = {duration:84,nominal:4.572,annum:5.290};

	configIR1.durations[12] = {duration:12,nominal:4.018,annum:9.990};
	configIR1.durations[18] = {duration:18,nominal:5.735,annum:9.990};
	configIR1.durations[24] = {duration:24,nominal:6.630,annum:9.990};
	configIR1.durations[30] = {duration:30,nominal:7.177,annum:9.990};
	configIR1.durations[36] = {duration:36,nominal:7.547,annum:9.990};
	configIR1.durations[42] = {duration:42,nominal:7.815,annum:9.990};
	configIR1.durations[48] = {duration:48,nominal:8.015,annum:9.990};
	configIR1.durations[54] = {duration:54,nominal:8.172,annum:9.990};
	configIR1.durations[60] = {duration:60,nominal:8.299,annum:9.990};
	configIR1.durations[66] = {duration:66,nominal:8.402,annum:9.990};
	configIR1.durations[72] = {duration:72,nominal:8.485,annum:9.990};
	configIR1.durations[78] = {duration:78,nominal:8.560,annum:9.990};
	configIR1.durations[84] = {duration:84,nominal:8.625,annum:9.990};
		
	configIR2.durations[12] = {duration:12,nominal:1.267,annum:6.990};
	configIR2.durations[18] = {duration:18,nominal:2.984,annum:6.990};
	configIR2.durations[24] = {duration:24,nominal:3.879,annum:6.990};
	configIR2.durations[30] = {duration:30,nominal:4.426,annum:6.990};
	configIR2.durations[36] = {duration:36,nominal:4.796,annum:6.990};
	configIR2.durations[42] = {duration:42,nominal:5.060,annum:6.990};
	configIR2.durations[48] = {duration:48,nominal:5.260,annum:6.990};
	configIR2.durations[54] = {duration:54,nominal:5.417,annum:6.990};
	configIR2.durations[60] = {duration:60,nominal:5.544,annum:6.990};
	configIR2.durations[66] = {duration:66,nominal:5.647,annum:6.990};
	configIR2.durations[72] = {duration:72,nominal:5.735,annum:6.990};
	configIR2.durations[78] = {duration:78,nominal:5.810,annum:6.990};
	configIR2.durations[84] = {duration:84,nominal:5.873,annum:6.990};
	
	configIR3.durations[12] = {duration:12,nominal:0.616,annum:6.290};
	configIR3.durations[18] = {duration:18,nominal:2.333,annum:6.290};
	configIR3.durations[24] = {duration:24,nominal:3.227,annum:6.290};
	configIR3.durations[30] = {duration:30,nominal:3.772,annum:6.290};
	configIR3.durations[36] = {duration:36,nominal:4.142,annum:6.290};
	configIR3.durations[42] = {duration:42,nominal:4.410,annum:6.290};
	configIR3.durations[48] = {duration:48,nominal:4.610,annum:6.290};
	configIR3.durations[54] = {duration:54,nominal:4.767,annum:6.290};
	configIR3.durations[60] = {duration:60,nominal:4.894,annum:6.290};
	configIR3.durations[66] = {duration:66,nominal:4.997,annum:6.290};
	configIR3.durations[72] = {duration:72,nominal:5.085,annum:6.290};
	configIR3.durations[78] = {duration:78,nominal:5.158,annum:6.290};
	configIR3.durations[84] = {duration:84,nominal:5.222,annum:6.290};
	
	configIR4.durations[12] = {duration:12,nominal:0.442,annum:3.250};
	configIR4.durations[18] = {duration:18,nominal:3.222,annum:5.250};
	configIR4.durations[24] = {duration:24,nominal:3.674,annum:5.250};
	configIR4.durations[30] = {duration:30,nominal:3.951,annum:5.250};
	configIR4.durations[36] = {duration:36,nominal:4.138,annum:5.250};
	configIR4.durations[42] = {duration:42,nominal:4.272,annum:5.250};
	configIR4.durations[48] = {duration:48,nominal:4.374,annum:5.250};
	configIR4.durations[54] = {duration:54,nominal:4.452,annum:5.250};
	configIR4.durations[60] = {duration:60,nominal:4.518,annum:5.250};
	configIR4.durations[66] = {duration:66,nominal:4.570,annum:5.250};
	configIR4.durations[72] = {duration:72,nominal:4.613,annum:5.250};
	configIR4.durations[78] = {duration:78,nominal:4.650,annum:5.250};
	configIR4.durations[84] = {duration:84,nominal:4.682,annum:5.250};
    
    configIR5.durations[12] = {duration:12,nominal:0.193,annum:2.990};
	configIR5.durations[18] = {duration:18,nominal:1.055,annum:2.990};
	configIR5.durations[24] = {duration:24,nominal:1.510,annum:2.990};
	
	updateRate();
}

function setButtonBack() {
	document.getElementById('netto_label_2').innerHTML = "Bitte tragen Sie Ihr mtl. Nettoeinkommen ein.";
	document.getElementById('send').style.display='inline';

}

function getAnnum(runtime){
	return formatNumber(config.durations[runtime].annum,2,true);
}
function getRate(netto,kredit,runtime){
    //console.log(netto+":"+kredit+":"+runtime);
	/*if ( netto < 1001 )	{
		config.durations = configIR1.durations;
		config.fee = 0.03;
	}else if( netto < 1501 && netto >= 1001 ){
		config.durations = configIR2.durations;
		config.fee = 0.03;
	}else if( netto < 2351 && netto >= 1501 ){
		config.durations = configIR3.durations;
		config.fee = 0.03;
	}else if( netto < 2701 && netto >= 2351 ){
		config.durations = configIR4.durations;
		config.fee = 0.03;
	}else if( netto < 3751 && netto >= 2701 ){
		config.durations = configIR5.durations;
		config.fee = 0.03;
	}else if(netto >= 3751 ){
		config.durations = configIR6.durations;
		config.fee = 0.02;
	}else{
		config.durations = configIR1.durations;
		config.fee = 0.03;
	}
	
	if( kredit >= 9991 && netto >= 3751){
		config.durations = configIR5.durations;
		config.fee = 0.03;
	}
	if(netto == 0){
		config.durations = configIR6.durations;
		config.fee = 0.02;	
	} */
	
	if((netto >=600 && netto <= 50000) && kredit == 2500 && (runtime >=12 && runtime <=24)) {
        setButtonBack();
        if (runtime == 12) {
            config.durations = configIR5.durations;
			
        }
        else if (runtime == 18) {
            config.durations = configIR5.durations;

        }
        else if (runtime == 24) {
            config.durations = configIR5.durations;
        }
        config.fee = 0.015;
    }
	
	else if(netto >= 4000){
		setButtonBack();
		if(kredit >= 15000){
			config.durations = configIR3.durations;
			config.fee = 0.03;
		}
		else{
			config.durations = configIR4.durations;
			config.fee = 0.015;
		}
		
	}
	else if(netto >= 2001 && netto < 4000){
		setButtonBack();
		if(kredit >= 15000){
			config.durations = configIR2.durations;
			config.fee = 0.03;
		}
		else{
			config.durations = configIR3.durations;
			config.fee = 0.03;
		}
		
	}
	
	else if(netto < 2001 && netto >= 1501){
		setButtonBack();
		if(kredit >= 1){
			config.durations = configIR2.durations;
			config.fee = 0.03;
		}
		
	}
	
	else if(netto < 1501 && netto >= 600){
		setButtonBack();
		if(kredit >= 1){
			config.durations = configIR1.durations;
			config.fee = 0.03;
		}

	}
	
	else if(netto < 1501 && netto >= 600){
		setButtonBack();
		if(kredit >= 1){
			config.durations = configIR1.durations;
			config.fee = 0.03;
		}

	}
	
	else if(netto < 600){
		document.getElementById('netto_label_2').innerHTML = "<span style='color: #ff0000;'><strong>Ihr mtl. Nettoeinkommen muss min. 600 € betragen</strong>.</span>";
	    document.getElementById('send').style.display='none';
			
	}
	
	
	
	//var tempLoan = parseInt(kredit) + kredit*runtime*faktor;

	var tempLoan = parseInt(kredit);

	var nominal = config.durations[runtime].nominal / 100;
	var at = nominal * (1 / (1 - Math.pow ((1 + nominal / config.liquidation), (-runtime))) - 1);
	var rate = tempLoan * (1 + config.fee) * (nominal + at) / config.liquidation;

	rate *= 100;
	rate = Math.round (rate);
	rate = rate / 100;
	return rate;
}
function formatNumber(zahl, k, fix) {
    if(!k) k = 0;
    var neu = '';
	var dec_point = ',';
	var thousands_sep = '.';
    var f = Math.pow(10, k);
    zahl = '' + parseInt(zahl * f + (.5 * (zahl > 0 ? 1 : -1)) ) / f ;
    var idx = zahl.indexOf('.');
    
    if(fix){
         zahl += (idx == -1 ? '.' : '' )
         + f.toString().substring(1);
    }
	var sign = zahl < 0;
	if(sign) zahl = zahl.substring(1);
    idx = zahl.indexOf('.');
    if( idx == -1) idx = zahl.length;
    else neu = dec_point + zahl.substr(idx + 1, k);
    while(idx > 0)    {
        if(idx - 3 > 0)
        	neu = thousands_sep + zahl.substring( idx - 3, idx) + neu;
        else
        	neu = zahl.substring(0, idx) + neu;
        idx -= 3;
    }
    return (sign ? '-' : '') + neu;
}

function stripFloat(value){
	return value.replace(/[^0-9,]/g, "");
}
function strip(value){
	value = value.split(",")[0];
	return value.replace(/[^0-9]/g, "");
}
function valNetto(value){
	return Math.min(Math.max(value,0),50000);
}
function valMonth(value){
	return Math.min(Math.max(value,12),84);
}
function valKredit(value){
	return Math.min(Math.max(value,2500),50000);
}
function formatNetto(value){
	return formatNumber(value,2,true)+" \u20AC";
}
function formatEuro(value) {
	return formatNumber(value,0,false)+" \u20AC";
}
function formatMonth(value) {
	return value+" Monate";
}
function tooltip(b) {
	document.getElementById('tooltip').style.display = (b)?"block":"none";
}
function checkField(target)  {
     target.focus();
     target.select();
}
function submitenter(myfield,e){
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;
	
	/*if(keycode == 13){
		sendForm();
		return false;
	}else{
		return true;
	}*/
}

function sendForm(){
	var netto = stripFloat(document.getElementById('netto_input').value);
	netto = parseFloat(netto.replace(/,/g, "."));
	netto = (netto>0)?netto:0;
	var kredit = strip(document.getElementById('kredit_input').value);
	var runtime = strip(document.getElementById('runtime_input').value);
	var rate = getRate(netto,kredit,runtime);
	//alert("netto="+netto+" kredit="+kredit+" runtime="+runtime+" rate = "+rate);
	location.href = "https://www.uckredit.de/personalloan/start.jsp?income="+netto+"&creditsum="+kredit+"&runtime="+runtime+"&utm_source=sofortkredit&utm_medium=interactive&utm_content=sfklandingpage&utm_campaign=sfkrechner";
}
