Outings = {};
Outings.todayDate = '';
Outings.selectDate = '';
Outings.calendarDate = '';
Outings.months = ['янв','фев','мар','апр','май','июн','июл','авг','сен','окт','ноя','дек'];
Outings.fullMonths = ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'];
Outings.daysInMonths = [31,28,31,30,31,30,31,31,30,31,30,31];
Outings.over = false;
Outings.input = '';

Outings.mouseIn = function() { this.over = true; }
Outings.mouseOut = function() { this.over = false; }
Outings.showCalendar = function()
{
    $('#calendar_title').show();
    $('#sel_calendar_holder').show();
}
Outings.hideCalendarNow = function()
{
    $('#calendar_title').hide();
    $('#sel_calendar_holder').hide();
}
Outings.hideCalendar = function()
{
    if(this.over == false) {
        setTimeout('Outings.hideCalendarNow()',50);
    }
    else {
        setTimeout('$(Outings.input).focus()',30);
    }
}
Outings.selectCalendar = function(date, el)
{
    var date_arr = date.split('.');
    this.selectDate = new Date(date_arr[2], parseInt(date_arr[1])-1, date_arr[0]);
    date_arr[0] = (date_arr[0].length == 1)?'0' + date_arr[0] : date_arr[0];
    date_arr[1] = (date_arr[1].length == 1)?'0' + date_arr[1] : date_arr[1];
    $('#select-day').attr('id','');
    $('#id_event_date').val(date_arr.join('.'));
    $('#id_date_birth').val(date_arr.join('.')); // пробуем вставить в профиль
    var $child = $(el).children();
    $('.diary .today').attr('id','today');
    $child.attr('id','select-day');
    setTimeout('Outings.hideCalendarNow()',50);
}
Outings.buildCalendar = function(offset)
{
    if(offset != 0) {
        $(this.input).focus();
    }
    var month = this.calendarDate.getMonth();
    var offset = parseInt(offset);
    month = month + offset;
    this.calendarDate.setMonth(month, 1);
    var year = this.calendarDate.getFullYear();
    month = this.calendarDate.getMonth();
    var today = this.todayDate.getDate();
    var renderDate = new Date(this.calendarDate.getFullYear(), this.calendarDate.getMonth(), 1);
    var dow = renderDate.getDay() - 1;
    if(dow == -1) dow = 6;
    renderDate.setDate(renderDate.getDate() - dow);
    this.daysInMonths[1] = 28;
    if(year%400 == 0 || (year%100 != 0 && year%4 == 0)) this.daysInMonths[1] = 29;

    var output = '<table style="width:100%;" class="diary">';
    
    output += '<td colspan="7" class="arrows"><div style="text-align:center;"><a href="#prev" class="prev_arrow" onclick="Outings.buildCalendar(-1);return false;">&nbsp;</a>'+this.fullMonths[month]+'<a href="#next" class="next_arrow" onclick="Outings.buildCalendar(1);return false;">&nbsp;</a></div></td></tr><tr class="days"><td>Пн</td><td>Вт</td><td>Ср</td><td>Чт</td><td>Пт</td><td>Сб</td><td>Вс</td></tr><tr>';
    
    var day, imonth;
    for(var i=1; i<=42; i++){
        day = renderDate.getDate();
        imonth = renderDate.getMonth();

        output += '<td>';
        if(imonth == month)
            output += '<a href="#выбрать дату" onclick="Outings.selectCalendar(\''+ day + '.' + (imonth+1) + '.' + renderDate.getFullYear() + '\',this);return false;">';
        output += '<div';

        if(renderDate.getTime() == this.todayDate.getTime())
            output += ' id="today"';
        else if(renderDate.getTime() == this.selectDate.getTime())
            output += ' id="select-day"';
        if(imonth != month)
            output += ' class="inactive"';
        else if(renderDate.getTime() == this.todayDate.getTime())
            output += ' class="today"';
        output += '>' + day;

        /*
        if(i == 1 || day == 1 || day == this.daysInMonths[renderDate.getMonth()]) {
            output += '<br />' + this.months[renderDate.getMonth()];
        }
        */
        output += '</div>';
        if(imonth == month) output += '</a>';
        output += '</td>';
        if(i%7 == 0) output += '</tr><tr>';

        renderDate.setDate(day + 1);
    }
    //
    output += '<td colspan="7"></td></tr></table>';
    $('#calendar-line').html(output);
}
Outings.initCalendar = function(date, el_name)
{
    this.input = '#' + el_name;
    var today = new Date();
    this.todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
    if(date == '') {
        this.selectDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
    }
    else {
        date_arr = date.split('-');
        this.selectDate = new Date(date_arr[0], parseInt(date_arr[1])-1, date_arr[2]);
    }
    this.calendarDate = new Date(this.selectDate.getFullYear(), this.selectDate.getMonth(), 1);
    this.buildCalendar(0);
    $(this.input).bind("focus", function(){Outings.showCalendar();});
    $("#sel_calendar_holder").hover(
        function () {Outings.mouseIn();},
        function () {Outings.mouseOut();}
    );
    $(this.input).bind("blur", function(){Outings.hideCalendar();});
}

Outings.updateCalendar = function(options)
{
    $.ajax({
        type: 'GET',
        url: options.requestUrl,
        success: function(response){
            $(options.element).html(response);
        }
    });
}

