var arrForms = new Array("lf","cf","lmps","erde");
var arrMonth = new Array("Jan.","Feb.","M&auml;rz","April","Mai","Juni",
                         "Juli","Aug.","Sep.","Okt.","Nov.","Dez.");

Date.prototype.addMonth=function(month){
  if(typeof(month)=='undefined') month=1;
  month = parseInt(month);
  var years=Math.floor(month/12);
  this.addYear(years);
  month = month%12;
  if((this.getMonth()+month)>11){
    this.addYear();
    this.setMonth((this.getMonth()+month)%12);
  }else{
    this.setMonth(this.getMonth()+month);
  }
}

Date.prototype.addYear=function(years){
  if(typeof(years)=='undefined') years=1;
  years = parseInt(years);
  var aktYear = this.getFullYear();
  this.setYear(aktYear+years);
}

Date.prototype.addDay=function(days){
  if(typeof(days)=='undefined') days=1;
  days = parseInt(days);
  var aktTs = this.getTime();
  var addTs = days*86400000;
  this.setTime(aktTs+addTs);
}

function showForm(fType){
  for(var i in arrForms){
    closeKindSelect(arrForms[i]);
    document.getElementById("formdiv_"+arrForms[i]).style.display="none";
  }
  document.getElementById("formdiv_"+fType).style.display="block";
  document.getElementById("radio_"+fType).checked=true;
  if(fType == 'lf'){
    document.getElementById('qfBtnErweiterteSucheDiv').style.display = 'none';
  }
  else{
    document.getElementById('qfBtnErweiterteSucheDiv').style.display = 'block';
  }
}

function openKindSelect(fType,selBox){
  var strInnerHTML="";
  var elem = document.getElementById("kindSelect_"+fType);
  if(elem.style.display=="block"){
    closeKindSelect(fType);
    selBox.focus();
  }else{
    elem.style.display="block";
    if(elem.innerHTML==""){
      strInnerHTML = '<table cellspacing="0" cellpadding="0" border="0" width="100%">'
                    +'  <tr>'
                    +'    <td><span class="qfHeadline">Kinder</span></td>'
                    +'    <td align="right" style="vertical-align:top;padding-bottom:3px;"><a href="javascript:closeKindSelect(\''+fType+'\');" title="schliessen"><img src="/kunden_parameter/travel24/tpl/images/qf/schliessenX.gif" width="17" height="16" border="0" alt="schliessen"></a></td>'
                    +'  </tr>'
                    +'  <tr>'
                    +'    <td colspan="2" class="qfTrennerMitte"></td>'
                    +'  </tr>'
                    +'  <tr>'
                    +'    <td colspan="2"><br>Alter bei Reiseantritt</td>'
                    +'  </tr>'
                    +'<table>';
      strInnerHTML += getKindSelectBoxes(fType);
      strInnerHTML +='<table cellspacing="0" cellpadding="0" border="0" width="100%">'
                    +'  <tr>'
                    +'    <td align="right"><br><a href="javascript:setKinder(\''+fType+'\');" title="weiter"><img src="/kunden_parameter/travel24/tpl/images/qf/weiter2.gif" width="85" height="18" border="0" alt="weiter"></a></td>'
                    +'<table>';
      elem.innerHTML = strInnerHTML;
    }
    document.forms[fType].alterKind1.focus();
    document.getElementById("imgSuche").style.visibility="hidden";
  }
}

function getKindSelectBoxes(fType){
  var i,j,iAnz,iAlterMax;
  var strRes="<br>";
  switch(fType){
    case "lf":   iAnz=3;iAlterMax=11;break;
    case "cf":   iAnz=3;iAlterMax=16;break;
    case "lmps": iAnz=3;iAlterMax=16;break;
    case "fhm":  iAnz=2;iAlterMax=16;break;
    case "erde": iAnz=3;iAlterMax=16;break;
    default:     iAnz=2;iAlterMax=14;
  }
  for(i=1;i<=iAnz;i++){
    strRes += i+'. Kind&nbsp;<select name="alterKind'+i+'" class="qfSelectAlterKind" id="alterKind'+i+'_'+fType+'">'
            + '<option value="-1">---</option>'
            + '<option value="1">&lt 2 Jahre</option>';
    for(j=2;j<=iAlterMax;j++){
      strRes += '<option value="'+j+'">'+j+' Jahre</option>';
    }
    strRes += '</select><br>';
  }
  return strRes;
}

function getAfhOptions(fTyp){
  var arrData = new Array();
  var selAfh="";
  switch(fTyp){
    case "lf": arrData=arrAfh_lf;selAfh="FRA";break;
    case "cf": arrData=arrAfh_cf;break;
    case "lmps": arrData=arrAfh_lmps;break;
    case "fhm": arrData=arrAfh_fhm;selAfh="FRA";break;
  }
  getOptions(arrData,selAfh);
}

function getZielOptions(fTyp){
  var arrData = new Array();
  var selZiel="";
  switch(fTyp){
    case "erde": arrData=arrZiele_erde;break;
    case "cf": arrData=arrZiele_cf;break;
    case "lmps": arrData=arrZiele_lmps;break;
    case "fhm": arrData=arrZiele_fhm;selZiel="602317";break;
  }
  getOptions(arrData,selZiel);
}

function getRegionOptions(fTyp){
  var arrData = new Array();
  var selZiel="";
  switch(fTyp){
    case "erde": arrData=arrRegions_erde;break;
    case "lmps": arrData=arrRegions_lmps;break;
  }
  getOptions(arrData,selZiel);
}

function getOptions(arrData,defSel){
  var strRes="";
  for(var i=0;i<arrData.length;i++){
    var val = arrData[i].replace(/([^#]*)#([^#]*)/,"$1");
    var lbl = arrData[i].replace(/([^#]*)#([^#]*)/,"$2");
    var sel = val==defSel?" selected":"";
    strRes += '<option value="'+val+'"'+sel+'>'+lbl+'</option>';
  }
  document.write(strRes);
}

function getDauerTage(){
  var strRes="";
  for(var i=2;i<=21;i++)
    strRes += '<option value="6_'+i+'">'+i+' Tage</option>';
  document.write(strRes);
}

function updateRegionen(fTyp,ziel,sel){
  var selBox=document.forms[fTyp].region;
  if(typeof(sel)=='undefined') sel="";
  if(fTyp=="lmps")
    var arrData = arrRegions_lmps;
  else
    var arrData = arrRegions_erde;
  for(var i=selBox.options.length;i>0;i--){
    selBox.options[i]=null;
  }
  for(var i=0;i<arrData.length;i++){
    var val = arrData[i].replace(/([^\|]*)\|([^#]*)#(.*)/,"$1");
    var reg = arrData[i].replace(/([^\|]*)\|([^#]*)#(.*)/,"$2");
    var lbl = arrData[i].replace(/([^\|]*)\|([^#]*)#(.*)/,"$3");
    if(reg==ziel || ziel=="-1")
      selBox.options[selBox.options.length] = new Option(lbl,val+"|"+reg);
    if(sel==val+"|"+reg)
      selBox.options[selBox.options.length-1].selected=true;
  }
}

function updateZiele(fTyp,region){
  if(region!="-1"){
    var ziel = region.replace(/([^\|]*)\|(.*)/,"$2");
    var selBox=document.forms[fTyp].reiseziel;
    selBox.value=ziel;
    updateRegionen(fTyp,ziel,region);
  }
}

function getTagOptions(fType,dir,timestamp){  
  if (timestamp != '') {
     var pDate = new Date();
     pDate.setTime (timestamp * 1000);   
  }
  
  var i,iAb;
  var strRes="";
  var date = new Date();
  var ts_today = date.getTime();
  if(dir=="hin"){
    switch(fType){
      case "lf":   iAb=3;break;
      case "cf":   iAb=3;break;
      case "lmps": iAb=3;break;
      case "fhm":  iAb=3;break;
      case "erde": iAb=3;break;
      default:     iAb=3;
    }
    if (timestamp != '') {
        iAb = 0;
        date = pDate;
    }
  }else{
    switch(fType){
      case "lf":   iAb=26;break;
      case "cf":   iAb=26;break;
      case "lmps": iAb=26;break;
      case "fhm":  iAb=26;break;
      case "erde": iAb=26;break;
      default:     iAb=26;
    }
    if (timestamp != '') {
        iAb = 0;
        date = pDate;
    }
  }
  date.addDay(iAb);
  selTag=date.getDate();
  for(i=1;i<=31;i++){
    var sel=i==selTag?" selected":"";
    var val = i<10?"0"+i:i;
    strRes += '<option value="'+val+'"'+sel+'>'+i+'.</option>';
  }
  document.write(strRes);
}

function getMonthOptions(fType,dir, timestamp){
  if (timestamp != '') {
     var pDate = new Date();
     pDate.setTime (timestamp * 1000);   
  }
  var i,iAb;
  var strRes="";
  var startDate = new Date();
  var selDate = new Date();
  var maxDate = getTerminMax(fType);
  var aktDate = startDate;
  aktDate.setDate(1);
  if(dir=="hin"){
    switch(fType){
      case "lf":   iAb=3;break;
      case "cf":   iAb=3;break;
      case "lmps": iAb=3;break;
      case "fhm":  iAb=3;break;
      case "erde": iAb=3;break;
      default:     iAb=3;
    }
    if (timestamp != '') {
        iAb = 0;
        selDate = pDate;
    }
  }else{
    switch(fType){
      case "lf":   iAb=26;break;
      case "cf":   iAb=26;break;
      case "lmps": iAb=26;break;
      case "fhm":  iAb=26;break;
      case "erde": iAb=26;break;
      default:     iAb=26;
    }
    if (timestamp != '') {
        iAb = 0;
        selDate = pDate;
    }
  }
  selDate.addDay(iAb);
  selDate.setDate(1);
  while((aktDate.getTime()/1000)<=maxDate){
    var sel=(aktDate.getMonth()==selDate.getMonth() && aktDate.getFullYear()==selDate.getFullYear())?" selected":"";
    var val =  (aktDate.getMonth()+1)<10?"0"+(aktDate.getMonth()+1):(aktDate.getMonth()+1);
    strRes += '<option value="'+val+'.'+aktDate.getFullYear()+'"'+sel+'>'+arrMonth[aktDate.getMonth()]+' '+String(aktDate.getFullYear()).substr(2,2)+'</option>';
    aktDate.addMonth();
  }
  document.write(strRes);
}

function updateRuecktermin(fType){
  var sform  = document.forms[fType];
  var date=getSelectedDate(fType,"Hin");
  date.addDay(21);
  if((date.getTime()/1000)>getTerminMax(fType))
    date.setTime(getTerminMax(fType)*1000);
  if(sform.TagRueck){
    var tagRueck = date.getDate();
    if(tagRueck<10) tagRueck = "0"+tagRueck;
    sform.TagRueck.value=tagRueck;
  }
  if(sform.MonatRueck){
    var monRueck = date.getMonth()+1;
    if(monRueck<10) monRueck = "0"+monRueck;
    sform.MonatRueck.value=monRueck+"."+date.getFullYear();
  }
}

function getSelectedDate(fType,dir){
  var sform  = document.forms[fType];
  var selTag = parseInt(sform["Tag"+dir].value,10);
  var selMon = parseInt(sform["Monat"+dir].value.replace(/([0-9]+)\.([0-9]+)/,"$1"),10);
  var selYea = parseInt(sform["Monat"+dir].value.replace(/([0-9]+)\.([0-9]+)/,"$2"),10);
  var date   = new Date(selYea,selMon-1,selTag);
  return date;
}

function getTerminMin(fType){
  var date= new Date();
  date.addDay(3);
  return date.getTime()/1000;
}
function getTerminMax(fType){
  var date= new Date();
  date.addMonth(12);
  return date.getTime()/1000;
}

function openKal(fType,dir){
  var sform = document.forms[fType];
  var top  = screen.height;
  var left = screen.width;
  var posx=((left/2)-100);
  var posy=((top/2)-115);
  var params = '?KID='+KID+'&engine=&formular=4&ordner_name='+ordner_name+'&statistik_tag='+statistik_tag;
  if(dir=="Hin"){
    var selTer = getSelectedDate(fType,"Hin");
    params += '&termin_min='+getTerminMin("fType")+'&termin_max='+getTerminMax("fType")+'&formvar=termin&formvar2=ruecktermin&aufruf_datum_rueck=1&aufruf_datum='+(selTer.getTime()/1000);
  }else if(dir=="Rueck"){
    var selTer = getSelectedDate(fType,"Rueck");
    params += '&termin_min='+getTerminMin("fType")+'&termin_max='+getTerminMax("fType")+'&formvar=ruecktermin&aufruf_datum='+(selTer.getTime()/1000);
  }
  var kalender = window.open(kurl+params,'kalender','width=200,height=230,scrollbars=no,screenX='+posx+',screenY='+posy+',left='+posx+',top='+posy+'');
  kalender.focus();
}

function String2Date(strDate){
  var retTag = parseInt(strDate.replace(/([0-9]+)\.([0-9]+)\.([0-9]+)/,"$1"),10);
  var retMon = parseInt(strDate.replace(/([0-9]+)\.([0-9]+)\.([0-9]+)/,"$2"),10);
  var retYea = parseInt(strDate.replace(/([0-9]+)\.([0-9]+)\.([0-9]+)/,"$3"),10);
  var retDate = new Date(retYea,retMon-1,retTag)
  return retDate;
}

function getActiveForm(){
  for(i=0;i<arrForms.length;i++){
    if(document.getElementById("formdiv_"+arrForms[i]).style.display=="block")
     return arrForms[i];
  }
}

function SetDatum(strDate,strRKenner,noMon){
  var fType=getActiveForm();
  var sform=document.forms[fType];
  var dir=strRKenner==""?"Rueck":"Hin";
  var elemTag = sform["Tag"+dir];
  var elemMon = sform["Monat"+dir];
  var date=String2Date(strDate);
  var valTag=date.getDate();
  if(valTag<10) valTag = "0"+valTag;
  var valMon=date.getMonth()+1;
  if(valMon<10) valMon = "0"+valMon;
  valMon = valMon+'.'+date.getFullYear();
  elemTag.value=valTag;
  elemMon.value=valMon;
  if(dir=="Hin")
    updateRuecktermin(fType);
}

function getErwOptions(fType){
  var i,iAnz;
  var strRes="";
  switch(fType){
    case "lf":   iAnz=4;break;
    case "cf":   iAnz=4;break;
    case "lmps": iAnz=4;break;
    case "fhm":  iAnz=2;break;
    case "erde": iAnz=4;break;
    default:     iAnz=2;
  }
  for(i=1;i<=iAnz;i++){
    var sel=i==2?" selected":"";
    strRes += '<option value="'+i+'"'+sel+'>'+i+' Erw.</option>';
  }
  document.write(strRes);
}

function setKinder(fType){
  var anzKinder = 0;
  var sform=document.forms[fType];
  if(sform.alterKind1 && sform.alterKind1.value!="-1") anzKinder++;
  if(sform.alterKind2 && sform.alterKind2.value!="-1") anzKinder++;
  if(sform.alterKind3 && sform.alterKind3.value!="-1") anzKinder++;
  if(sform.alterKind4 && sform.alterKind4.value!="-1") anzKinder++;
  if(anzKinder==1) strRes="1 Kind";
  else if(anzKinder>1) strRes=anzKinder+" Kin.";
  else strRes="Kinder";
  sform.selAnzKinder.options[0].text=strRes;
  closeKindSelect(fType);
}

function closeKindSelect(fType){
  if(fType != 'lf'){
    document.getElementById("kindSelect_"+fType).style.display="none";
    document.getElementById("imgSuche").style.visibility="visible";
  }
}

function erweiterteSuche(){
  var selForm = "lmps";
  var formid = "";
  var arrRadio = document.getElementsByName("formSelect");
  for(var i=0;i<arrRadio.length;i++)
    if(arrRadio[i].checked==true) selForm=arrRadio[i].value;
  switch(selForm){
    case "lf":formid="linienflug0";break
    case "cf":formid="charterflug";break
    case "lmps":formid="lamipauschal";break
    case "fhm":formid="87";break
    case "erde":formid="hotel";break
  }
  urlParams = "?id="+formid;
  document.location.href=url+"/index.php"+urlParams;
}

function zurSuche(){
  var selForm = "lmps";
  var formid = "";
  var params = "";
  var arrRadio = document.getElementsByName("formSelect");
  for(var i=0;i<arrRadio.length;i++)
    if(arrRadio[i].checked==true) selForm=arrRadio[i].value;
  var sform = document.forms[selForm];
  switch(selForm){
    //case "lf":formid="lfergebnis";break
    case "cf":formid="cfergebnis";break
    case "lmps":formid="lmpergebnis";break
    //case "fhm":formid="lmergebnis";break
    case "erde":formid="hergebnis";break
  }
  if(selForm=="lmps"){
    var formid="lmpergebnis";
    var abflughafen = "-1";
    var flugdauer = sform.flugdauer.value;
    var region = "-1";
    var detail = "zielgebiet";
    var termin= sform.TagHin.value+"."+sform.MonatHin.value;
    var ruecktermin= sform.TagRueck.value+"."+sform.MonatRueck.value;
    var dauer = sform.dauer.value;
    var kategorie = "-1";
    var anzErw = "2";
    var personen="";
    for(var i=0;i<anzErw;i++){personen+="25;";}
    for(i=1;i<=3;i++){
      if(sform["alterKind"+i] && sform["alterKind"+i].value!="-1")
        personen += sform["alterKind"+i].value+";";
    }
    personen  = personen.substr(0,personen.length-1);
    params = '?KID='+KID+'&id='+formid+'&showresult=1&detail='+detail+'&abflughafen='+abflughafen+'&flugdauer='+flugdauer+'&ziel='+flugdauer+'&region='+region+'&termin='+termin+'&ruecktermin='+ruecktermin+'&dauer='+dauer+'&kategorie='+kategorie+'&personen='+personen;
  }else if(selForm=="lf"){
    var formid="linienflug0";
    var abflughafen = sform.abflughafen.value;
    if(abflughafen==""){
      alert("Bitte einen Abflughafen eingeben!");
      sform.abflughafen.focus();
      return false;
    }
    var ziel = sform.reiseziel.value;
    if(ziel==""){
      alert("Bitte ein Reiseziel eingeben!");
      sform.reiseziel.focus();
      return false;
    }
    var hinday= sform.TagHin.value;
    var hinmonth= sform.MonatHin.value.split('.');
    var rueckday= sform.TagRueck.value;
    var rueckmonth= sform.MonatRueck.value.split('.');
    var anzErw = 2;
    var anzKid = "";
    var anzKKid = "";
    var extFlightUrl = "http://www.flug24.de/flight/wait/?";
    params = 'sFlightInput[depCity]=' + abflughafen + '&sFlightInput[arrCity]=' + ziel + '&sFlightInput[outbound_date_day]=' + hinday + '&sFlightInput[outbound_date_month]=' + hinmonth[0] + '.' + hinmonth[1]
             + '&sFlightInput[inbound_date_day]=' + rueckday + '&sFlightInput[inbound_date_month]=' + rueckmonth[0] + '.' + rueckmonth[1] + '&sFlightInput[paxAdt]=' + anzErw + '&sFlightInput[paxChd]=' + anzKid + '&sFlightInput[paxInf]=' + anzKKid + '&sFlightInput[cabinClass]=Y&tc_travel24=' + tc_travel24;
    //params = '?id='+formid+'&from='+abflughafen+'&Day='+parseInt(hinday,10)+'&month_1='+parseInt(hinmonth[0],10)+'-'+parseInt(hinmonth[1],10)+'&to='+ziel+'&RetDay='+parseInt(rueckday,10)+'&month_2='+parseInt(rueckmonth[0],10)+'-'+parseInt(rueckmonth[1],10)+'&pax='+anzErw+'&pax_chd='+anzKid+'&pax_inf='+anzKKid;
  	//document.location.href = extFlightUrl + params;
  	var w = window.open(extFlightUrl + params, '_blank');
  	w.focus();
  	return false;
  }else if(selForm=="cf"){
    var formid="cfergebnis";
    var abflughafen = sform.abflughafen.value;
    var ziel = sform.reiseziel.value;
    var termin= sform.TagHin.value+"."+sform.MonatHin.value;
    var ruecktermin= sform.TagRueck.value+"."+sform.MonatRueck.value;
    var dauer = sform.dauer.value;
    var anzErw = parseInt(sform.anzErwachsene.value);
    var personen="";
    for(var i=0;i<anzErw;i++){personen+="25;";}
    for(i=1;i<=3;i++){
      if(sform["alterKind"+i] && sform["alterKind"+i].value!="-1")
        personen += sform["alterKind"+i].value+";";
    }
    personen  = personen.substr(0,personen.length-1);
    params = '?KID='+KID+'&id='+formid+'&showresult=1&detail=zielgebiet&nurflug=1&abflughafen='+abflughafen+'&flugdauer='+ziel+'&termin='+termin+'&ruecktermin='+ruecktermin+'&dauer='+dauer+'&personen='+personen;
  }else if(selForm=="fhm"){
    var formid="flughotelmix";
    var abflughafen = sform.abflughafen.value;
    var ziel = sform.reiseziel.value;
    var termin= sform.TagHin.value+"."+sform.MonatHin.value;
    var ruecktermin= sform.TagRueck.value+"."+sform.MonatRueck.value;
    termin = termin.replace(/\./g,"/");
    ruecktermin = ruecktermin.replace(/\./g,"/");
    var kategorie = sform.kategorie.value;
    var anzErw = parseInt(sform.anzErwachsene.value);
    var anzKinder=0;
    var arrChildAge = new Array();
    for(i=1;i<=2;i++){
      if(sform["alterKind"+i] && sform["alterKind"+i].value!="-1"){
        anzKinder++;
        arrChildAge[i]=sform["alterKind"+i].value;
      }
      else{arrChildAge[i]=99;}
    }
    arrChildAge.sort();
    params = '?KID='+KID+'&id='+formid+'&EAPID=247-30032&&GOTO=PACKAGEWIZ&PackageType=2&Lang=103&GOTO=PACKAGEWIZ&FrAirport='+abflughafen+'&DestID='+ziel+'&FromDate='+termin+'&ToDate='+ruecktermin+'&inpStar='+kategorie+'&NumAdult='+anzErw;
    if(anzKinder>0){
      arrChildAge[1]=arrChildAge[1]==99?"":arrChildAge[1];
      params+='&NumChild='+anzKinder;
      params+='&Child1Age='+arrChildAge[0];
      params+='&Child2Age='+arrChildAge[1];
    }
  }else if(selForm=="erde"){
    var formid="hergebnis";
    var ziel = sform.reiseziel.value;
    var region = "-1";
    var detail = "zielgebiet";
    var termin= sform.TagHin.value+"."+sform.MonatHin.value;
    var ruecktermin= sform.TagRueck.value+"."+sform.MonatRueck.value;
    var dauer = sform.dauer.value;
    var kategorie = "-1"
    var anzErw = "2";
    var personen="";
    for(var i=0;i<anzErw;i++){personen+="25;";}
    for(i=1;i<=3;i++){
      if(sform["alterKind"+i] && sform["alterKind"+i].value!="-1")
        personen += sform["alterKind"+i].value+";";
    }
    personen  = personen.substr(0,personen.length-1);
    params = '?KID='+KID+'&id='+formid+'&showresult=1&detail='+detail+'&ziel='+ziel+'&region='+region+'&termin='+termin+'&ruecktermin='+ruecktermin+'&dauer='+dauer+'&kategorie='+kategorie+'&personen='+personen;
  }
  document.location.href=url+"/index.php"+params;
}