﻿/* Funkcija za proveru maticnog broja by Djape */
function check_jmbg(polje,pismo){
	var jmbg= polje.value;
	var upozorenjeDuzina = "";

	/* ako je polje readonly preskace se provera */
	if(polje.readonly)
		return false;

	/* ako korisnik nije nista upisao preskace se provera */
	if(jmbg=="") return false;

	/* setovanje promenjivih za upozorenja u zavisnosti od pisma 
	(ovaj fajl mora biti snimljen kao UTF-8) */

	if(pismo == "latinica")
	{
		upozorenjeDuzina = "Dužina matičnog broja mora biti 13 karaktera!!!";
		upozorenjeValidan = "Upisani matični broj nije validan!!!";

	}
	else
	{
		upozorenjeDuzina = "Дужина матичног броја мора бити 13 карактера!!!";
		upozorenjeValidan = "Уписани матични број није валидан!!!";
	}
	/* provera upisane duzine maticnog broja */

if(jmbg.length!=13)
	{
		/* upozorava korisnika da je maticni broj kraci 
		ili duzi od 13 karaktera*/
		
		alert(upozorenjeDuzina); 
		
		if(jmbg.length>13) 
		{
			/* ako je veci, pravi substring od 13 karaktera 
			pa ga naknadno proveri*/
			polje.value = polje.value.substring(0,13);
		}
		else
		{
			/* ako je manji fokusira ga*/
			polje.focus();
			return false;
			/* izlaz iz funkcije */
		}
	}
	
	/* sada ide funkcija za proveru jmbg iz Clariona prevedena na Javascript */
	
	var p_11 = 0;
	var w_11 = 0;
	var b_11 = jmbg.substring(0,12);
	/* kontrolni 13 broj koji je upisan */
	var zc_u = jmbg.charAt(12);

	/* deklaracija kontrolnog 13 broja koji se 
	dobija iz algoritma */
	var zc_i = 0;

	/* algoritam za izracunavanje kontrolnog broja iz 
	prvih 12 brojeva jmbg */

	p_11 += b_11.charAt(0)*7;
	p_11 += b_11.charAt(1)*6;
	p_11 += b_11.charAt(2)*5;
	p_11 += b_11.charAt(3)*4;
	p_11 += b_11.charAt(4)*3;
	p_11 += b_11.charAt(5)*2;
	p_11 += b_11.charAt(6)*7;
	p_11 += b_11.charAt(7)*6;
	p_11 += b_11.charAt(8)*5;
	p_11 += b_11.charAt(9)*4;
	p_11 += b_11.charAt(10)*3;
	p_11 += b_11.charAt(11)*2;
	
	w_11 = parseInt(p_11/11);
	w_11 = w_11 * 11;
	p_11 -= w_11;

	if(p_11 == 0 || p_11 == 1)
	{
		zc_i = 0;
	}
	else
	{
		zc_i = 11 - p_11;
	}
	/* kraj algoritma */

	/* poredjenje upisanog i dobijenog broja */
	if(zc_u != zc_i)
	{
		alert(upozorenjeValidan); 
		/* javlja gresku da broj nije validan i nastavlja sa radom na upisu */
		polje.focus();
	} else {
		return true;
	}
}
