// provjerava maticni broj na key up i ispisuje poruku u određeni objekt
function MBRcheck(txMBR, MBRporuka)
{
	var unos = txMBR.value;
	MBRporuka.innerHTML = "";
	
	if(isNaN(unos))
	{
	    MBRporuka.innerHTML = "Unesite numericku vrijednost";
		txMBR.value = unos.substring(0, unos.length - 1);
	}
	else
	{	
		var suma = 0;
		var index_2 = 8;
		var ostatak = 0;
		var check_cifra = 0;
    
	    if(unos.length==7)
	    {
			while(index_2>1)
			{
				var vrijednost = index_2 * unos.substring(8 - index_2, 9 - index_2);
				suma += vrijednost
				index_2--;
			}
			ostatak = suma % 11;
			check_cifra = 11 - ostatak;
			if(check_cifra>=10){
                check_cifra=0;
            }
            //document.getElementById("chkMBR").innerHTML =  check_cifra;
            MBRporuka.innerHTML = check_cifra;
	    }
	}
}
/*
********************************************************* 
    provjerava JMBG znamenku po znamenku prilikom upisa
        - potrebno je pozvati funkciju na onkeyup
        - ulazni parametri: 
            - txJMBG:       polje koje se provjerava
            - JMBGporuka:   polje gdje će se ispisivati poruka
***********************************************************
*/
function JMBGcheck(txJMBG, JMBGporuka)
{
	var unos = txJMBG.value;
	//document.getElementById("JMBGporuka").innerHTML = "";
	JMBGporuka.innerHTML = "";
	
	
	if(isNaN(unos))
	{
	    //document.getElementById("JMBGporuka").innerHTML = "Unesite numeričku vrijednost";
	    JMBGporuka.innerHTML = "Unesite numericku vrijednost";
		txJMBG.value = unos.substring(0, unos.length - 1);
	}
	else
	{	
		switch(unos.length)
		{
			case 1:
				if(unos.substring(0, 1) > 3)
				{
				    //document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
				    JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 0, 1);
				}
				break;
			case 2:
			    Prvih2(unos, txJMBG);
				break;
			case 3:
			    Prvih2(unos, txJMBG);
				if(unos.substring(2, 3) > 1)
				{
				    //document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
				    JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 2, 3);
				}
				break;
			case 4:
			    Prvih4(unos, txJMBG);
				break;
			case 5:
			    Prvih4(unos, txJMBG);
				break;
			case 6:
			    Prvih4(unos, txJMBG);
				break;
			case 7:
				if(!ProvjeraDatuma(unos))
				{
				    //document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
				    JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 0, 7);
				}
				break;
			case 9:
				if(!ProvjeraDatuma(unos))
				{
				    //document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
				    JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 0, 7);
				}
				if(!(unos.substring(7, 9) >= 30 && unos.substring(7, 9) <= 39))
				{
				    //document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
				    JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 7, 9);
				}
				break;
			case 11:
				if(!ProvjeraDatuma(unos))
				{
				    //document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
				    JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 0, 7);
				}
				if(!(unos.substring(7, 9) >= 30 && unos.substring(7, 9) <= 39))
				{
				    //document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
				    JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 7, 9);
				}
				break;
			case 12:
				var dalje = 1;
				if(!ProvjeraDatuma(unos))
				{
					dalje=0;
					//document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
					JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 0, 7);
				}
				if(!(unos.substring(7, 9) >= 30 && unos.substring(7, 9) <= 39))
				{
					dalje=0;
					//document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
					JMBGporuka.innerHTML = "Neispravan dio JMBG-a";
					setSelectionRange(txJMBG, 7, 9);
				}
				if(dalje==1){
				    //document.getElementById("JMBGporuka").innerHTML = "Zadnja znamenka: " + ZadnjaZnamenka(unos);
				    JMBGporuka.innerHTML = "Zadnja znamenka: " + ZadnjaZnamenka(unos);
				}
				break;
			
		}
	}
}
function ZadnjaZnamenka(unos){
	var prolaz = 0;
    var mjesto = 0;
    var suma_jmbg = 0;
    var zadnja_znamenka = 0;
    
    while(prolaz < 2)
	{
		for (n=7;n>=2;n--)
		{
			suma_jmbg += n * parseInt(unos.substring(mjesto, mjesto + 1));
			mjesto++;
		}
		prolaz++;
	}
    zadnja_znamenka = 11 - (suma_jmbg % 11);
	if(zadnja_znamenka>9){
		zadnja_znamenka = 0;
	}
	return zadnja_znamenka;
}
function Prvih2(unos, txJMBG) {
	if(unos.substring(0, 2) > 31 || unos.substring(0, 2) < 1)
	{
		document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
		setSelectionRange(txJMBG, 0, 2);
	}
}
function Prvih4(unos, txJMBG){
	if(unos.substring(0, 2) > 31 || unos.substring(0, 2) < 1)
	{
		document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
		setSelectionRange(txJMBG, 0, 2);
	}
	else{
		if(unos.substring(2, 4) > 12 || unos.substring(2, 4) < 1)
		{
			document.getElementById("JMBGporuka").innerHTML = "Neispravan dio JMBG-a";
			setSelectionRange(txJMBG, 2, 4);
		}
	}
}
function ProvjeraDatuma(unos){
	var dan = unos.substring(0, 2);
	var mjesec = unos.substring(2, 4);
	var godina = unos.substring(4, 7);
	if(godina.substring(0, 1)=="0")
	{
		godina = "2" + godina;
	}
	else
	{
		godina = "1" + godina;
	}
	var datum = dan + "/" + mjesec + "/" + godina;
	
	var moguciBrojDana = DanaUMjesecu(mjesec, godina);
	var greska = 0;
	if(parseInt(dan) > moguciBrojDana){
		greska = 1;
	}
	if(parseInt(mjesec) > 12){
		greska = 1;
	}	
	if(greska==0){
		return true;
	}
	else{
		return false;
	}	
}
function DanaUVeljaci (godina){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((godina % 4 == 0) && ( (!(godina % 100 == 0)) || (godina % 400 == 0))) ? 29 : 28 );
}
function DanaUMjesecu(mjesec, godina) {
	var mj = parseInt(mjesec);
	var gd = parseInt(godina);
	
	var brojDana = 31;
	
	if(mj==4 || mj==6 || mj==9 || mj==11)
		brojDana = 30;
	if(mj==2)
		brojDana = DanaUVeljaci(gd);
	
	return brojDana;
}


// dodao jer IE nema metode setSelectionRange

function setSelectionRange(input, selectionStart, selectionEnd) {
    if (input.setSelectionRange) {
        input.focus();
        input.setSelectionRange(selectionStart, selectionStart);
    }
    else if (input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
    }
}


/*
********************************************************* 
    provjerava JMBG nakon što se upišu sve znamenke - na lost focus
        - ulazni parametri: 
            - txJMBG:       polje koje se provjerava
***********************************************************
*/
function JMBGchk(txJMBG) {
    var unos = txJMBG.value;
    var poruka = "";

    if (unos.length <= 0) {
        return;
    }
    
    if (isNaN(unos)) {
        poruka = "Unesite numericku vrijednost";
        alert(poruka);
        txJMBG.focus();
        return;
    }
    else {
        // da li je 13 znakova
        if (unos.length != 13) {
            poruka = "JMBG mora sadrzavati 13 znakova";
            alert(poruka);
            txJMBG.focus();
            return;
        }
        // provjera datuma
        if (!ProvjeraDatuma(unos)) {
            poruka = "Neispravan JMBG";
            alert(poruka);
            txJMBG.focus();
            return;
        }
        // provjera 9. i 10. znaka
        if (!(unos.substring(7, 9) >= 30 && unos.substring(7, 9) <= 39)) {
            poruka = "Neispravan JMBG";
            alert(poruka);
            txJMBG.focus();
            return;
        }
        // zadnja znamenka
        if (ZadnjaZnamenka(unos) != unos.substring(12, 13)) {
            poruka = "Neispravan JMBG";
            alert(poruka);
            txJMBG.focus();
            return;
        }
    }
}

// provjerava maticni broj na lost focus
function MBRchk(txMBR) {
    var unos = txMBR.value;
    
    if (isNaN(unos)) {
        alert("Unesite numericku vrijednost");
        return;
    }
    else {
        var suma = 0;
        var index_2 = 8;
        var ostatak = 0;
        var check_cifra = 0;

        if (unos.length <= 0 ) {
            return;
        }

        if (unos.length != 8) {
            alert("Maticni broj mora sadrzavati 8 znakova");
            txMBR.focus();
            return;
        }
        
        while (index_2 > 1) {
            var vrijednost = index_2 * unos.substring(8 - index_2, 9 - index_2);
            suma += vrijednost
            index_2--;
        }
        ostatak = suma % 11;
        check_cifra = 11 - ostatak;
        if (check_cifra >= 10) {
            check_cifra = 0;
        }
        if (unos.substring(7, 8) != check_cifra) {
            alert("Neispravan maticni broj");
            txMBR.focus();
            return;
        }
        
    }
}
