var kontrola = new Array();// kontrola souvisejících kalendářů

function vymazData(div) {
  var vystup = document.getElementById(div);
  // v jednoduchem cyklu smazeme vsechny elementy v prvku vystup
  while(vystup.hasChildNodes()) vystup.removeChild(vystup.childNodes[0]);
}
  
/*
month_year, month_year2... název inputu v "inputMonth", kde je měsíc i rok.... např. 8/2007 
*/
  
function checkCalendars(idKontroly, divName){
  var InputOd=kontrola[idKontroly]["od"]["input"];
  var objekt=document.getElementById(InputOd);
  var check=objekt.value;
  var checkitems=check.split('.');
  var day_od=checkitems[0];
  var day_od_next=parseInt(day_od)+1;
  var month_od=parseInt(checkitems[1]);
  var year_od=parseInt(checkitems[2]);
  
  var datum_od_next = new Date(year_od, month_od-1, day_od_next);
  datum_od = new Date(year_od, month_od-1, day_od);
  
  var InputDo=kontrola[idKontroly]["do"]["input"];
  var objekt=document.getElementById(InputDo);
  var check=objekt.value;
  var checkitems=check.split('.');
  var day_do=parseInt(checkitems[0]);
  var month_do=parseInt(checkitems[1]);
  var year_do=parseInt(checkitems[2]);
  
  datum_do = new Date(year_do, month_do-1, day_do);
  
  
  if (datum_od >= datum_do){
    /* nastavení inputu se dnem */
    document.getElementById(InputDo).value = datum_od_next.getDate()+'.'+(datum_od_next.getMonth()+1)+'.'+datum_od_next.getFullYear();
    /* aktualizuje kalendář */
    createCalendar(kontrola[idKontroly]["do"]["div"], datum_od_next.getDate(),datum_od_next.getMonth(), datum_od_next.getFullYear(), kontrola[idKontroly]["do"]["input"], '','');
    if (divName == kontrola[idKontroly]["do"]["div"]){
      return false;
    }
    else
      return true;
  }
  else {
    return true;
  }
}


function changeDate(divName, day, month, year, inputDay, inputMonth, inputYear){
  var today = new Date();// dne?ní datum
  today = new Date (today.getFullYear(),0,1); /* chci omezit pouze k 1.1. aktualniho roku -- v pripade nepotreby staci umazat */
  if (!inputDay) return false;
  if (!document.getElementById(inputDay)) return false;
  var check = document.getElementById(inputDay).value;
  
  parsedayre = /([0-9]{1,2})\.([0-9]{1,2})\.[0-9]{4}/;
  if (!parsedayre.test(check)) {
    document.getElementById(inputDay).value=today.getDate()+'.'+(today.getMonth()+1)+'.'+today.getFullYear();
    var check = document.getElementById(inputDay).value;
  }
  var checkitems=check.split('.');
  //var checkitems=check.match(parsedayre);   
  
  if (!day && !month && !year) { 
    var parsedday=parseInt(checkitems[0]);
    var parsedmonth=parseInt(checkitems[1]);
    var parsedyear=parseInt(checkitems[2]);
  } else {
    var parsedday=day;
    var parsedmonth=month;
    var parsedyear=year;
  }
  var parseddate = new Date (parsedyear, parsedmonth-1, parsedday);
  if (parseddate<today) {
    document.getElementById(inputDay).value=today.getDate()+'.'+(today.getMonth()+1)+'.'+today.getFullYear();
    var check = document.getElementById(inputDay).value;      
    var checkitems=check.split('.');
    var parsedday=checkitems[0];
    var parsedmonth=checkitems[1];
    var parsedyear=checkitems[2];
    var parseddate = new Date (parsedyear, parsedmonth, parsedday);
    day = parsedday;
    month = parsedmonth;
    year = parsedyear;
  } else {
    // zkontroluji datum
    document.getElementById(inputDay).value=parseddate.getDate()+'.'+(parseddate.getMonth()+1)+'.'+parseddate.getFullYear();
    var check = document.getElementById(inputDay).value;      
    var checkitems=check.split('.');
    var parsedday=checkitems[0];
    var parsedmonth=checkitems[1];
    var parsedyear=checkitems[2];
    var parseddate = new Date (parsedyear, parsedmonth, parsedday);
  }
    var input;// pro hodnoty vstupů
  if (!day) {
    if (inputDay)
      day = parsedday;
    else
      day = today.getDate();
  }
  if (!month) {
    if (inputDay)
      month = parsedmonth;
    else
      month = today.getMonth()+1;
  }
  if (!year) {
    if (inputDay)
      year = parsedyear;
    else
      year = today.getFullYear();
  }
  //window.alert(divName+' '+day+' '+month+' '+year+' '+inputDay);
  
  if (inputDay)
    document.getElementById(inputDay).value = day+'.'+month+'.'+year;// nastaví den  
  if (kontrola){// pokud je definována kontrola kalendářů
    kontrolovat = null;// jestli je v poli kontrolovaných kalendářů
    for (i=0;i<kontrola.length;i++){
      if (kontrola[i]['od']['div'] == divName || kontrola[i]['do']['div'] == divName){
        idKontroly = i;
        kontrolovat = true;
        break;
      }
    }
    if (kontrolovat){// kontrola kalendářů od do
      if (checkCalendars(idKontroly, divName)){
        createCalendar(divName, day, month-1, year, inputDay, inputMonth, inputYear);
      }
    } else
      createCalendar(divName, day, month-1, year, inputDay, inputMonth, inputYear);
    }
    else
      createCalendar(divName, day, month-1, year, inputDay, inputMonth, inputYear);
}

  //month se pocita od 0
  
  
function createCalendar(divName, day, month, year, inputDay, inputMonth, inputYear){// zobrazí kalendář
  vymazData(divName);//vyma?e div s kalendářem
  var today = new Date();
  if (!day)
    day = today.getDate();
  if (!month)
    if (!day) month = today.getMonth();
    else month=0;
  if (!year)
    year = today.getFullYear();   
  // dny v měsíci
  var num_days = new Array ("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
  var nazvy_mesicu= new Array("Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec");
  if ((year%4) == 0)// přestupný rok
    num_days[1] = 29;
  if (day > num_days[month])// pokud je den vetsi nez max v mesici
    day = num_days[month];
  var date = new Date (year, month, 1);// první den v měsíci
  var day_of_week = date.getDay();// den v týdnu prvního dne v měsíci, 0-6
  var day_of_month = day;// den v měsíci
  out = "<table class='calendar'>";
  out += "<tr><th>Po</th><th>Út</th><th>St</th><th>Čt</th><th>Pá</th><th>So</th><th>Ne</th></tr>";
  out += "<tr>";
  if (day_of_week == 0)// 0 je pro nedeli
    day_of_week = 7;
  // vyplnění prázdných dnů
  for (var i=1; i<day_of_week; i++)
    out += "<td></td>";
  var day_last_month = num_days[month];// počet dní v měsíci
  for (var i=1; i<=day_last_month; i++){
    if (day == i)// aktuální den    
      out += "<td class='active'>"+i+"</td>";
    else//ostatní dny
      out += "<td><a href=\"#\" onclick=\"changeDate('"+divName+"', "+i+", "+(month+1)+", "+year+", '"+inputDay+"', '"+inputMonth+"');HideCalendar('od');HideCalendar('do');return false\">"+i+"</a></td>";
    if (day_of_week < 7)
      day_of_week++;
    else{
      day_of_week = 1;
      out += "</tr><tr>";// konec řádku kalendáře
    }
  }
  den_prev=new Date(year,parseInt(month)-1,day);
  den_next=new Date(year,parseInt(month)+1,day);
  var day_prev=den_prev.getDate();
  var month_prev=den_prev.getMonth()+1;
  var year_prev=den_prev.getFullYear();
  var day_next=den_next.getDate();
  var month_next=den_next.getMonth()+1;
  var year_next=den_next.getFullYear();
  if (day_prev!=day) { // prechod pres vice nez mesic
    den_prev=new Date(year,parseInt(month),0);
    var day_prev=den_prev.getDate();
    var month_prev=den_prev.getMonth()+1;
    var year_prev=den_prev.getFullYear();
  }
  if (day_next!=day) {
    den_next=new Date(year,parseInt(month)+2,0);
    var day_next=den_next.getDate();
    var month_next=den_next.getMonth()+1;
    var year_next=den_next.getFullYear();
  }
  // naplnim hodnoty v inputu a radeji je necham znovu nacist
  
  out += "</tr>";
  out += "<tr>";
  out += "<td colspan='7' class='navigacni-radek'>";
  //out += "<a href=\"#\" onclick=\"document.getElementById('"+inputDay+"').value=day_prev+'.'+month_prev+'.'+year_prev;changeDate('"+divName+"', '','','', '"+inputDay+"', '"+inputMonth+"');return false;\">&lt;-</a>";
  if (year_prev>today.getFullYear() || (year_prev==today.getFullYear() && month_prev>today.getMonth()))
    out += "<a href=\"#\" onclick=\"changeDate('"+divName+"', '"+day_prev+"','"+month_prev+"','"+year_prev+"', '"+inputDay+"', '"+inputMonth+"');return false;\">&lt;-</a>";
  out += ' '+nazvy_mesicu[month]+' '+year+' ';
  //out += "<a href=\"#\" onclick=\"document.getElementById('"+inputDay+"').value=day_next+'.'+month_next+'.'+year_next;changeDate('"+divName+"', '','','', '"+inputDay+"', '"+inputMonth+"');return false;\">-&gt;</a>";
  out += "<a href=\"#\" onclick=\"changeDate('"+divName+"', '"+day_next+"','"+month_next+"','"+year_next+"', '"+inputDay+"', '"+inputMonth+"');return false;\">-&gt;</a>";
  out += "</td>";
  out += "</tr>";
  out += "</table>";
  var div = document.getElementById(divName);
  if(div) {
      div.innerHTML = out;// zobrazení nového kalendáře
  }
}
