function buildCalendar(events,year) {
  var now = new Date(), ye = now.getFullYear(), mn = now.getMonth(), da = now.getDate()
    , MN = ['Január','Február','Március','Április','Május','Június','Július','Augusztus','Szeptember','Október','November','December']
    , DA = [31, ye&3 ? 28 : 29,31,30,31,30,31,31,30,31,30,31]
    , DW = ['Hétfő','Kedd','Szerda','Csütörtök','Péntek','Szombat','Vasárnap']
    , cal = "" , col = "" , ex = 0, em = events[ex++] - 1, ed = events[ex++], ec = 0;
  if(year != ye) mn = -1; // archív
  for(var m = 0; m < 12; m++) {
    var mi = - (new Date(year, m, 1).getDay() - 1), ma = DA[m], td, st;
    if(mi > 0) mi = -6; //Vasárnap
    if(!(m%3)) cal += "<tr>";
    cal += "<td><table class=cal><thead><tr><th colspan=7>" + year + ". " + MN[m]
         + "<tr><th>H<th>K<th>S<th>C<th>P<th class=s>S<th class=s>V<tbody>";
    for(var i = 0; i < 6; i++) {
      cal += "<tr>";
      for(var j = 0; j < 7; j++) {
        st = j < 5 ? 0 : "s";
        if(mi++ < 0 || mi > ma) td = '&nbsp;';
        else {
          if(m == mn && mi == da) st += " a";
          if(em == m && ed == mi) {
            var eC = events[ex],t1 = MN[m].toLowerCase() + " " + ed + ".";
            if(eC == 1) st += " fF"; else if(!ec) st += " fS"; else if(ec + 1 < eC) st += " fM"; else st += " fE";
            st += " t" + events[ex + 1] + "' title='" + t1 + " " + events[ex + 2] + " - " + events[ex + 3] + " - " + eC + " nap";
            if(++ec < eC)
              if(ed == ma) {em++; ed = 1;} // köv hó
              else ed++;
            else {
              ex += 4; em = events[ex++] - 1; ed = events[ex++]; ec = 0;
              while(em == m && ed <= mi) {ed++; ec++;}
            }
          }
          td = mi;
        }
        cal += "<td"; if(st) cal += " class='" + st + "'"; cal += ">" + td;
      }
      if(mi >= ma) break;
    }
    cal += "</table>";
  }
  ex = 0, ec = 0;
  while(ex < events.length) {
    em = events[ex++] - 1; ed = events[ex++];
    if(em > 11) break;
    col += "<tr class='" + (++ec&1 ? "odd" : "even");
    if(em < mn || (em == mn && ed < da)) col += " o";
    var eC = events[ex++], j = new Date(year, em, ed).getDay() - 1; if(j < 0) j = 6;
    ex++;
    col += "'><td>" + ec + ".<td>" + MN[em].toLowerCase() + " " + ed + ".<td>" + DW[j].toLowerCase();
    if(eC > 1) col += "-" + DW[(j + eC - 1)%7].toLowerCase();
    col += "<td>" + events[ex++] + "<td>" + events[ex++];
  }
  document.write("<table class=cxl><td>"
    + "<table class=cxl>" + cal + "</table>"
    + "<td>"
    + "<table class=col>" + col + "</table>"
    + "</table>"
  );
}