// format: CH PS 5blz 12knr
// format: DE PS 8blz 10knr
// format: AT PS 5blz 11knr

// details see: EBS204_V.3.2.pdf

// XXX error checks !!!

function generate_iban(x)
{
	//var land = document.getElementById("country").value;
	
	var land = document.forms[1].lll.options[document.forms[1].lll.selectedIndex].value;
	var blz  = document.getElementById("blz").value;
	var knr  = document.getElementById("knr").value;

	var lk = ""; // Länderkennung
	var b  = ""; // BIC
	var k  = ""; // KNR
	
	if(land == "Schweiz") {		
		lk = "CH";
		b = fn(5,blz);
		if(b == -1) {
			alert("Bankleitzahl zu lang!");
			return;
		}
		
		k = fn(12,knr);
		if(k == -1) {
			alert("Kontonummer zu lang!");
			return;
		}
	}
	
	if(land == "Deutschland") {		
		lk = "DE";
		b = fn(8,blz);
		if(b == -1) {
			alert("Bankleitzahl zu lang!");
			return;
		}
		
		k = fn(10,knr);
		if(k == -1) {
			alert("Kontonummer zu lang!");
			return;
		}
	}
	
	if(land == "%FCsterreich") {
		lk ="AT";
		b = fn(5,blz);
		if(b == -1) {
			alert("Bankleitzahl zu lang!");
			return;
		}
		
		k = fn(11,knr);
		if(k == -1) {
			alert("Kontonummer zu lang!");
			return;
		}
	}
	
	var p = lk + "00" + b + k;
	
	// vordersten vier stellen nach hinten:
	var q = p.substr(0,4);
	p = p.substr(4,p.length-4) + q;
	
	// buchstaben konvertieren
	p = convert(p);

	var cs = 98 - mod97(p);
	
	var x = lk + cs + b + k;
	document.getElementById("iban").innerHTML = x;
	document.getElementById("papier").innerHTML = "IBAN " + lk + cs + " " + always_four(b + k);
	
}

// dem gegebenen string alle vier zeichen ein leerzeichen hinzufügen
function always_four(s)
{
	var result = "";
	
	for(var i=0; i<s.length; i++) {	
		if(i % 4 == 0 && i != 0) result = result + " ";
		result = result + s.charAt(i);
	}
	
	return result;
}

// string vorne mit nullen auffuellen
function fn(l,s)
{	
	var len = s.length;
	
	if(len > l) return -1;
	if(len == l) return s;
	
	for(var i = 0; i < l - len; i++) {
		s = '0' + s;
	}
	
	return s;
}

function mod97(digit_string)
{	
	var m = 0;
	for (var i = 0; i < digit_string.length; ++i)
		m = (m * 10 + parseInt(digit_string.charAt(i))) % 97;
	return m;
}

function convert(s)
{
	var result = "";
	
	for(var i=0; i < s.length; i++) {
		var c = s.charAt(i);
		if(c == 'A') result = result.concat("10");
		else if(c == 'C') result = result.concat("12");
		else if(c == 'D') result = result.concat("13");
		else if(c == 'E') result = result.concat("14");
		else if(c == 'H') result = result.concat("17");
		else if(c == 'T') result = result.concat("29");
		else result = result.concat(c);
	}

	return result;
}
