//wzor=/^[0-9]{4}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|(1[0-9]{1})|(2[0-9]{1})|(3[0-1]{1}))$/;

tab_mies = new Array();
tab_mies[1] = "Styczeń";
tab_mies[2] = "Luty";
tab_mies[3] = "Marzec";
tab_mies[4] = "Kwiecień";
tab_mies[5] = "Maj";
tab_mies[6] = "Czerwiec";
tab_mies[7] = "Lipiec";
tab_mies[8] = "Sierpień";
tab_mies[9] = "Wrzesień";
tab_mies[10] = "Październik";
tab_mies[11] = "Listopad";
tab_mies[12] = "Grudzień";

tab_dzien = new Array();
tab_dzien[1] = "Pon";
tab_dzien[2] = "Wt";
tab_dzien[3] = "Śr";
tab_dzien[4] = "Czw";
tab_dzien[5] = "Pt";
tab_dzien[6] = "Sob";
tab_dzien[7] = "Nie";

tab_data = new Array();
var input_date = "";

function cal_add_zero(str)
{
      if(str < 10 && str > 0)
               str = "0" + str;
      return str;
}

function cal_change_month(mies, sign)
{
      mies = parseFloat(mies);
      if(sign == 'plus')
      {
            mies = (mies + 1)%13; //mies
            if(mies == 0)
            {
                  mies = 1;
                  tab_data["y"]++;
            }
      }
      else if(sign == 'minus')
      {
            mies = (mies - 1)%13;
            if(mies == 0)
            {
                  mies = 12;
                  tab_data["y"]--;
            }
      }
      tab_data["m"] = mies;
      cal_make_div();
}

function cal_change_year(rok)
{
      tab_data["y"] = parseFloat(rok);
      cal_make_div();
}

function cal_make_date_ymd(y, m, d)
{
      return y + "-" + cal_add_zero(m) + "-" + cal_add_zero(d);
}

function date_to_tab(data)
{
      if(!wzor.test(data) == true)
      {
            d = new Date();
            tab_data["d"] = d.getDate().toString();
            tab_data["m"] = parseFloat(d.getMonth())+1;
            tab_data["y"] = parseFloat(d.getFullYear());
      }
      else
      {
            tab = data.split('-');
            tab_data["d"] = parseFloat(tab[2]);
            tab_data["m"] = parseFloat(tab[1]);
            tab_data["y"] = parseFloat(tab[0]);
            d = new Date(tab[0],(parseFloat(tab[1])-1),tab[2]);
            d = new Date(d.getTime());
      }
}

function hide_div(str)
{
     document.getElementById(str).style.visibility='hidden';
}

function show_div(str)
{
     document.getElementById(str).style.visibility='visible';
}

function cal_make_div()
{
     /////miesiac
     var new_mies = document.getElementById('mies');
     
      for (i = 0; i <= new_mies.length - 1; i++) 
      {
            if (new_mies.options[i].value == tab_data["m"]) 
                  new_mies.selectedIndex = i;
      }

     /////ROK
     var new_rok = document.getElementById('rok');
     new_rok.length = 0;
     var ile = 10;
     var _od = parseFloat(tab_data["y"] - ile);
     var _do = parseFloat(tab_data["y"] + ile);

     for(var i=_od;i<=_do;i++)
     {
            var new_rok_option = document.createElement('option');
            new_rok_option.setAttribute('value', i);
            new_rok_option.innerHTML = i;
            
            if(i == tab_data["y"])
                 new_rok_option.setAttribute('selected', 'true');
            
            new_rok.appendChild(new_rok_option);
     }
     ///////////
      var data_temp = new Date(tab_data["y"],tab_data["m"] - 1,"1");

      if(data_temp.getDay() == 0)
               wk = 6;
      else
               wk = data_temp.getDay()-1;

      for(var i=0;i<=41;i++)
      {
               document.getElementById("m" + i).innerHTML = "&nbsp;";   
               document.getElementById("m" + i).style.backgroundColor = '';
               if(parseFloat(data_temp.getMonth()) + 1 == tab_data["m"])
               {
                        if(i >= wk)
                        {
                                 akt_dzien = data_temp.getDate();

                                 var new_a = document.createElement('a');
                                 new_a.setAttribute('href', "javascript:document.getElementById('" + input_date + "').value='" + cal_make_date_ymd(tab_data["y"], tab_data["m"], akt_dzien) + "';hide_div('fil');void(0);");


                                 var new_text = document.createTextNode(akt_dzien);
                                 new_a.appendChild(new_text);

                                 document.getElementById("m" + i).innerHTML = "";   
                                 if(akt_dzien == tab_data["d"])
                                 {
                                       new_a.style.textDecoration= 'underline';
                                       document.getElementById("m" + i).style.backgroundColor = '#ddd';
                                 }

                                 document.getElementById("m" + i).appendChild(new_a);

                                 data_temp.setDate(parseFloat(data_temp.getDate() + 1));
                        }
               }
               //else
               //        break;
      }
}

function cal_show_calendar(data, e)
{
      input_date = data;
      if(!document.getElementById('fil'))
            cal_make_div_html(e);
      date_to_tab(document.getElementById(input_date).value);//data => tab_data[]
            
      cal_make_div();
      show_div('fil');
}

function cal_make_div_html(e)
{
      var xpos=(getBrowser()[0] != "msie")?e.pageX:event.clientX;
      var ypos=(getBrowser()[0] != "msie")?e.pageY:event.clientY;
      
      var div_calendar = document.createElement('div');
      div_calendar.setAttribute('id', 'fil');
      div_calendar.style.visibility='hidden';
      div_calendar.style.position='absolute';
      div_calendar.style.width='240px';
      div_calendar.style.zIndex='99';
      div_calendar.style.top='100px';
      div_calendar.style.left='100px';
     
      if(getBrowser()[0] != "msie")
      {
            div_calendar.style.top=ypos - 100 + 'px';
            div_calendar.style.left=xpos + 20 + 'px';
      }
      else
      {
            div_calendar.style.top=document.documentElement.scrollTop + ypos - 100 + 'px';
            div_calendar.style.left=document.documentElement.scrollLeft + xpos + 20 + 'px';      
      }

//document.getElementById(id).style.pixelTop=document.documentElement.scrollTop + e.clientY - 100;
//document.getElementById(id).style.pixelLeft=document.documentElement.scrollLeft + e.clientX + 10;
//document.getElementById(id).style.top=e.pageY - 100 + "px";
//document.getElementById(id).style.left=e.pageX + 10 + "px";    
     
     document.body.appendChild(div_calendar);

      var div_calendar_up = document.createElement('div');
      div_calendar_up.setAttribute('id', 'cal_up');
      div_calendar_up.className='cal_up left';
      div_calendar.appendChild(div_calendar_up);
     
     /////MIESIAC

     /////wstecz
     var new_mies_back = document.createElement('input');
     new_mies_back.setAttribute('type', 'button');
     new_mies_back.className='cal_left cal_left1';
     new_mies_back.setAttribute('id', 'mies_back');
     div_calendar_up.appendChild(new_mies_back);

     var _mies_back = document.getElementById('mies_back');
     if(_mies_back.addEventListener)
              _mies_back.addEventListener("click", function(){cal_change_month(parseFloat(_mies.value), 'minus');}, false);
     else
              _mies_back.attachEvent("onclick", function(){cal_change_month(parseFloat(_mies.value), 'minus');});
     ////////////
      //select
     var new_mies = document.createElement('select');
     new_mies.setAttribute('name', 'mies');
     new_mies.setAttribute('id', 'mies');
     new_mies.className= 'cal_select cal_select1';
     div_calendar_up.appendChild(new_mies);

     for(var i=1;i<=12;i++)
     {
              var new_mies_option = document.createElement('option');
              new_mies_option.setAttribute('value', i);
              new_mies_option.innerHTML = tab_mies[i];

              new_mies.appendChild(new_mies_option);
     }

     var _mies = document.getElementById('mies');

     if(_mies.addEventListener)
              _mies.addEventListener("change", function(){cal_change_month(parseFloat(_mies.value));}, false);
     else
              _mies.attachEvent("onchange", function(){cal_change_month(parseFloat(_mies.value));});

     /////do przodu
     var new_mies_ahead = document.createElement('input');
     new_mies_ahead.setAttribute('type', 'button');
     new_mies_ahead.className='cal_right cal_right1';
     new_mies_ahead.setAttribute('id', 'mies_ahead');
     div_calendar_up.appendChild(new_mies_ahead);

     var _mies_ahead = document.getElementById('mies_ahead');
     if(_mies_ahead.addEventListener)
              _mies_ahead.addEventListener("click", function(){cal_change_month(parseFloat(_mies.value), 'plus');}, false);
     else
              _mies_ahead.attachEvent("onclick", function(){cal_change_month(parseFloat(_mies.value), 'plus');});
     ////////////
     ///////////

     /////ROK

     /////wstecz
     var new_rok_back = document.createElement('input');
     new_rok_back.setAttribute('type', 'button');
     new_rok_back.className='cal_left cal_left2';
     new_rok_back.setAttribute('id', 'rok_back');
     div_calendar_up.appendChild(new_rok_back);

     var _rok_back = document.getElementById('rok_back');
     if(_rok_back.addEventListener)
              _rok_back.addEventListener("click", function(){cal_change_year(parseFloat(_rok.value) - 1);}, false);
     else
              _rok_back.attachEvent("onclick", function(){cal_change_year(parseFloat(_rok.value) - 1);});
     ////////////

     var new_rok = document.createElement('select');
     new_rok.setAttribute('name', 'rok');
     new_rok.setAttribute('id', 'rok');
     new_rok.className= 'cal_select cal_select2';
     div_calendar_up.appendChild(new_rok);

     var _rok = document.getElementById('rok');


     if(_rok.addEventListener)
     {
              _rok.addEventListener("change", function(){cal_change_year(_rok.value);}, false);
     }
     else
              _rok.attachEvent("onchange", function(){cal_change_year(_rok.value);});

     /////do przodu
     var new_rok_ahead = document.createElement('input');
     new_rok_ahead.setAttribute('type', 'button');
     new_rok_ahead.className='cal_right cal_right2';
     new_rok_ahead.setAttribute('id', 'rok_ahead');
     div_calendar_up.appendChild(new_rok_ahead);

     var _rok_ahead = document.getElementById('rok_ahead');
     if(_rok_ahead.addEventListener)
              _rok_ahead.addEventListener("click", function(){cal_change_year(parseFloat(_rok.value) + 1);}, false);
     else
              _rok_ahead.attachEvent("onclick", function(){cal_change_year(parseFloat(_rok.value) + 1);});
     ////////////

      /////zamknij
      var new_close = document.createElement('input');
      new_close.setAttribute('type', 'button');
      new_close.className='cal_close';
      new_close.setAttribute('id', 'close');
      div_calendar_up.appendChild(new_close);
      
      var _close = document.getElementById('close');
      if(_close.addEventListener)
              _close.addEventListener("click", function(){hide_div('fil');}, false);
      else
              _close.attachEvent("onclick", function(){hide_div('fil');});
      ////////////

     ///////////
      var div_cal_div_table = document.createElement('div');
      div_cal_div_table.setAttribute('id', 'div_cal_div_table');
      div_cal_div_table.className='cal_div_table';
      div_calendar.appendChild(div_cal_div_table);
     ///////////tabela z dniami//////
     var new_table_dzien = document.createElement('table');
     //new_table_dzien.style.width='100%';
     new_table_dzien.className='cal_table';
     div_cal_div_table.appendChild(new_table_dzien);

     var new_table_dzien_tr = new_table_dzien.insertRow(0);

     for(var i = 1;i <= 7;i++)
     {
              var new_table_dzien_td = new_table_dzien_tr.insertCell(i - 1);
              new_table_dzien_td.className= 'cal_head';
              new_table_dzien_td.appendChild(document.createTextNode(tab_dzien[i]));
     }
     var nr = 0;
     for(var i = 1;i <= 6;i++)
     {
              new_table_dzien_tr = new_table_dzien.insertRow(i);
              for(var j = 1;j <= 7;j++)
              {
                       new_table_dzien_td = new_table_dzien_tr.insertCell(j - 1);
                       new_table_dzien_td.setAttribute('id', 'm' + nr);
                       //new_table_dzien_td.appendChild(document.createTextNode('m' + nr));
                       nr++;
              }
     }
}
