var months = new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
 var week_days_text = new Array('Mo','Di','Mi','Do','Fr','Sa','So');
 var dateOffset = 3;

var week_days = new Array(1, 1, 1, 1, 1, 1, 1);
var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var next_mon_text = "&gt;&gt;";
var prev_mon_text = "&lt;&lt;";

var dt_format = "dym";
var date_ctrl = null;
var curr_date = null;
var from_date = null;
var till_date = null;
var draw_date = null;
var calendar;//  = null;  // Calendar div
var nr_cal = null;

function calendarShow(_date_ctrl,_date_ctrl2, _from_date, _till_date)
{
var dateOffset = 3;
  calendar=document.getElementById('calendar_div');
  cframe = document.getElementById('calendar_frame');
//  alert(calendar);
  if(!calendar)
  {
    return;
  }
  if(_from_date == null)
  {
    var offsetedDate = new Date();
    offsetedDate.setDate(offsetedDate.getDate()+dateOffset);
    _from_date = '0'+offsetedDate.getDate()+'0'+(offsetedDate.getYear()-100)+'0'+(offsetedDate.getMonth()+1);
  }

  if(_date_ctrl==document.startDay)
  nr_cal=1;
  if(_date_ctrl==document.endDay)
  nr_cal=2;
  date_ctrl = _date_ctrl;
  date_ctrl2 = _date_ctrl2;
  curr_date = date_ctrl.value+'.'+date_ctrl2.value;
  from_date = _from_date;
  till_date = _till_date;
  //alert(curr_date.substr(6, 4)+','+curr_date.substr(3, 2)+','+ curr_date.substr(0, 2));
  //curr_date = parseDate(curr_date);
  curr_date =new Date(curr_date.substr(6, 4),(curr_date.substr(3, 2)-1), curr_date.substr(0, 2));
  //alert(curr_date);

  if (!curr_date)
    curr_date = new Date();
  from_date = parseDate(from_date);
  till_date = parseDate(till_date);
  
  setCalendar();
  hideBabys();
}

function hideBabys()
{
  cframe.style.top = document.getElementById('calendar_div').style.top;
  cframe.style.left = document.getElementById('calendar_div').style.left;
  cframe.style.height = (document.getElementById('calendar_div').clientHeight+5)+'px';
  cframe.style.width = document.getElementById('calendar_div').clientWidth+'px';
  
  
  cframe.style.display = 'block';

}

function showBabys()
{
  cframe.style.display = 'none';

}

function setCalendar(year, month)
{
  if(!calendar)
    return;

  if (year == null)
    year = curr_date.getFullYear();
  if (month == null)
    month = curr_date.getMonth();
  if (month == 1)
    days[1] = (isLeap(year) ? 29 : 28);
  draw_date = new Date(year, month, 1);
  calendar.innerHTML = getMonthHTML();
  calendar.style.display='block';
  //calendar.style.top='400px';
  //calendar.style.left='280px';
  
    calendar.style.top='150px';
    calendar.style.left='20px';
  
}
function parseDate(str)
{
  if (!str)
    return null;

  var chr = '';

  var year = '';
  var mon = '';
  var mday = '';

  var idx = 0;
  for (var i = 0; i < dt_format.length; i++)
  {
    chr = dt_format.charAt(i)
    switch (chr)
    {
      case "m":
        mon = str.substr((idx), 2);
        idx += 2;
        break;
      case "Y":
        year = str.substr(idx, 4);
        idx += 4;
        break;
      case "y":
        year = "20" + str.substr(idx, 2);
        idx += 2;
        break;
      case "d":
        mday = str.substr(idx, 2);
        idx += 2;
        break;
      default:
        idx += 1;
        break;
    }
  }

  return (new Date(year, mon-1, mday));
}
function oinsertDate(year, month, day)
{
  if(day<10)
  day = '0'+(day);
  date_ctrl.value = day;//formatDate(year, month, day);
  if((month+1)<10)
	  month = '0'+(month+1);
	  else
	  month = month+1;
	  date_ctrl2.value = month+'.'+year;
  hideCalendar();
}
function insertDate1(year, month, day)
{
  if(day<10)
  day = '0'+(day);
  date_ctrl.value = day;//formatDate(year, month, day);
  if((month+1)<10)
  month = '0'+(month+1);
  else
  month = month+1;
  date_ctrl2.value = (new String(year)).substr(2,2)+''+month;
  if(nr_cal==1)
  {
	setNewDateForSelect('startflight_day','startflight_month_year','endflight_day', 'endflight_month_year', 42 );
	setDaysInMonth('endflight_month_year', 'endflight_day' );
	setDaysInMonth('startflight_month_year', 'startflight_day' );
  }
  if(nr_cal==2)
  {
    setNewDateForSelect('endflight_day', 'endflight_month_year','startflight_day','startflight_month_year', -42 );
	setDaysInMonth('endflight_month_year', 'endflight_day' );
  }
  //document.write((new String(year)).substr(2,2)+''+month);
  hideCalendar();
}
function hideCalendar()
{
  if(!calendar)
    return;
  calendar.style.display='none';
  showBabys();
}
function calendarSetFormat(fmt)
{
  dt_format = fmt;
}

function formatDate(year, month, day)
{
  var chr = '';
  var ret = '';
  for (var i = 0; i < dt_format.length; i++)
  {
    chr = dt_format.charAt(i)
    switch (chr)
    {
      case "m":
        month++;
        ret += (month < 10 ? "0"+month : month);
        break;
      case "Y":
        ret += year;
        break;
      case "y":
        ret += (new String(year)).substr(2);
        break;
      case "d":
        ret += (day < 10 ? "0"+day : day);
        break;
      default:
        ret += chr;
    }
  }
  return ret
}
function isLeap(year)
{
//  return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)));
  return (year % 4 == 0);
}
function changeMonth(direction)
{
  var year = draw_date.getFullYear();
  var month = draw_date.getMonth()-1;

  if (direction)
  {
    if (++month > 11)
    {
      month = 0;
      year++;
    }
  }
  else
  {
    if (--month == -1)
    {
      month = 11;
      --year;
    }
  }
  setCalendar(year, month);
}

function getMonthHTML()
{
  var year = draw_date.getFullYear();
  var month = draw_date.getMonth();
  var day = 1;
  var d = draw_date.getDay()-1;
  if (d == -1)
    d = 6;

  var active = 0;
  var tmp = '';
  var bgr = '';

  result  = '<table cellpadding="0" cellspacing="0" border="0" width="95%" align="center" style="margin-top:3px;margin-bottom:3px;">';
  result += '<tr><td colspan="7">';
  result += '<table cellpadding="0" cellspacing="0" border="0" width="100%">';

  result += '<tr><td align="right">';
  result += '<a class="c2b" href="javascript:changeMonth(0);" title="'+prev_mon_text+'">&#171;</a>';
  result += '</td><td class="calendar_month_text" style="padding: 3px;" width="102" align="center">'+months[month]+'&nbsp;'+year+'</td>';

  result += '<td align="left">';
  result += '<a class="c2b" href="javascript:changeMonth(1);" title="'+next_mon_text+'">&#187;</a>';
  result += '</td>';
  result += '<td align="right" width="30"><img src="/fileadmin/templates/style/img/close_lite.gif" onClick="hideCalendar();" alt="" style="cursor:pointer;"/></td>'
  result += '</tr></table></td></tr>';

  result += '<tr align="center" class="c1">';

  for(var i =0; i<6; i++)
    result += '<td class="calendar_wd_text" width="34">'+week_days_text[i]+'</td>';

  result += '<td class="calendar_s_text">'+week_days_text[6]+'</td>';
  result += '</tr>';

  for (var i = 0; i < 7 && day <= days[month]; i++)
  {
    for (var j = 0; j < 7; j++)
    {
      if ((i == 0 && j < d) || (day > days[month]))
      {
        tmp += getDayHTML(year, month, 0, 'calendar_empty', 0);
      }
      else
      {
        active = 1;
        if (!week_days[(j == 6) ? 0 : j+1])
        {
          active = 0;
        }
        else
        {
        //  if (from_date && draw_date.getTime() < from_date.getTime())
        //    active = 0;
        //  if (till_date && draw_date.getTime() > till_date.getTime())
        //    active = 0;
        }

        if (active)
          bgr = (j == 6 ? 'calendar_s' : 'calendar_wd');
        else
          bgr = 'calendar_d';

        tmp += getDayHTML(year, month, day, bgr, active);
        draw_date.setDate(++day);
      }
    }
    result += '<tr align="center">'+tmp+'</tr>';
    tmp = '';
  }
  result += '</table>';
  return result;
}
function getDayHTML(year, month, day, classname, active)
{
  //var now = new Date();
  var events = '';
  var value = '&nbsp;'

  var d=new Date(year,month,day);

  var today=new Date();
  var days = today.getTime() + (1000*3600*24*2);
  today.setTime(days);
  if(d<today)
    active=0;
  if (day)
  {
    if ((curr_date.getDate() == day) && (curr_date.getMonth() == month) && (curr_date.getFullYear() == year))
          classname = 'calendar_mark';
    if (active)
    {
      events = ' onmouseover="this.className=\'calendar_onmouse\'" onmouseout="this.className=\''+classname+'\'" onclick="oinsertDate('+year+', '+month+', '+day+');"';
    }
    else if(classname != 'calendar_mark')
    {
      classname='calendar_d';
    }
      value = day;

  }
  return '<td class="'+classname+'" '+events+'>'+value+'</td>';
}
