(function($) {

        function calendarWidget(el, params) {

                var now   = new Date();
                var thismonth = now.getMonth();
                var thisyear  = now.getYear() + 1900;
                var dates = [];
                var divs = [];
                var opts = {
                        month: thismonth,
                        year: thisyear,
                        edates: dates,
                        edivs: divs
                };

                $.extend(opts, params);


                var monthNames = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
                var dayNames = ['Понедел.', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскр.'];
                month = i = parseInt(opts.month);
                year = parseInt(opts.year);
                var edates = opts.edates;
                var edivs = opts.edivs;
                var m = 0;
                var cmonth = 0;  var cday = 0;
                var table = '';


                        // next month
                        if (month == 11) {
                                var next_month = '<a href="?month=' + 1 + '&amp;year=' + (year + 1) + '" title="' + monthNames[0] + ' ' + (year + 1) + '">' + monthNames[0] + ' ' + (year + 1) + '</a>';
                        } else {
                                var next_month = '<a href="?month=' + (month + 2) + '&amp;year=' + (year) + '" title="' + monthNames[month + 1] + ' ' + (year) + '">' + monthNames[month + 1] + ' ' + (year) + '</a>';
                        }

                        // previous month
                        if (month == 0) {
                                var prev_month = '<a href="?month=' + 12 + '&amp;year=' + (year - 1) + '" title="' + monthNames[11] + ' ' + (year - 1) + '">' + monthNames[11] + ' ' + (year - 1) + '</a>';
                        } else {
                                var prev_month = '<a href="?month=' + (month) + '&amp;year=' + (year) + '" title="' + monthNames[month - 1] + ' ' + (year) + '">' + monthNames[month - 1] + ' ' + (year) + '</a>';
                        }

                        //table += ('<h3 id="current-month">'+monthNames[month]+' '+year+'</h3>');
                        // uncomment the following lines if you'd like to display calendar month based on 'month' and 'view' paramaters from the URL
                        //table += ('<div class="nav-prev">'+ prev_month +'</div>');
                        //table += ('<div class="nav-next">'+ next_month +'</div>');
                        table += ('<table class="calendar-month " ' +'id="calendar-month'+i+' " cellspacing="0">');

                        table += '<tr>';

                        for (d=0; d<7; d++) {
                                table += '<th class="weekday">' + dayNames[d] + '</th>';
                        }

                        table += '</tr>';

                        var days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay();

                        var prev_days = getDaysInMonth(month,year);
            var firstDayDate=new Date(year,month,1);
            var firstDay=firstDayDate.getDay();

                        var prev_m = month == 0 ? 11 : month-1;
                        var prev_y = prev_m == 11 ? year - 1 : year;
                        var prev_days = getDaysInMonth(prev_m, prev_y);
                        firstDay = (firstDay == 0 && firstDayDate) ? 7 : firstDay;

                        var i = 0; var cnti = 0; var fclass; var cntD = 0;
            for (j=1;j<43;j++){
            cntD = cntD +1;
              if (cntD==2 || cntD==5) fclass = "fly"; else fclass='';
              if ((j<firstDay)){
                table += ('<td class="other-month"><span class="day '+fclass+'">'+ (prev_days-firstDay+j+1) +'</span></td>');
                          }
              else if ((j>=firstDay+getDaysInMonth(month,year))) {
                                i = i+1;

                table += ('<td class="other-month"><span class="day '+fclass+'">'+ i +'</span></td>');
              }else{
              //событие
              if (outEvent(edates, (j-firstDay+1))==1) {

              var namez = edivs[cnti];
              var trm = $(namez).html();
              cnti = cnti+1;
              if (month < 10) cmonth = '0'; else cmonth = '';
              if ((j-firstDay+1) < 10) cday = '0'; else cday = '';

              table += ('<td class="date_has_event" alt="Забронировать" title="Забронировать" style="cursor: pointer" onclick=\'location = "/online/&dz='+cday+(j-firstDay+1)+'.'+cmonth+(month+1)+'.'+year+'"\'>'+(j-firstDay+1)+'<div class="events">'+trm+'</div></td>') }

              else


               { table += ('<td class="current-month day '+(j-firstDay+1)+'"><span class="day '+fclass+'">'+(j-firstDay+1)+'</span></td>');}
              }
              if (j%7==0) {  table += ('</tr>'); cntD=0; }
            }

            table += ('</table>');

                el.html(table);
        }

        function outEvent(mas, zday)  {
          var k=0;
          var jj=0;
          for (jj=0;jj<mas.length;jj++){
             if (mas[jj]==zday) k = 1;
          }
                  return k;
        }

        function getDaysInMonth(month,year)  {
                var daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];
                if ((month==1)&&(year%4==0)&&((year%100!=0)||(year%400==0))){
                  return 29;
                }else{
                  return daysInMonth[month];
                }
        }


        // jQuery plugin initialisation
        $.fn.calendarWidget = function(params) {
                calendarWidget(this, params);
                return this;
        };

})(jQuery);

