var re5digit=/^\d{5}$/;

function provaAbi() {
	document.calcoloIban.elements[0].value=document.calcoloIban.elements[0].value.toUpperCase();
	if (!re5digit.test(document.calcoloIban.elements[0].value)) {
		document.calcoloIban.J8.focus();
		alert("Attenzione il codice ABI deve essere di 5 numeri" );
		return false;
	}
	return true;
}

function provaCab() {
	document.calcoloIban.elements[1].value=document.calcoloIban.elements[1].value.toUpperCase();
	if (!re5digit.test(document.calcoloIban.elements[1].value)) {
		alert("Attenzione il codice CAB deve essere di 5 numeri" );
		return false;
	}
	return true;
}

function provaIban() {
	if ((provaAbi())&&(provaCab())) {
		document.calcoloIban.elements[2].value=document.calcoloIban.elements[2].value.toUpperCase();
		lunghezza=document.calcoloIban.elements[2].value.length;
		if (document.calcoloIban.elements[2].value.length<12 ) {
			for(var i=1;i<(13-lunghezza);i++) {
				document.calcoloIban.elements[2].value="0"+document.calcoloIban.elements[2].value;
			}
		}
		if (document.calcoloIban.elements[2].value.length!=12 ) {
			alert("Attenzione il numero di C/C deve essere di 12 caratteri" );
		} else {
			contrcin();
		}
	} else {
		alert('Controllare la correttezza dei parametri inseriti.');
	}
	return false;
}

function contrcin() {
	cc=document.calcoloIban.elements[0].value+document.calcoloIban.elements[1].value+document.calcoloIban.elements[2].value;
	aa="A0B1C2D3E4F5G6H7I8J9K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#-#.# #";
	bb="B1A0K#P#L#C2Q#D3R#E4V#O#S#F5T#G6U#H7M#I8N#J9W#Z#Y#X# #-#.#";
	dd=0;
	iban2="";
	tabella="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for(var ii=1;ii<22;ii+=2) {
		dd=dd+Math.floor(aa.indexOf(cc.charAt(ii))/2);
	}
	for(var ii=0;ii<22;ii+=2) {
		dd=dd+Math.floor(bb.indexOf(cc.charAt(ii))/2);
	}
	dd=dd-(Math.floor(dd/26)*26);
	cin = aa.charAt(dd*2);
	cc1 = cin+cc+"IT"+"00";
	for(var iban1=0;iban1<cc1.length;iban1++) {
		iban2+=tabella.indexOf(cc1.charAt(iban1));
	}
	divisore=97;
	div1=""
	for (var ciclo1 = 0; ciclo1 != iban2.length; ciclo1++) {
		div1=div1+iban2.charAt(ciclo1);
		if (div1 < divisore) continue;
		else {
			div1=div1%divisore;
		}
	}
	iban2=98 - div1;
	iban2="0"+iban2;
	iban2=iban2.charAt(iban2.length-2)+iban2.charAt(iban2.length-1);
	iban = "IT"+iban2+cin+cc;
	document.getElementById("lblCin").innerHTML ="Il cin calcolato è: " + cin;
	document.getElementById("lblIban").innerHTML ="Le coordinate IBAN sono: " + iban;
}

function bcontrcin(bcc) {
	baa="A0B1C2D3E4F5G6H7I8J9K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#-#.# #";
	bbb="B1A0K#P#L#C2Q#D3R#E4V#O#S#F5T#G6U#H7M#I8N#J9W#Z#Y#X# #-#.#";
	bdd=0;
	biban2="";
	btabella="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for(var bii=1;bii<22;bii+=2) {
		bdd=bdd+Math.floor(baa.indexOf(bcc.charAt(bii))/2);
	}
	for(var bii=0;bii<22;bii+=2) {
		bdd=bdd+Math.floor(bbb.indexOf(bcc.charAt(bii))/2);
	}
	bdd=bdd-(Math.floor(bdd/26)*26);
	return baa.charAt(bdd*2);
}
 
function bcalcola(ba) {
	ba=ba.toUpperCase();
	blunghezza = ba.length;
	bnazione = ba.substr(0,2);
	if (blunghezza != 27) alert ("Il codice IBAN italiano deve avere una lunghezza di 27 caratteri");
	if (bnazione != "IT") alert ("Il codice IBAN italiano deve avere come primi due caratteri le lettere IT");
	babi = ba.substr(5,5);
	bcab = ba.substr(10,5);
	bcc = ba.substr(15,12);
	bcin = ba.substr(4,1);
	bcontrollo = ba.substr(2,2);
	bcincal = bcontrcin(babi+bcab+bcc);
	bcc1 = bcincal+babi+bcab+bcc+"IT"+"00";
	for(var biban1=0;biban1<bcc1.length;biban1++) {
		biban2+=btabella.indexOf(bcc1.charAt(biban1));
	}
	bdivisore=97;
	bdiv1=""
	
	for (var bciclo1 = 0; bciclo1 != biban2.length; bciclo1++) {
		bdiv1=bdiv1+biban2.charAt(bciclo1);
		if (bdiv1<bdivisore) continue;
		else {
			bdiv1=bdiv1%bdivisore;
		}
	}

	biban2=98 - bdiv1;
	biban2="0"+biban2;
	biban2=biban2.charAt(biban2.length-2)+biban2.charAt(biban2.length-1);

	document.getElementById("za").innerHTML = babi;
	document.getElementById("zb").innerHTML = bcab;
	document.getElementById("zc").innerHTML = bcc;
	
	if (bcin != bcincal)
		document.getElementById("zd").innerHTML = bcin+" cin errato, quello esatto è "+bcincal;
	else
		document.getElementById("zd").innerHTML = bcin;
	
	if (biban2 != bcontrollo)
		document.getElementById("ze").innerHTML = bcontrollo+" codice errato, quello esatto è "+biban2;
	else
		document.getElementById("ze").innerHTML = bcontrollo;

	if (biban2 != bcontrollo && bcin != bcincal)
		document.getElementById("ze").innerHTML = "Verifica fallita";
	else
		document.getElementById("ze").innerHTML = "Verifica OK";
}


function openMeteo() {
	window.open('http://www.ilmeteo.it/datimeteo/meteo-italia.html','meteo','toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=760,height=440');
}
