﻿var weekDays = ['Neděle','Pondelí','Úterý','Středa','Čtvrtek','Pátek','Sobota'];
var monthNames = ['','Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen',
                  'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'];

function calendar(){
  this.dates=[];
  if(arguments){
    for(var i=0;i<arguments.length;i++)
      this.dates[this.dates.length]=arguments[i];
  }
  this.config={
    link            : '?d=%d&m=%m&y=%y',
    linkOnlySelected: false,
    prevMonthLink   : '?m=%m&y=%y',
    nextMonthLink   : '?m=%m&y=%y',
    showOuterMonths : true,
    width           : 112
  };

  this.tmp=new Date();

  this.month=this.tmp.getMonth();
  this.year=this.tmp.getFullYear();
}

calendar.prototype.toString=function(){
  var s='',c=0,i,w=parseInt(this.config.width/7),m,y;

  var pm,py,nm,ny;

  m=this.month+1;
  y=this.year;

  nm=(m==12?1:m+1)
  ny=(m==12?y+1:y)
  pm=(m==1?12:m-1)
  py=(m==1?y-1:y)

  s+='<div class="calendar" style="width:'+(w*7)+'">\n';
  s+='<table border="0" cellspacing="0" cellpadding="0"><tr>\n';
  if(this.config.prevMonthLink)
    s+='<td width="100%" class="cal_header">'+monthNames[m]+' '+y+'</td>\n';
  if(this.config.nextMonthLink)
    s+='<td align="left">&nbsp;</td>\n';
  s+='</tr></table>\n';
  s+='<div class="calendar_tbl" style="width:'+(w*7)+'">\n';

  s+='<table class="calendar" width="'+(w*7)+'">\n';
  var mnBefore=getLastDay(m==1?12:m-1,m==1?y-1:y);
  this.tmp.setMonth(m-1);
  this.tmp.setFullYear(y);
  this.tmp.setDate(1);

  s+='<tr>\n';
  for(i=0;i<weekDays.length;i++)
    s+='<td width="'+w+'" class="header_days">'+weekDays[i].substr(0,2)+'</td>\n';

  s+='</tr>\n';
  s+='<tr>\n';
  for(i=mnBefore-this.tmp.getDay();i<mnBefore;i++,c++){
    s+='<td width="'+w+'" class="prev_month">'
    if(this.config.showOuterMonths)
      s+=(this.config.linkOnlySelected?i:createLink(this.config.link,i,pm,py))
    else
      s+='&nbsp;';
    s+='</td>\n';
  }

  for(i=1;i<=getLastDay(m,y);i++,c++){
    if(c%7==0 && c!=0)
      s+='</tr><tr>\n';

    sel=this.checkDay(i);
    s+='<td width="'+w+'" class="this_month'+(sel?' select_day':'')+
       (isToday(i,m-1,y)?' today':'')+'">'+
       (this.config.linkOnlySelected?
          (sel?createLink(this.config.link,i,m,y):i):
          this.createLink(this.config.link,i,m,y))+
       '</td>\n';
  }

  if(c%7!=0){
    for(i=1;c%7!=0;i++,c++){
      s+='<td width="'+w+'" class="next_month">';
      if(this.config.showOuterMonths)
      s+='&nbsp;';
      else
        s+='&nbsp;';
      s+='</td>\n';
    }
    s+='</tr>\n';
  }

  s+='</table>\n';
  s+='</div>\n';

  return s;
}

calendar.prototype.checkDay=function(d){
  for(var i=0;i<this.dates.length;i++){
    if(this.dates[i]==d)return true;
  }
  return false;
}

function createLink(l,d,m,y){
  if(!l)return d;
  var s='<a target="_self" title="Klikněte pro zobrazení akce dne" class="cal_link" href="',t=l;
  t=t.replace(/\%d/,d);
  t=t.replace(/\%m/,m);
  t=t.replace(/\%y/,y);
  s+=t+'">'+d+'</a>';
  return s;
}

function isToday(d,m,y){
  var t=new Date();
  return(t.getDate()==d && t.getMonth()==m && t.getFullYear()==y);
}

function getLastDay(m,y){
  if(m==12){m=0;y++}
  var tmp=new Date()
  tmp.setMonth(m);
  tmp.setDate(1);
  tmp.setYear(y);//          d  h  m  s   ms
  tmp.setTime(tmp.getTime()-(1*24*60*60*1000));
  return tmp.getDate();
}
//calendar(config.date day)
//action days for december 2005 (1,2,3,4,5,7,8,9,10,11,14,15,16,17,18,25,26)
var ca=new calendar();
      ca.config.width=118;
      ca.config.link='kalendar%d%m%y.php';
      ca.config.linkOnlySelected=true;
      //ca.config.link='';
      // parsing the querystring
      // ignore this since I would assume you are using php/asp/perl or some server-side script to do this
      if(location.search){
        var x,t,i;
        x=location.search.substr(1).split('&');
        for(i=0;i<x.length;i++){
          t=x[i].split('=');
          if(t[0]=='m'&&!isNaN(parseInt(t[1])))
            ca.month=parseInt(t[1])-1;
          else if(t[0]=='y'&&!isNaN(parseInt(t[1])))
            ca.year=parseInt(t[1]);
        }
      }
      // done qs parsing

      // months are 0-11
      //ca.month=0;
      //ca.year=2004;

      document.write(ca);

    //-->

