var cal_date1=new Date();
var cal_date2=new Date();
var date_now=new Date();
var date_type;
var cal_type;
var cal_name;
var cal_elem;
var date_elem;
var month_names=['Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec'];

function calculateNights(){
   var tmp=Math.round((cal_date2.getTime()-cal_date1.getTime())/86400000);
   document.getElementById('nights').value=(tmp>0)?tmp:"";
   document.getElementById('nights_span').innerHTML=(tmp>0)?"Počet nocí: <span id='nights_span' style='font-size:1.3em'>"+tmp+"</span>":"";
}
function calShow(type, evnt){
   evnt=evnt||window.event;
   if(evnt.pageX && evnt.pageY){
      x=evnt.pageX,y=evnt.pageY;
   }
   else{   //IE
   x=evnt.clientX + document.body.scrollLeft - document.body.clientLeft,
   y=evnt.clientY + document.body.scrollTop  - document.body.clientTop
   };
   date_elem=document.getElementById('date_'+type);
   date_now.setTime(type>1?cal_date2.valueOf():cal_date1.valueOf());
   date_type=(type!=2?cal_date1:cal_date2);
   cal_type=type;
   document.getElementById('cal_header').innerHTML=document.getElementById('cal_header_'+(type==3?1:type)).innerHTML;
   cal_elem=document.getElementById('calendar');
   cal_elem.style.display='block';
   cal_elem.style.left=(document.body.scrollLeft+document.body.clientWidth/2-120)+'px';
   cal_elem.style.top=(document.body.scrollTop+document.body.clientHeight/2-121)+'px';
   var cal_fade=document.getElementById('cal_fade');
   cal_fade.style.display='block';
   cal_fade.style.width=document.body.clientWidth+'px';
   cal_fade.style.height=document.body.clientHeight+'px';
   calDraw();
   }
function calHide(){
   cal_elem.style.display='none';
   document.getElementById('cal_fade').style.display='none'
}
function calNext(){
   date_now.setMonth((date_now.getMonth()+1)>11?0:(date_now.getMonth()+1));
   if(date_now.getMonth()==0)date_now.setFullYear(date_now.getFullYear()+1);
   calDraw();
}
function calPrevious(){
   date_now.setMonth((date_now.getMonth()-1)<1?11:(date_now.getMonth()-1));
   if(date_now.getMonth()==11)date_now.setFullYear(date_now.getFullYear()-1);
   calDraw();
}
function calPlusWeek(now){
   var then=new Date();
      then.setTime(now.getTime()+604800000);
   return then;
}
function calSet(calDate){
   date_type.setDate(calDate);
   date_type.setMonth(date_now.getMonth());
   date_type.setFullYear(date_now.getFullYear());
   date_elem.value=(date_type.getDate()+'.'+(date_type.getMonth()+1)+'.'+date_type.getFullYear());
   if(cal_type==3){
      cal_date2=calPlusWeek(date_type);
      document.getElementById('date_4').value=(cal_date2.getDate()+'.'+(cal_date2.getMonth()+1)+'.'+cal_date2.getFullYear());
   }
   calculateNights();
   calHide();
}
function calDraw(){
   cal_name=document.getElementById('cal_name');
   cal_name.innerHTML=month_names[date_now.getMonth()]+' - '+date_now.getFullYear();
   var cal_table=document.getElementById('cal_table');
   var tmp_date=new Date();
   tmp_date=date_now;
   var tmp='<table><tr style=\'height:15px;\'><th>Po</th><th>Út</th><th>St</th><th>Čt</th><th>Pá</th><th>So</th><th>Ne</th></tr>';
var tmp_date= new Date();
tmp_date.setDate(1);
tmp_date.setMonth(date_now.getMonth());
tmp_date.setFullYear(date_now.getFullYear())
switch (tmp_date.getMonth()+1){
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:maxi=31;break;
   case 2: year=tmp_date.getFullYear();maxi=((year>0) && !(year%4) && ((year%100) || !(year%400)))?29:28;break;
   default: maxi=30;
}
x=tmp_date.getDay();
var d=2-(x==0?7:x);
var onclick='';
i=1;
for(k=1;k<=6;k++){
   tmp+='<tr>';
   for(i=i;i<=k*7;i++){
      if(cal_type==3){
         onclick=((i-6)%7==0)?('calSet('+d+');return false;'):("document.getElementById(\"cal_header\").innerHTML=\"<span style=&#39;background:#a90000&#39;>Vyberte prosím jen sobotu.</span>\";return false;");
      }
      else onclick='calSet('+d+');return false;';
      tmp+='<td>'+(d<1||d>maxi?'':'<a href=\'\''+((date_type.getDate()==d && date_now.getMonth()==date_type.getMonth() && date_now.getFullYear()==date_type.getFullYear())?'style=\'background:#b20000;color:white\'':'')+' onClick=\''+onclick+'\'>'+d+'</a>')+'</td>';
      d++;
   }
   tmp+='</tr>';
}
   cal_table.innerHTML=tmp+'</table>';
}
