var SviInputi= document.getElementsByTagName("INPUT"), //sva input polja na formi ContentForm  
DatumProblemi = new Array, //sva datum polja na formi na kojima je greška na unosu, tek kada su sva ispravna može submit  
key_code, //pritisnuto dugme na tastaturi
oElement, //source element za windowEvent
dozvoljeni = new Array (8,9,16,17,18,27,37,38,39,40,46); //dozvoljeni karakteri kod maski za unos - Tab,Shift,Ctrl,strelice itd.  

//Opsti event handleri

function addLoadEvent(func) { // omogućava da se poziva više funkcija pri otvaranju strane
  var oldonload = window.onload;
  if (typeof window.onload != 'function') window.onload = func;
  else {
    window.onload = function() {oldonload(); func();}
	  	}  	
	}

// Funkcije za prikaz i formalnu validaciju

// formalne validacije kodova i maticnih brojeva

function brCifara(string,broj) // potvrdjuje da li je string zadate duzine
{
if (string.length != broj)
return false;
else
return true;
}

function sveCifre(string) { // potvrdjuje da li su u stringu samo cifre	
return string.match(/^\d+$/); 
}

function testMaticni(object,cifre) { //provera da li je string maticni podatak
var string = object.value;
var maticniOk = true;
var name = object.name;
if (string!="") {
	if (!brCifara(string,cifre)) {
			alert(document.getElementById("GreskaMaticniPodatakBrojCifara").value);
			maticniOk = false;
			}
		else
			if (!sveCifre(string)) {
				alert(document.getElementById("GreskaMaticniPodatakCifre").value);
				maticniOk = false;
				}
			else if (brCifara(string,8)) { 
				if (!testMbr(string)) maticniOk = false;}
			else if (brCifara(string,9)) {
				if (!testPIB(string)) maticniOk = false;}
			else if (brCifara(string,13)) {
				if (!testJMBG(string)) maticniOk = false;};
	}
if (!maticniOk) {ToggleSave(1); ToggleError(name,1);}
else {ToggleSave(0); ToggleError(name,0);}
}	

function testPIB(pib) 
{
var tpib = pib;

		if (parseInt(tpib) < 100000001) {
			alert(document.getElementById("GreskaPIBmanjiOd100000000").value);
			return false;
			}
		else {	
			var checkDigit = modul_10(tpib.substring(0,tpib.length - 1));
			if (checkDigit == tpib.substring(tpib.length - 1))
				return true;
			else {	
				alert(document.getElementById("PIBlabel").innerHTML + " " + document.getElementById("GreskaPoModulu").value);
				return false;
				}
			}
}

function testMbr(mbr) 
{
var tmbr = mbr;

			var checkDigit = modul_11(tmbr.substring(0,tmbr.length - 1),"mbr");
			if (checkDigit == tmbr.substring(tmbr.length - 1))
				return true;
			else {	
				alert(document.getElementById("Mbrlabel").innerHTML + " " + document.getElementById("GreskaPoModulu").value);
				return false;
				}
}

function testJMBG(jmbg) 
{
var tjmbg = jmbg;

			var checkDigit = modul_11(tjmbg.substring(0,tjmbg.length - 1),"jmbg");
			if (checkDigit == tjmbg.substring(tjmbg.length - 1))
				return true;
			else { 	
				alert(document.getElementById("JMBGlabel").innerHTML + " " + document.getElementById("GreskaPoModulu").value);
				return false;
				}
}

function testBarkod(Barkod) {
var tbarkod = Barkod;
var barkodOk = true;
if (tbarkod != "") {
	if (!brCifara(tbarkod,9)) {
		alert(document.getElementById("GreskaMaticniPodatakBrojCifara").value);
		barkodOk = false;
		}
	else if (!sveCifre(tbarkod)) {
		alert(document.getElementById("GreskaMaticniPodatakCifre").value);
		barkodOk = false;
		}
	else {
		var checkDigit = modul_10(tbarkod.substring(0,tbarkod.length - 1));
		if (checkDigit != tbarkod.substring(tbarkod.length - 1))  {	
			alert(document.getElementById("Barkodlabel").innerHTML + " " + document.getElementById("GreskaPoModulu").value);
			barkodOk = false;
			}
		}
	}
if (!barkodOk) {ToggleSave(1); ToggleError("barkod",1);}
else {ToggleSave(0); ToggleError("barkod",0);}
}

//provere modula za maticne podatke

function modul_10(br)
{
  var apu1 = 10;
  var apu2 = 0;
  
  for(var i = 0; i < br.length; i++)
  {
  apu1 = (apu1 + parseInt(br.charAt(i)+"")) % 10;
  if (apu1 != 0)
  	apu1 = (apu1 * 2) % 11;
	else
	apu1 = 20 % 11;
  }
  
  apu2 = (11 - apu1) % 10;
  return apu2;
}

function modul_11(br,tip) {

var faktor;

if (tip == "mbr") faktor = 2;
else if (tip == "jmbg") faktor = 7;
var suma = 0;

  for(var i = 0; i < br.length; i++)
  {
  suma = (parseInt(br.charAt(i)+"") * faktor) + suma;
  if (faktor == 2) faktor = 7;  
  else faktor--;
  }
  suma = 11 + Math.floor(suma / 11) * 11 - suma;
  if (suma == 10) suma = 0;
  	
  return suma;
	
}

function ToggleError(polje,greska) {
// trci kroz text inpute u content formi i oznacava pogresno polje ili ga vraca u normalu, 
		for (var i=1; i < SviInputi.length; i++)
		{
		if ((SviInputi[i].name != null) || (SviInputi[i].id != null)) { 
				if (SviInputi[i].name.indexOf(polje) != -1) {
				    if (greska == 1) {
				        SviInputi[i].className += " CellFormError";
				    }
				    else {
				        str = SviInputi[i].className + "";
				        SviInputi[i].className = str.replace(/CellFormError/, "");
				    }
				}
			}
		}
}


//Proverava da li je datum u formi (dd.mm.yyyy.)validan
function isDate(datum)
{
pom = true;
if (datum.match("^((0)?[1-9]|[12][0-9]|3[01])[. /.]((0)?[1-9]|1[012])[. /.](19|20)\\d\\d+$"))
{
//Razdvajanje datuma na komponente
var str = datum.split("/");
if (str[0].substring(0,1) == '0') 
dan = parseInt(str[0].substring(1,2));
else dan = parseInt(str[0]);
if (str[1].substring(0,1) == '0') 
mesec = parseInt(str[1].substring(1,2));
else mesec = parseInt(str[1]);
god = parseInt(str[2]);
if(dan > brDanaUMesecu(mesec, god))
pom = false;
}
else pom = false;
return pom;
}

//brojevi dana u mesecu
function brDanaUFebruaru(godina)
{return (((godina % 4 == 0) && ( (!(godina % 100 == 0)) || (godina % 400 == 0))) ? 29 : 28 );}

function brDanaUMesecu(mesec, god)
{switch (mesec)
{case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
case 2: return brDanaUFebruaru(god);}
}
	
function DateValid(datum) 
{

    var name = datum.name.toString(), value = datum.value, DatumOk, MestoProblem, Problem = false;
    var klasa = datum.className + "";    
	
for (i=0;i < DatumProblemi.length;i++) {
	if (DatumProblemi[i] == name) {
		var Problem = true; 
		MestoProblem = i;
		break;	
		}
	}

if ((value) && (value != "") && (value != null))	
	{	
		if (!isDate(value))
			{
			alert(document.getElementById("DatumGreska").value);
			DatumOk = false;
			if (!Problem) DatumProblemi[DatumProblemi.length] = name;  
			}
		else { 
			DatumOk = true;
			if (Problem) DatumProblemi.splice(MestoProblem,1);
			}
	}
else {
	DatumOk = true;
	if (Problem) DatumProblemi.splice(MestoProblem,1);
	}

if (DatumProblemi.length == 0)  {
	ToggleError(name,0);
	}
else {
	ToggleError(name,1);
	if (DatumOk) datum.className = klasa + "";
	}
}

function DigitInputMask(cifre,decimale,max) { //maska za unos samo celog broja, 
// (cifre) je max broj cifara, (decimale) broj decimala, ako nema nista onda neogranicen ceo pozitivan broj
// (max) gornja granica vrednost broja, (min) donja
	var dozvoljen = false;
	key_code = window.event.keyCode;
	for (i=0;i < dozvoljeni.length;i++) {if (key_code == dozvoljeni[i]) dozvoljen = true;}
	oElement = window.event.srcElement;
	if (	
			!dozvoljen && 
			(
				key_code < 48 || 
				(key_code > 58 && key_code < 96) || 
				key_code > 105
			) || 
			(
				arguments.length >= 1 && 
				oElement.value.length-1 == cifre
			) || 
			parseInt(oElement.value) == 0 || 
			(
				arguments.length == 3 && 
				parseInt(oElement.value) > max
			)
		)  {
		oElement.value = Remove(oElement.value,caretPos(oElement)-1,1);
		// oElement.value = oElement.value.substring(0,oElement.value.length-1);	
	}
}

function DateInputMask(param) { //maska za unos datuma u formatu dd.mm.yyyy. automatsko dodavanje tačaka i veka
// ako postoji param, oznacava deo punog formata datuma za koji se radi validacija
    
	key_code = window.event.keyCode;
	oElement = window.event.srcElement;
	
    if (oElement.value.length < 10) {
        if ((key_code > 47 && key_code < 58) ||
          (key_code > 95 && key_code < 106)) {
            if (key_code > 95) key_code -= (95-47) ;
                  if (key_code > 51 && key_code < 58 && oElement.value.length == 0) {
                  	oElement.value += "0";
                  } else if (key_code > 49 && key_code < 58 && oElement.value.length == 3) {
                  	oElement.value += "0";
                  }
        				  oElement.value += String.fromCharCode(key_code);
                	if ((oElement.value.length == 2) || (oElement.value.length ==5)) {
				          	oElement.value += "/";
                  }
                  if (oElement.value.length == 7) {
                  	if (key_code == 49) {
                  		oElement.value += "9";
                  	} else if (key_code == 50) {
                  		oElement.value += "0";
                  	}
                  }
      }
    }
    if (key_code == 8) {
    	  if ((oElement.value.length == 3) || (oElement.value.length ==6)) {
          	oElement.value = oElement.value.substring(0,oElement.value.length-2);
        } else {
        	  oElement.value = oElement.value.substring(0,oElement.value.length-1);
        }
					window.event.returnValue = 0;
    }
    if (key_code != 9) {
       event.returnValue = false;
    }
	if ((arguments.length == 1) && (param == "yyyy")) {
		if (oElement.value && !oElement.value.match(new RegExp('([1-2]{1}[0-9.]*?)?$')))
			oElement.value = oElement.value.substring(0,oElement.value.length-1);
		}
	else {
		if (oElement.value && !oElement.value.match(new RegExp('^[0-3]{1}[0-9]?\/?([0-1]{1}([0-9]{1}\/?([1-2]{1}[0-9]*?)?)?)?$')))
			oElement.value = oElement.value.substring(0,oElement.value.length-1);
		}
}

function togglePredmet(chkbox) {
    var vrsta = document.getElementById("ctl00_ContentPlaceHolder1_cmbVrstePredmeta");
    var predmet = document.getElementById("ctl00_ContentPlaceHolder1_cmbPredmet");
    var opis = document.getElementById("ctl00_ContentPlaceHolder1_txtOpisPredmeta");
    if (chkbox.checked == true) {
        vrsta.disabled = true;
        predmet.disabled = true;
        //opis.value = "";
        //opis.disabled = true;
        }
     else {
        vrsta.disabled = false;
        predmet.disabled = false;
        opis.disabled = false;
        }
    }

    function toggleOpisPredmeta() {

        var opis = document.getElementById("ctl00_ContentPlaceHolder1_txtOpisPredmeta");
        opis.value = "";
        opis.disabled = true;
    }

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
    
function togglePoljaVrstaPostupka(vrsta, TipKontrole, infix) 
{


    var uslov1;
    var uslov2;
    if (arguments.length < 3) 
    {
        infix = "";
    }
   
    if ((TipKontrole == "combo") || (arguments.length == 1))
    {
   
        //ako navedem samo jedan argument podrazumeva se da je tip "combo", ali mi treba kad imam treci argument
        uslov1 = ((vrsta.value == vrsta.options[0].value) || 
                  (vrsta.value == vrsta.options[2].value) ||
                  (vrsta.value == vrsta.options[3].value) ||
                  (vrsta.value == vrsta.options[4].value) ||
                  (vrsta.value == vrsta.options[6].value));
        uslov2 = (vrsta.value == vrsta.options[1].value);
    }
    if (TipKontrole == "label")
    {   
        vrsta.innerHTML = vrsta.innerHTML.trim();
        //NAPOMENA: srpski i engleski nazivi moraju da se poklope sa nazivima u BAZI
        uslov1 = ((vrsta.innerHTML == "отворени поступак") || 
                  (vrsta.innerHTML == "преговарачки поступак без објављивања јавног позива") ||
                  (vrsta.innerHTML == "поступак путем конкурса") ||
                  (vrsta.innerHTML == "поступак јавне набавке мале вредности") ||
                  (vrsta.innerHTML == "преговарачки поступак са објављивањем јавног позива") ||
                  
                  (vrsta.innerHTML == "Open Procedure") ||                   
                  (vrsta.innerHTML == "Procedure with negotiation without advance notice") ||
                  (vrsta.innerHTML == "Award of public procurement by competition") ||
                  (vrsta.innerHTML == "поступак јавне набавке мале вредности") ||                
                  (vrsta.innerHTML == "Procedure with negotiation after advance notice"));
        
        uslov2 = ((vrsta.innerHTML == "прва фаза рестриктивног поступка") ||
                  (vrsta.innerHTML == "квалификациони поступак") ||
                 (vrsta.innerHTML == "Restricted procedure"));
    }
   
    if (uslov1)
    {
   
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "UsloviUcestvovanje").className = "inline";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "Kriterijum").className = "HeadTitleLite";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "Kriterijum1").className = "table";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda").className = "inline";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda2").className = "inline";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "OtvaranjePonuda").className = "HeadTitleLite";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "OtvaranjePonuda1").className = "table";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "RokZaOdluku").className = "inline"; 
          
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda1").className = "none";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda3").className = "none";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "UsloviUcestvovanje1").className = "none";        
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "RokZaOdluku1").className = "none";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "vremeKvalifikacije").className = "none";

        try {
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblRaspis").className = "inline";
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "ddlRaspis").className = "inline";
        } catch (err) { }

        try {
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "txaVremeKvalif").value = "";
        } catch (err) { }
                    
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "vremeKvalifikacije1").className = "none";
        if (document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblOtvaranje1") != null) 
        {            
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblOtvaranje1").className = "none";
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "ddlOtvaranje").className = "none";
        }
        try {
            if (vrsta.value == vrsta.options[6].value) {
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblRaspis").className = "none";
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "ddlRaspis").className = "none";
            }
        }
        catch (err) { }
    }
    else 
    {
        if (uslov2) //RESTRIKTIVNI postupak
        {
       
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda1").className = "inline";
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda3").className = "inline";
            
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda").className = "none";
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda2").className = "none";

            //ovo postoji samo tamo gde ima Combo za "javno"/"nije javno", a to je Tender.aspx
            if (document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblOtvaranje1") != null)
            {
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblOtvaranje1").className = "inline";
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "ddlOtvaranje").className = "inline";
            }
        }
        else 
        {
       
            if (document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblOtvaranje1") != null)
            {
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda").className = "inline";
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda2").className = "inline";

                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda1").className = "none";
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda3").className = "none";
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblOtvaranje1").className = "none";
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "ddlOtvaranje").className = "none";
                document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "txaVreme").value = "";                
            }
        }
 
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "UsloviUcestvovanje1").className = "inline"; 
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "RokZaOdluku1").className = "inline";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "vremeKvalifikacije").className = "HeadTitleLite";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "vremeKvalifikacije1").className = "table";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "OtvaranjePonuda").className = "HeadTitleLite";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "OtvaranjePonuda1").className = "table";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "UsloviUcestvovanje").className = "none";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "Kriterijum").className = "none";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "Kriterijum1").className = "none";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "txaKriterijumi").innerHTML = "";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "PodnosenjePonuda").className = "none";
        document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "RokZaOdluku").className = "none";
        try {
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "lblRaspis").className = "inline";
            document.getElementById("ctl00_ContentPlaceHolder1_" + infix + "ddlRaspis").className = "inline";
        }
        catch (err) { }
    }    
}

function toggleTenderStatus(obj){
        
        if (obj.value == "Sivi"){
               document.getElementById("ctl00_ContentPlaceHolder2_tblSLGlasnik").style.display="none";
            }
            else {
            document.getElementById("ctl00_ContentPlaceHolder2_tblSLGlasnik").style.display="block";
            }                        
}

    
function togglePoljaOtvaranje(vrsta){
    if (vrsta.value == vrsta.options[1].value){
        document.getElementById("OtvaranjePonuda").className = "none";
        document.getElementById("OtvaranjePonuda1").className = "none";
        }
    else {
        document.getElementById("OtvaranjePonuda").className = "HeadTitleLite";
        document.getElementById("OtvaranjePonuda1").className = "table";
        }
}

function toggleOpstine(obj) {
        if (obj.value == "RS") {
                document.getElementById("ctl00_ContentPlaceHolder1_txtOpstina").disabled=false;
                document.getElementById("ctl00_ContentPlaceHolder1_txtOpstina").className="RequiredField";
                document.getElementById("ctl00_ContentPlaceHolder1_txtMesto").style.display="inline";
                document.getElementById("ctl00_ContentPlaceHolder1_txtStranoMesto").value="";
                document.getElementById("ctl00_ContentPlaceHolder1_txtStranoMesto").style.display="none";
            }
        else
            {
                document.getElementById("ctl00_ContentPlaceHolder1_txtOpstina").value="";
                document.getElementById("ctl00_ContentPlaceHolder1_txtOpstina").className="InputPassive";
                document.getElementById("ctl00_ContentPlaceHolder1_txtOpstina").disabled=true;
                document.getElementById("ctl00_ContentPlaceHolder1_txtMesto").style.display="none";
                document.getElementById("ctl00_ContentPlaceHolder1_txtMesto").value="";
                document.getElementById("ctl00_ContentPlaceHolder1_txtStranoMesto").style.display="inline";
                document.getElementById("ctl00_ContentPlaceHolder1_hidIDMesta").value="";
                document.getElementById("ctl00_ContentPlaceHolder1_hidIDOpstine").value="";
            }
    }
    
function toggleVrstaLica(obj){

        if (obj.value == "fizicko")
            {
            document.getElementById("ctl00_ContentPlaceHolder1_trLice").style.display="none";
            document.getElementById("ctl00_ContentPlaceHolder1_txtPIB").value="";
            
            }
        else
            {
            document.getElementById("ctl00_ContentPlaceHolder1_trLice").style.display="block";
            }
    }

function toggleWordUputstvo(show) {
    document.getElementById("WordUputstvo").style.display=show;
    }
