function ReplaceString(sString, sReplaceThis, sWithThis) {
 if (sReplaceThis != "" && sReplaceThis != sWithThis) {
  var counter = 0;
  var start = 0;
  var before = "";
  var after = "";
   while (counter<sString.length) {
    start = sString.indexOf(sReplaceThis, counter);
    if (start == -1){
     break;
    } else {
     before = sString.substr(0, start);
     after = sString.substr(start + sReplaceThis.length, sString.length);
     sString = before + sWithThis + after;
     counter = before.length + sWithThis.length;
    }
   }
  }
 return sString;
}


function convertTilinro(input){
	var alku="";
	var loppu="";
	var zeros="";
	var koko="";
	var eka="";
	input=ReplaceString(input,'-','');
	input=ReplaceString(input,' ','');
	eka=input.substr(0,1);
	if(eka==4 || eka==5){
		alku=input.substr(0,7);
		loppu=input.substr(7);
		var zerocount=7-loppu.length;
	}else{
		alku=input.substr(0,6);
		loppu=input.substr(6);
		var zerocount=8-loppu.length;
	}	
	for(i=0;i<zerocount;i++){
		zeros=zeros+'0';
	}
	loppu=zeros+loppu
	koko=alku+loppu
	return koko;
}

function validatePankki(tilinro){
	var pankki_otos="";
	var pankki= new Array();
	var pituus="";
	var pankkilista="#1#2#31#33#34#36#37#38#39#4#5#6#8";
	pankki_otos=tilinro.substr(0,1);
	if(pankki_otos==3){
		pankki_otos=tilinro.substr(0,2);
	}
	pankki[1]="Nordea";
        pankki[2]="Nordea";
        pankki[31]="Handelsbanken";
        pankki[33]="Skandinavia Enskilda Banken";
        pankki[34]="Danske Bank";
        pankki[36]="Tapiola Pankki";
        pankki[37]="DnB NOR Bank";
        pankki[38]="Swebank";
        pankki[39]="S-pankki";
        pankki[4]="SP PoP Aktia";
        pankki[5]="OP, Oko Okopankki";
        pankki[6]="Ålands banken";
        pankki[8]="Sampo Pankki";

	if(pankkilista.search('#'+pankki_otos)==-1){
		return false;
	}
	if(pankki[pankki_otos].length>5){
		return tilinro;
	}else{
		return false;
	}

}



function checkTarkiste(input){
	var alku=input.substr(0,13);
	var tarkiste=input.substr(13);
	var tmp="";
	var tulos="0";
	var eka="";
	var toka="";
	var edellinen="";
	var tarkiste_laskettu="";
	tulos=parseInt(tulos);
	strLength=input.length-1;
	var kerroin="";
	for(i=0;i<strLength;i++){
		if(i % 2 == 0){
			kerroin=2;
		}else{
			kerroin=1;
		}
		tmp=parseInt(alku[i])*kerroin;
		if(tmp>9){
			var tmp2="";
			tmp2=tmp2+tmp;
			eka=parseInt(tmp2[0]);
			toka=parseInt(tmp2[1]);
			tmp=eka+toka;
		}
		tulos=parseInt(tulos)+tmp;
	}
	tulos=tulos/10;
	edellinen=Math.ceil(tulos);
	edellinen=edellinen*10;
	tulos=tulos*10;
	tarkiste_laskettu=edellinen-tulos;
	if(tarkiste==tarkiste_laskettu){
		return true;
	}else{
		alert("Tilinumero väärää muotoa");
		return false;
	}
}
		

		

	
function validateTilinro(tilinro){
	tilinro=convertTilinro(tilinro);
	tilinro=validatePankki(tilinro);
	if(tilinro==false){
		alert('Pankkia ei tunnistettu');
		return false;
	}
	return checkTarkiste(tilinro);
}

