var languagelijst = 'nl=Nederlands|en=Engels';
//var languagelijst = 'nl=Nederlands|en=Engels|de=Duits|fr=Frans|es=Spaans|it=Italiaans|sl=Sloveens|vl=Vlaams';

var defaultlanguage = 'nl';
var language = defaultlanguage;

var rssDefaultLanguage_L = 'nl=standaard taal|en=default language';

//default-waardes voor LanguageAppearance
var default_language_border                = 0; //0=geen border; 1=met border
var default_language_backgroundcolor       = '#ffffff';
var default_language_color                 = '#000000';
var default_language_title_bold            = 1; //0=niet vet; 1=vet
var default_language_title_backgroundcolor = '#ffff00';
var default_language_title_color           = '#000000';
var default_language_tablewidth            = '100%';
var default_language_columnwidth_name      = '80';
var default_language_columnwidth_value     = ''; //=no set width
var default_language_textinput_valuetoo    = 0; //0=value as value; 1=value in readonly input
var default_language_textinput_width       = '100%';
var default_language_textarea_fontfamily   = '';
var default_language_textarea_fontsize     = '';
var default_language_textarea_width        = '100%';
var default_language_textarea_height       = '80px';
var default_language_textarea_whitespace   = 'nowrap'; //nowrap / normal
var default_language_textselect_width      = ''; // '' / '100%' / '200px';

//default-waardes voor LanguageListAppearance
var default_languagelist_border         = 0; //0=geen border; 1=met border
var default_languagelist_keywidth       = '40';
var default_languagelist_intervalheight = '4px';

function rss(veldlijst,par1,par2,par3,par4,par5,par6,par7,par8,par9) {
  if (par1==null) par1='';
  if (par2==null) par2='';
  if (par3==null) par3='';
  if (par4==null) par4='';
  if (par5==null) par5='';
  if (par6==null) par6='';
  if (par7==null) par7='';
  if (par8==null) par8='';
  if (par9==null) par9='';
  var s=assignValue(veldlijst,language);
  if (s=='') {
    s=assignValue(veldlijst,defaultlanguage);
    if (s==defaultlanguage) s=veldlijst;
  }
  s=decode_special(s);
  s=s.replace(/%%1/g,par1);
  s=s.replace(/%%2/g,par2);
  s=s.replace(/%%3/g,par3);
  s=s.replace(/%%4/g,par4);
  s=s.replace(/%%5/g,par5);
  s=s.replace(/%%6/g,par6);
  s=s.replace(/%%7/g,par7);
  s=s.replace(/%%8/g,par8);
  s=s.replace(/%%9/g,par9);
  return s;
}

function rsslist(veldlijst,par1,par2,par3,par4,par5,par6,par7,par8,par9) {
  if (par1==null) par1='';
  if (par2==null) par2='';
  if (par3==null) par3='';
  if (par4==null) par4='';
  if (par5==null) par5='';
  if (par6==null) par6='';
  if (par7==null) par7='';
  if (par8==null) par8='';
  if (par9==null) par9='';
  var ar=veldlijst.split('|');
  var s1=s2=ss=s='';
  var ii=iii=0;
  for (var i=0; i<ar.length; i++) {
    s=ar[i];
    ii=s.indexOf('=');
    if (i>0) ss+='|';
    s1=s.substring(ii+1);
    if (s1!='')
    if (s1.indexOf('[')!=0)
      s1=rss(decode_special(s1),par1,par2,par3,par4,par5,par6,par7,par8,par9);
    else {
      s2=s1.substring(1);
      iii=s2.indexOf(']'); s1=s2.substring(iii+1); s2=s2.substring(0,iii);
      s1=rss(decode_special(s1),par1,par2,par3,par4,par5,par6,par7,par8,par9);
      s2=rss(decode_special(s2),par1,par2,par3,par4,par5,par6,par7,par8,par9);
      s1='['+s2+']'+s1;
    }
    ss+=s.substring(0,ii)+'='+s1;
  }
  return ss;
}

function languagerss(lg,veldlijst,par1,par2,par3,par4,par5,par6,par7,par8,par9) {
  var lg0=language;
  language=lg;
  var ss=rss(veldlijst,par1,par2,par3,par4,par5,par6,par7,par8,par9);
  language=lg0;
  return ss;
}

///////////////////////////////////////////////////////////////// LanguageString

function LanguageString(text //veldlijst met de teksten
                       ,name //(veldlijst met de) naam
                       ,idname) { //id-naam
  if (name==null) name='';
  if (idname==null) idname='';
  this.idname=idname;
  this.name=name;
  this.text=text;
  this.appearance=new LanguageAppearance();

  this.multilanguage=true;
  this.readonly=false;
}
var language_id_textinput = '_textinput_';
LanguageString.prototype.textinput_make=function(readonly,fill) {
  if (readonly==null) readonly=false; //false=editable; true=readonly
  if (fill==null) fill=true; //false=no value fill; true=fill value
  this.readonly=readonly;
  var lg='';
  var t='';
  var tx='';
  if (this.appearance.border==1) t+='<table cellspacing="0" cellpadding="0" border="0"><tr><td style="border:1px solid #000000;">';
  t+='<table cellspacing="0" cellpadding="0" border="0"';
  if (this.appearance.tablewidth=='') t+='>';
                                 else t+=' width="'+this.appearance.tablewidth+'">';
  if (this.multilanguage)
  if (this.appearance.columnwidth_name=='') t+='<col>';
                                       else t+='<col width="'+this.appearance.columnwidth_name+'">';
  if (this.multilanguage)
  t+='<col width="8">';
  if (this.appearance.columnwidth_value=='') t+='<col>';
                                        else t+='<col width="'+this.appearance.columnwidth_value+'">';
  if (this.name!='')
  t+='<tr><td colspan="3" style="padding-left:4px; padding-right:4px; background-color:'+this.appearance.title_backgroundcolor+'; color:'+this.appearance.title_color+';">'+ifstring(this.appearance.title_bold==1,'<b>','')+rss(this.name)+ifstring(this.appearance.title_bold==1,'</b>','')+'&nbsp;<span style="font-size:smaller;">(<b>*</b>='+rss(rssDefaultLanguage_L)+')</span></td></tr>';
  for (var i=0; i<veldlijst_Count(languagelijst); i++) {
    lg=veldlijst_IndexName(languagelijst,i);
    if ((this.multilanguage)||(lg==defaultlanguage)) {
      t+='<tr style="background-color:'+this.appearance.backgroundcolor+'; color:'+this.appearance.color+';">';
        if (this.multilanguage)
        t+='<td style="padding-left:4px; padding-right:4px; text-align:right; vertical-align:top;">'+veldlijstWaarde(languagelijst,lg)+'</td>';
        if (this.multilanguage)
        if (lg==defaultlanguage) t+='<td style="vertical-align:top;" title="'+rss(rssDefaultLanguage_L)+'"><b>*</b></td>'; else t+='<td>&nbsp;</td>';
        t+='<td style="padding-right:4px;">';
        if ((this.readonly)&&(this.appearance.textinput_valuetoo==0)) {
          t+='<span id="'+this.idname+language_id_textinput+lg+'">';
          if (fill) {
            tx=decode_special(veldlijstWaarde(this.text,lg)); if (tx==lg) tx='';
            t+=tx;
          }
          t+='</span>';
        } else {
          t+='<input type="text" id="'+this.idname+language_id_textinput+lg+'" style="width:'+this.appearance.textinput_width+';"'+ifstring(readonly,' readonly','');
          if (fill) {
            tx=decode_special(veldlijstWaarde(this.text,lg)); if (tx==lg) tx='';
            t+=' value="'+tx+'"';
          }
          t+='>';
        }
        t+='</td>';
      t+='</tr>';
    }
  }
  t+='</table>';
  if (this.appearance.border==1) t+='</td></tr></table>';
  return t;
}
LanguageString.prototype.textinput_fill=function() {
  var lg=tx='';
  for (var i=0; i<veldlijst_Count(languagelijst); i++) {
    lg=veldlijst_IndexName(languagelijst,i);
    if ((this.multilanguage)||(lg==defaultlanguage)) {
      tx=decode_special(veldlijstWaarde(this.text,lg)); if (tx==lg) tx='';

      if (getid(this.idname+language_id_textinput+lg))
      if ((this.readonly)&&(this.appearance.textinput_valuetoo==0))
        getid(this.idname+language_id_textinput+lg).innerHTML=tx;
      else
        getid(this.idname+language_id_textinput+lg).value=tx;
    }
  }
}
LanguageString.prototype.textinput_interpret=function() {
  var lg=t=tx='';
  if (!this.readonly) {
    for (var i=0; i<veldlijst_Count(languagelijst); i++) {
      lg=veldlijst_IndexName(languagelijst,i);
      tx=veldlijstWaarde(this.text,lg); if (tx==lg) tx='';
      if (getid(this.idname+language_id_textinput+lg)) {
        tx=encode_special(getid(this.idname+language_id_textinput+lg).value);
        if (tx!='') { if (t!='') t+='|'; t+=lg+'='+tx; }
      }
    }
    this.text=t;
  }
  return this.text;
}
var language_id_textarea = '_textarea_';
LanguageString.prototype.textarea_make=function(readonly,fill) {
  if (readonly==null) readonly=false; //false=editable; true=readonly
  if (fill==null) fill=true; //false=no value fill; true=fill value
  this.readonly=readonly;
  var lg=t=tx=ff=fs=ws='';
  if (this.appearance.border==1) t+='<table cellspacing="0" cellpadding="0" border="0"><tr><td style="border:1px solid #000000;">';
  t+='<table cellspacing="0" cellpadding="0" border="0"';
  if (this.appearance.tablewidth=='') t+='>';
                                 else t+=' width="'+this.appearance.tablewidth+'">';
  if (this.multilanguage)
  if (this.appearance.columnwidth_name=='') t+='<col>';
                                       else t+='<col width="'+this.appearance.columnwidth_name+'">';
  if (this.multilanguage)
  t+='<col width="8">';
  if (this.appearance.columnwidth_value=='') t+='<col>';
                                        else t+='<col width="'+this.appearance.columnwidth_value+'">';
  if (this.name!='')
  t+='<tr><td colspan="3" style="padding-left:4px; padding-right:4px; background-color:'+this.appearance.title_backgroundcolor+'; color:'+this.appearance.title_color+';">'+ifstring(this.appearance.title_bold==1,'<b>','')+rss(this.name)+ifstring(this.appearance.title_bold==1,'</b>','')+'&nbsp;<span style="font-size:smaller;">(<b>*</b>='+rss(rssDefaultLanguage_L)+')</span></td></tr>';
  for (var i=0; i<veldlijst_Count(languagelijst); i++) {
    lg=veldlijst_IndexName(languagelijst,i);
    if ((this.multilanguage)||(lg==defaultlanguage)) {
      t+='<tr style="background-color:'+this.appearance.backgroundcolor+'; color:'+this.appearance.color+';">';
        if (this.multilanguage)
        t+='<td style="padding-left:4px; padding-right:4px; text-align:right; vertical-align:top;">'+veldlijstWaarde(languagelijst,lg)+'</td>';
        if (this.multilanguage)
        if (lg==defaultlanguage) t+='<td style="vertical-align:top;" title="'+rss(rssDefaultLanguage_L)+'"><b>*</b></td>'; else t+='<td>&nbsp;</td>';
        ws=this.appearance.textarea_whitespace; if (ws!='') ws='white-space:'+ws+';';
        ff=this.appearance.textarea_fontfamily; if (ff!='') ff='font-family:'+ff+';';
        fs=this.appearance.textarea_fontsize; if (fs!='') fs='font-size:'+fs+';';
        if (fs=='') fs=ws; else if (ws!='') fs=fs+' '+ws;
        if (ff=='') ff=fs; else if (fs!='') ff=ff+' '+fs;
        if (ff!='') ff=' style="'+singlequote(ff)+'"';
        t+='<td style="padding-right:4px;"><textarea id="'+this.idname+language_id_textarea+lg+'" style="width:'+this.appearance.textarea_width+'; height:'+this.appearance.textarea_height+';"'+ifstring(readonly,' readonly','')+ff+'>';
        if (fill) {
          tx=decode_special(veldlijstWaarde(this.text,lg)); if (tx==lg) tx='';
          t+=tx;
        }
        t+='</textarea></td>';
      t+='</tr>';
    }
  }
  t+='</table>';
  if (this.appearance.border==1) t+='</td></tr></table>';
  return t;
}
LanguageString.prototype.textarea_fill=function() {
  var lg=tx='';
  for (var i=0; i<veldlijst_Count(languagelijst); i++) {
    lg=veldlijst_IndexName(languagelijst,i);
    if ((this.multilanguage)||(lg==defaultlanguage)) {
      tx=decode_special(veldlijstWaarde(this.text,lg)); if (tx==lg) tx='';
      if (getid(this.idname+language_id_textarea+lg)) getid(this.idname+language_id_textarea+lg).value=tx;
    }
  }
}
LanguageString.prototype.textarea_interpret=function() {
  var lg=t=tx='';
  if (!this.readonly) {
    for (var i=0; i<veldlijst_Count(languagelijst); i++) {
      lg=veldlijst_IndexName(languagelijst,i);
      tx=veldlijstWaarde(this.text,lg); if (tx==lg) tx='';
      if (getid(this.idname+language_id_textarea+lg)) {
        tx=encode_special(getid(this.idname+language_id_textarea+lg).value);
        if (tx!='') { if (t!='') t+='|'; t+=lg+'='+tx; }
      }
    }
    this.text=t;
  }
  return this.text;
}
var language_id_textselect = '_textselect_';
LanguageString.prototype.textselect_make=function(list,readonly) {
  if (list==null) list='';
  if (readonly==null) readonly=false; //false=editable; true=readonly
  this.readonly=readonly;
  var lg=t=tx='';
  if (this.appearance.border==1) t+='<table cellspacing="0" cellpadding="0" border="0"><tr><td style="border:1px solid #000000;">';
  t+='<table cellspacing="0" cellpadding="0" border="0"';
  if (this.appearance.tablewidth=='') t+='>';
                                 else t+=' width="'+this.appearance.tablewidth+'">';
  if (this.multilanguage)
  if (this.appearance.columnwidth_name=='') t+='<col>';
                                       else t+='<col width="'+this.appearance.columnwidth_name+'">';
  if (this.multilanguage)
  t+='<col width="8">';
  if (this.appearance.columnwidth_value=='') t+='<col>';
                                        else t+='<col width="'+this.appearance.columnwidth_value+'">';
  if (this.name!='')
  t+='<tr><td colspan="3" style="padding-left:4px; padding-right:4px; background-color:'+this.appearance.title_backgroundcolor+'; color:'+this.appearance.title_color+';">'+ifstring(this.appearance.title_bold==1,'<b>','')+rss(this.name)+ifstring(this.appearance.title_bold==1,'</b>','')+'&nbsp;<span style="font-size:smaller;">(<b>*</b>='+rss(rssDefaultLanguage_L)+')</span></td></tr>';
  for (var i=0; i<veldlijst_Count(languagelijst); i++) {
    lg=veldlijst_IndexName(languagelijst,i);
    if ((this.multilanguage)||(lg==defaultlanguage)) {
      t+='<tr style="background-color:'+this.appearance.backgroundcolor+'; color:'+this.appearance.color+';">';
        if (this.multilanguage)
        t+='<td style="padding-left:4px; padding-right:4px; text-align:right; vertical-align:top;">'+veldlijstWaarde(languagelijst,lg)+'</td>';
        if (this.multilanguage)
        if (lg==defaultlanguage) t+='<td style="vertical-align:top;" title="'+rss(rssDefaultLanguage_L)+'"><b>*</b></td>'; else t+='<td>&nbsp;</td>';
        t+='<td style="padding-right:4px;">';
        tx=decode_special(veldlijstWaarde(this.text,lg)); if (tx==lg) tx='';
        if (this.readonly) t+=veldlijstWaarde(list,tx);
                      else t+=veldlijstSelect(list,this.idname+language_id_textselect+lg,tx,this.appearance.textselect_width);
        t+='</td>';
      t+='</tr>';
    }
  }
  t+='</table>';
  if (this.appearance.border==1) t+='</td></tr></table>';
  return t;
}
LanguageString.prototype.textselect_interpret=function() {
  var lg=t=tx='';
  if (!this.readonly) {
    for (var i=0; i<veldlijst_Count(languagelijst); i++) {
      lg=veldlijst_IndexName(languagelijst,i);
      tx=veldlijstWaarde(this.text,lg); if (tx==lg) tx='';
      if (getid(this.idname+language_id_textselect+lg)) {
        tx=encode_special(getid(this.idname+language_id_textselect+lg).value);
        if (tx!='') { if (t!='') t+='|'; t+=lg+'='+tx; }
      }
    }
    this.text=t;
  }
  return this.text;
}

///////////////////////////////////////////////////////////// LanguageAppearance

function LanguageAppearance() {
  this.border=default_language_border;
  this.backgroundcolor=default_language_backgroundcolor;
  this.color=default_language_color;
  this.title_bold=default_language_title_bold;
  this.title_backgroundcolor=default_language_title_backgroundcolor;
  this.title_color=default_language_title_color;
  this.tablewidth=default_language_tablewidth;
  this.columnwidth_name=default_language_columnwidth_name;
  this.columnwidth_value=default_language_columnwidth_value;

  this.textinput_valuetoo=default_language_textinput_valuetoo;
  this.textinput_width=default_language_textinput_width;

  this.textarea_fontfamily=default_language_textarea_fontfamily;
  this.textarea_fontsize=default_language_textarea_fontsize;
  this.textarea_width=default_language_textarea_width;
  this.textarea_height=default_language_textarea_height;
  this.textarea_whitespace=default_language_textarea_whitespace;

  this.textselect_width=default_language_textselect_width;
}

///////////////////////////////////////////////////////// LanguageStringListItem

function LanguageStringListItem(text,name,idname) {
  if (text==null) text='';
  var ii=text.indexOf('=');
  if (ii==-1) {
    this.key='';
    this.languagestring=new LanguageString('',name,idname);
  } else {
    this.key=text.substring(0,ii);
    this.languagestring=new LanguageString(decode_special(text.substring(ii+1)),name,idname);
  }
}
LanguageStringListItem.prototype.interpret=function() {
  if ((this.key=='')&&(this.languagestring.text=='')) this.text=''; else
  this.text=this.key+'='+encode_special(this.languagestring.text);
  return this.text;
}

///////////////////////////////////////////////////////////// LanguageStringList

function LanguageStringList(text //veldlijst met de teksten
                           ,name //(veldlijst met de) naam
                           ,idname) { //id-naam
  if (text==null) text='';
  if (name==null) name='';
  if (idname==null) idname='';
  this.idname=idname;
  this.name=name;
  this.text=text;
  this.appearance=new LanguageAppearance();
  this.listappearance=new LanguageListAppearance();

  this.item=new Array();
  var ar=text.split('|');
  for (var i=0; i<ar.length; i++)
  this.item[i]=new LanguageStringListItem(ar[i]);

  this.multilanguage=true;
  this.readonly=false;
}
var language_id_key = '_key';
LanguageStringList.prototype.textinput_make=function(readonly,fill) {
  if (readonly==null) readonly=false; //false=editable; true=readonly
  if (fill==null) fill=true; //false=no value fill; true=fill value
  this.readonly=readonly;
  var ls=t=tx='';
  if (this.listappearance.border==1) t+='<table cellspacing="0" cellpadding="0" border="0"><tr><td style="border:1px solid #000000;">';
  t+='<table cellspacing="0" cellpadding="0" border="0">';
  if (this.listappearance.keywidth=='') t+='<col>';
                                   else t+='<col width="'+this.listappearance.keywidth+'">';
  if (this.appearance.tablewidth=='') t+='<col>';
                                 else t+='<col width="'+this.appearance.tablewidth+'">';
  if (this.name!='')
  t+='<tr><td colspan="2" style="padding-left:4px; padding-right:4px; background-color:'+this.appearance.title_backgroundcolor+'; color:'+this.appearance.title_color+';">'+ifstring(this.appearance.title_bold==1,'<b>','')+rss(this.name)+ifstring(this.appearance.title_bold==1,'</b>','')+'</td></tr>';
  for (var i=0; i<this.item.length; i++) {
    if ((i>0)&&(this.listappearance.intervalheight!=''))
    t+='<tr><td colspan="2" style="height:'+this.listappearance.intervalheight+';"></td></tr>';
    ls=this.item[i];
//    t+='<tr style="background-color:'+this.appearance.backgroundcolor+'; color:'+this.appearance.color+';">';
    t+='<tr>';
      t+='<td style="padding-left:4px; padding-right:4px; vertical-align:top;">';
      if ((this.readonly)&&(this.appearance.textinput_valuetoo==0)) {
        t+='<span id="'+this.idname+'_'+i+language_id_key+'">';
        if (fill) {
          t+=ls.key;
        }
        t+='</span>';
      } else {
        t+='<input type="text" id="'+this.idname+'_'+i+language_id_key+'" style="width:'+this.listappearance.keywidth+';"'+ifstring(readonly,' readonly','');
        if (fill) {
          t+=' value="'+ls.key+'"';
        }
        t+='>';
      }
      t+='</td>';
      t+='<td>';
      ls.languagestring.idname=this.idname+'_'+i;
      ls.languagestring.multilanguage=this.multilanguage;
      t+=ls.languagestring.textinput_make(readonly,fill);
      t+='</td>';
    t+='</tr>';
  }
  t+='</table>';
  if (this.listappearance.border==1) t+='</td></tr></table>';
  return t;
}
LanguageStringList.prototype.textinput_fill=function() {
  var ls='';
  for (var i=0; i<this.item.length; i++) {
    ls=this.item[i];
    if (getid(this.idname+'_'+i+language_id_key))
    if ((this.readonly)&&(this.appearance.textinput_valuetoo==0))
      getid(this.idname+'_'+i+language_id_key).innerHTML=this.key;
    else
      getid(this.idname+'_'+i+language_id_key).value=this.key;

    ls.languagestring.textinput_fill();
  }
}
LanguageStringList.prototype.textinput_interpret=function() {
  var lls = lt = ltx = '';
  if (!this.readonly) {
    for (var i=0; i<this.item.length; i++) {
      lls=this.item[i];
      if (getid(this.idname+'_'+i+language_id_key))
      lls.key=getid(this.idname+'_'+i+language_id_key).value;
      lls.languagestring.textinput_interpret();
      ltx=lls.interpret();
      if (ltx!='') { if (lt!='') lt+='|'; lt+=ltx; }
    }
    this.text=lt;
  }
  return this.text;
}

///////////////////////////////////////////////////////// LanguageListAppearance

function LanguageListAppearance() {
  this.border=default_languagelist_border;
  this.keywidth=default_languagelist_keywidth;
  this.intervalheight=default_languagelist_intervalheight;
}

