/**
*@fileoverview In dieser Datei werden Hilfsfunktionen für das Erde-Suchformular definiert
*@author Guido Fünders, fuenders@traveltainment.de
*/
var IBE = new TTIBE("IBE",port,"bengine");
var arrOrte = [];
IBE.jsFiles = ['../../jslib/formulare/selectopt653.js','../../jslib/core/datehelper.js',
               '../../jslib/core/zeitraum.js','../../jslib/formulare/terminauswahl.js',
               '../../jslib/formulare/formbase.js','../../jslib/core/reisende.js'];

IBE.initOnLoad = function(){
  var mustHave = ['FormBase','termin_min_'+this.port,'termin_max_'+this.port,'Zeitraum','Reisende','Terminauswahl','arrMarke_'+this.port];
  var injObj   = {SucheERDE:[],Zeitraum:[],Reisende:[this.req['personen']]};
  if(this.req['formular']=='4')
    mustHave = mustHave.concat(['Zielauswahl','TTREGS_'+this.port,'optZielOrt','optThemes']);
  else if(this.req['formular']=='5')
    mustHave.push('arrLaender');
  else
    mustHave = mustHave.concat(['Zielauswahl','TTRZ_ERDE','optZielOrt','optThemes']);

  for(var i=0;i<mustHave.length;++i){
    if(typeof(window[mustHave[i]])=='undefined'){
      window.setTimeout("IBE.initOnLoad()",20);return;
    }
  }
  this.inject(injObj); this.init();
};

/**
*Wird nur bei Formular 5 verwendet. Wird aufgerufen, nachdem eine Javascript-Ortsdatei
*in den Iframe geladen wurde aktualisiert die Ortsauswahlbox entsprechend
*/
function showOrte(){
  var i,lbl,val;
  var tmp  = [];
  
  var expr = new RegExp(" "+IBE.req['orte_IFF']+"$","");
  var selectbox = document.getElementById("selOrte");
  if(selectbox){
    for(i=selectbox.length-1;i>0;i--) selectbox.options[i] = null;
    for(i=0;i<arrOrte.length;i++){
      tmp = arrOrte[i].split('#');
      val = tmp[0];lbl = tmp[1];
      selectbox.options[i+1] = new Option(lbl,val);
      if(IBE.req['orte_IFF']!="" && expr.exec(val)!=null){
        selectbox.options[i+1].selected =true;
      }
    }
  }
}

/**
*@constructor
*@extends FormBase
*@requires Terminauswahl
*@requires Zielauswahl
*@requires Reisende
*@requires Kalender
*/
function SucheERDE(){
  FormBase.apply(this);
  Terminauswahl.apply(this);
  if(this.req['formular']=='4') Zielauswahl.apply(this,[]);
  if(this.req['formular']=='2') Zielauswahl.apply(this,[]);

  /**
  *Ändert die Bilder entsprechend der Thema-Auswahl (Formular 4)
  */
  this.chgImg=function(){
    var val= imgThemeId[document.forms[this.formname].uthema.value];
    if(document.images["f1"].src!=window.location.protocol+'//'+window.location.hostname+this.req['imgPfad']+"/forms/theme/"+val+"_1."+this.req['imgFormat']){
      fImg1 = new Image();fImg2 = new Image();
      fImg1.src = this.req['imgPfad']+"/forms/theme/"+val+"_1."+this.req['imgFormat'];
      fImg2.src = this.req['imgPfad']+"/forms/theme/"+val+"_2."+this.req['imgFormat'];
      document.images["f1"].src= fImg1.src;
      document.images["f2"].src= fImg2.src;
      document.forms[this.formname].ziel.focus();
    }
  };

  /**
  *Prüft auf gültige LänderID
  */
  this.is_land = function(idland){
    var expr = new RegExp(idland+"#","");
    for(var i=0;i<arrLaender.length;i++){
      if(expr.exec(arrLaender[i])!=null) return true;
    }
    return false;
  }

  /**
  *Nur bei Formular 5: Füllt die Land-Selectbox
  */
  this.showLaender = function(){
    var i,lbl,val,sel;
    var tmp= [];
    var selectbox = document.getElementById("selLaender");
    for(i=selectbox.length-1;i>=0;i--) selectbox.options[i] = null;
    for(i=0;i<arrLaender.length;i++){
      tmp = arrLaender[i].split('#');
      val = tmp[0];lbl = tmp[1];
      selectbox.options[i] = new Option(lbl,val);
      if(IBE.req['selLand']==val){
        selectbox.options[i].selected = true;
        this.req['orte_max']=tmp[2];
      }
    }
  }

  /**
  *nur bei Formular 5 verwendet. Läd eine neue Orte-Javascript Datei in den Iframe
  *nachdem die Datei geladen ist wird die globale Funktion "showOrte()" aufgerufen,
  *die die Ortsauswahlbox entsprechend aktualisiert
  */
  this.updateOrte = function(){
    var aktLand    = document.getElementById("selLaender").value;
    var tmp  = arrLaender[document.getElementById("selLaender").selectedIndex].split('#');
    this.req['orte_max'] = tmp[2];
    var iFrameOrte = document.getElementById("iframeOrte");
    iFrameOrte.src = "../../js/iff_orte/getOrte_js.php?selLand="+aktLand;
  }

  /**
  *booking_action
  */
  this.booking_action = function(){
    var bform=document.forms[this.formname];
    if(this.req['orte_IFF']!=0 && bform.formular.value=='4'){
      if(document.forms[this.formname].zielOrt.value != '-1'){
        var splitter = document.forms[this.formname].zielOrt.value.split(' ');
        bform.topRegion.value = splitter[0];
        bform.IFFOrt.value    = splitter[1];
        this.BookingAction('hotel');
      }else{
        bform.topRegion.value = '';
        bform.IFFOrt.value = '-1';
        this.BookingAction('zielgebiet');
      }
    }else if(bform.formular.value=='5'){
      if(document.forms[this.formname].zielOrt.value!=""){
        var tmp = document.forms[this.formname].zielOrt.value.split(' ');
        bform.topRegion.value = tmp[0];
        bform.IFFOrt.value = tmp[1];
        this.BookingAction('hotel');
      }else{
        alert("Proszę wybrać miejscowość.");
      }
    }else
      this.BookingAction('zielgebiet');

  };

  /**
  *BookingAction
  */
  this.BookingAction = function(detail){
    var bform=document.forms[this.formname];
    bform.showresult.value='1';
    if(detail)
      bform.detail.value=detail;
    bform.termin.value=this.req['termin'];
    bform.ruecktermin.value=this.req['ruecktermin'];
    return this.chkFormular();
  };

  /**
  *Formularchekcer
  */
  this.chkFormular = function(){
    var bform=document.forms[this.formname];
    if(this.req['termin']>this.req['ruecktermin']){
      alert("Data powrotu leży przed datą wyjazdu.");
      return false;
    }
    var tmpy=bform.zimmer2;
    if(typeof(tmpy)!='undefined'){
      if(bform.zimmer[6].checked==true && bform.zimmer2.selectedIndex==0){
        alert("Proszę wybrać rodzaj pokoju.");
        bform.zimmer2.focus()
        return false;
      }
    }
    bform.submit();
    return false;
  };

  /**
  *Wird nach dem Laden der Seite ausgeführt
  */
  this.init = function(){
    if(!document.forms[this.formname]) return;

    // Formularfelder füllen
    with(this){
      dauert();
      fillReisende();
      InitDays(1);
      InitMonth(1);
      InitDays(0);
      InitMonth(0);
      UpdateDate('k');
      UpdateDate('rueckk');
      setRadios(['verpflegung','zimmer','kategorie']);
      if(this.req['formular']=='2'){
        fillSels({"zielOrt":optZielOrt,"marke":window["arrMarke_"+this.port],"uthema":optThemes});
        fillSelFromArray("flugdauer",TTRZ_ERDE);
        setRadios(['typ']);
        setChecks(['strand','wellness','familie_kinder','wandern','ski','fparks','golf']);
        setTexts(['shotel']);
        UpdateRegionen();
      }else if(this.req['formular']=='4'){
        fillSels({"zielOrt":optZielOrt,"marke":window["arrMarke_"+this.port],"uthema":optThemes});
        setTexts(['shotel','preis']);
        UpdateRegionen();
      }else if(this.req['formular']=='5'){
        if(!this.is_land(this.req['selLand'])){this.req['selLand']="39";}
        fillSels({"marke":window["arrMarke_"+this.port]});
        showLaender();
        updateOrte();
        setTexts(['shotel','preis']);
      }
      if(typeof(optHbfges)!='undefined'){
        fillSels({"hbfges":optHbfges,"hbfanz":optHbfanz,"hbfempf":optHbfempf});
      }
    }

    var buttons = document.getElementsByName('btnFinden');
    var imgname = this.req['formular']==4?"form4submit":"formsubmit";
    try{
      for(var i=0;i<buttons.length;i++){
        buttons[i].setAttribute("src",imgPfad+"/forms/"+imgname+".gif");
      }
    }catch(e){}
  };
}