// JavaScript Document
datum = new Date();
var nazvy_mesice = new Array('Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');
var pridavek_rok = 0;
var pridavek_mesic = 0;
var odkud_zkusit_cerpat_datum_pridavek='';
var kam_umistit_kalendar_pridavek='';
var konecny_rok = 0;
var konecny_mesic = 0;
var staly_pridavek_mesic = 0;
var staly_pridavek_rok = 0;
var citac = 0;
var cislo_pridavek = 0;
var id_apartmanu_pridavek = 0;
var nazev = '';

function get_first_day_in_calendar(mesice,konecny_rok,konecny_mesic){
  var den = datum.getDate();
  var mesic = datum.getMonth();
  if (document.all){
      var rok = datum.getYear();
  }
  else{
      var rok = datum.getYear() + 1900;
  }
  var pocet_dni_mesice = mesice[mesic];
  var nazev_dne = datum.getDay();
  //alert(konecny_rok + " a " + konecny_mesic + " a " + den + " a " + mesic + " a " +nazev_dne);
  if(nazev_dne==0)nazev_dne = 7; //tady to je aby nedele mela 7
  var prvni_den = (nazev_dne-0) + (7 - (den % 7)) + 1;
  prvni_den = prvni_den % 7; //tady zjistim poradi dne v tydnu
  if(prvni_den==0)$prvni_den = 7;//tady nastavim aby nedele byla sedm a mam cislo prvniho dne v mesici
  konecny_mesic--;//tady nastavim, aby byli mesice pocitany od nuly
  if(konecny_mesic==mesic){}
  else if(konecny_mesic>mesic){
      for(citac_mesicu = (mesic-0);citac_mesicu<konecny_mesic;citac_mesicu++)prvni_den=(prvni_den-0)+(mesice[citac_mesicu]-0);
  }
  else{
      for(citac_mesicu = mesic;citac_mesicu>konecny_mesic;citac_mesicu--){
          prvni_den=prvni_den-mesice[citac_mesicu-1];
      }
  }
  //echo ' Konecny rok : '.$konecny_rok.' startovni rok : '.$rok;
  if(konecny_rok==rok){}
  else if(konecny_rok>rok){
      if(konecny_mesic<=1){
          //bere se tenhle rok a zjistuju jestli je prestupnej
          for(citac_roku=rok;citac_roku<konecny_rok;citac_roku++){
              if(citac_roku%4==0){
                  if((citac_roku%400)!=0 && (citac_roku%100)==0){}//neni prestupny
                  else prvni_den = (prvni_den-0) + 366;
              }
              else prvni_den = (prvni_den-0) + 365;
          }
      }
      else{
          //bere se pristi rok a zjistuju jestli je prestupnej
          for(citac_roku=rok;citac_roku<konecny_rok;citac_roku++){
              if((citac_roku+1)%4==0){
                  if(((citac_roku+1)%400)!=0 && ((citac_roku+1)%100)==0){}//neni prestupny
                  else prvni_den = (prvni_den-0) + 366;
              }
              else prvni_den = (prvni_den-0) + 365;
          }
      }
  }
  else{
      if(konecny_mesic>1){
          for(citac_roku=rok;citac_roku>konecny_rok;citac_roku--){
              if(citac_roku%4==0){
                  if((citac_roku%400)!=0 && (citac_roku%100)==0){}//neni prestupny
                  else prvni_den = (prvni_den-0) - 366;
              }
              else prvni_den = (prvni_den-0) - 365;
          }
      }
      else{
          for(citac_roku=rok;citac_roku>konecny_rok;citac_roku--){
              if((citac_roku-1)%4==0){
                  if(((citac_roku-1)%400)!=0 && ((citac_roku-1)%100)==0){}//neni prestupny
                  else prvni_den = (prvni_den-0) - 366;
              }
              else prvni_den = (prvni_den-0) - 365;;
          }
      }
  }
  prvni_den%=7;
  if(prvni_den<=0)prvni_den = (prvni_den-0) + 7;
  return prvni_den;
}

function posun_datum(rok,mesic){
    pridavek_rok = pridavek_rok + rok;
    pridavek_mesic = pridavek_mesic + mesic;
    kalendar(odkud_zkusit_cerpat_datum_pridavek,kam_umistit_kalendar_pridavek,cislo_pridavek,id_apartmanu_pridavek);
}

function priprav_datum(cislo_dne){
    var vysledne_datum='';
    vysledne_datum = cislo_dne + '.' + konecny_mesic + '.' + konecny_rok;
    document.getElementById(odkud_zkusit_cerpat_datum_pridavek).value = vysledne_datum;
    document.getElementById(kam_umistit_kalendar_pridavek).style.visibility = "hidden";
    citac = 0;
}

function zavri_kalendar(nazev){
    document.getElementById(nazev).style.visibility='hidden';
    document.getElementById(nazev).style.position='absolute';
}

function klikaci_den_na_kalendari(rok,mesic,den){
    if(kam_umistit_kalendar_pridavek=='show_datum_od' || kam_umistit_kalendar_pridavek=='show_datum_do')return true;
    var den_kal = datum.getDate();
    var mesic_kal = datum.getMonth()-0+1;
    if (document.all){
        var rok_kal = datum.getYear();
    }
    else{
        var rok_kal = datum.getYear() + 1900;
    }
    if(rok<rok_kal)return false;
    if(rok>rok_kal)return true;
    else{
        //alert(mesic+" a "+mesic_kal);
        if(mesic<mesic_kal)return false;
        if(mesic>mesic_kal)return true;
        else{
            //alert(den+" a "+den_kal);
            if(den<den_kal)return false;
            else return true;
        }
    }
}

function nakresli_kalendar(prvni_den,mesic_na_kalendari,rok_na_kalendari,mesice,cislo,id_apartmanu){
    posun_kalendare = 168;
    if(kam_umistit_kalendar_pridavek!='show_datum_od' && kam_umistit_kalendar_pridavek!='show_datum_do'){
        nazev='dny'+id_apartmanu;
        posun_kalendare = 178;
    }
    else nazev = 'kalendar_dynamicky'; 
    var kalendar='<div class="kalendar_dynamicky" id="kalendar_dynamicky">';
    kalendar = kalendar + '<div class="kalendar_dynamicky_posunovac"><span onClick=\"posun_datum(-1,0);\" style=\"position:relative;left:5px;cursor:pointer;\">&laquo;</span><span id=\"rok'+cislo+id_apartmanu+'\" style=\"position:relative;left:10px;\"></span><span onClick=\"posun_datum(1,0);\" style=\"position:relative;left:15px;cursor:pointer;\">&raquo;</span><span onClick=\"posun_datum(0,-1);\" style=\"position:relative;left:40px;cursor:pointer;\">&laquo;</span><span onClick=\"posun_datum(0,1);\" style=\"position:relative;left:100px;\cursor:pointer;">&raquo;</span><span id=\"mesic'+cislo+id_apartmanu+'\" style=\"position:relative;left:35px;\"></span><span style=\"position:absolute;left:'+posun_kalendare+'px;cursor:pointer;\" onclick=\"zavri_kalendar(\''+nazev+'\');\"><img src="/imgs/krizek.png" alt="zavri"/></span></div>';
    kalendar = kalendar + '<table><tr><td class="kalendar_dynamicky_dny">Po</td><td class="kalendar_dynamicky_dny">Út</td><td class="kalendar_dynamicky_dny">St</td><td class="kalendar_dynamicky_dny">Čt</td><td class="kalendar_dynamicky_dny">Pá</td><td class="kalendar_dynamicky_dny">So</td><td class="kalendar_dynamicky_dny_ne">Ne</td></tr>';  
    kalendar = kalendar + '<tr>'; 
    var maximalni_pocet_td_na_radek = 7;
    var aktualni_pocet_td_v_radku = prvni_den - 1;
    for(var pocet_td = 0;pocet_td < aktualni_pocet_td_v_radku;pocet_td++) kalendar = kalendar + '<td class="kalendar_dynamicky_neni_den">&nbsp;</td>';
    for(var citac_dnu_tohoto_mesice=1;citac_dnu_tohoto_mesice<=mesice[mesic_na_kalendari-1];citac_dnu_tohoto_mesice++){
        if(aktualni_pocet_td_v_radku==7){
            aktualni_pocet_td_v_radku=aktualni_pocet_td_v_radku%7;
            kalendar = kalendar + '</tr><tr>';
        }
        //alert(klikaci_den_na_kalendari(rok_na_kalendari,mesic_na_kalendari,citac_dnu_tohoto_mesice));
        aktualni_pocet_td_v_radku++;
        if(mesic_na_kalendari==7 || mesic_na_kalendari==8){
            if(aktualni_pocet_td_v_radku==6){
                if(klikaci_den_na_kalendari(rok_na_kalendari,mesic_na_kalendari,citac_dnu_tohoto_mesice))kalendar = kalendar + '<td class="kalendar_dynamicky_jednotlivy_den" onclick="priprav_datum('+citac_dnu_tohoto_mesice+')">' + citac_dnu_tohoto_mesice + '</td>';
                else kalendar = kalendar + '<td class="kalendar_dynamicky_jednotlivy_den">' + citac_dnu_tohoto_mesice + '</td>'; 
            }
            else if(aktualni_pocet_td_v_radku==7)kalendar = kalendar + '<td class="kalendar_dynamicky_neni_den_ne">' + citac_dnu_tohoto_mesice + '</td>';
            else kalendar = kalendar + '<td class="kalendar_dynamicky_neni_den">' + citac_dnu_tohoto_mesice + '</td>';
        }
        else{
            if(aktualni_pocet_td_v_radku==7){
                if(klikaci_den_na_kalendari(rok_na_kalendari,mesic_na_kalendari,citac_dnu_tohoto_mesice))kalendar = kalendar + '<td class="kalendar_dynamicky_jednotlivy_den_ne" onclick="priprav_datum('+citac_dnu_tohoto_mesice+')">' + citac_dnu_tohoto_mesice + "</td>";
                else kalendar = kalendar + '<td class="kalendar_dynamicky_jednotlivy_den_ne">' + citac_dnu_tohoto_mesice + "</td>";
            }
            else{
                if(klikaci_den_na_kalendari(rok_na_kalendari,mesic_na_kalendari,citac_dnu_tohoto_mesice))kalendar = kalendar + '<td class="kalendar_dynamicky_jednotlivy_den" onclick="priprav_datum('+citac_dnu_tohoto_mesice+')">' + citac_dnu_tohoto_mesice + "</td>";
                else kalendar = kalendar + '<td class="kalendar_dynamicky_jednotlivy_den">' + citac_dnu_tohoto_mesice + "</td>"; 
            }
        }
    }
    if(aktualni_pocet_td_v_radku!=0){
      while(aktualni_pocet_td_v_radku++<7){
          if(aktualni_pocet_td_v_radku!=7)kalendar = kalendar + '<td class="kalendar_dynamicky_neni_den">&nbsp;</td>';
          else kalendar = kalendar + '<td class="kalendar_dynamicky_neni_den_ne"></td>';
      }
    }
    kalendar = kalendar + '</tr></table></div>';
    return kalendar;
}

function kalendar(odkud_zkusit_cerpat_datum,kam_umistit_kalendar,cislo,id_apartmanu){
    if(kam_umistit_kalendar=='show_datum_od')zavri_kalendar('show_datum_do');
    else if(kam_umistit_kalendar=='show_datum_do')zavri_kalendar('show_datum_od');
    else zavri_kalendar('dny'+id_apartmanu);
    id_apartmanu_pridavek = id_apartmanu;
    cislo_pridavek = cislo;
    odkud_zkusit_cerpat_datum_pridavek = odkud_zkusit_cerpat_datum;
    kam_umistit_kalendar_pridavek = kam_umistit_kalendar;
    var datum = new Date();
    var puvodni_datum = document.getElementById(odkud_zkusit_cerpat_datum).value;
    if (document.all){
        konecny_rok = datum.getYear();
    }
    else{
        konecny_rok = datum.getYear() + 1900;
    }
    konecny_mesic = datum.getMonth()+1;
    
    if(puvodni_datum !=''){
        var pole_datum = puvodni_datum.split('.');
        pom_konecny_rok = pole_datum[2];
        pom_konecny_mesic = pole_datum[1];
        if(citac++==0){
            pridavek_rok = 0;
            pridavek_mesic = 0;
        }
        staly_pridavek_mesic = pom_konecny_mesic - konecny_mesic;
        staly_pridavek_rok = pom_konecny_rok - konecny_rok;
    }
    else{
        staly_pridavek_mesic = 0;
        staly_pridavek_rok = 0;
    }
    
    konecny_rok = (konecny_rok-0) + (pridavek_rok-0) + (staly_pridavek_rok-0);
    konecny_mesic = (konecny_mesic-0) + (pridavek_mesic-0) + (staly_pridavek_mesic-0);
    konecny_mesic = konecny_mesic%12;
    if(konecny_mesic==0)konecny_mesic=12;
    if(konecny_mesic<1 || konecny_mesic>12){
        if(konecny_mesic<1){
            konecny_mesic+=12;
        }
        else{
            konecny_mesic-=12;
        }
    }
    if(datum.getYear()%4==0)var mesice = new Array('31','29','31','30','31','30','31','31','30','31','30','31');
    else var mesice = new Array('31','28','31','30','31','30','31','31','30','31','30','31');
    var prvni_den = get_first_day_in_calendar(mesice,konecny_rok,konecny_mesic);
    if(datum.getYear()%4==0)var mesice = new Array('31','29','31','30','31','30','31','31','30','31','30','31');
    else var mesice = new Array('31','28','31','30','31','30','31','31','30','31','30','31');
    var hotovy_kalendar = nakresli_kalendar(prvni_den,konecny_mesic,konecny_rok,mesice,cislo,id_apartmanu);
    document.getElementById(kam_umistit_kalendar).style.visibility = 'visible';
    document.getElementById(kam_umistit_kalendar).innerHTML = hotovy_kalendar;
    document.getElementById('rok'+cislo+id_apartmanu).innerHTML = konecny_rok;
    document.getElementById('mesic'+cislo+id_apartmanu).innerHTML = nazvy_mesice[konecny_mesic-1];
}
