var days=new Array("So","Mo","Di","Mi","Do","Fr","Sa");
var months=new Array('','Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
var monthDays=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
var formName = 'eventFinder';
var todaysDate=new myGetDate();
var calendarOpen=new Object();
var ns4=(document.layers)?'true':'false';
var IE = GECKO = false;
if ( navigator.userAgent.indexOf('MSIE') != -1 )   IE = true;
if ( navigator.userAgent.indexOf('Gecko') != -1 )  GECKO = true;

function myGetDate(month,day,year) {
  if (day&&year) {month--; var rawDate=new Date(year,month,day);}
  else {var rawDate=new Date();}
  this.year=rawDate.getFullYear();
  this.month=rawDate.getMonth();this.month++;
  this.day=rawDate.getDate();
  this.dow=rawDate.getDay();
  this.date=parseInt(this.year.toString()+makeDouble(this.month.toString())+makeDouble(this.day.toString()));
  this.monthDays=monthDays;this.monthDays[2]=(this.year%4)?28:29;
  this.prev_month=(this.month==1)?12:(this.month-1);
  this.prev_year=(this.month==1)?(this.year-1):this.year;
  this.next_month=(this.month==12)?1:(this.month+1);
  this.next_year=(this.month==12)?(this.year+1):this.year;
  return this;
}

function parseDate(testDate) {
  testDate = testDate.replace(/\W|\.\s+/g, ',');
  var month,day,year;
  var dateArray=new Array();dateArray=testDate.split(',');
  for (var i=0;i<dateArray.length;i++) {dateArray[i]=parseFloat(dateArray[i]);}
  if (dateArray[2]<30) {year=parseInt(dateArray[2])+2000;}
  else if (dateArray[2]>30&&dateArray[2]<100) {year=parseInt(dateArray[2])+1900;}
  else {year=dateArray[2];}
  month=dateArray[1];
  if (month>12) month=0;
  if (month) {
    day=parseInt(dateArray[0]);
    if (parseInt(day)>monthDays[month]) {day=monthDays[month];}
  }
  if (month&&day&&year) {return myGetDate(month,day,year);}
  else {return myGetDate();}
}

function makeDouble(number) {
  if ((number.toString()).length>=2) {return number;}
  else if (number) {var numString = number.toString();return('0'+numString);}
  return number;
}

function drawCalendar(month,day,year,id,update,jump) {
  var calID=id+'Cal';
  var thisDiv = document.getElementById( calID );
  if ( IE ) thisDiv.style.position = 'absolute';
  thisDiv.style.margin = '25 -0 -0 50';
  var textID=(document.forms[formName][id+'Text']) ? id+'Text' : id;
  var formDate=parseDate(document.forms[formName][textID].value);
  if (formDate.date!=todaysDate.date&&!update&&!jump) {var selectedDate=formDate;}
  else {var selectedDate=new myGetDate(month,day,year);}
  if (!jump) {setDate(selectedDate.month,selectedDate.day,selectedDate.year,id);}
  if (update||((calendarOpen[calID]=='focused'||calendarOpen[calID]=='on')&&!jump)) {
    calendarOpen[calID]='on';
    closeCalendar();
    return;
  }
  calendarOpen[calID]='on';
  monthDate=new myGetDate(selectedDate.month,1,selectedDate.year);
  
  // Draw Calendar
  var calHtml = '';
  calHtml += "<div class=\"CalenderControl\" onMouseOut=\"calendarOpen['" + calID + "']='on'\" onMouseOver=\"calendarOpen['" + calID + "']='focused'\" bgcolor=\"#000000\" id=\"" + calID + "Inner\" name=\"" + calID + "Inner\" style=\"position: absolute;\">\n";
  calHtml += " <table class=\"CalenderControl\" border=\"0\" bgcolor=\"#DADAC7\" cellpadding=\"2\" cellspacing=\"0\"  width=\"150\">\n";
  calHtml += "  <tr>\n";
  calHtml += "   <td width=\"100%\" valign=\"center\" valign=\"top\">\n";
  calHtml += "    <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">\n";
  calHtml += "     <tr>\n";
  calHtml += "      <td width=\"37\" height=\"13\" align=\"left\" valign=\"middle\"><div style=\"width:37px;\">\n";
  if (selectedDate.date<=todaysDate.date) {
    calHtml += "      &nbsp</div></td>\n"; }
  else {
    calHtml += "      <a href=\"JavaScript:void(0)\" onClick=\"drawCalendar("+selectedDate.prev_month+", 1, "+selectedDate.prev_year+", '"+id+"',0,1);\" alt=\"Last Month\">&lt;&lt;</a></div></td>\n"; }
  calHtml += "      <td class=\"small\" align=\"center\" valign=\"middle\" nowrap=\"nowrap\">\n";
  calHtml += "       <div style=\"width:108px;\"><b>"+months[selectedDate.month]+" "+selectedDate.year+"</b></div></td>\n";
  calHtml += "      <td width=\"37\" height=\"13\" align=\"right\" valign=\"middle\">\n";
  calHtml += "       <div style=\"width:37px;\"><a href=\"JavaScript:void(0)\" onClick=\"drawCalendar("+selectedDate.next_month+", 1, "+selectedDate.next_year+", '"+id+"',0,1);\">&gt;&gt;</a></div></td>\n";
  calHtml += "     </tr>\n";
  calHtml += "    </table>\n";
  calHtml += "    <table border=\"0\" bgcolor=\"#ffffff\" cellspacing=\"0\" cellpadding=\"3\" width=\"100%\">\n";
  calHtml += "     <tr class=\"cal\">\n";
  // Days of the Week column titles
  for (var i=0;i<days.length;i++) {
    calHtml += "      <td width=\"14%\" valign=\"top\" align=\"center\"><div style=\"width:20px;\">\n";
    calHtml += "       "+days[i]+"</div></td>\n";
  }
  calHtml += "     </tr>\n";
  var weekNum = 1;
  var rowNum = 0;
  calHtml += "     <tr id=\"week"+weekNum+"\" class=\"cal\" valign=\"top\">\n";
  // Previous Months Days
  calHtml += getPrevMonthDays(monthDate, selectedDate, id);
  // This Months Days
  for (var thisDay=1;thisDay<=selectedDate.monthDays[selectedDate.month];thisDay++) {
    var dateString=parseInt(selectedDate.year.toString()+makeDouble(selectedDate.month.toString())+makeDouble(thisDay.toString()));
    if (((thisDay-1)+monthDate.dow)%7==0&&((thisDay-1)+monthDate.dow)!=0) {
      calHtml += "     </tr>\n";
      weekNum++;
      calHtml += "     <tr id=\"week"+weekNum+"\" class=\"cal\" valign=\"top\">\n"; }
    // Calendar Days Display
    if (dateString==formDate.date) {
      rowNum = weekNum;
      calHtml += "      <td class=\"Today\" width=\"14%\" align=\"center\" bgcolor=\"#DADAC7\"><div style=\"width:20px;\"><a style=\"text-decoration: none;\" href=\"JavaScript:void(0)\" onClick=\"drawCalendar(" + selectedDate.month + ", " + thisDay + ", " + selectedDate.year + ", '" + id + "', 1)\"><b>" + makeDouble(thisDay) + "</b></a>\n"; }
    else if (dateString<todaysDate.date) {
      calHtml += "      <td width=\"14%\" class=\"calgray\" align=\"center\" style=\"text-decoration: line-through;\"><div style=\"width:20px;\">" + thisDay + "\n"; }
    else {
       calHtml += "      <td width=\"14%\" align=\"center\"><div style=\"width:20px;\"><a style=\"text-decoration: none;\" href=\"JavaScript:void(0)\" onClick=\"drawCalendar(" + selectedDate.month + ", " + thisDay + ", " + selectedDate.year + ", '" + id + "', 1)\">" + makeDouble(thisDay) + "</a>\n"; }
    calHtml += "      </div></td>\n";
  }
  // Next Months Days
  calHtml += getTailMonthDays(monthDate,selectedDate,id);
  calHtml += "     </tr>\n";
  calHtml += "     <tr class=\"cal\" valign=\"top\">\n";
  calHtml += "      <td class=\"Footer\" colspan=\"7\" width=\"100%\" align=\"center\" bgcolor=\"#DADAC7\">\n";
  calHtml += "       <div style=\"width:176px;\"><a href=\"JavaScript:void(0)\" onClick=\"document.getElementById('"+calID+"').innerHTML='';calendarOpen['"+calID+"']='off';\">Schlie&szlig;en</a></div></td>";
  calHtml += "     </tr>\n";
  calHtml += "    </table>\n";
  calHtml += "   </td>\n";
  calHtml += "  </tr>\n";
  calHtml += " </table><br />\n";
  calHtml += "</div>\n";
  if (ns4 == 'false') document.getElementById(calID).innerHTML=calHtml;
}

function verifyDate(fieldsToVerify) {
  var fields=new Array();
  fields=fieldsToVerify.split(',');
  for (var id=0;id<fields.length;id++) {
    var textID=fields[id]+'Text';
    var radio_id=fields[id].replace(/End|Begin/,'');
    if (document.forms[formName][radio_id].checked==true) {
      var newDate=parseDate(document.forms[formName][textID].value);
       setDate(newDate.month,newDate.day,newDate.year,fields[id]);
    }
  }
}

function setDate(month,day,year,field) {
  var fieldText=(document[formName][field+'Text']) ? field+"Text" : field;
  field=field.replace(/Begin|End/g, '');
  clearOthers(field);
  document[formName][fieldText].value=makeDouble(day)+'.'+makeDouble(month)+'.'+year;
  if (field == 'newEventFrom') {
  	document[formName].sDay_from.value = makeDouble(day);
  	document[formName].sMonth_from.value = makeDouble(month);
  	document[formName].sYear_from.value = year;
  	getValues();
  }
  if (field == 'newEventTo') {
  	document[formName].sDay_to.value = makeDouble(day);
  	document[formName].sMonth_to.value = makeDouble(month);
  	document[formName].sYear_to.value = year;
  	getValues();
  }
}

function clearOthers(field) {
  var _de = document[formName];
  if (field == 'anyDate') {
    _de['anyDate'].checked = true;
    _de['exactDate'].checked = false;
    _de['dateRange'].checked = false;
    _de['exactDateText'].value = '';
    _de['fromDateText'].value = '';
    _de['toDateText'].value = '';
  }
  if (field == 'exactDate') {
    _de['anyDate'].checked = false;
    _de['exactDate'].checked = true;
    _de['dateRange'].checked = false;
    _de['exactDateText'].value = makeDouble(todaysDate.day)+'.'+makeDouble(todaysDate.month)+'.'+todaysDate.year;
    _de['fromDateText'].value = '';
    _de['toDateText'].value = '';
  }
  if (field == 'dateRange') {
    _de['anyDate'].checked = false;
    _de['exactDate'].checked = false;
    _de['dateRange'].checked = true;
    _de['exactDateText'].value = '';
    _de['fromDateText'].value = makeDouble(todaysDate.day)+'.'+makeDouble(todaysDate.month)+'.'+todaysDate.year;
    _de['toDateText'].value = makeDouble(todaysDate.day)+'.'+makeDouble(todaysDate.month)+'.'+todaysDate.year;
  }
  if (field == 'fromDate') {
    _de['anyDate'].checked = false;
    _de['exactDate'].checked = false;
    _de['dateRange'].checked = true;
    _de['exactDateText'].value = '';
  }
  if (field == 'toDate') {
    _de['anyDate'].checked = false;
    _de['exactDate'].checked = false;
    _de['dateRange'].checked = true;
    _de['exactDateText'].value = '';
  }
}

function getPrevMonthDays(monthDate,selectedDate,id) {
  var calHtml='';
  var days=monthDays[selectedDate.prev_month];
  var day;
  for (var i=monthDate.dow-1;i>=0;i--) {
    day = days-i;
      calHtml += "      <td width=\"14%\" bgcolor=\"#FFFFFF\" class=\"calgray\" align=\"center\"><div style=\"width:20px;\">"+day+"</div></td>\n";
  }
  return calHtml;
}

function getTailMonthDays(monthDate,selectedDate,id) {
  var calHtml='';
  var tailDays=7-((parseInt(selectedDate.monthDays[selectedDate.month])+parseInt(monthDate.dow))%7);
  if (tailDays>=7) tailDays=0;
  for (var day=1; day<=tailDays;day++) {
    calHtml += "      <td width=\"14%\" bgcolor=\"#FFFFFF\" class=\"calgray\" align=\"center\"><div style=\"width:20px;\">"+makeDouble(day)+"</div></td>\n";
  }
  return calHtml;
}

function closeCalendar(evt) {
var other = (evt) ? (evt.target.id) ? evt.target.id : 0 : 'called';
  if (ns4 == 'true') return;
  for (var field in calendarOpen) {
    if (calendarOpen[field] == 'on' && other != 'cal_last' && other != 'cal_next') {
      document.getElementById(field).innerHTML='';
      calendarOpen[field] = 'off';
    }
  }
}

document.onmousedown = closeCalendar;
