


//******************************************************************************
//******************************************************************************
//********  trensformacija teksta u varijabli iz lat-->cir i obrnuto  **********
//******************************************************************************
//******************************************************************************


//OPIS: definise dva niza char-code-a unicode paralelno lat i cir i
//      ispituje 
//UPOTREBA: a=varijabla, b=0 lat-->cir, b=1 cir-->lat
//          poziva se (sve varijable su jednodimenzione)
//          varijablaLatCir=latCirCharCodeSwitch(varijablaLat,1)

function latCirCharCodeSwitch(a,b){

//--define transf char-code schema----------------------------------------
codeLetter = new Array();
//lat
codeLetter[0] = new Array(97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,114,115,116,117,118,122,457,460,454,353,273,269,263,382,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,90,455,458,452,352,272,268,262,381);
//cir
codeLetter[1] = new Array(1072,1073,1094,1076,1077,1092,1075,1093,1080,1112,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1074,1079,1113,1114,1119,1096,1106,1095,1115,1078,1040,1041,1062,1044,1045,1060,1043,1061,1048,1032,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1042,1047,1033,1034,1039,1064,1026,1063,1035,1046);


//--define transf char-code schema za specijalne karaktere npr x --> ks cirilicno----NEDOVRSENO!!!!!
codeLetterSpec = new Array();
//lat
codeLetterSpec[0] = new Array();
//cir
codeLetterSpec[0] = new Array();

   var  c=a.length;
   var  stringCurr = "";
   var  charCurr = "";
   var  charSpec = "";     
   var  charMem = "";
   var  isChar = 0;
   var  isJump = 0;
   var  prenos  = 0;
  for(j=0;j<c;j++){ 
  
  //*** preskakanje karaktera koji se ne prevode ***
  if (j<c-1){if (a.charAt(j)=="<" && a.charAt(j+1)=="%" && isJump==0) isJump = 1;}
  if(j>0){if(a.charAt(j-1)=="%" && a.charAt(j)==">" && isJump>0) isJump = -2;}    
  if(isJump>0) isJump += 1;//preskacem <%
  if(j<c-1)if(a.charAt(j)=="%" && a.charAt(j+1)==">") var endeProc=1;else var endeProc=0;
  if(isJump>3 && endeProc==0) stringCurr += a.charAt(j);//preskacem <% i prikazujem sve posle
  if(isJump<0)isJump += 1;//da preskocimo onaj zadnji znak > iz <%%>
     
     
      
      
      
  if(isJump == 0){//ulazak
  

  
     //za prvo slovo u 0 - jer se u ostalim proverava jedan k-kter ispred u -1
     if (j==0 && a.charAt(0)!="&"){
       if(charSpecCheck(a.charAt(0).charCodeAt(0))==1){
         charSpec = a.charAt(0).charCodeAt(0);
         charCurr = "";
       }else{
          //jeste iz niza codeLetter
         if (checkLetter(a.charAt(j).charCodeAt(0),b)==1){
             charCurr =  latCirCharSwitch(a.charAt(j).charCodeAt(0),b);
         //nije iz niza karaktera - obican znak je u pitanju pa ga smo prekpiras   
         }else{
             charCurr = a.charAt(j);    
         }
       }
       
       
       
      //sva ostala ostala slova 
     }else{
     
     
     
       //upadanje u char-code
        if (a.charAt(j-1)=="&" && a.charAt(j)=="#" && isChar == 0){ 
           charCurr = "";
           isChar = 1;       
        }else if(a.charAt(j)==";" && isChar == 1){//kraj char-code-a i proveravamo da li nije specijalni znaka
           charMem = "";
           isChar = 0; 
           charCurr = latCirSpecChar(charSpec,charCurr,b);
           charSpec="";
        }else if(isChar == 1){//u sredini char-code-a samo prekopira brojku
           charCurr += a.charAt(j);
           
           
                 
        //obicni zapis - ne u kodu  -ali mi ga pretvaramo u kod ako pripada nizu kodova
        }else{//u pitanju je znak ili cifra ili karakter cist bez &#xxxx;
        
            //ako je u pitanju specijalni karakte pa ga pamtimo u charSpec i prskacemo sve ali samo ako vec nije zapamcen
            if (charSpec=="" && charSpecCheck(a.charAt(j).charCodeAt(0))==1){
              charSpec = a.charAt(j).charCodeAt(0);
            //nije specijalni karakter ili ima vec zabelezen st mu isto dodje
            }else{
            
            
              if (a.charAt(j) =="&"){//ako je karatkter  = & sto je pocetak sloga karaktera memorisi ga i idi na sledeci
                charMem = "&";
                charCurr = "";  
              }else{//znaci da je karkater bilo koji (znak, cifra ili ili slovo) i naravno da je !="&" i !=charSpec 
           
                 //ako je zapamcen & a posle nije # to znaci da nije char-code nego & pa ga treba dodati u string    
                 if (charMem=="&"){stringCurr += charMem;charMem = ""};
                 
                 charCurr = latCirSpecChar(charSpec,a.charAt(j).charCodeAt(0),b);
                 if (charSpecCheck(a.charAt(j).charCodeAt(0))==1) {charSpec = a.charAt(j).charCodeAt(0);prenos=1}else{charSpec="";prenos=0}; 
              }
           }
       } 
        
     }//izlazak na root petlje gde se pridodaju svi char u finalni strin 
     
      if (isChar == 0 && (charSpec=="" || prenos==1)) stringCurr += charCurr;
  }
 
  }//kraj for


  //---za zadnje slovo ako je l,n,d,L,N,D da ga ubaci samo
  if (charSpecCheck(charSpec)==1){
    stringCurr += latCirCharSwitch(charSpec,0);
  }
  
 
return stringCurr;
}



//*****
function latCirChange(){
for (i=0;i<contactTxt[0].length;i++){
contactTxt[langX][i] = latCirCharCodeSwitch(contactTxt[0][i],0);
}

}



function charSpecCheck(a){
var b = 0;
//       L           N           D            l           n            d
if (a=="76" || a== "78" || a== "68" || a== "108" || a== "110" || a== "100") b = 1;
return b;
}





function checkLetter(a,b){
var c = 0;
    for (k=0;k<codeLetter[b].length;k++){
      if (codeLetter[b][k]==a) {
        c = 1;
      }
    }
    return c;
}









//OPIS: ako je lat-->cir spojena dva char-code lj,nj,dj,LJ,NJ,DZ prebacuje u cirilicno jedno char-code lj,nj,dj,Lj,Nj,Dz
//      ako je cir-->lat razbija jedno char-code lj,nj,dz,Lj,Nj,Dz prebacuje u cirilicna dva char-code lj,nj,dj,LJ,NJ,DZ
//      ako su cista posla samo prosledjuje char-code dalje, tj nazad
//UPOTREBA: a=char-code, b=prethodni char-code, c=0 lat-->cir; c=1 cir-->lat

function latCirSpecChar(b,a,c){//odredjuje tip slova (lat, cir) i vrsi njegovu konverziju u onaj drugi
          
            
      //*********************lat-->cir**************************    
            if (c==0){
                var d = latCirCharSwitch(b,0);                    
                 //          L         J
                 if (b == "76" && a=="74"){
                    d = "&#1033;";
                 }else if (b == "78" && a=="74"){
                    d = "&#1034;";
                 }else if (b == "68" && a=="381"){
                    d = "&#1039;";
                    
                 //               L           j 
                 }else if (b == "76" && a=="106"){
                    d = "&#1033;";//ide isto u velika sva
                 }else if (b == "78" && a=="106"){
                    d = "&#1034;";//ide isto u velika sva
                 }else if (b == "68" && a=="382"){
                    d = "&#1039;"; //ide isto u velika sva                   
                    
                 //                l           j
                 }else if (b == "108" && a=="106"){
                    d = "&#1113;";
                 }else if (b == "110" && a=="106"){
                    d = "&#1114;";
                 }else if (b == "100" && a=="382"){
                    d = "&#1119;"; 
                    
                  //              l           J
                 }else if (b == "108" && a=="74"){
                    d = "&#1113;";//ide isto u velika sva
                 }else if (b == "110" && a=="74"){
                    d = "&#1114;";//ide isto u velika sva
                 }else if (b == "100" && a=="381"){
                    d = "&#1119;"; //ide isto u velika sva
                 
                    
                    
                 //svi ostali koji nisu lj,nj,dz,LJ,LJ,DZ,Lj,Lj,Dz  idu na osnovu scheme          
                 }else{
                    if (b!="" && charSpecCheck(a)==0){
                       d = latCirCharSwitch(b,0) +  latCirCharSwitch(a,0);
                       //if(b=="110" && a=="382")alert(b+"--"+a+"--"+d)     
                    }else if(b!="" && charSpecCheck(a)==1){
                       d = latCirCharSwitch(b,0);
                    }else if(b==""){
                       d = latCirCharSwitch(a,0); 
                    }                         
                 }     
                        
  //**********************cir-->lat*****************************            
            }else{
               if (a =="1033"){
                  d = "&#76;&#74;";
               }else if (a =="1034"){
                  d = "&#78;&#74;";
               }else if (a =="1039"){
                  d = "&#68;&#381;";
               }else if (a =="1113"){
                  d = "&#108;&#106;";
               }else if (a =="1114"){
                  d = "&#110;&#106;";
               }else if (a =="1119"){
                  d = "&#100;&#382;";                  
               }else{
                 d = latCirCharSwitch(a,1);//ostatak na osnovu seme
               }      
            }
            
    return d; 
}


//-----------------transf lang cir-lat---------------------------------
//---------------------------------------------------------------------
//OPIS: uporedjuje odabrani char-code sa char-code iz niza i ako je isti onda vraca
//      char-code sa iste pozicije ali iz drugog niza
//UPOTREBA: a=odabrani char-code, b=0 lat-->cir; b=1 cir-->lat
//USlOVI: potrebno je da budu definisani nizovi charLat i charCir pre upotrebe

function latCirCharSwitch(a,b){
var d = "#"
if (b==0)var c=1;else var c=0;
    for (k=0;k<codeLetter[b].length;k++){
      if (codeLetter[b][k]==a) {
        d = codeLetter[c][k];
      }
    }
  if (d == "#") d = a;
  return  "&#" + d + ";";
}










