var massedit = new Array()
//onload = lang_select_init

// Za slucaj da ne postoji funkcija document.getElementById
if(!document.getElementById)
{
	if(eval){
	   document.getElementById = eval
	}
}

// ime niza massedit kontrola mora biti "massedit"
var lang_selector_name = "fp_language"
var lang_form = null

var array_field_values = {
}
array_field_values[lang_selector_name] = new Array()
supported_languages = new Array("ge","en","fr","sr-latin","sr-cyrillic","nl")
selected_language = null

// funkcije okidaci funkcija promeme sadrzaja
function onChangeLanguage(wot)
{
//alert(wot.tagName)
   diriguj(wot)
}

function onChangeTopic(wot)
{
//   reaguj(wot)
//   langSelector.onchangelang()
}

function onChangeTitle(wot)
{
//   reaguj(wot)
//   langSelector.onchangelang()
}

function onChangeDesc(wot)
{
//   reaguj(wot)
//   langSelector.onchangelang()
}

// --- Language selector Objekat --------------------------------------------------------

/**
 * class cLanguageSelector
 * Klasa za rad sa visejezickim tekstom
 * @brief Klasa za rad sa visejezickim tekstom
 * @param parm_name string Ime parametra za koji se vezuje objekat
 */
function cLanguageSelector(name, lang, supported_langs)
{
   this.name = name                       ///< Ime kontrole
   this.lang = new String(lang)           ///< Izabrani jezik
   this.supported_langs = supported_langs ///< Podrzani jezici
   this.field_values = new Array()        ///< Vrednosti skrivenih polja
   this.mlcontrols = new Array()          ///< Niz sa objektima preko kojih se menjaju vrednosti
   this.form_obj = null                   ///< objekat forme

   /**
    * Funkcija kojom se inicijalizuje selektor
    * Ova funkcija treba da ucita u interni niz vrednosti skrivenih polja
    * @brief Funkcija kojom se inicijalizuje selektor
    */
   this.init = function()
   {
      // Pronalazi formu
      var niz = document.forms
      for(var i=0;i<niz.length;i++)
      {
         for(var j=0;j<niz[i].elements.length;j++)
         {
            lang_form = niz[i];
         }
      }
      if(!lang_form)       return
      this.form_obj = lang_form
      // Postavlja akciju onsubmit za formu
      /**
       * Fukcija koja se poziva po slanju forme
       * @brief Fukcija koja se poziva po slanju forme
       */
		var oldOnSubmit = this.form_obj.onsubmit
      this.form_obj.onsubmit = function()
      {
			if (oldOnSubmit) oldOnSubmit()
         langSelector.onsubmitform()
//         return false
      }

   }  // init

   /**
    * Fukcija koja se poziva po izmeni jezika
    * @brief Fukcija koja se poziva po izmeni jezika
    * @param lng string selektovan jezik
    */
   this.onchangelang = function(lng)
   {
      this.dealwithbuttons(lng)
      this.updatehiddens()
      this.lang = lng
      this.updatecontrols()
   }

   /**
    * Fukcija koja se poziva po zahteva prevoda jezika
    * @brief Fukcija koja se poziva po zahteva prevoda jezika
    * @param lng string selektovan jezik
    */
   this.ontranslatelang = function(lng)
   {
      if(lng.indexOf('sr-cyrillic')!=-1)
      {
         convertor = new cLat2Cyr()
         // U petlji provrti sve kontrole i prevede ih
         for(var i in this.mlcontrols)
         {
            txt = this.getcontent(this.mlcontrols[i].getparamname(),'sr-latin')
//            alert(txt)
            newtxt = convertor.translate(txt, this.mlcontrols[i].getcntrltype())
//            alert(newtxt)
            if(newtxt)
               this.setcontent(this.mlcontrols[i].getparamname(), newtxt)
         }
      }
      else if(lng.indexOf('sr-latin')!=-1)
      {
         convertor = new cCyr2Lat()
         // U petlji provrti sve kontrole i prevede ih
         for(var i in this.mlcontrols)
         {
            txt = this.getcontent(this.mlcontrols[i].getparamname(),'sr-cyrillic')
//            alert(txt)
            newtxt = convertor.translate(txt, this.mlcontrols[i].getcntrltype())
//            alert(newtxt)
            if(newtxt)
               this.setcontent(this.mlcontrols[i].getparamname(), newtxt)
         }
      }
      else
         return
      // Osvezi ekran
      this.updatecontrols()
   }

   /**
    * Dodeljuje odgovarajuce stilove dugmicima
    * @brief Dodeljuje odgovarajuce stilove dugmicima
    * @param lng string selektovan jezik
    */
   this.dealwithbuttons = function(lng)
   {
//      alert(this.name+'['+this.lang+']')
      // Pronalazi dugme sa prethodno zadatim jezikom i njega otpusti
      pom = document.getElementById(this.name+'['+this.lang+']')
      if(pom!=null)
         pom.className = 'smallButton_off'
      // Aktivira dugme sa novim jezikom
      pom = document.getElementById(this.name+'['+lng+']')
      if(pom!=null)
         pom.className = 'smallButton_on'
   }

   /**
    * Fukcija koja se poziva po izmeni jezika
    * @brief Fukcija koja se poziva po izmeni jezika
    * @param lng string selektovan jezik
    */
   this.registerCntrl = function(cntrl)
   {
      this.mlcontrols[cntrl.getparamname()] = cntrl;
//      this.mlcontrols[this.mlcontrols.length] = cntrl;
      cntrl.registerselector(this)

      /**
       * Funkcija koja se poziva na onchange kontrole.
       * Ova funkcija treba da posalje lang selektoru novu vrednost
       * @brief Funkcija koja se poziva na onchange kontrole
       * @param new_content string Novi sadrzaj koji se dodeljuje kontroli
       */
      cntrl.onchange = function()
      {
         this.setcontent(this.parm_name, cntrl.value)
      }
//      alert(cntrl.getparamname())
      this.updatecontrol(cntrl.getparamname())
   }

   /**
    * Fukcija koja se poziva po izmeni sadrzaja kontrole
    * Postavlja vrednost u skriveno polje
    * @brief Postavlja vrednost u skriveno polje
    * @param parm_name string ime parametra
    * @param value vrednost koja se dodeljuje
    */
   this.setcontent = function(parm_name, value)
   {
//      alert(parm_name)
      document.getElementById(parm_name+'['+this.lang+']').value = value
   }

   /**
    * Fukcija koja se poziva po izmeni sadrzaja kontrole
    * Postavlja vrednost u skriveno polje
    * @brief Postavlja vrednost u skriveno polje
    * @param parm_name string ime parametra
    * @return value vrednost koja se trazi
    */
   this.getcontent = function(parm_name, lng)
   {
      if(lng==null)
         pom = parm_name+'['+this.lang+']'
      else
         pom = parm_name+'['+lng+']'
//      alert(pom)
//      alert(pom)
//      alert(document.getElementById(pom).value)
      return document.getElementById(pom).value
   }

   /**
    * Fukcija koja se poziva po izmeni sadrzaja kontrole
    * Postavlja vrednost u skriveno polje
    * @brief Postavlja vrednost u skriveno polje
    * @param parm_name string ime parametra
    * @return value vrednost koja se trazi
    */
   this.getlanginuse = function(parm_name)
   {
      return this.lang
   }

   /**
    * Fukcija koja se poziva po izmeni sadrzaja kontrole
    * Postavlja vrednost u polje kontrole
    * @brief Postavlja vrednost u polje kontrole
    */
   this.updatecontrols = function()
   {
//      for(var i=0;i<mlcontrols.length;i++)
      for(var i in this.mlcontrols)
      {
//         alert(i+' - '+this.mlcontrols[i])
         this.mlcontrols[i].setcontent(this.getcontent(this.mlcontrols[i].getparamname()))
//         alert(this.mlcontrols[i].getparamname()+' - '+this.mlcontrols[i].getcontent())
      }
   }

   /**
    * Fukcija koja se poziva po izmeni sadrzaja kontrole
    * Postavlja vrednost u polje kontrole
    * @brief Postavlja vrednost u polje kontrole
    */
   this.updatehiddens = function()
   {
//      for(var i=0;i<mlcontrols.length;i++)
      for(var i in this.mlcontrols)
      {
//         alert(i+' - '+this.mlcontrols[i])
         this.setcontent(this.mlcontrols[i].getparamname(), this.mlcontrols[i].getcontent())
//         alert(this.mlcontrols[i].getparamname()+' - '+this.mlcontrols[i].getcontent())
      }
   }

   /**
    * Fukcija koja se poziva po inicijalizaciji kontrole
    * Postavlja vrednost u polje
    * @param param strin Naziv polja
    * @brief Postavlja vrednost u polje
    */
   this.updatecontrol = function(param)
   {
//      alert(param)
      this.mlcontrols[param].setcontent(this.getcontent(param))
//      this.mlcontrols[param].setcontent('dejan')
//      alert(this.mlcontrols[param].getparamname()+' - '+this.mlcontrols[param].getcontent())
   }

   /**
    * Fukcija koja se poziva po izmeni sadrzaja kontrole
    * Postavlja vrednost u skriveno polje
    * @brief Postavlja vrednost u skriveno polje
    * @param parm_name string ime parametra
    * @return value vrednost koja se trazi
    */
   this.onsubmitform = function()
   {
      this.updatehiddens()
   }

}  // cLanguageSelector

// --- MLText Objekat -------------------------------------------------------------------

/**
 * class cMLText
 * Klasa za rad sa visejezickim tekstom
 * @brief Klasa za rad sa visejezickim tekstom
 * @param parm_name string Ime parametra za koji se vezuje objekat
 */
function cMLText(parm_name, name)
{
   this.parm_name = parm_name                            // Ime parametra na koji se kaci kontrola
   this.cntrl = document.getElementById(name)  // Objekat kontrole
   this.lserf = null                                     // Referenca na language selector

   /**
    * Funkcija za registrciju language selectora kod kontrole radi slanja izmena
    * @brief Funkcija za registrciju language selectora kod kontrole radi slanja izmena
    * @param lsref referenc na lang selector
    */
   this.registerselector = function(lsref)
   {
      this.lsref = lsref
   }

   /**
    * Funkcija koja vraca naziv parametra
    * @brief Funkcija koja vraca naziv parametra
    * @return param_name string Naziv parametra
    */
   this.getparamname = function()
   {
      return this.parm_name
   }

   /**
    * Funkcija koja vraca tip kontrole text/html
    * @brief Funkcija koja vraca tip kontrole text/html
    * @return param_name string Tip kontrole text/html
    */
   this.getcntrltype = function()
   {
      return 'text'
   }

   /**
    * Funkcija za registrciju kod language selectora.
    * Ova funkcija treba da postavi kontroli novu vrednost
    * @brief Funkcija za registrciju kod language selectora
    * @return string Sadrzaj koji se trazi
    */
   this.getcontent = function()
   {
      if(this.cntrl!=null)
         return this.cntrl.value
      else
         return null
   }

   /**
    * Funkcija za postavljanje vrednosti.
    * Ova funkcija treba da postavi kontroli novu vrednost
    * @brief Funkcija postavljanje vrednosti
    * @param new_content string Novi sadrzaj koji se dodeljuje kontroli
    */
   this.setcontent = function(new_content)
   {
      if(this.cntrl!=null)
      {
         this.cntrl.disabled = false
         this.cntrl.value = new_content
      }
   }

   /**
    * Funkcija za akciju kod promene jezika.
    * Ova funkcija treba da postavi kontroli novu vrednost
    * @brief Funkcija za akciju kod promene jezika
    * @param new_content string Novi sadrzaj koji se dodeljuje kontroli
    */
   this.onchangelang = function(new_content)
   {
//      alert(this.lang)
      this.setcontent(new_content)
   }

   /**
    * Funkcija koja vraca naziv parametra
    * @brief Funkcija koja vraca naziv parametra
    * @return param_name string Naziv parametra
    */
   this.cntrl.onchange = function()
   {
      if(langSelector!=null)
         langSelector.updatehiddens()
   }

   /**
    * Funkcija za registrciju kod language selectora.
    * Ova funkcija treba da postavi kontroli novu vrednost
    * @brief Funkcija za registrciju kod language selectora
    * @return string Sadrzaj koji se trazi
    */
//   this.getcontent = function()
//   {
//      this.cntrl.value = new_content
//   }

}  // cMLText
