function calendar(id,d){
  this.id = id;
  this.dateObject = d;
  this.write = writeCalendar;
  this.length = getLength;
  this.month = d.getMonth();
  this.date = d.getDate();
  this.day = d.getDay();
  this.year = d.getFullYear();
  this.getFormattedDate = getFormattedDate;
  d.setDate(1);
  this.firstDay = d.getDay();
  if (this.firstDay==0){ this.firstDay = 6 ; } else {   this.firstDay-- ; }
  d.setDate(this.date);
}
var days = new Array('H ','K ','Sz','Cs','P ','Sz','V ');
var months = new Array('Janu&aacute;r','Febru&aacute;r','M&aacute;rcius','&Aacute;prilis','M&aacute;jus','J&uacute;nius','J&uacute;lius','Augusztus','Szeptember','Okt&oacute;ber','November','December');


function getFormattedDate(){
  return days[this.day] + ', ' + months[this.month] + ' ' + this.date + ', ' + this.year;
}

function writeCalendar(){
    var calString = '<div id="calContainer">';
  
  calString += '<table id="cal' + this.id + '" cellspacing="0" width="160" style="border:1px black solid;">';
  calString += '<tr><th colspan="7" class="month" align="center">' + months[this.month] + ', ' + this.year + '</th></tr>';
  calString += '<tr>';
  
  for(i=0;i<days.length;i++){
    calString += '<th align="center" class="dayHeader">' + days[i] + '</th>';
  }

 if (window.ActiveXObject) { 
  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); // IE 
  xmlDoc.async="false";
   xmlDoc.load("rss.xml");
  }
  else {
   if (document.implementation && document.implementation.createDocument)
   {  // var xmlDoc = document.implementation.createDocument("","",null); //Mozilla
      // xmlDoc.onload = readXML;
	  // alert('ok');
    var req = new XMLHttpRequest();
	var xmlDoc = null
    req.open('GET', 'rss.xml', false); 
	// req.overrideMimeType('text/xml');
    req.send(null);
    xmlDoc = req.responseXML ;
	}
}
var lists = xmlDoc.getElementsByTagName("link");
var datumok =  xmlDoc.getElementsByTagName("pubDate");
  calString += '<tr>';
    for(j=0;j<42;j++){
    var displayNum = (j-this.firstDay+1);
    if(j<this.firstDay){
      //az elso ures cellak
      calString += '<td class="empty">&nbsp;</td>';
    }else if(displayNum > this.length()){
      //ures cellak a vegen
      calString += '<td>&nbsp;</td>';
    }else{
      //a szamok
       var rj=-1;
       var ri =0;
	   var mm = (this.month==12)?1:this.month+1;
	   mm = (mm<10)?"0"+mm:mm;
	   var dd = (displayNum<10)?"0"+displayNum:displayNum;
	   var datum =this.year+"-"+mm+"-"+dd ;
     while ((ri < lists.length) && (rj == -1))
	  {  if (datumok[ri].childNodes[0].nodeValue == datum) { rj=ri; } ri++; }
        if (rj>-1) { 
        calString += '<td align="center" id="" class="event"><SPAN class=rrs_DetailLink><a href="'+ lists[rj].childNodes[0].nodeValue  +'" title="'+xmlDoc.getElementsByTagName("title")[rj].childNodes[0].nodeValue+'">'+ displayNum + '</a></span></td>';		
			}
         else {
        calString += '<td align="center" id="" class="days" >' + displayNum + '</td>';}
    }
    if(j%7==6){ calString += '</tr><tr>'; }
  }
  calString += '</tr>';
  calString += '<tr>';
  calString += '<td class="nav" style="text-decoration:underline;" onClick="changeMonth(-12,\'' + this.id + '\')">&lt;</td>';
  calString += '<td class="nav" align="right" onClick="changeMonth(-1,\'' + this.id + '\')">&lt;</td>';
  calString += '<td class="month" colspan="3">&nbsp;</td>';
  calString += '<td class="nav" onClick="changeMonth(1,\'' + this.id + '\')">&gt;</td>';
  calString += '<td class="nav" style="text-decoration:underline;text-align:right;" onClick="changeMonth(12,\'' + this.id + '\')">&gt;</td>';
  calString += '</tr></table></div>';
  return calString;
}

function getLength(){
  switch(this.month){
    case 1:
      if((this.dateObject.getFullYear()%4==0&&this.dateObject.getFullYear()%100!=0)||this.dateObject.getFullYear()%400==0)
        return 29; 
      else
        return 28;
    case 3:
      return 30;
    case 5:
      return 30;
    case 8:
      return 30;
    case 10:
      return 30
    default:
      return 31;
  }
}

function changeMonth(mo,cal){
  cal = eval(cal);
  cal.dateObject.setMonth(cal.dateObject.getMonth() + mo);
  cal = new calendar(cal.id,cal.dateObject);
  cal.formattedDate = cal.getFormattedDate();
  document.getElementById('calContainer').innerHTML = cal.write(); 
}