var stringDep = 'Départ';
var stringArr = 'Retour';
var iataChoosen = '';

var booking = new Array();
booking[booking.length] = new Array("DEP_0", "value.length > 0", "Spécifiez la destination d\'origine");
booking[booking.length] = new Array("ARR_0", "value.length > 2", "Spécifiez la destination finale");
booking[booking.length] = new Array("DAY_0", "value.length > 0", "Spécifiez une date de départ valable");
booking[booking.length] = new Array("DAY_1", "value.length > 0", "Spécifiez une date de retour valable");
booking[booking.length] = new Array("MONTH_0", "value.length > 0", "Spécifiez une date de départ valable");
booking[booking.length] = new Array("MONTH_1", "value.length > 0", "Spécifiez une date de retour valable");
booking[booking.length] = new Array("ADTCOUNT", "value > 1", "Choisissez deux passagers au moins !");

function nastavPrekryv(status) {
    if (status) {
        document.getElementById('depIataID').disabled = true;
        document.getElementById('monthYearFromID').disabled = true;
        document.getElementById('monthYearToID').disabled = true;
        document.getElementById('passengers').disabled = true;
        document.getElementById('idPravyBlok').className = 'hp_box_pravy grey_pravy'; 
        document.getElementById('divPruhledny2').style.display = 'block';
    } else {
        document.getElementById('depIataID').disabled = false;
        document.getElementById('monthYearFromID').disabled = false;
        document.getElementById('monthYearToID').disabled = false;
        document.getElementById('passengers').disabled = false;
        document.getElementById('idPravyBlok').className = 'hp_box_pravy'; 
        document.getElementById('divPruhledny2').style.display = 'none';
    }
}

function manageDate() {
    
    var day = '';
    var month = '';    
    var year = '';    
    var sDate = '';    
    var eDate = '';    
    var day = '';            
    result = false;

    // Zadani FROM
    // Zjisti rok a nastavi do hidden elementu pro odeslani do IBS
    var dateS = new Date('2010', '1', '19', 0, 0, 0);
    var dateE = new Date('2010', '3', '31', 0, 0, 0);    
    
    var dateMonth = jQ('#monthYearFromID :selected').text();
    var parseMonth = dateMonth.split(" - ");

    if (parseMonth[1] == 'undefined') {
        var date = new Date();
        year = date.getFullYear();
    } else {
        year = parseMonth[1];
    }

    jQ('#yearFromID').val(year);
    
    // Test datumu FROM
    day = jQ('#dayFromID').val();
    month = jQ('#monthYearFromID').val();
    var dateTS = new Date(year, month, day);
    
    if (dateTS < dateS) {
        dateTS = dateS;
        jQ('#dayFromID').val(dateTS.getDate());     
        jQ('#monthYearFromID').children('[@value="' + dateTS.getMonth() + '"]').attr("selected","selected"); 
    }
    
    /*if ( (dateS < dateTS) && (dateTS <dateE) ) {
        //result = true;
    } else {
        jQ('#dayFromID').val(dateE.getDate());
        result = false;
    }*/
    
    // Zadani TO
    // Zjisti rok a nastavi do hidden elementu pro odeslani do IBS
    var dateS = new Date('2010', '1', '25', 0, 0, 0);
    var dateE = new Date('2010', '4', '30', 0, 0, 0);    
    
    var dateMonth = jQ('#monthYearToID :selected').text();
    var parseMonth = dateMonth.split(" - ");

    if (parseMonth[1] == 'undefined') {
        var date = new Date();
        year = date.getFullYear();
    } else {
        year = parseMonth[1];
    }
    jQ('#yearToID').val(year);
    
    // Test datumu TO
    day = jQ('#dayToID').val();
    month = jQ('#monthYearToID').val();
    var dateTE = new Date(year, month, day);
    
    /*if ( (dateS < dateTE) && (dateTE <dateE) ) {
        //result = true;
    } else {
        jQ('#dayToID').val(dateE.getDate());
        result = false;
    }*/
    if (dateTE < dateS) {
        dateTE = dateS;
        jQ('#dayToID').val(dateTE.getDate());     
        jQ('#monthYearToID').children('[@value="' + dateTE.getMonth() + '"]').attr("selected","selected"); 
    }
    
    if (dateE < dateTE) {
        dateTE = dateE;
        jQ('#dayToID').val(dateTE.getDate());     
        jQ('#monthYearToID').children('[@value="' + dateTE.getMonth() + '"]').attr("selected","selected"); 
    }

    /*
    if (((dateTE - dateTS) / (24 * 3600 * 1000)) > 30) {
        var dateRep = new Date();
        dateRep.setTime(dateTS.getTime() + (1000 * 24 * 31 * 3600));
        if (dateRep > dateE) {
            dateRep = dateE;
        }
        jQ('#dayToID').val(dateRep.getDate());     
        jQ('#monthYearToID').children('[@value="' + dateRep.getMonth() + '"]').attr("selected","selected"); 
    }
    */
}

function deactiveBloky() {
    document.getElementById('divPruhledny1').style.display = "block";
    document.getElementById('idStredniBlok').className = "hp_box_stredni grey_stredni";
    document.getElementById('airportID').selectedIndex = "";
    setSourceDestination(document.getElementById('airportID'));
    nastavPrekryv(true);
}

function nastavHodnotu(targetDestination) {

      var targetInput = null
      var formattedDestinationName = new String;
      
      formattedDestinationName = targetDestination;
      //formattedDestinationName = formattedDestinationName.substring(0, formattedDestinationName.indexOf(" ("));
      
      try {
        targetInput = document.getElementById('arrIataID');
        targetInput.value = formattedDestinationName;
      } catch(eException) {
      }
  
}
      
function setSourceDestination(sourceElement) {
      var offersList = new Array();
      var divListAll = null;
      var sourceIATA = "";
      var offerIndex = 0;
      var sourceSelect = null;
      var iataList = new Array();
      var classPreference = null;
      var classPreferencePrefix = "Y";
      var nIterator = 0;
      
      /*classPreference = document.getElementById('classPrefYID');
      if(classPreference.checked == false) {
        classPreferencePrefix = "C";
      }*/
    
      // Nastaveni druheho comboboxu na shodnou hodnotu.
      if(sourceElement.id != "depIataID") {
        try {
          document.getElementById('depIataID').selectedIndex = sourceElement.selectedIndex;
        } catch(eException) {
        }
      } else {
        try {
          document.getElementById('airportID').selectedIndex = sourceElement.selectedIndex;
        } catch(eException) {
        }
      }
      
      // Skryti ostatnich nabidek, zobrazeni pro vybrane.
      if(sourceElement.selectedIndex == 0) {
        try {
        
          document.getElementById('emptyBlock').style.visibility = "visible";
          document.getElementById('emptyBlock').style.display = "block";
          document.getElementById('divPruhledny1').style.display = "block";
          document.getElementById('idStredniBlok').className = 'hp_box_stredni grey_stredni';
          nastavPrekryv(true);
          //document.getElementById('box_nabidkaID').style.visibility = "hidden";
          //document.getElementById('box_nabidkaID').style.display = "none";
          //document.getElementById('box_rezervaceID').style.visibility = "hidden";
          //document.getElementById('box_rezervaceID').style.display = "none";
          //document.getElementById('box_tarifID').style.visibility = "hidden";
          //document.getElementById('box_tarifID').style.display = "none";
        } catch(eException) {
        }
      } else {
        try {
          document.getElementById('emptyBlock').style.visibility = "hidden";
          document.getElementById('emptyBlock').style.display = "none";
          document.getElementById('divPruhledny1').style.display = "none";
          document.getElementById('idStredniBlok').className = 'hp_box_stredni';
          nastavPrekryv(true);
          //document.getElementById('box_nabidkaID').style.visibility = "visible";
          //document.getElementById('box_nabidkaID').style.display = "block";
          //document.getElementById('box_rezervaceID').style.visibility = "visible";
          //document.getElementById('box_rezervaceID').style.display = "block";
          //document.getElementById('box_tarifID').style.visibility = "visible";
          //document.getElementById('box_tarifID').style.display = "block";
        } catch(eException) {
        }
      }
      
      sourceIATA = sourceElement.options[sourceElement.selectedIndex].value;
             
      // Vybere vsechny DIVy v dokumentu. Vybrat pouze nabidky pomoci getElementsByName nefuguje.
      //divListAll = document.getElementsByTagName("offerDiv");
      sourceSelect = document.getElementById("airportID");
    
      if(sourceSelect.options.length > 1) {
        for(nCounter = 1; nCounter < sourceSelect.options.length; nCounter++) {
          iataList[nCounter] = sourceSelect.options[nCounter].value;
          nIterator++;
          offersList[nIterator - 1] = document.getElementById("offer_" + iataList[nCounter] + "_Y");
          nIterator++;
          offersList[nIterator - 1] = document.getElementById("offer_" + iataList[nCounter] + "_C");
        }
      }
     
      if(offersList.length > 0) {
        for(nCounter = 0; offersList.length > nCounter; nCounter++) {
          try {
            if(offersList[nCounter].id != ("offer_" + sourceIATA + "_" + classPreferencePrefix)) {
              offersList[nCounter].style.visibility = "hidden";
              offersList[nCounter].style.display = "none";
            } else {
              offersList[nCounter].style.visibility = "visible";
              offersList[nCounter].style.display = "block";
            }
          } catch(eException) {
          }
        }          
      }
}

function processOnLoad() {
  try {
    setSourceDestination(document.getElementById('airportID'));
  } catch(eException) {
    setTimeout("processOnLoad();", 200);
  }
}

function highlightChoosen(choosenTrip){
    var actual = document.getElementById('choosen_'+choosenTrip);
    var old = document.getElementById('choosen_'+iataChoosen);
    try {
      old.className = "";
    } catch(eException) {
    }
    try {
      actual.className = "highlight";
    } catch(eException) {
    }
}

function checkDaySummerStorm(idDayFrom, idMonthFrom, idDayTo, idMonthTo) {

  var dayFrom = null;
  var monthFrom = null;
  var dayTo = null;
  var monthTo = null;
  
  var dayFromValue = 0;
  var monthFromValue = 0;
  var dayToValue = 0;
  var monthToValue = 0;
  
  var shiftOfDays = 0;
  var dateToCheck = new Date();
  
  dayFrom = document.getElementById(idDayFrom);
  monthFrom = document.getElementById(idMonthFrom);
  dayTo = document.getElementById(idDayTo);
  monthTo = document.getElementById(idMonthTo);
  
  dayFromValue = 1*dayFrom.value;
  monthFromValue = 1*monthFrom.options[monthFrom.selectedIndex].value;
  dayToValue = 1*dayTo.value;
  monthToValue = 1*monthTo.options[monthTo.selectedIndex].value;
  
  // Validace hodnot - odlet.
  if(dayFromValue <= 0) {
    dayFrom.value = 1;
    dayFromValue = dayFrom.value;
  }
  
//  if(dayFromValue > 28) {
//    dayFrom.value = 28;
//    dayFromValue = dayFrom.value;
//  }
  
  // Validace hodnot - navrat.
  if(dayToValue <= 0) {
    dayTo.value = 1;
    dayToValue = dayTo.value;
  }
  
//  if(dayToValue > 31) {
//    dayTo.value = 31;
//    dayToValue = dayTo.value;
//  }

  // Validace regulerniho data.
  if(monthFromValue < (dateToCheck.getMonth() + 1)) {
    monthFrom.selectedIndex = monthFrom.selectedIndex + 1;
    monthToValue = monthTo.options[monthTo.selectedIndex].value;
  }
  if((dayFromValue < dateToCheck.getDate()) && (monthFromValue == (dateToCheck.getMonth() + 1))) {
    dayFrom.value = dateToCheck.getDate();
    dayFromValue = dayFrom.value;
  }
  if((dayToValue > 30) && ((monthToValue == 6) || (monthToValue == 9))) {
    dayTo.value = 30;
    dayToValue = dayTo.value;
  }
  
  // Validace pravidel.

  // Nenastavi vesti datum nez 30. zari pro odlet.
//  if((dayFromValue > 30) && (monthFromValue == 9)) {
//    dayFrom.value = 28;
//    dayFromValue = 28;
//  }
  
  /*if((dayFromValue == 29) && (monthFromValue == 6)) {
    if(monthToValue == 6) {
      dayTo.value = 1;
      dayToValue = dayTo.value;
      monthTo.selectedIndex = monthFrom.selectedIndex + 1;
      monthToValue = monthTo.options[monthTo.selectedIndex].value;
    }
  }
  if((dayFromValue == 30) && (monthFromValue == 6)) {
    if((monthToValue == 6) || ((monthToValue == 7) && (dayToValue == 1))) {
      dayTo.value = 1;
      dayToValue = dayTo.value;
      monthTo.selectedIndex = monthFrom.selectedIndex + 1;
      monthToValue = monthTo.options[monthTo.selectedIndex].value;
    }
  }
  if((dayFromValue == 30) && (monthFromValue == 7)) {
    if(monthToValue == 7) {
      dayTo.value = 1;
      dayToValue = dayTo.value;
      monthTo.selectedIndex = monthFrom.selectedIndex + 1;
      monthToValue = monthTo.options[monthTo.selectedIndex].value;
    }
  }
  if((dayFromValue == 31) && (monthFromValue == 7)) {
    if((monthToValue == 7) || ((monthToValue == 8) && (dayToValue == 1))) {
      dayTo.value = 2;
      dayToValue = dayTo.value;
      monthTo.selectedIndex = monthFrom.selectedIndex + 1;
      monthToValue = monthTo.options[monthTo.selectedIndex].value;
    }
  }*/
  
  if((dayFromValue > dayToValue) && (monthFromValue == monthToValue)) {
    dayTo.value = dayFromValue + 1*dayShift(dayFrom.value, monthFromValue, dayTo.value, monthToValue);
    dayToValue = dayTo.value;
    checkDaySummerStorm(idDayFrom, idMonthFrom, idDayTo, idMonthTo);
  }
  
  shiftOfDays = dayShift(dayFrom, monthFrom, dayTo, monthTo);
  if((monthFromValue == monthToValue) && ((dayToValue - dayFromValue) < shiftOfDays)) {
    dayTo.value = dayFromValue + shiftOfDays;
    dayToValue = dayTo.value;
    checkDaySummerStorm(idDayFrom, idMonthFrom, idDayTo, idMonthTo);
  }
  
  // Pokud posun data navratu presahne do noveho mesice, posune i mesic.
  if(((dayToValue > 30) && (monthToValue == 6)) || ((dayToValue > 31) && (monthToValue > 6))) {
    // Nemusime brat v uvahu CVN - tyka se pouze CVC a SRP .
    if(monthToValue < 8) {
      dayTo.value = dayToValue - 31;
      dayToValue = dayTo.value;
      monthTo.selectedIndex = monthTo.selectedIndex + 1;
      monthToValue = monthTo.options[monthTo.selectedIndex].value;
      checkDaySummerStorm(idDayFrom, idMonthFrom, idDayTo, idMonthTo);
    }
  }

  if(monthFromValue > monthToValue) {
    if(dayFromValue > dayToValue) {
      dayTo.value = dayFromValue;
      dayToValue = dayTo.value;
    }
    monthTo.selectedIndex = monthTo.selectedIndex + 1;
    //monthToValue = monthTo.options[monthTo.selectedIndex].value;
    checkDaySummerStorm(idDayFrom, idMonthFrom, idDayTo, idMonthTo);
  }
  
  if((dayFromValue == 29) && (monthFromValue == 8)) {
    dayTo.value = 31;
    dayToValue = dayTo.value;
    monthTo.selectedIndex = monthFrom.selectedIndex;
    monthToValue = monthTo.options[monthTo.selectedIndex].value;
  }
  
  if((monthFromValue == 6) && (monthToValue == 8)) {
    monthTo.selectedIndex = monthFrom.selectedIndex + 1;
    monthToValue = monthTo.options[monthTo.selectedIndex].value;
    checkDaySummerStorm(idDayFrom, idMonthFrom, idDayTo, idMonthTo);
  }
  
  if((monthFromValue == (monthToValue - 1)) && (dayToValue > dayFromValue)) {
    dayTo.value = dayFromValue;
    dayToValue = dayTo.value;
  }
}

// Vypocita minimalni posun dni na zaklade miminum stay.
function dayShift(dayFrom, monthFrom, dayTo, monthTo) {

  var numberOfDayToStay = 2;
  var dateFrom = new Date();
  var dayOfWeek = 0;
  
  dateFrom.setFullYear(2007);
  dateFrom.setDate(dayFrom);
  dateFrom.setMonth(monthFrom);
  
  dayOfWeek = dateFrom.getDay();
  
  // Ze soboty na nedeli muze byt minimum stay pouze 1 den.
  if(dayOfWeek == 6) {
    numberOfDayToStay = 1;
  }

  return numberOfDayToStay;
}

// Nastavi prefernci a zobrazi nabidku.
function setPreference(sourceObject) {

  var preferenceInput = null;
  
  try {
    preferenceInput = document.getElementById('classPreferenceID');
    preferenceInput.value = sourceObject.value;
    setSourceDestination(document.getElementById('airportID'));
  } catch(eException) {
  }
  
  if(sourceObject.value == "AVBC") {
    try {
      document.getElementById('prefBusID').checked = true;
    } catch(eException) {
    }
  } else {
    try {
      document.getElementById('prefBusID').checked = false;
    } catch(eException) {
    }
  }
}
