/**
*@fileoverview In dieser Datei werden Hilfsfunktionen fÆr Formulare definiert
*@author Guido FÆnders, fuenders@traveltainment.de
*/

/**
*EnthÑlt Methoden fÆr den einfacheren Umgang mit Formularen
*@constructor
*@extends TTIBE
*/
function FormBase(){
  /**
  *FÆllt eine Selectbox mit den Daten eines Arrays.
  *Die Arrayelemente mÆssen dafÆr wie folgt aussehen: "label;value"
  *@param {String} selname Name der zu fÆllenden Selectbox
  *@param {Array} arrdata Array der die Daten enthÑlt
  */
  this.fillSelFromArray = function(selname,arrdata){
    var sb = document.forms[this.formname].elements[selname] || 0;
    if(!sb || sb.type!='select-one') return;
    var sel = this.req[selname]!='undefined'?this.req[selname]:'';
    for(var i=0;i<arrdata.length;i++){
      var lbl = arrdata[i].split(';')[0];
      var val = arrdata[i].split(';')[1];
      if(selname=='marke' && val=='VTO') lbl=this.req['klabelmarke'];
      sb.options[sb.options.length] = new Option(lbl,val);
      if(val==sel) sb.options[sb.options.length-1].selected=true;
    }
  };

  /**
  *FÆllt eine Selectbox mit den Daten eines Objekts.
  *Die Attributnamen entsprechen den Values, Die Attributwerte den Labels
  *@param {Object} boxobject Objekt mit den zu fÆllenden Selectbox.
  */
  this.fillSels = function(boxobject){
    for(var boxname in boxobject){
      this.fillSelFromArray(boxname,boxobject[boxname]);
    }
  };

  /**
  *FÆllt eine Selectbox mit den Daten eiens Objekts anhand von Bitwerten.
  *Die Attributnamen entsprechen den Values, Die Attributwerte den Labels
  *(wird z.B. bei den erweierten Zimmertypen in LMPS benutzt)
  *@param {Object} boxobject Objekt mit den zu fÆllenden Selectbox.
  */
  this.fillBitSels = function(boxobject){
    for(var boxname in boxobject){
      var sb = document.forms[this.formname].elements[boxname] || 0;
      if(!sb || sb.type!='select-one') continue;
      var arrdata = boxobject[boxname];
      var sel = this.req[boxname]!='undefined'?parseInt(this.req[boxname]):0;
      sel = sel<0?0:sel;
      for(var i=0;i<arrdata.length;i++){
        var lbl = arrdata[i].split(';')[0];
        var val = arrdata[i].split(';')[1];
        sb.options[sb.options.length] = new Option(lbl,val);
        if((parseInt(val,10)&sel)!=0){
            sb.options[sb.options.length-1].selected=true;
        }
      }
    }
  };

  /**
  *Setzt Radiovalues
  *@param {Object} rnames Objekt mit den zu Namen der Radiobuttons
  */
  this.setRadios = function(rnames){
    for(var i in rnames){
      var rb = document.forms[this.formname].elements[rnames[i]] || 0;
      if(!rb) continue;
      var val = this.req[rnames[i]]!='undefined'?this.req[rnames[i]]:'';
      for(var j=0;j<rb.length;j++)
        if(rb[j].value==val) rb[j].checked=true;
    }
  };

  /**
  *Setzt Checkboxen
  *@param {Object} cknames Objekt mit den zu Namen der Checkboxen
  */
  this.setChecks = function(cknames){
    for(var i in cknames){
      var cb = document.forms[this.formname].elements[cknames[i]] || 0;
      if(!cb) continue;
      var val = typeof(this.req[cknames[i]])!='undefined'?this.req[cknames[i]]:'';
      if(cb && cb.value==val) cb.checked=true;
    }
  };

  /**
  *Setzt Checkboxen anhand von Bitwerten (z.B. "meer" oder "zfilter" bei LMPS)
  *@param {Object} cknames Objekt mit den zu Namen der Checkboxen
  */
  this.setBitChecks = function(cknames){
    for(var i in cknames){
      var cb = document.forms[this.formname].elements[cknames[i]] || 0;
      if(!cb) continue;
      var val = typeof(this.req[cknames[i]])!='undefined'?parseInt(this.req[cknames[i]],10):0;
      val = val<0?0:val;
      if(cb && (parseInt(cb.value,10)&val)!=0) cb.checked=true;
    }
  };

  /**
  *FÆllt Textfelder
  *@param {Array} txtnames Array mit den Namen der zu fÆllenden Textfelder
  */
  this.setTexts = function(txtnames){
    for(var i in txtnames){
      var tb = document.forms[this.formname].elements[txtnames[i]] || 0;
      if(!tb) continue;
      var val = typeof(this.req[txtnames[i]])!='undefined'?this.req[txtnames[i]]:'';
      if(tb) tb.value=val;
    }
  };

  /**
  *C(hange)Rad(io): setzt einen Radiowert (erweiterte Zimmertypen)
  *@param {INT} val Kenner
  */
  this.CRad = function(val){
    if(val==1) document.forms[this.formname].zimmer[6].checked=true;
    else document.forms[this.formname].zimmer2.selectedIndex=0;
  };

  /**
  *FÆllt die Selectboxen fÆr die Reisenden (Erwachsene + 3x Kinderalter)
  */
  this.fillReisende = function(optUsrPersLbl){
    var defPersLbl = {
      erw:["osoba","osoby"],  // "normal"
      erw_short:["os.","os."],         // Formular 2 / Nur Flug
      pers:["osoba","os"+String.fromCharCode(243)+"b"],        // Fewo
      kinder:["lata","lat"]
    };
    var optPersLbl= optUsrPersLbl || defPersLbl;
    var strPers = this.Personen;
    var bform = document.forms[this.formname];
    var elems = ['alter1', 'alter2','alter3'];
    var erwSel = bform.erwachsene;
    var strErw = "25";
    var erwMax = this.req['engine']=='fewo'?8:4;
    for(var i=1;i<=erwMax;i++){
      if(this.req['engine']=='fewo')
        var lbl = i==1?optPersLbl['pers'][0]:optPersLbl['pers'][1];
      else if(this.req['formular']=='2' || this.req['formular']=='3' ||
              typeof(window['SucheERDEKlein'])!='undefined' ||
              typeof(window['SucheLMPSKlein'])!='undefined')
        var lbl = i==1?optPersLbl['erw_short'][0]:optPersLbl['erw_short'][1];        
      else
        var lbl = i==1?optPersLbl['erw'][0]:optPersLbl['erw'][1];
      erwSel.options[erwSel.options.length] = new Option(i+" "+lbl,strErw);
      strErw += ";25";
    }
    erwSel.options.selectedIndex = this.AnzErwachsene-1;

    for(var i in elems){
      if(bform[elems[i]]){
        bform[elems[i]].options[0] = new Option(" --- ","-1");
        bform[elems[i]].options[1] = new Option("< 2 "+optPersLbl['kinder'][0],"1");
        for(var j=2;j<=16;j++)
          if(j<5){
            bform[elems[i]].options[j] = new Option(j+" "+optPersLbl['kinder'][0],j);
          } else {
            bform[elems[i]].options[j] = new Option(j+" "+optPersLbl['kinder'][1],j);
          }
        if(this.AlterKinder[i] && this.AlterKinder[i]!="-1")
          bform[elems[i]].value=this.AlterKinder[i];
      }
    }
  };

  /**
  *FÆllt die "Dauer"-Selectbox mit Tagen (Erde/Flug)
  */
  this.dauert = function(){
    var sb = document.getElementsByName('dauer')[0] || 0;
    if(!sb || sb.type!='select-one') return;
    sb.options[sb.options.length] = new Option("dowolny","-1");
    sb.options[sb.options.length] = new Option("1 dzie"+String.fromCharCode(324),"6_1");
    for(i=2;i<=21;i++){
      sb.options[sb.options.length] = new Option(i+" dni","6_"+i);
    }
    sb.options[sb.options.length] = new Option("> 22 dni","13");
    try{
      if(this.req['dauer']!='' && this.req['dauer']!='-1')
        sb.value=this.req['dauer'];
    }catch(e){}
  };
}