// kalendarz rezerwacji
function DatePHP2DateJS(datePHP){
  return new Date(datePHP.substr(0,4),datePHP.substr(5,2)-1,datePHP.substr(8,2));
}

function stworzKalendarz(rez,nowa_data,id_ap,ind_d,o_special){

  if(nowa_data==1){
    dzis[ind_d].setMonth(dzis[ind_d].getMonth()+1);
  }else if(nowa_data == -1){
    dzis[ind_d].setMonth(dzis[ind_d].getMonth()-1);
  }
  var miesiace = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  var miesiaceNazwa = new Array('Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień');
  if(dzis[ind_d].getDay()==0)var pierwszy=7; else var pierwszy=dzis[ind_d].getDay();
  var ostatni = miesiace[dzis[ind_d].getMonth()];
  if(dzis[ind_d].getMonth()==1 && dzis[ind_d].getFullYear()%4==0) ostatni = 29;
  getElemRefs("kal_data_"+id_ap).innerHTML = miesiaceNazwa[dzis[ind_d].getMonth()]+" "+dzis[ind_d].getFullYear();
  
  //uzupelniamy kalendarz
  var dzien =1;
  for(var i=1; i<=42; i++){
    if(pierwszy<=i && ostatni>=dzien){
      getElemRefs("kal_dzien"+i+"_"+id_ap).innerHTML = dzien;
      getElemRefs("kal_dzien"+i+"_"+id_ap).style.border = "1px solid black";
      dzien++;
    }else{ 
      getElemRefs("kal_dzien"+i+"_"+id_ap).innerHTML = "";
      getElemRefs("kal_dzien"+i+"_"+id_ap).style.border = "none";
    }
  }

  rezerwacje(rez,pierwszy,ostatni,id_ap,ind_d);
  specialOffer(dzis[ind_d],pierwszy,ostatni,id_ap,o_special);  
}

/*
    var DATE dzis - pierwszy dzien aktualnego miesiaca
*/

function specialOffer(dzis,pierwszy,ostatni,id_ap,o_special)
{
    var next_month = new Date(dzis.getFullYear(),dzis.getMonth()+1,1);
    for(var i=0; i<o_special.length; i++)
    {
        dzis_temp = dzis;
        while(dzis_temp<next_month)
        {
            if(dzis_temp>=o_special[i][0] && dzis_temp<=o_special[i][1])
            {
                getElemRefs("kal_dzien"+(pierwszy-1+dzis_temp.getDate())+"_"+id_ap).innerHTML += "<br /><b style=\"color: #CC9900;\">+" + o_special[i][2] + "%</b>";
            }
            dzis_temp = new Date(dzis_temp.getFullYear(),dzis_temp.getMonth(),dzis_temp.getDate()+1);
        }
    }
}

function rezerwacje(rez,pierwszy,ostatni,id_ap,ind_d){
  for(var i=0; i<rez.length; i++){
    if(rez[i][0].getMonth()==dzis[ind_d].getMonth() && rez[i][0].getFullYear()==dzis[ind_d].getFullYear()){
    
      if(rez[i][0].getMonth()==rez[i][1].getMonth()){
        if(rez[i][2]==1){
          getElemRefs("kal_dzien"+(pierwszy-1+rez[i][0].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez.gif\" style=\"float: right;\" alt=\"przyjazd\"/>";
          getElemRefs("kal_dzien"+(pierwszy-1+rez[i][1].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez.gif\" style=\"float: left;\" alt=\"wyjazd\"/>";
        }else{
          getElemRefs("kal_dzien"+(pierwszy-1+rez[i][0].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez_t.gif\" style=\"float: right;\" alt=\"przyjazd\"/>";
          getElemRefs("kal_dzien"+(pierwszy-1+rez[i][1].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez_t.gif\" style=\"float: left;\" alt=\"wyjazd\"/>";
        }
        var oostatni = pierwszy-1+rez[i][1].getDate();
        for(var j=(pierwszy+rez[i][0].getDate()); j<oostatni; j++){
          if(rez[i][2]==1)
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja\"/>";
          else
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez_t.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja wstępna\"/>";
        }
      }else{
        if(rez[i][2]==1)
          getElemRefs("kal_dzien"+(pierwszy-1+rez[i][0].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez.gif\" style=\"float: right;\" alt=\"przyjazd\"/>";
        else
          getElemRefs("kal_dzien"+(pierwszy-1+rez[i][0].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez_t.gif\" style=\"float: right;\" alt=\"przyjazd\"/>";

        var oostatni = pierwszy+ostatni-1;
        
        for(var j=(pierwszy+rez[i][0].getDate()); j<=oostatni; j++){   
          if(rez[i][2]==1)
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja\"/>";
          else
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez_t.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja wstępna\"/>";
        }
      }
    }else if(rez[i][1].getMonth()==dzis[ind_d].getMonth() && rez[i][1].getFullYear()==dzis[ind_d].getFullYear()){
      if(rez[i][2]==1)  
        getElemRefs("kal_dzien"+(pierwszy-1+rez[i][1].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez.gif\" style=\"float: left;\" alt=\"wyjazd\"/>";
      else
        getElemRefs("kal_dzien"+(pierwszy-1+rez[i][1].getDate())+"_"+id_ap).innerHTML += "<img src=\"../images/polrez_t.gif\" style=\"float: left;\" alt=\"wyjazd\"/>";
      var oostatni = pierwszy-1+rez[i][1].getDate();
      for(var j=(pierwszy); j<oostatni; j++){
        if(rez[i][2]==1)
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja\"/>";
          else
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez_t.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja tymczasowa\"/>";
      }
    }else if(rez[i][0]<dzis[ind_d] && rez[i][1]>dzis[ind_d]){
      var oostatni = pierwszy+ostatni;
      for(var j=(pierwszy); j<oostatni; j++){
        if(rez[i][2]==1)
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja\"/>";
          else
            getElemRefs("kal_dzien"+j+"_"+id_ap).innerHTML += "<img src=\"../images/rez_t.gif\" style=\"margin: 0 6px 0 6px;\" alt=\"rezerwacja tymczasowa\"/>";
      }    
    }
  }
}

function policzCeneDnia(cdor,cdor_dod,cdz){
  var policz = 0;
  var ile_dor = getElemRefs('pilosc_osob').value;
  var ile_dz = getElemRefs('pilosc_dzieci').value;
  if(ile_dz=='') ile_dz=0;
  var ile_dor_dod = 0;
  
  if(ile_dor >2){
    ile_dor_dod = ile_dor-2;
    ile_dor = 2;
  }
  return cdor+ile_dor_dod*cdor_dod+ile_dz*cdz;
}

function policzCene(){
  var przy = getElemRefs('pprzyjazd').value;
  var wyj = getElemRefs('pwyjazd').value;
  var idz = getElemRefs('pilosc_dzieci').value;
  var idor = getElemRefs('pilosc_osob').value;
  if(przy=='' || wyj=='' || idor==''){ alert('Musza być podane pola: Ilość dorosłych, Przyjazd, Wyjazd'); return;}
  if(isNaN(idz) || isNaN(idor)) { alert("Ilość osób i Ilość dzieci muszą być liczbami całkowitymi"); return false;}
  var cena = 0;
  var data_w = DatePHP2DateJS(getElemRefs('pprzyjazd').value);
  var data_wk = DatePHP2DateJS(getElemRefs('pwyjazd').value);
  
  //jesli przyjazd i wyjazd liczymy jako 1 dzen to tylko <
  /* 
    promocja = Array(
                0 => od,
                1 => do,
                2 => cena 2 pierwszych doroslych,
                3 => cena koljnego doroslego,
                4 => cena dziecka
               )
    promocja_mniej = Array( //promocja mnie niż n (var n) dni
                0 => od,
                1 => do,
                2 => cena 2 pierwszych doroslych,
                3 => cena koljnego doroslego,
                4 => cena dziecka
               )
    ceny = Array(
                0 => cena 2 pierwszych doroslych,
                1 => cena koljnego doroslego,
                2 => cena dziecka
               )
  */

  //gdy ilosc dni rezerwacji jest mniejsza od n - zdeklarowana zmiena w bazie, tabeli poromojce
  if(n>0 && new Date(data_w.getFullYear(),data_w.getMonth(),data_w.getDate()+n)>data_wk)
  {
    while(data_w<data_wk){
        if(data_w>=promocja_mniej[0] && promocja_mniej[1]>data_w){
          cena_dnia = policzCeneDnia(promocja_mniej[2],promocja_mniej[3],promocja_mniej[4]); 
        }else{
          cena_dnia = policzCeneDnia(ceny[0],ceny[1],ceny[2]); 
        }
        
        //gdy w danym terminie jest wieksza cena (ofeta specialna)
        for(var j=0; j<special_offer.length; j++)
        {
            if(data_w>=special_offer[j][0] && special_offer[j][1]>data_w){
              cena_dnia = cena_dnia*(special_offer[j][2]/100 + 1); 
              cena_dnia = Math.floor(cena_dnia);
            }
        }
        cena += cena_dnia;
        data_w = new Date(data_w.getFullYear(),data_w.getMonth(),data_w.getDate()+1);
      }
  }
  //gdy ilosc dni jest wieksza rowna n lub nie ma promocji
  else
  {
      while(data_w<data_wk){
        if(data_w>=promocja[0] && promocja[1]>data_w){
          cena_dnia = policzCeneDnia(promocja[2],promocja[3],promocja[4]); 
        }else{
          cena_dnia = policzCeneDnia(ceny[0],ceny[1],ceny[2]); 
        }
        
        //gdy w danym terminie jest wieksza cena (ofeta specialna)
        for(var j=0; j<special_offer.length; j++)
        {
            if(data_w>=special_offer[j][0] && special_offer[j][1]>data_w){
              cena_dnia = cena_dnia*(special_offer[j][2]/100 + 1); 
              cena_dnia = Math.floor(cena_dnia);
            }
        }
        cena += cena_dnia;
        data_w = new Date(data_w.getFullYear(),data_w.getMonth(),data_w.getDate()+1);
      }
  }
  getElemRefs('cena').value = cena;
}

function formRezerwacja(form){
  if(isNaN(form.ilosc_osob.value)){ alert("Ilość osób musi być liczbą całkowitą"); return false;}
  if(isNaN(form.ilosc_dzieci.value)){ alert("Ilość dzieci muszą być liczbami całkowitymi"); return false;}
  policzCene();
  if(form.klient.value==''){ alert("podaj imię i nazwisko"); return false;}
  if(form.ilosc_osob.value==''){ alert("podaj ilość osób"); return false;}
  if(form.email.value==''){ alert("podaj e-mail"); return false;}
  if(form.telefon.value==''){ alert("podaj telefon"); return false;}
  if(form.przyjazd.value==''){ alert("podaj date przyjazdu"); return false;}
  if(form.wyjazd.value==''){ alert("podaj date wyjazdu"); return false;}
  if(form.przyjazd.value > form.wyjazd.value){ alert("Data przyjazdu nie może być wieksza od daty wyjazdu"); return false}
  return true;
}