$(function(){
    datepicker();
    calendar();
    tiny();
    getLink();
    email();
    initStaticCalendar();
    initCityChanger();
    fancy();
});

/**
 * Инициализация дейтпикера
 * @return   void
 */
function datepicker()
{
    $.datepicker.setDefaults($.datepicker.regional['ru']);

    // устанавливаем текущую дату
    defDate = $('#announceaddition_field').val();
    if (!defDate) {
        defDate = null;
    } else {
        $('#announceaddition_date').text(stringDate(defDate));
    }

    // Инициализируем дейтпикер
    $("#announceaddition_datepicker").datepicker({
        dateFormat: 'yy-mm-dd',
        defaultDate: defDate,
        onSelect: function(dateText, inst){
            $('#announceaddition_field').val(dateText);
            $('#announceaddition_date').text(stringDate(dateText));
            $('.ui-datepicker').each(function(){
                if ($(this).parents('#calendar_jquery_ui').length == 0) {
                    $(this).hide();
                }
            });
        }
    });
    $('.ui-datepicker').hide();

    // Показываем дейтпикер, если кликнули по иконке
    $("#announceaddition_datepicker").click(function(e){
        if (e.currentTarget == e.target) {
            $('.ui-datepicker').each(function(){
                if ($(this).parents('#calendar_jquery_ui').length == 0) {
                    $(this).toggle();
                }
            });
        }
        e.stopPropagation();
    });

    var closeDatepicker = function(){
        $('.ui-datepicker:visible').each(function(){
            if ($(this).parents('#calendar_jquery_ui').length == 0) {
                $(this).hide();
            }
        });
    };
    $('body').click(closeDatepicker);
    $('input, textarea').focusin(closeDatepicker);
}

/**
 * Получение даты в виде строки (аналог rdate)
 * @param   string  str
 * @return  string
 */
function stringDate(str)
{
    var s = $.datepicker.formatDate(
        'd MM yy',
        new Date($.datepicker.parseDate('yy-mm-dd', str)),
        {
            monthNames: ['января', 'февряля', 'марта', 'апреля', 'мая', 'июня', 'июля',
                         'августа', 'сенября', 'октября', 'ноября', 'декабря']
        }
    );
    return s;
}

/**
 * Раскраска календаря
 * @return   void
 */
function calendar() {
    $('td:gt(4)', '.calendar tr').addClass('calendar_weekend');
}

/**
 * Инициализация визуального редактора
 * @return   void
 */
function tiny()
{
    if ($('#field_descr').length = 1) {
        tinyMCE.init({
            mode : "textareas",
            theme : "simple"
        });
    }
}

/**
 * Блок получения ссылок
 * @return    void
 */
function getLink()
{
    // сворачивание блока (по умолчанию)
    if ($('.getlink_block').hasClass('hide_block')) {
        $('.getlink_block').hide().removeClass('hide_block');
    }
    // сворачиваимость блока
    $('.getlink_link').click(function(){
        $('.getlink_block').slideToggle(150);
    });
    // выделяем текст при клике
    $('.getlink_block input').click(function(){
        $(this).select();
    });
}

/**
 * Инициализация статического календаря
 * @return  void
 */
function initStaticCalendar()
{
    $("#calendar_jquery_ui").datepicker({
        dateFormat: 'yy-mm-dd',
        defaultDate: $("#calendar_jquery_ui").attr('date')
    });
}

/**
 * Инициализация переключателя городов
 * @return  void
 */
function initCityChanger()
{
    $('.city_switcher_item').click(function(){
        var href = $(this).attr('href');
        if (href) {
            document.location.href = href;
        } else {
            $('.city_switcher').toggleClass('city_switcher_open');
        }
    });
}

function email()
{
    var $emailField = $('#announceaddition_email');
    var $emailCheckbox = $emailField.prev().find('input');
    if ($emailCheckbox.is(':checked')) {
        $emailField.show();
    } else {
        $emailField.hide();
    }
    $emailCheckbox.change(function(){
        $emailField.toggle();
    })
}

/**
 * Подвешиваем fancybox
 * @return  void
 */
function fancy()
{
    $('.announce_image a').fancybox();
}
