function saveForm_ut (formObj) {
  if (!formObj)
    return false;
  var deepLinkParamsArr = new Array();
  /* form fields */
  flightType = formObj["ViewPartSearch[param][type]"];
  for (var i=0; i<flightType.length; i++)
    if (flightType[i].checked == true)
      var flightTypeValue = flightType[i].value;
  deepLinkParamsArr[0] = flightTypeValue;
  deepLinkParamsArr[1] = formObj["ViewPartSearch[param][city_dep]"].value;
  deepLinkParamsArr[2] = formObj["ViewPartSearch[param][city_arr]"].value;
  deepLinkParamsArr[3] = formObj["ViewPartSearch[param][outbound_date_str]"].value;
  deepLinkParamsArr[4] = formObj["ViewPartSearch[param][outbound_dep_datetime]"].selectedIndex;
  deepLinkParamsArr[5] = formObj["ViewPartSearch[param][inbound_date_str]"].value;
  deepLinkParamsArr[6] = formObj["ViewPartSearch[param][inbound_dep_datetime]"].selectedIndex;
  deepLinkParamsArr[7] = formObj["ViewPartSearch[param][cabinclass]"].selectedIndex;
  deepLinkParamsArr[8] = formObj["ViewPartSearch[param][dep_arl]"].selectedIndex;
  deepLinkParamsArr[9] = formObj["ViewPartSearch[param][pax_adt]"].selectedIndex;
  deepLinkParamsArr[10] = formObj["ViewPartSearch[param][pax_chd]"].selectedIndex;
  deepLinkParamsArr[11] = formObj["ViewPartSearch[param][pax_inf]"].selectedIndex;
  var deepLinkParamsStr = "";
  for (var key in deepLinkParamsArr) {
    deepLinkParamsStr += escape(deepLinkParamsArr[key]) + "&";
  }
  /* form fields */
  setCookie("flightIbeForm", escape(deepLinkParamsStr), 60 * 60 * 1000);
  return true;
}
function restoreForm (formObj) {
  if (!formObj)
    return false;
  var flightIbe = getCookie("flightIbeForm");
  if (flightIbe == null)
    return true;
  flightIbe = unescape (flightIbe);
  flightIbe = flightIbe.split ("&");
  for (var i = 0; i < flightIbe.length; ++i)
    flightIbe[i] = unescape (flightIbe[i]);
  /* form fields */
  flightType = formObj["ViewPartSearch[param][type]"];
  for (var i=0; i<flightType.length; i++)
    if (flightType[i].value == flightIbe[0])
      flightType[i].checked = true;
  formObj["ViewPartSearch[param][city_dep]"].value = flightIbe[1];
  formObj["ViewPartSearch[param][city_arr]"].value = flightIbe[2];
  formObj["ViewPartSearch[param][outbound_date_str]"].value = flightIbe[3];
  formObj["ViewPartSearch[param][outbound_dep_datetime]"].selectedIndex = flightIbe[4];
  formObj["ViewPartSearch[param][inbound_date_str]"].value = flightIbe[5];
  formObj["ViewPartSearch[param][inbound_dep_datetime]"].selectedIndex = flightIbe[6];
  formObj["ViewPartSearch[param][cabinclass]"].selectedIndex = flightIbe[7];
  formObj["ViewPartSearch[param][dep_arl]"].selectedIndex = flightIbe[8];
  formObj["ViewPartSearch[param][pax_adt]"].selectedIndex = flightIbe[9];
  formObj["ViewPartSearch[param][pax_chd]"].selectedIndex = flightIbe[10];
  formObj["ViewPartSearch[param][pax_inf]"].selectedIndex = flightIbe[11];
  /* form fields */
  return true;

}
function checkForm_ut (formObj) {
  if (!formObj)
    return false;
  flightType = formObj["ViewPartSearch[param][type]"];
  for (var i=0; i<flightType.length; i++)
    if (flightType[i].checked == true)
    var flightTypeValue = flightType[i].value;
  var msg = "";
  var nowDate = new Date ();
  var nowDateParts = new Array (nowDate.getDate(), nowDate.getMonth(), nowDate.getYear());
  var nowDateUtc = Date.UTC (nowDateParts[2], nowDateParts[1], nowDateParts[0]);
  if (formObj["ViewPartSearch[param][city_dep]"].value.length < 3) {
    if (msg == "")
      formObj["ViewPartSearch[param][city_dep]"].focus ();
    msg += "Die Angabe bei Abflughafen muss mind. 3 Zeichen lang sein. Bitte ergänzen Sie Ihre Angabe bei Abflughafen.\n\n";
  }
  if (formObj["ViewPartSearch[param][city_arr]"].value.length < 3) {
    if (msg == "")
      formObj["ViewPartSearch[param][city_arr]"].focus ();
    msg += "Die Angabe bei Zielflughafen muss mind. 3 Zeichen lang sein. Bitte ergänzen Sie Ihre Angabe bei Zielflughafen.\n\n";
  }
  if (formObj["ViewPartSearch[param][outbound_date_str]"].value.length < 6 || formObj["ViewPartSearch[param][outbound_date_str]"].value.length > 10) {
    if (msg == "")
      formObj["ViewPartSearch[param][outbound_date_str]"].focus ();
    msg += "Die Angabe bei Abflugtermin muss dem Format TT.MM.JJJJ entsprechen. Bitte korrigieren Sie Ihre Angabe bei Abflugtermin.\n\n";
  } else {
    var outDateParts = formObj["ViewPartSearch[param][outbound_date_str]"].value.split (".");
    outDateParts[1] = outDateParts[1] - 1;
    if (outDateParts[2].length == 2)
      outDateParts[2] = "20" + outDateParts[2];
    var outDate = new Date (outDateParts[2], outDateParts[1], outDateParts[0]);
    if (! outDate || outDate == "NaN" || outDate == "Invalid Date") {
      if (msg == "")
        formObj["ViewPartSearch[param][outbound_date_str]"].focus ();
      msg = "Die Angabe bei Abflugtermin muss dem Format TT.MM.JJJJ entsprechen. Bitte korrigieren Sie Ihre Angabe bei Abflugtermin.\n\n";
      alert (msg);
      return false;
    }
    var outDateUtc = Date.UTC (outDateParts[2], outDateParts[1], outDateParts[0]);
    if (outDateUtc < nowDateUtc) {
      if (msg == "")
        formObj["ViewPartSearch[param][outbound_date_str]"].focus ();
      msg = "Die Angabe bei Abflugtermin liegt in der Vergangenheit. Bitte korrigieren Sie Ihre Angabe bei Abflugtermin.\n\n";
      alert (msg);
      return false;
    }
    if (outDateUtc < (nowDateUtc + (60*60*24*4)) ) {
      if (msg == "")
        formObj["ViewPartSearch[param][outbound_date_str]"].focus ();
      msg = "Bitte beachten Sie die Mindestzeitspanne von 4 Tagen zum Abflug. Bitte korrigieren Sie Ihre Angabe bei Abflugtermin.\n\n";
      alert (msg);
      return false;
    }
  }
  if (flightTypeValue == "RT") {
    if (formObj["ViewPartSearch[param][inbound_date_str]"].value.length < 6 || formObj["ViewPartSearch[param][inbound_date_str]"].value.length > 10) {
      if (msg == "")
        formObj["ViewPartSearch[param][inbound_date_str]"].focus ();
      msg += "Bitte korrigieren Sie Ihre Angabe bei Rückflugtermin. Die Angabe muss dem Format TT.MM.JJJJ entsprechen.\n\n";
    } else {
      var inDateParts = formObj["ViewPartSearch[param][inbound_date_str]"].value.split (".");
      inDateParts[1] = inDateParts[1] - 1;
      if (inDateParts[2].length == 2)
        inDateParts[2] = "20" + inDateParts[2];
      var inDate = new Date (inDateParts[2], inDateParts[1], inDateParts[0]);
      if (! inDate || inDate == "NaN" || inDate == "Invalid Date") {
        if (msg == "")
          formObj["ViewPartSearch[param][inbound_date_str]"].focus ();
        msg = "Die Angabe bei Rückflugtermin muss dem Format TT.MM.JJJJ entsprechen. Bitte korrigieren Sie Ihre Angabe bei Rückflugtermin.\n\n";
        alert (msg);
        return false;
      }
      var inDateUtc = Date.UTC (inDateParts[2], inDateParts[1], inDateParts[0]);
      if (inDateUtc < outDateUtc) {
        if (msg == "")
          formObj["ViewPartSearch[param][inbound_date_str]"].focus ();
        msg = "Die Angabe bei Rückflugtermin liegt vor dem Abflugtermin. Bitte korrigieren Sie Ihre Angabe bei Rückflugtermin.\n\n";
        alert (msg);
        return false;
      }
    }
  }
  if (msg != "") {
    alert (msg);
    return false;
  }
  else {
  saveForm_ut(formObj);
  //formObj.submit();
  return true; }
}