<!--

//Niz funkcija koje zajedno provjeravaju upisana polja neke forme
/* 
* Forma se sastoji od elemenata. form[j] je  j-ti element forme
* Tipovi elemenata su:button,checkbox,file,hidden,password,radio,reset,
* select,submit,text,textarea
* Funkcija kontrola vraća true ako je kontrola polja prošla OK  
* Ulazni parametri su: 
*   mojaForma  : form object 
*   mojNiz   : niz čiji pojedini element je opet niz
*   mojNiz[i] je niz stringova koji funkciji kontrola govore koje  
*   provjere treba napraviti nad i-tim elementom forme - npr. text polje : mora biti upisano,
*   numeričko polje, unos ne smije biti manji od npr. 5 niti veči od 10 itd..
*   ukoliko je mojNiz[i] prazan - nije potrebna nikava provjera nad i-tim elementom
*   mojNiz[i][j][0] - j-ta kontrola po redu vezana uz  i-ti element forme
*   mojNiz[i][j][1] - poruka; ukoliko gore navedena kontrola nije prošla, tu je poruka
*   koja će biti prikazana u tom slučaju
*   bolDodatnaKontrola - true ili false, ako je true onda nakon svih kontrola
*   opisanih nizom potrebno je napraviti  još neke provjere prije submita, 
*   ovo je predviđeno za kontrole koje nije moguće unaprijed predvidjeti,
*   ili su specifične samo za konkretnu formu, funkciju dodatnaKontrola treba posebno napisati 
*/ 


function kontrola(mojaForma,mojNiz,bolDodatnaKontrola) 
{ 
 for(var i=0; i < mojNiz.length; i++) 
 {   	
   if(mojaForma.elements.length <= i) 
   { // dužina niza mora biti manja ili jednaka broju elemenata forme 
        alert("Oprez ! postavili ste parametre za nepostojeći element forme"); 
        return false; 
   }//if
   for(var j=0; j < mojNiz[i].length ;j++) 
   { 
      if(provjeri(mojaForma,mojNiz[i][j][0],mojaForma[i],mojNiz[i][j][1]) == false) 
       { 	     
	   if (mojaForma[i].type=='hidden') {// ne može postaviti fokus
	   	return false;
	   }else{	 
	     	mojaForma[i].focus();
	        return false; 
	   } //if    
       }//if 
   }// for 
 } // for
 
 
  // Ukoliko smo u varijabli bolDodatnaKontrola proslijedili true znaci da treba
  // jos proci kroz funkciju dodatnakontrola 
 if (bolDodatnaKontrola) {
   // provjera da li funkcija za provjeru uopće postoji
   if (dodatnaKontrola) {
    var ododatnaKontrola = new dodatnaKontrola(mojaForma);
    if (!ododatnaKontrola.pass){
	strPoruka = ododatnaKontrola.message;
	alert(strPoruka);
	return false;
     }
   }
 }
 
 return true;
 
} // funkcija kontrola

/* 
* Funkcija provjeri 
* Ulazni parametri su: 
*   mojaForma  : form object 
*   strProvjera: provjera koju treba napraviti, npr. maxduzina=34 , duzina upisa ne smije biti
*   veća od 34 
*   elementForme : konkretan element npr. neko text polje 
*   strPoruka: poruka koja se ispisuje ukoliko kontrola ne prođe 
*/ 
function provjeri(mojaForma,strProvjera,elementForme,strPoruka) 
{ 
    var intPozicija = strProvjera.search("="); 
    var  strPrvidio  = ""; 
    var  strDrugidio = ""; 
    // string za provjeru može biti građen na dva načina
    // strPrvidio=strDrugidio  npr. maxduz=25
    // ili samo strPrvidio npr. obv 
    
    if(intPozicija >= 0) 
    { 
     strPrvidio  = strProvjera.substring(0,intPozicija); 
     strDrugidio = strProvjera.substr(intPozicija+1); 
    } 
    else 
    { 
     strPrvidio = strProvjera; 
    } 

    switch(strPrvidio) 
    { 
        case "obv": 
         { // u ovo polje je obavezan unos
           if(!provjeriObavezno(mojaForma,elementForme))  
           { 
              if(!strPoruka || strPoruka.length ==0) 
              { 
                strPoruka = elementForme.name + " : obavezan unos"; 
              }
              alert(strPoruka); 
              return false; 
           }
           break;             
         }
         case "file": 
         { // provjera ekstenzija za upload, za sada je iskodirano 
           // samo provjera ekstenzije file-a za upload slike
           // provjerava samo ukoliko je nešto upisano u polje
           if (elementForme.value.length>0) {
             var test = new String(elementForme.value);
             var intPozTocke;
	     var strNastavak;
	     intPozTocke = test.lastIndexOf(".");
	     strNastavak = test.substring(intPozTocke+1);
	   	          
	     if (strDrugidio=="pic"){
	       if(((strNastavak == "gif") || (strNastavak == "jpg") || (strNastavak == "bmp")) && (intPozTocke>0)){
                 return true;    	
	        }
	        else{
	          if(!strPoruka || strPoruka.length ==0){ 
                      strPoruka = elementForme.name + " :File koji upisujete u polje Slika mora imati jednu \nod slijedećih ekstenzija: gif, jpg, bmp."; 
                  }
                  alert(strPoruka); 
                  return false; 
	        }//else
	     }
	     
	     if (strDrugidio=="baza"){
	       if(((strNastavak == "mdb") || (strNastavak == "xls") || (strNastavak == "zip")) && (intPozTocke>0)){
                  return true;    	
	          }
	         else{
	            if(!strPoruka || strPoruka.length ==0){ 
                       strPoruka = elementForme.name + " :File koji upisujete u polje mora imati jednu \nod slijedećih ekstenzija: mdb, xls, zip."; 
                     }
                     alert(strPoruka); 
                     return false; 
	         }//else
	     }  
	       
	     } // if1
	  break;             
         }
        case "maxduz": 
          { 
             if(eval(elementForme.value.length) >  eval(strDrugidio)) 
             { 
               if(!strPoruka || strPoruka.length ==0) 
               { 
                 strPoruka = elementForme.name + " : max. dopušten unos je "+strDrugidio+" karaktera!"; 
               }//if 
               alert(strPoruka); 
               return false; 
             }//if 
             break; 
          }
        case "minduz": 
          { 
             if(eval(elementForme.value.length) <  eval(strDrugidio)) 
             { 
               
               if(!strPoruka || strPoruka.length ==0) 
               { 
                 strPoruka = elementForme.name + " : min. unos je " + strDrugidio + " karaktera !  "; 
               }           
               alert(strPoruka); 
               return false;                 
             } 
             break; 
           }
        case "slovabroj": 
            { 
              // alfanumeričko polje
              var intPozicijaznaka = elementForme.value.search("[^A-Za-z0-9šđčćžŠĐČĆŽ]"); 
              if(elementForme.value.length > 0 &&  intPozicijaznaka >= 0) 
              { 
               if(!strPoruka || strPoruka.length ==0) 
                { 
                  strPoruka = elementForme.name+": sadrži nedopušteni karakter ! "; 
                }
                alert(strPoruka); 
                return false; 
              }
              break; 
           }
        case "broj1": 
          { 
              // numeričko polje
              
              var intPozicijaznaka = elementForme.value.search("[^0-9]"); 
              if(elementForme.value.length > 0 &&  intPozicijaznaka >= 0) 
              { 
                if(!strPoruka || strPoruka.length ==0) 
                { 
                  strPoruka = elementForme.name+": sadrži nedopušten karakter, \n dozvoljeni su samo brojevi "; 
                }          
                alert(strPoruka); 
                return false; 
              }
              break;               
           }
            case "broj": 
          { 
              // numeričko polje
              if(isNaN(elementForme.value) && elementForme.value.length > 0 ) 
              
               { 
                if(!strPoruka || strPoruka.length ==0) 
                { 
                  strPoruka = elementForme.name+": sadrži nedopušten karakter, \n dozvoljeni su samo brojevi "; 
                }          
                alert(strPoruka); 
                return false; 
              }
              break;               
           }
           case "cijena": 
          { 
              // numeričko polje + zarez
              var intPozicijazareza = elementForme.value.search(","); 
              var strPrijezareza  = ""; 
              var strIzazareza = ""; 
                  
    
              if(intPozicijazareza >= 0) 
              { 
               	strPrijezareza  = elementForme.value.substring(0,intPozicijazareza); 
               	strIzazareza = elementForme.value.substr(intPozicijazareza+1); 
               	var intPozicijaznaka1 = strPrijezareza.search("[^0-9]"); 
              	if(strPrijezareza.length == 0 || intPozicijaznaka1 >= 0) 
              	{ 
                	if(!strPoruka || strPoruka.length ==0) 
                	{ 
                  		strPoruka = elementForme.name+": pogrešno upisano polje"; 
               		 }          
                	alert(strPoruka); 
                	return false; 
             	 }
              
             	 var intPozicijaznaka2 = strIzazareza.search("[^0-9]"); 
              	if(strIzazareza.length == 0 ||  intPozicijaznaka2 >= 0) 
              	{ 
              		  if(!strPoruka || strPoruka.length ==0) 
               		 { 
                  		strPoruka = elementForme.name+": pogrešno upisano polje"; 
              		 }          
                	alert(strPoruka); 
                	return false; 
              	}
              } 
              else 
              { 
                if (elementForme.value.length>0)
                {
                	if(!strPoruka || strPoruka.length ==0)
                	{ 
                  	strPoruka = elementForme.name+": sadrži nedopušten karakter, \n dozvoljeni su samo brojevi i zarez"; 
                	}          
                	alert(strPoruka); 
                	return false; 
                }	
              } 
              
            
              break;               
           }
        case "slova": 
          { 
              var intPozicijaznaka = elementForme.value.search("[^A-Za-zšđčćžŠĐČĆŽ]"); 
              if(elementForme.value.length > 0 &&  intPozicijaznaka >= 0) 
              { 
                  if(!strPoruka || strPoruka.length ==0) 
                { 
                  strPoruka = elementForme.name+": nedozvoljen karakter"; 
                }                          
                alert(strPoruka); 
                return false; 
              }
              break; 
           } 
           case "kljuc": 
          { 
              var intPozicijaznaka = elementForme.value.search("['&\"]"); 
              
              if(elementForme.value.length > 0 &&  intPozicijaznaka >= 0) 
              { 
                  if(!strPoruka || strPoruka.length ==0) 
                { 
                  strPoruka = elementForme.name+": nedozvoljen karakter"; 
                }                          
                alert(strPoruka); 
                return false; 
              }
              break; 
           } 
        case "email": 
          { 
               if (elementForme.value.length>0) {
                 if(!provjeriEmail(elementForme.value)) 
                 { 
                   if(!strPoruka || strPoruka.length ==0) 
                   { 
                      strPoruka = elementForme.name+": pogrešna Email adresa "; 
                   }                                       
                   alert(strPoruka); 
                   return false; 
                 }
               }
           break; 
          }
          // datum
        case "datum":
          {
             // dozvoljeni brojevi i znak /
              var intPozicijaznaka = elementForme.value.search("[^0-9/]"); 
              if(elementForme.value.length > 0 &&  intPozicijaznaka >= 0) 
              { 
                if(!strPoruka || strPoruka.length ==0){ 
                  strPoruka = elementForme.name+": unesite datum u obliku: dd/mm/gggg "; 
                }else {
                  strPoruka = strPoruka + "\nDatum unesite u obliku dd/mm/gggg."; 	
                }	          
                
                alert(strPoruka); 
                return false; 
              }
              
             if(!provjeriDatum(elementForme.value,strPoruka)) 
               { 
                 return false; 
               }	
            break;	  
          }
          // uz ovo polje je vezano konfirmacijsko ili polje potvrde unosa
          // treba provjeriti i da li je u konfirmacijsko polje upisana ista vrijednost
        case "konf":
          {
            if(!provjeriKonfirm(elementForme,mojaForma)) 
               { 
                 if(!strPoruka || strPoruka.length ==0) 
                 { 
                    strPoruka = elementForme.name+": konfirmacijsko polje ! "; 
                 }                                       
                 alert(strPoruka); 
                 return false; 
               }
            break;
          }  		
        case "manjeod": 
          { 
            if(isNaN(elementForme.value)) 
            { 
              alert(elementForme.name+": numeričko polje "); 
              return false; 
            } 
            if(eval(elementForme.value) >=  eval(strDrugidio)) 
            { 
              if(!strPoruka || strPoruka.length ==0) 
              { 
                strPoruka = elementForme.name + " : dozvoljen unos broja manjeg od "+ sstrDrugidio; 
              }          
              alert(strPoruka); 
              return false;                 
             }        
            break; 
         }
        case "veceod": 
         { 
            if(isNaN(elementForme.value)) 
            { 
              alert(elementForme.name+": numeričko polje ! "); 
              return false; 
            }
             if(eval(elementForme.value) <=  eval(strDrugidio)) 
             { 
               if(!strPoruka || strPoruka.length ==0) 
               { 
                 strPoruka = elementForme.name + " : upisani broj mora biti veći od "+ strDrugidio; 
               }             
               alert(strPoruka); 
               return false;                 
             }       
            break; 
         }
        case "regexp": 
         { 
                        
            if(!elementForme.value.match(strDrugidio)) 
            { 
              if(!strPoruka || strPoruka.length ==0) 
              { 
                strPoruka = elementForme.name+": pogrešan unos "; 
              }                                                           
              alert(strPoruka); 
              return false;                   
            }
           break; 
         }
        case "neselect": 
         { 
            if(elementForme.selectedIndex == null) 
            { 
              alert("OPREZ ! ova provjera vrijedi samo za select elemente forme"); 
              return false; 
            } 
            if(elementForme.selectedIndex == eval(strDrugidio)) 
            { 
             if(!strPoruka || strPoruka.length ==0) 
              { 
              strPoruka = elementForme.name+": odaberite jednu od ponuđenih opcija "; 
              }                                                       
              alert(strPoruka); 
              return false;                                   
             } 
             break; 
         }
         default:
	  break;
    }//switch 
    
    return true; 
} 

// funkcija - provjera obaveznog upisa ovisno o tipu elementa forme
function provjeriObavezno(mojaForma,elementForme)
{
  switch (elementForme.type) {
	case 'button':
	case 'reset':
	case 'submit':
	return true;
	break;
	case 'text':
	case 'password':
	case 'textarea':
	case 'file':
	case 'hidden':
	
	  if (!provjeriTekst(elementForme,mojaForma)) {
	    return false;	
	  } 
	   return true;
	   break;
	//  ovo treba dodati
	case 'checkbox':
	case 'radio':
	 if (!provjeriCheckbox(elementForme,mojaForma)) {
	    return false;	
	  } 
	   return true;
	  break;
	// obavezan unos u select polje ispitujemo sa neselect
	case 'select':
	  return true;
	  break;      
	default:
	  return true;
	  break;
  }
}
	 
// provjera tekst fielda
function provjeriTekst(elementForme, mojaForma) {
  bolNemagreske = true;
  
  if (elementForme.value.length < 1) {
    bolNemagreske = false;
  } else {
      bolNemagreske = false;
      // U prvih 100 karaktera mora biti nešto upisano
      if (elementForme.value.length < 100) {
        intDuzina = elementForme.value.length;
      } else {
       intDuzina = 100;
      }
		
      for (j=0; j < intDuzina; j++) {
        pom = elementForme.value.substring(j, j+1);
        if (pom != ' ' && pom != '\n' && pom != '\f' && pom != '\r' && pom != '\t') {
          bolNemagreske = true;
	  break;
        }
      }
  }
	
  return bolNemagreske;
}

function provjeriKonfirm(elementForme, mojaForma) {
 bolNemagreske = true;
	
 if (eval('mojaForma.konf_'+elementForme.name)) {
   if (eval('mojaForma.konf_'+ elementForme.name +'.value') != elementForme.value) {
	bolNemagreske = false;
    }
 }
	
 return bolNemagreske;;
}

function provjeriCheckbox(elementForme, mojaForma) {
	
	bolNemagreske = false;
		
	if (eval('mojaForma.'+elementForme.name+'.length')) {
	   for (j=0; j < eval('mojaForma.'+elementForme.name+'.length'); j++) {
		if (eval('mojaForma.'+elementForme.name+'['+j+'].checked')){
	        	bolNemagreske = true;
			break;
		}
           }
	} else {
	  if (elementForme.checked) {
		bolNemagreske = true;
	   }
        }
	
	return bolNemagreske;
	
}
	  	
//---------------------------------EMail Provjera ------------------------------------ 

function provjeriEmail(email)
{
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}



//---------------------------------datum provjera ------------------------------------ 
// datum treba unijeti u obliku dd/mm/gggg

function provjeriDatum(datum,strPoruka){

  if (datum=="") {
 	return true; 
 }
 	
 var nizZnamenki = datum.split("/")
 if (nizZnamenki.length != 3) {
   strPoruka = strPoruka + " \nDatum unesite u obliku dd/mm/gggg."; 
   alert( strPoruka );
   return false;
 }
 else { 
   var dan = nizZnamenki[0]-1+1;
   var mje = nizZnamenki[1]-1+1;
   var god = nizZnamenki[2]-1+1;
      
  if ((god > 3000) || (god<1900)){
      strPoruka = strPoruka + "\nPogrešno upisana godina !"; 
      alert( strPoruka );
      return false;
   }
   
   var brdana = 0
   if ((mje<1) || (mje >= 13)){ 
     strPoruka = strPoruka + "nPogrešno upisan mjesec !"; 
      alert( strPoruka );
     return false; 
   } 
   else {
     switch (mje){
    	case 02:
    	 brdana = (((god%4 == 0 && god%100 != 0) || god%400 ==0) ? 29 : 28 );
    	 break;
    	default:
    	 brdana = 30 + ((mje < 8) ? mje%2 : (mje%7)%2);
     }//switch
     if ((brdana < dan) || (dan < 1) || (dan>31)){
     	strPoruka =strPoruka + "\nPogrešno upisan dan !"; 
        alert( strPoruka );
     	return false;
     }	
   }
 } 
 return true;
} 

// ovo je primjer funkcije dodatnaKontrola
/*
function dodatnaKontrola(mojaForma) {
  var bolNemagreske = true;
			
  this.pass = true;
  this.message = '';			
						
  if (mojaForma.strIme.value == 'Suzana') {
   switch (mojaForma.strPrezime.value) {
     case 'Vlaić':
	bolNemagreske = false;
	this.message = this.message + 'ova osoba više ne radi za nas \n';
	break;
     case 'Jurkovic':
	bolNemagreske = false;
	this.message = this.message + 'ni ova osoba više ne radi za nas ! \n';
	break;
     default:
	break;
   }
  }
 			
  this.pass = bolNemagreske;
  		
}
*/
//-->