// JavaScript Document

function ShowHideDetails(objId, originalClassName, downClassName, el)
{
    var obj = document.getElementById(objId);
    var isVisible = (obj.style.display == "" || obj.style.display == "block") ? true : false;
    obj.style.display = isVisible ? "none" : "block"; 
    el.className = isVisible ? downClassName : originalClassName;
}

function IBANChk(b) 
{ 
        if (b.length < 5) { jQuery.facebox("La lunghezza è minore di 5 caratteri"); return false; } 
        s = b.substring(4) + b.substring(0, 4); 
        for (i = 0, r = 0; i < s.length; i++ ) 
        { 
                c = s.charCodeAt(i); 
                if (48 <= c && c <= 57) 
                { 
                        if (i == s.length-4 || i == s.length-3) { jQuery.facebox("Posizioni 1 e 2 non possono contenere cifre"); return false; } 
                        k = c - 48; 
                } 
                else if (65 <= c && c <= 90) 
                { 
                        if (i == s.length-2 || i == s.length-1) { jQuery.facebox("Posizioni 3 e 4 non possono contenere lettere"); return false; } 
                        k = c - 55; 
                } 
                else { jQuery.facebox("Sono ammesse solo cifre e lettere maiuscole"); return false; } 
                if (k > 9) 
                        r = (100 * r + k) % 97; 
                else 
                        r = (10 * r + k) % 97; 
        } 
        if (r != 1) { jQuery.facebox("Il codice di controllo è errato"); return false; } 
        jQuery.facebox("L'IBAN risulta <strong>corretto</strong>!"); 
        return false; 
}


function contrcin()
{

var cc=$("#abi").val()+$("#cab").val()+$("#cc").val();

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;
jQuery.facebox("Il CIN calcolato &egrave;: <strong>"+cin+"</strong><br/>Le coordinate IBAN sono: <strong>"+iban+"</strong>");}



function prova()
{
//document.forms[0].elements[0].value=document.forms[0].elements[0].value.toUpperCase();
var bt_abi = $("#abi").val();
if (bt_abi.length!=5 )
{
jQuery.facebox("Attenzione il codice ABI deve essere di 5 caratteri" );
}
}
function prova1()
{
//document.forms[0].elements[1].value=document.forms[0].elements[1].value.toUpperCase();
var bt_cab = $("#cab").val();
if (bt_cab.length!=5 )
{
jQuery.facebox("Attenzione il codice CAB deve essere di 5 caratteri" );
}
}
function prova2()
{
prova();
prova1();
// document.forms[0].elements[2].value=document.forms[0].elements[2].value.toUpperCase();
var bt_cc = $("#cc").val();
lunghezza=bt_cc.length;
lunghezza_tmp=bt_cc.length;
if (lunghezza_tmp<12 )
{
   for(var i=1;i<(13-lunghezza);i++) {
         $("#cc").val("0"+$("#cc").val());
         bt_cc = $("#cc").val();
         lunghezza_tmp=bt_cc.length;
   }
}

bt_cc = $("#cc").val();
lunghezza=bt_cc.length;
if (lunghezza!=12 )
{
jQuery.facebox("Attenzione il numero di C/C deve essere di 12 caratteri" );
}
contrcin();
}

function chkCodfis(codfis) {
	if (codfis.length > 11) 
		msg = parseCFFis(codfis);
	else msg = parseCF(codfis);
	if ( msg > '' ) {
		jQuery.facebox("<ul><li>" + msg + "</li></ul>");     
	} else
		jQuery.facebox("<ul><li>Il codice fiscale " + codfis.toUpperCase() + " è corretto</li></ul>");   
}

/***** Codice fiscale persone fisiche **************/
function parseCFFis(cf)
{
	var validi, i, s, set1, set2, setpari, setdisp;
	if( cf == '' )  return '';
	cf = cf.toUpperCase();
	if( cf.length != 16 )
		return "La lunghezza del codice fiscale <b>" + cf + "</b> non è\n"
		+"corretta: il codice fiscale dovrebbe essere lungo\n"
		+"esattamente 16 caratteri.\n";
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 )
			return "Il codice fiscale <b>" + cf + "</b> contiene un carattere non valido `" +
				cf.charAt(i) +
				"'.\nI caratteri validi sono le lettere e le cifre.\n";
	}
	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	s = 0;
	for( i = 1; i <= 13; i += 2 )
		s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	for( i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
		return "Il codice fiscale <b>" + cf + "</b> non è corretto:\n"+
			"il codice di controllo non corrisponde.\n";
	return "";
}

/***** Codice fiscale persone giuridiche **************/
function parseCF(pi)
{
	if( pi == '' )  return '';
	if( pi.length != 11 )
		return "La lunghezza del codice fiscale non è\n" +
			"corretta: il codice fiscale dovrebbe essere lungo\n" +
			"esattamente 11 caratteri per le persone giuridiche e 16 per quelle fisiche.\n";
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
			return "Il codice fiscale <b>" + pi + "</b> contiene un carattere non valido '<b>" +
				pi.charAt(i) + "</b>'.\nI caratteri validi sono le cifre.\n";
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
		return "Il codice fiscale <b>" + pi + "</b> non è valido:\n" +
			"il codice di controllo non corrisponde.\n";
	return '';
}