var nc  = !!(document.captureEvents && !document.getElementById);
var nc6 = !!(document.captureEvents && document.documentElement);
var ie  = !!document.all;
var ie4 = !!(document.all && !document.documentElement);
var ie5 = !!(document.all && document.documentElement);
var dom = !!document.getElementById;

function dRefS()
{
  var obj;
  if(nc)
  {
    obj = document.layers[arguments[0]];
    for(k = 1; k < arguments.length; k++)
      obj = obj.document.layers[arguments[k]];
  }
  else if(ie4)
    obj = document.all[arguments[arguments.length - 1]].style;
  else if(dom)
    obj = document.getElementById(arguments[arguments.length - 1]).style;
  else
    obj = null;
  return obj;
}

function dRef()
{
  var obj;
  if(nc)
  {
    obj
    for(k = 1; k < arguments.length; k++)
      obj = obj.document.layers[arguments[k]];
  }
  else if(ie4)
    obj = document.all[arguments[arguments.length - 1]];
  else if(dom)
    obj = document.getElementById(arguments[arguments.length - 1]);
  else
    obj = null;
  return obj;
}

function findPos()
{
  var el = arguments[0];
  var xPos = 0;
  var yPos = 0;

  if(nc)
    for(i = 0; i < arguments.length; i++)
    {
      xPos += arguments[i].x;
      yPos += arguments[i].y;
    }
  else
    while(el)
    {
      xPos += el.offsetLeft;
      yPos += el.offsetTop;
      if(!(ie4 && mac))
        el = el.offsetParent;
      else
        el = el.parentElement;
    }
  return {xPos: xPos, yPos: yPos};
}

function writeDiv(obj, text)
{
  if(nc)
  {
    with(obj.document)
    {
      open();
      write(text);
      close();
    }
  }
  if(ie || dom)
    obj.innerHTML = text;
}

function localStart()
{
  cal        = new makeCal(document.forms[0].startDate, document.forms[0].endDate);
  calXposDep = findPos(document.depImg).xPos;
  calYposDep = findPos(document.depImg).yPos;
  calXposArr = findPos(document.arrImg).xPos;
  calYposArr = findPos(document.arrImg).yPos;
  if(nc)
    document.height = 580;
}

var dName   =  new Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
var monName =  new Array("Januar", "Februar", "M&auml;rz", "April", "Mai",
                         "Juni", "Juli", "August", "September", "Oktober",
                         "November", "Dezember");

function makeCal(formS, formE)
{
  this.outForm    = new Array();
  this.outForm[0] = formS;
  this.outForm[1] = formE;
  this.posDiv     = posDiv;
  this.initCal    = initCal;
  this.nextMonth  = nextMonth;
  this.pastMonth  = pastMonth;
  this.writeCal   = writeCal;
  this.wrForm     = wrForm;
  this.dplCal     = dplCal;
}

function posDiv()
{
  dRefS("calendar").left = this.calAktX;
  dRefS("calendar").top  = this.calAktY;
}

function initCal(rdIdx, akIdx, x, y)
{
  this.calAktForm = akIdx;
  this.calAktX    = x;
  this.calAktY    = y;
  var date        = this.outForm[rdIdx].value;
  aktDate         = new Date();
  aktMonth        = aktDate.getMonth();
  aktYear         = aktDate.getYear();
  if(aktYear < 1000)
    aktYear      += 1900;
  aktDay          = aktDate.getDate();
  aktDay          = new Date(aktYear, aktMonth, aktDay);
  aktDay          = aktDay.getTime();
  this.writeCal();
  this.posDiv();
  this.dplCal(1);
}

function writeCal()
{
  firstDay    = new Date(aktYear, aktMonth, 1);
  firstDayId  = firstDay.getDay();
  firstDayId  = (firstDayId > 0)? firstDayId - 1 : 6;
  nextMonth   = new Date(aktYear, aktMonth + 1, 1);
  monthDur    = nextMonth - (1000 * 60 * 60 * 23);
  lastDay     = new Date(monthDur);
  lastDayDate = lastDay.getDate();

  if(ie4 || dom)
  {
    dRef("monthTd").innerHTML = monName[aktMonth] + '&nbsp;' + aktYear;
    for(var k in dName)
      dRef("dayName" + k).innerHTML = dName[k];
  }
  else if(nc)
  {
    table  = '<table border="0">';
    table += '<tr>';
    table += '<td><a href="#" onclick="cal.pastMonth(); return false;">&lt;&lt;</a><\/td>';
    table += '<td colspan="5" align="center">' + monName[aktMonth]+ "&nbsp;" + aktYear + '<\/td>';
    table += '<td align="right"><a href="#" onclick="cal.nextMonth(); return false;">&gt;&gt;<\/a><\/td><\/tr>';
    table +='<tr>';
    for(var k in dName)
      table += '<td id="dayName' + k + '"align="right" width="18">' + dName[k] + '<\/td>';
    table += '<\/tr>';
  }

  var cnt = 1;
  for(var i = 0; i < 42; i++)
  {
    var txt, aTag, table;
    var temp = new Date(aktYear, aktMonth, cnt);
    if(temp.getTime() < aktDay)
      txt = cnt;
    else if(temp.getTime() == aktDay)
    {
      aTag = '<a href="#" onclick="cal.wrForm(' + this.calAktForm + ', ' + cnt + '); return false;">';
      txt = aTag + cnt + '<\/a>';
    }
    else
    {
      aTag = '<a href="#" onclick="cal.wrForm(' + this.calAktForm + ', ' + cnt + '); return false;">';
      txt = aTag + cnt + '<\/a>';
    }
    if(firstDayId <= i && cnt <= lastDayDate)
    {
      if(ie4 || dom)
        dRef("day" + i).innerHTML = txt;
      else if(nc)
      {
        table += '<td align="right">' + txt + '<\/td>';
        table += (i + 1)%7 == 0? '<\/tr>' + (i < 41 ? '<tr>' : ''): '';
      }
      cnt++;
    }
    else
    {
      if(ie4 || dom)
        dRef("day" + i).innerHTML =  "&nbsp;";
      else if(nc)
      {
        table += '<td>&nbsp;<\/td>';
        table += (i + 1) % 7 == 0 ? '<\/tr>' + (i < 41 ? '<tr>' : ''): '';
      }
    }
  }
  if(nc)
  {
    table += '<tr><td colspan="7" align="center"><a href="#"  onclick="cal.dplCal(0)">Kalender schlie&szlig;en</a></td></tr></table>';
    writeDiv(dRef('calendar'), table);
  }
}

function nextMonth()
{
  if(aktMonth < 12)
    aktMonth += 1;
  if(aktMonth == 12)
  {
    aktYear += 1;
    aktMonth = 0;
  }
  this.writeCal();
}

function pastMonth()
{
  if(aktMonth > -1)
    aktMonth -= 1;
  if(aktMonth == -1)
  {
    aktYear -= 1;
    aktMonth = 11;
  }
  this.writeCal();
}

var arrivalSet = false;

function wrForm(index, id)
{
  var depDate  =  new Date(aktYear,aktMonth, parseInt(id)+1);
  var depDay   =  depDate.getDate();
  var depMonth =  depDate.getMonth();
  var depYear  =  depDate.getYear();
  if(depYear < 1000)
    depYear   += 1900;
  this.outForm[index].value = id + "." + (aktMonth + 1) + "." + aktYear;
  if(index == 0 && !arrivalSet)
    this.outForm[1].value = depDay + "." + (depMonth + 1) + "." + depYear;
  else
    arrivalSet = true;
  this.dplCal(0);
}

function dplCal(stat)
{
  dRefS("calendar").visibility = stat ? "visible" : "hidden";
}

function setRuk()
{
  if(!nc)
  {
    var station = window.document.forms[0].abholort.value
    window.document.forms[0].abgabeort.value = station;
  }
  else
  {
    var station = window.document.forms[0].abholort.selectedIndex
    window.document.forms[0].abgabeort.selectedIndex = station;
  }
}

function infOZ(sta)
{
  if(sta = 'abh')
  {
    if(nc)
    {
      var index   = window.document.forms[0].abholort.selectedIndex
      var station = window.document.forms[0].abholort.options[index].value;
    }
    else
      var station = window.document.forms[0].abholort.value;
  }
  if(sta = 'abg')
  {
    if(nc)
    {
      var index   = window.document.forms[0].abgabeort.selectedIndex
      var station = window.document.forms[0].abgabeort.options[index].value;
    }
    else
      var station = window.document.forms[0].abgabeort.value;
  }
  var url = "station.php?station=" + station;
  var infoWin = window.open(url, "", "width=330,height=260");
}