// (c) 2008-2009 Werner Zauzig

function RechnerLayerDropAnbieter(o,obj,isdrag){
	if(!o||!obj)return;
	dragdroptab[1][o.id]=obj.id;dragdroptab[3][o.id]=obj;RatenkreditBerechnen(o.id,isdrag,1);
RatenkreditBerechnen();
}
function RatenkreditBerechnen(id,isdrag,doVgl){
	var lz=document.RechnerLayerForm.RechnerLayerLaufzeit.value;
	var betr=number_check(document.RechnerLayerForm.RechnerLayerBetrag.value);
	if(id){
		//alert("RatenkreditBerechnen(id="+id+","+doVgl+")");
		var objid=dragdroptab[1][id];
//alert("objid="+objid);
		var o=document.getElementById(id);
		if(!o)return;
		var d=dragdroptab[0][objid];
		if(!d)return;

		var t=new RatenkreditDaten(d);
isdrag=0;
		LogDragDropOperation(isdrag?"Drop":"Init","Raten",t.urlid?t.urlid:t.name);
		//if(betr==0)document.RechnerLayerForm.RechnerLayerBetrag.value=number_format(betr=10000,0);
		//if(betr<0)betr=-betr;
		var end=t.SetErgebnis(betr,lz);
		dragdroptab[2][id]=end;
		CreateHTMLanbieter("Raten",o,objid,t.name,dragdroptab[3][id],t.produktname);
		var zeigen=(t.endbetrag>0);
		CreateHTMLergebnis("zins"+id,"Zinssatz",t.zins,zeigen);
		CreateHTMLergebnis("erg"+id,"Rate",t.rate+"\u00a0€",zeigen);
		CreateHTMLergebnis("ertrag"+id,"ges. Zinsen",t.zinsen+"\u00a0€",zeigen);
		CreateHTML(document.getElementById("inf"+id),t.info?t.info+"<BR>\u00a0":"\u00a0");
		if(!doVgl)return;
	}else{
		for(var idx in dragdroptab[1])
			RatenkreditBerechnen(idx);
	}
	var m=betr*betr;
	for(var idx in dragdroptab[2]){var x=dragdroptab[2][idx];if(x>0&&m>x)m=x;}
	for(var idx in dragdroptab[1]){
		var diff=(end=dragdroptab[2][idx])-m;
		//oe=document.getElementById("erg"+idx);
		//CreateHTML(oe,number_format(t.endbetrag,2)+"\u00a0€");
		var ov=document.getElementById("diff"+idx);
		CreateHTML(ov,(diff&&end>0?("+"+number_format(diff,2)+"\u00a0€"):"\u00a0"));
	}
	RatenkreditParameter();
}

function RatenkreditParameter(){
	//global RechnerLayerID;
	var svid=RechnerLayerID;
	for(var idx in dragdroptab[1]){
		var objid=dragdroptab[1][idx];
		var o=document.getElementById(idx);
		if(!o)return;
		var d=dragdroptab[0][objid];
		if(!d)return;
		var t=new RatenkreditDaten(d);
		svid+='a'+str_replace('anbieterausgewaehlt_','',idx)+"i"+t.ID;
	}
	var o=document.getElementById('SVrecall');
	if(!o)return;
	var lz=document.RechnerLayerForm.RechnerLayerLaufzeit.value;
	var betr=number_check(document.RechnerLayerForm.RechnerLayerBetrag.value);
	svid+='api'+betr+'i'+lz;
	o.value=svid;
//alert('svid='+svid);
	return;
}

function RatenkreditDaten(csv){
	var i=0;
	this.ID=csv[i++];
	var anbtyp=csv[i++];
	this.name=str_replace("&"," & ",csv[i++]);

	this.lz12=csv[i++];
	this.lz24=csv[i++];
	this.lz36=csv[i++];
	this.lz48=csv[i++];
	this.lz60=csv[i++];
	this.lz72=csv[i++];
	this.lz84=csv[i++];
	this.lz96=csv[i++];
	this.lz108=csv[i++];
	this.lz120=csv[i++];

	this.mind=number_check(csv[i++],0);
	this.max=number_check(csv[i++]);

	this.alterbis=number_check(csv[i++]);
	this.alterletzterate=number_check(csv[i++]);
	this.anzmonimjob=number_check(csv[i++]);
	this.schufascoring=csv[i++];
	this.voraussetzung=csv[i++];
	this.bearbeitungsgebuehren=csv[i++];
	this.gebuehrersatz=csv[i++];
	this.produktname=csv[i++];
	this.urlid=csv[i++];

	this.fuerAlle=(anbtyp.indexOf("0")>=0?0:1);
	this.info="";
}

RatenkreditDaten.prototype.GetGebuehren=function(lzm){
	return 0;
}

RatenkreditDaten.prototype.AufzinsungFaktor=function(Zins,d){return (Zins==0.0)?1.0:Math.pow(1.0+Zins,d);}
RatenkreditDaten.prototype.EffektivZinsJePeriode=function(Zins){
	return (Zins==0.0)? 0.0 : Math.pow(1.0+Zins,1.0/12.0) - 1.0;//ANZRATENJEJAHR
}

RatenkreditDaten.prototype.SetErgebnis=function(betrag,lzm){
	betrag=1*betrag;
	lzm=1*lzm;

	var z,z1,z2;
	if(lzm>=120)	z=this.lz120;
	else if(lzm>=108)z=this.lz108;
	else if(lzm>=96)z=this.lz96;
	else if(lzm>=84)z=this.lz84;
	else if(lzm>=72)z=this.lz72;
	else if(lzm>=60)z=this.lz60;
	else if(lzm>=48)z=this.lz48;
	else if(lzm>=36)z=this.lz36;
	else if(lzm>=24)z=this.lz24;
	else if(lzm>=12)z=this.lz12;
	else		z=0;

	this.typ=0;
	z=""+z;
	if(z&&z.charAt(0)==">"){
		z=z.substr(2);
		this.abZins=1;
	}
	var pos;
	if(z&&(pos=z.indexOf("-"))>0){
		z1=number_check(z.substr(0,pos),0);
		z2=number_check(z.substr(pos+1),0);
		z=str_replace(".",",",number_format((z1+z2)/2.0,2));
	}else
		z1=z2=z=number_check(z,0);
	//alert("z="+z+": z1="+z1+" z2="+z2+" pos="+pos);

	this.zins=this.endbetrag="\u00a0";
	if(betrag<this.mind){
		this.info+=(this.info?", ":"")+"Kredit ab "+number_format(this.mind,0)+"\u00a0€";
		return 0;
	}
	if(betrag>this.max && this.max>0){
		this.info+=(this.info?", ":"")+"Kredit bis "+number_format(this.max,0)+"\u00a0€";
		return 0;
	}

/*
	if(this.fuer!=""){
		var s=str_replace("Privatpersonen","",str_replace("nur","",this.fuer)).trim();
//alert("this.info.charAt(1)="+this.info.charAt(1)+" this.info.substr(2)="+this.info.substr(2));
		if(s.charAt(0)==",")s=s.substr(1).trim();
		if(s!="")this.info="auch "+s;
	}
//alert("betrag="+betrag+": mind="+this.mind+" max="+this.max);
*/

	if(z)this.zins=(this.abZins?"ab ":"")+str_replace(".",",",z)+"\u00a0%";

	//alert("betrag="+betrag+" lz="+lzm+": z="+z+" ("+this.lz12+";"+this.lz24+";"+this.lz36+";"+this.lz48+","+this.lz60+";"+this.lz72+";"+this.lz84+";"+this.lz96+";"+this.lz108+";"+this.lz120+"): zins="+this.zins);
	z=str_replace(",",".",z);
	if(z<=0){
		this.info="kein Angebot für diese Laufzeit";
		return 0;
	}
	if(lzm<=0)return "";

	var zp,AF,end,rate,endd,rated;
	//Minimalzins:
	zp=this.EffektivZinsJePeriode(z/100.0);
	AF=this.AufzinsungFaktor(zp,lzm);
	rate=Math.round((zp==0.0
			? betrag/lzm
			: betrag*zp*AF/(AF-1.0)) * 100) / 100;
	endd=end=rate*lzm;

	this.rate=number_format(rate,2);
	this.zinsen=number_format(end-betrag,2);
	this.endbetrag=end;
	if(z1!=z2){
		//Minimalzins:
		zp=this.EffektivZinsJePeriode(z1/100.0);
		AF=this.AufzinsungFaktor(zp,lzm);
		var rate1=Math.round((zp==0.0
			? betrag/lzm
			: betrag*zp*AF/(AF-1.0)) * 100) / 100;
		var end1=rate1*lzm;
		//Maximalzins:
		zp=this.EffektivZinsJePeriode(z2/100.0);
		AF=this.AufzinsungFaktor(zp,lzm);
		var rate2=Math.round((zp==0.0
			? betrag/lzm
			: betrag*zp*AF/(AF-1.0)) * 100) / 100;
		var end2=rate2*lzm;

		//this.rate=number_format(rate,2)+"-"+number_format(rate2,2);
		//this.zinsen=number_format(end-betrag,2)+"-"+number_format(end2-betrag,2);
		//this.endbetrag=end;
		this.zins+="*";
		this.info="*= Mittelwert"+(this.info?"<BR>":"")+this.info;
	}
	if(this.voraussetzung)
		this.info+=(this.info?"<BR>":"")+this.voraussetzung;
	if(this.schufascoring.indexOf("J")>=0)
		this.info+=(this.info?"<BR>":"")+"<FONT color=\"#EE0000\">Anfrage führt zu Schufaverschlechterung</FONT>";

	return endd;//durchschn. Zins
}

