/**
*@fileoverview In dieser Datei wird die Zeitraumberechnung definiert
*@author Guido Fünders, fuenders@traveltainment.de
*/

/**
*Enthält und berechnet die in der IBE verfügbaren Zeiträume
*@param {int} termin_min termin_min von der Engine (Timestamp)
*@param {int} termin_max termin_max von der Engine (Timestamp)
*@constructor
*@extends TTIBE
*/
function Zeitraum(){

  var today = (new Date()).resetTime();
  /**
  *Timestamp
  *@type int
  */
  this.termin_min = window["termin_min_"+this.port] || '';
  /**
  *Timestamp
  *@type int
  */
  this.termin_max = window["termin_max_"+this.port] || '';

  // Falls Engine nicht läuft
  if(this.termin_min==''){
    this.termin_min = ((new Date()).resetTime().getTime()/1000);
    if(this.req['engine']=="pauschal")
      this.termin_max = (new Date()).addDay(180).resetTime().getTime()/1000;
    else
      this.termin_max = (new Date()).addDay(24).resetTime().getTime()/1000;
  }

  if(typeof(this.req['min_termin_kunde'])!='undefined' && this.req['min_termin_kunde']!='')
    this.termin_min = this.termin_min + (86400 * parseInt(this.req['min_termin_kunde'],10));

  if((today.getTime()/1000)>this.termin_min)
    this.termin_min = parseInt(today.getTime()/1000);

  // im Formular eingestellter Termin (tmpst)
  if(this.req['termin']=='') {
    if(this.req['engine']=='pauschal')
      this.req['termin']=(new Date(this.termin_min*1000)).addDay(44).getTime()/1000;
    else
      this.req['termin']=this.termin_min;
  }else if(String(this.req['termin']).search(/\./)!=-1){
    var tlist = this.req['termin'].split('.');
    this.req['termin'] = (new Date(tlist[2],parseInt(tlist[1],10)-1,parseInt(tlist[0],10))).getTime()/1000;
  }
  
  //falls termin kleiner als termin_min ist
  if(this.req['termin']<this.termin_min){
    this.req['termin']=this.termin_min;
  }
  var termin_min2    = new Date(this.termin_min*1000);
  /**
  *von IBE moeglicher erster Termin (DD.MM.YYYY)
  *@type String
  */
  this.erster_termin =twoDigit(termin_min2.getDate())+"."+twoDigit(termin_min2.getMonth()+1)+"."+termin_min2.getFullYear();
  
  var termin2        = new Date(this.req['termin']*1000);
  /**
  *im Formular eingestellter Termin (DD.MM.YYYY)
  *@type String
  */
  this.termin_hin    = twoDigit(termin2.getDate())+"."+twoDigit(termin2.getMonth()+1)+"."+termin2.getFullYear();
  
  // im Formular eingestellter Ruecktermin (timestamp)
  if(this.req['ruecktermin']==''){
    if(this.req['engine']=='pauschal')
      this.req['ruecktermin']=this.termin_min+(86400*65);
    else{
      this.req['ruecktermin']=parseInt((new Date()).addDay(24).getTime()/1000);
    }
    if(this.req['ruecktermin']<=this.req['termin'])
      this.req['ruecktermin']=this.req['termin']+(86400*21);

    if(this.req['ruecktermin']>this.termin_max)
      this.req['ruecktermin']=this.termin_max;
  }else if(String(this.req['ruecktermin']).search(/\./)!=-1){
    var tlist = this.req['ruecktermin'].split('.');
    this.req['ruecktermin'] = (new Date(tlist[2],parseInt(tlist[1],10)-1,parseInt(tlist[0],10))).getTime()/1000;
  }
  else if(String(this.req['ruecktermin']).search(/_/)!=-1)
  {
    var tlist = this.req['ruecktermin'].split('_');
    this.req['ruecktermin'] = (today.getTime()/1000)+($tlist[0]-3)*86400;
  }
  else if (this.req['ruecktermin']=="-1"){
    this.req['ruecktermin']=this.termin_max;
  }

  var termin_max2 = (new Date(this.termin_max*1000)).addDay(-14).resetTime();
  /**
  *von IBE moeglicher letzter Termin (DD.MM.YYYY)
  *@type String
  */
  this.letzter_termin_hin=twoDigit(termin_max2.getDate())+"."+twoDigit(termin_max2.getMonth()+1)+"."+termin_max2.getFullYear();

  /**
  *von IBE moeglicher letzter Termin  (Timestamp)
  *@type int
  */
  this.letzter_termin_hin_stamp=termin_max2.getTime()/1000;

  termin_max2 = (new Date(this.termin_max*1000)).addDay().resetTime();
  /**
  *von IBE moeglicher letzter RuckTermin (DD.MM.YYYY)
  *@type String
  */
  this.letzter_termin_rueck = twoDigit(termin_max2.getDate())+"."+twoDigit(termin_max2.getMonth()+1)+"."+termin_max2.getFullYear();

  /**
  *Datum im Format DD.MM.YYYY
  *@type String
  */
  this.letzter_termin=this.letzter_termin_rueck;
  /**
  *Timestamp
  *@type int
  */
  this.letzter_termin_rueck_stamp= termin_max2.getTime()/1000;

  termin_max2 = (new Date(this.req['ruecktermin']*1000)).resetTime();
  /**
  *im Formular eingestellter Rucktermin (DD.MM.YYYY)
  *@type String
  */
  this.termin_rueck=twoDigit(termin_max2.getDate())+"."+twoDigit(termin_max2.getMonth()+1)+"."+termin_max2.getFullYear();
}