// JavaScript Document
// vraci do selectu s vybranym id hodnotu zdrojoveho selectu, pokud je k dispozici
function setBackLine(sourceId, targetId) {
  var parsedSource = sourceId.split ("_");
  //fi_from/fi_to
  var backLine = document.getElementById( window.pageVariables['elementIdBackLine'] )
  if ( backLine.checked ) {
    var source = document.getElementById( sourceId )
    var target = document.getElementById( targetId )

    // prohledam cilovy objekt, zda obsahuje option s uvedenou value
    var i;
    var hasOption = false;
    for ( i=0; i<target.length; i++ ) {
      if ( source.value == target.options[i].value ) {
        target.options[i].selected = true;
        hasOption = true;
      }
    }

    if ( hasOption == false ) {
      target.options[0].selected = true;
      if ( parsedSource[1] == 'from' ) {
        alert( window.pageVariables["textAlertNoStationStartOnly"] );
      }
      else if ( parsedSource[1] == 'to' ) {
        alert( window.pageVariables["textAlertNoStationExitOnly"] );
      }
            
    }
  }
}

//function returns date if date is valid or false if date is invalid (czech date format)
function isValidDate(string) {
  var parsedDate = string.split (".");
  if (parsedDate.length != 3) return false;
  var day, month, year;
  month = (parsedDate[1]-1);
  day = parsedDate[0];
  year = parsedDate[2];

  var objDate = new Date (year,month,day);
  if (month != (objDate.getMonth())) return false;
  if (day != objDate.getDate()) return false;
  if (year != objDate.getFullYear()) return false;

  return objDate;
}

// kontrola udaju v jednotlivych kalendarich formu
// dodrzuje system, ze na zpatecni cestu nastavi alespon stejne datum a cas, plus vybrane pole v kalendari
// volane s 1 bere aktualni kalendar pro cestu zpet
// volane s 2 kontroluje oba kalendare
function checkCalendars(num) {
  if ( num == 2 ) {
    document.getElementById( "fi_calendar" ).innerHTML = '<label class="superLong"></label>';
    var source = document.getElementById( "fi_dateDeparture" );
    datum = isValidDate( source.value );

    if ( datum ) {
      var setup = {
        flat     : "fi_calendar",
        onUpdate : setDate,
        date	   : datum
      }
      Calendar.setup(setup);
    }

    var source2 = document.getElementById( "fi_dateArrival" );
    datum2 = isValidDate( source2.value );

    if ( datum2 <= datum ) {
      document.getElementById( "fi_dateArrival" ).value = source.value;
      document.getElementById( "fi_calendar2" ).innerHTML = '<label class="superLong"></label>';

      if ( datum2 ) {
        var setup2 = {
          flat     : "fi_calendar2",
          onUpdate : setDate2,
          date	   : datum
        }
        Calendar.setup(setup2);
      }

      var switcher = document.getElementById( "hidChangedDate_arrival" );
      if ( switcher.value == "0" ) {
        document.getElementById( "fi_timeArrival" ).value = document.getElementById( "fi_timeDeparture" ).value;
      //switcher.setAttribute("value","1");
      }
    }
  }
  else if ( num == 1 ) {
    document.getElementById( "fi_calendar2" ).innerHTML = '<label class="superLong"></label>';
    var source2 = document.getElementById( "fi_dateArrival" );
    datum2 = isValidDate( source2.value );

    if ( datum2 ) {
      var setup2 = {
        flat     : "fi_calendar2",
        onUpdate : setDate2,
        date	 : datum2
      }
      Calendar.setup(setup2);
    }
  }
}

// pole obsahujici cas odjezdu vynuluje
function setNullDepartureTime() {
  var todayDate = new Date();
  var source = document.getElementById( "fi_dateDeparture" );
  var switcher = document.getElementById( "hidChangedDate_departure" );
  datum = isValidDate( source.value );


  if ( switcher.value == "0" ) {
    switcher.setAttribute("value","1");

    // kontrola prvniho kalendare
    if ( ( todayDate.getDate() == datum.getDate() ) &&
      ( todayDate.getMonth() == datum.getMonth() ) &&
      ( todayDate.getYear() == datum.getYear() )
      ) {
      // stejne datum, cas dame aktualni
      hours = todayDate.getHours();
      if ( hours < 10 ) {
        hours = "0"+hours;
      }
      minutes = todayDate.getMinutes();
      if ( minutes < 10 ) {
        minutes = "0"+minutes;
      }
      document.getElementById("fi_timeDeparture").value = hours + ":" + minutes;
    }
    else {
      // cas nastavime na pulnoc
      document.getElementById("fi_timeDeparture").value = "00:00";
    }
  }
}

// pole obsahujici cas odjezdu zpatecniho spoje vynuluje
function setNullArrivalTime() {
  var todayDate = new Date();
  var source = document.getElementById( "fi_dateArrival" );
  var depSource = document.getElementById( "fi_dateDeparture" );
  var switcher = document.getElementById( "hidChangedDate_arrival" );
  datum2 = isValidDate( source.value );

  if ( switcher.value == "0" ) {
    switcher.setAttribute("value","1");

    // kontrola druheho kalendare
    if ( ( todayDate.getDate() == datum2.getDate() ) &&
      ( todayDate.getMonth() == datum2.getMonth() ) &&
      ( todayDate.getYear() == datum2.getYear() )
      ) {
      // stejne datum, cas dame aktualni
      hours = todayDate.getHours();
      if ( hours < 10 ) {
        hours = "0"+hours;
      }
      minutes = todayDate.getMinutes();
      if ( minutes < 10 ) {
        minutes = "0"+minutes;
      }
      document.getElementById("fi_timeArrival").value = hours + ":" + minutes;
    }
    else {
      // cas nastavime na pulnoc
      document.getElementById("fi_timeArrival").value = "00:00";
    }
  }
}

function setChangedTime( action ) {
  var index = "hidChangedDate_" + action;
  var switcher = document.getElementById( index );
  switcher.setAttribute("value","1");
}

// zobrazi blok s id podle promenne idBlock, pokud promenna s id idReferer ma status checked (tzn. zaskrtnuty checkbox)
function showBlockByCheckbox( idReferers, idBlock, type ) {
  var dataarray = idReferers.split(",");
  //source = document.getElementById( idReferer );
  dest = document.getElementById( idBlock );
  if ( typeof(type) == 'undefined' ) {
    type = 'all'
  }

  paramsCount = dataarray.length;
  showElement = 0;
  for ( i=0; i<paramsCount; i++ ) {
    source = document.getElementById( dataarray[i] );
    if ( source.checked ) {
      showElement += 1;
    }
  }

  if ( ( type=='all' && showElement==paramsCount ) || ( type=='one' && showElement>0 ) ) {
    dest.style.display = 'block';
  }
  else {
    dest.style.display = 'none';
  }
}

function setDate(cal) {
  document.getElementById("fi_dateDeparture").value = cal.date.print("%d.%m.%Y");
  checkCalendars(2);
  setNullArrivalTime();
  setNullDepartureTime();
}

function setDate2(cal) {
  document.getElementById("fi_dateArrival").value = cal.date.print("%d.%m.%Y");
  checkCalendars(1);
  setNullArrivalTime();
}

function hideCombosForIE() {
  
  var menu = document.getElementById('menuleft');
  var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
  if (!IE6) return;
  uls = menu.getElementsByTagName('UL');
  var subuls = false;
  for (var i=0; i<uls.length; i++) {
    uls[i].onmouseover = hideCombos;
    uls[i].onmouseleave = showCombos;
  }
}

function hideCombos() {
  if (!window.parametr) window.parametr = new Array();
  if (!window.parametr.hideCombos) window.parametr.hideCombos = new Array();
  var combos = document.getElementsByTagName("SELECT");
  for (i=0; i< combos.length; i++) {
    if (combos[i].style.visibility != 'hidden' && combos[i].style.display != 'none') {
      window.parametr.hideCombos[window.parametr.hideCombos.length] = i;
      combos[i].style.visibility = 'hidden';
    }
  }
  
}

function showCombos() {
  var combos = document.getElementsByTagName("SELECT");
  for (var i=0; i< window.parametr.hideCombos.length; i++) {
    combos[window.parametr.hideCombos[i]].style.visibility = 'visible';
  }
}
