// Obtiene las proximas fechas en formato json y arma la lista
function proximasFechas() {
    $.ajax({
        url: webroot + 'fechas/proximas_fechas',
        dataType: 'json',
        beforeSend: function(jqXHR, settings) {
            // Vacío la lista de fechas:
            $('#recitals-content .overview *').remove();
            // Agrego el load:
            $('#recitals-content .overview').append('<img src="'+webroot+'img/ajax-loader-min.gif" />');
        },
        success: function(data, textStatus, jqXHR) {
            updateListFechas(data);
        }
    });
}
// Obtiene las fechas pasadas en formato json y arma la lista
function anterioresFechas() {
    $.ajax({
        url: webroot + 'fechas/anteriores_fechas',
        dataType: 'json',
        beforeSend: function(jqXHR, settings) {
            // Vacío la lista de fechas:
            $('#recitals-content .overview *').remove();
            // Agrego el load:
            $('#recitals-content .overview').append('<img src="'+webroot+'img/ajax-loader-min.gif" />');
        },
        success: function(data, textStatus, jqXHR) {
            updateListFechas(data);
        }
    });
}
// Actualiza la lista de fechas del home
function updateListFechas(fechas) {
    $('#recitals-content .overview img').remove();
    //
    $.each(fechas, function(i, item) {
        $('#recitals-content .overview').
            append('<div class="recital"><div class="recital-fecha">'+fechas[i].fecha
            +'</div><div class="recital-hora">'+fechas[i].hora
            +'</div><div class="recital-lugar">'+fechas[i].lugar
            +'</div><div class="recital-descrip">'+fechas[i].descripcion
            +'</div><div class="recital-info"><a href="'+webroot+'fechas/view/'+fechas[i].id+'" rel="content-604-418" class="pirobox_gall1">+</a></div></div>');
    });
    // Update Tiny Scrollbar
    recitalsScrollbar.tinyscrollbar_update();
    // Pirobox extended:
    $('.piro_overlay').remove();
    $('.piro_html').remove();
    $.piroBox_ext({
        appendTo:'#content',
        piro_speed:900,
        bg_alpha:0.6,
        piro_scroll:true,
        piro_drag:false
    });
}
// Validate chat form:
function validateChatForm() {
    $('#MessageReplyForm').validate({
        rules: {
            'data[Message][message]': {
                required:true
            }
        },
        messages: {
            'data[Message][message]': {
                required:'El mensaje no puede ser vacio'
            }
        },
        errorPlacement: function(error, element) {
            error.appendTo(element.parent().parent().next('.submit'));
        },
        submitHandler: function(form) {
            var dataForm = $(form).serialize();
            var url = $(form).attr('action');

            $.ajax({
                dataType: 'json',
                type: 'POST',
                data: dataForm,
                url: url,
                beforeSend: function() {},
                success: function(response) {
                    if (response.success == true) {
                        $('#MessageMessage').val('');
                    }
                }
            });
        }
    });
}
//
function makeMessage(created, user, fecha, message) {
    return '<div class="message-chat">'
        +'<span class="message-created" style="display:none">'+created+'</span>'
        +'<span class="message-user">'+user+' </span>'
        +'<span class="message-fecha">('+fecha.getDate()+' de '+monthNames[fecha.getMonth()]+'):</span>'
        +'<div class="message-body">'+wordwrap(message, 32, '<br />\n', true)+'</div>'
        +'</div>';
}
// Actualización de la conversación cada 5seg:
function updateConversation(urlUpdate) {
    return setInterval(function() {
        $.ajax({
            cache: false,
            url: urlUpdate,
            dataType: 'json',
            data: 'data[Message][created]='+$('.message-chat .message-created:first').text(),
            type:'POST',
            success: function(messages) {
                if (messages.length > 0) {
                    for (var i=0; i < messages.length; i++) {
                        var fecha = new Date(messages[i].created);

                        $(makeMessage(messages[i].created, messages[i].user, fecha, messages[i].body)).hide().prependTo('#messages-conversation .viewport .overview').fadeIn(3000);
                    }
                    // Actualizo el scrollbar:
                    chatScrollbar.tinyscrollbar_update();
                }
            }
        });
    }, 5000);
}
// Ready document:
$(document).ready(function() {
    // Pirobox extended:
    $.piroBox_ext({
        appendTo:'#content',
        piro_speed:900,
        bg_alpha:0.6,
        piro_scroll:true,
        piro_drag:false
    });
    // Menu:
    $('.jbar').jbar({showSubmenuEvent:'mouseenter'});
    // Buttons:
    $('.link-button').button();
    $('input[type="submit"]').button();
    $('.button-link').button();
    //
    $('#radio').buttonset();
    // Tiny Scrollbar:
    recitalsScrollbar = $('#recitals-content').tinyscrollbar();
    chatScrollbar = $('#messages-conversation').tinyscrollbar();
    //
    $("input[name='radio-fechas']").change(function() {
        var val = $("input[name='radio-fechas']:checked").val();

        if (val === 'prox') {
            proximasFechas();
        } else {
            anterioresFechas();
        }
    });
    // CHAT
    $('#MessageMessage').keypress(function(event) {
        if (event.which == 13 && $(this).val() !== '') {
            event.preventDefault();
            // Agrego el mensaje:
            var today = new Date();
            var dd = today.getDate();
            var mm = today.getMonth()+1;//January is 0!
            var yyyy = today.getFullYear();
            var hh = today.getHours();
            var min = today.getMinutes();
            var ss = today.getSeconds();
            if(dd<10){dd='0'+dd}
            if(mm<10){mm='0'+mm}
            if(hh<10){hh='0'+hh}
            if(min<10){min='0'+min}
            if(ss<10){ss='0'+ss}
            //
            var created = yyyy+'-'+mm+'-'+dd+' '+hh+':'+min+':'+ss;
            $(makeMessage(created, $('#MessageUsername').val(), today, $(this).val())).hide().prependTo('#messages-conversation .viewport .overview').fadeIn(3000);
            // Actualizo el scrollbar:
            chatScrollbar.tinyscrollbar_update();
            // Agrego la fecha del mensaje en el form:
            $('#MessageCreated').val(created);
            //
            $(this).val('');
            // Lo envio:
            $('#MessageReplyForm').submit();
        }
    });
    chatIntervalId = updateConversation(webroot + 'conversations/update_chat/' + $('#MessageConversationId').val());
    validateChatForm();
});
