/*
* DashCoincoin
* Developed and designed by Thenon David
* www.sveetch.biz
* 
* Chargement du moteur DashCoincoin sur mesure pour la tribune web
* Processus :
* 
* - Init de la configuration de base
* - Init du parser sur le format de backend configuré (JSON)
* - Ajout d'éléments de l'interface
* - Analyse des messages déja présents dans le html pour les répertorier dans le 
*   registre interne et leurs assigner les évènements de l'interface
* - Si l'option de refresh n'est pas désactivée, lance le premier refresh 
*   périodique du backend
* - Init des widget du panneau de préférences et MenuSlide
*/

$(document).ready(function(){
    
    // Init des settings au démarrage
    setupParts();
    
    // Init du parser en déclarant le format des préférences
    tribuneParser.set_format();
    
    // Récupère la hauteur du conteneur de la liste scrollée (et pas la 
    // hauteur de la liste) pour des besoins de positionnement sans utiliser 
    // une taille statique
    if( TRIBUNE_HEIGHT == false ) {
        TRIBUNE_HEIGHT = $("#tribune").height()
    }
    // Interception des évènements sur le bouton et l'input de message
    $("#ui_postbutton_id").click( function() {
        HACKBLOCKSTUPIDKONQUEROR = false;
        handle_postSubmit();
        HACKBLOCKSTUPIDKONQUEROR = true;
        return false;
    } );
    $("#id_content").keydown( function(e){
        if(e.keyCode == '13'){
            e.stopPropagation();
            HACKBLOCKSTUPIDKONQUEROR = false;
            handle_postSubmit();
            HACKBLOCKSTUPIDKONQUEROR = true;
            return false;
        }
        return true;
    });
    $("#form_missive").bind("submit", function() { return false; });
    
    // Ajout de la checkbox de control du refresh périodique du backend
    var checkedreloadtrigger = '';
    if( REFRESH_ACTIVED ) checkedreloadtrigger = ' checked="checked"';
    $('#id_content').before('<input type="checkbox" name="reload_trigger" id="ui_postreload_trigger"' +checkedreloadtrigger+ '>');
    $("#ui_postreload_trigger").click( function() {
        if( $(this).attr("checked") ){
            wrapPreference.setPref("refresh_actived", true);
            refreshTimer.setTimer( "backend", 'get_TribuneBackend()', wrapPreference.getPref("refresh_time_shifting") );
        } else {
            wrapPreference.setPref("refresh_actived", false);
            refreshTimer.stopTimer( "backend" );
        }
    } );
    // Ajout des témoins du refresh périodique
    $('#id_content').after('<img id="ui_load_animation" src="'+ medias +'images/ajax-loader.gif" width="16" height="16" style="display:none;" alt="Chargement.."/>');
    $('#id_content').after('<img id="ui_load_error" src="'+ medias +'images/famfam_bullets/bullet_error.png" width="16" height="16" style="display:none;" alt="Erreur lors du chargement ! "/>');
    
    // Ajout de l'input spécifique à l'envoi direct du captcha sans remplir 
    // de post
    $('#id_control').after('<input class="ui-corner-all ui-state-default" id="ui_controlbutton_id" name="controlbutton" type="submit" value="OK" />');
    $("#ui_controlbutton_id").click( function() {
        HACKBLOCKSTUPIDKONQUEROR = false;
        $("#id_content").val('\\_o< coin! coin!');
        handle_postSubmit();
        HACKBLOCKSTUPIDKONQUEROR = true;
        return false;
    } );
    
    // Lance le premier refresh périodique du backend après que la liste HTML 
    // des messages déja en place ait été initialisée.
    if ( Tribune_HTML_Parser.get_backend() && REFRESH_ACTIVED ) {
        refreshTimer.setTimer( "backend", 'get_TribuneBackend()', wrapPreference.getPref("refresh_time_shifting") );
    }
    
    // Debug interface
    $("#ui_clock_debug_container").show();
    $("#ui_clock_debug_container .link a").click( function() {
        refreshTimer.stopTimer( "backend" );
        var now = new Date();
//         var date = now.toLocaleString();
        var date = now.getDate() +"/"+ now.getMonth() +"/"+ now.getFullYear() +" "+ now.getHours() +":"+ now.getMinutes() +":"+ now.getSeconds();
        var output = "// Generated on " + date;
        if( USER_USERNAME.length > 0){
            output += "\n// Authentificated with : " + USER_USERNAME;
        } else {
            output += "\n// Anonymous";
        }
        // Registre des horloges de références
        output += "\n\nTS_CLOCKS = {";
        $.each( TS_CLOCKS, function(key, val){
            output += "\n    '"+ key + "': {";
            output += "\n        'count': "+val+",";
            output += "\n        'rows': {";
            $('li.ts'+key).each(function(index) {
                var login = $('span.login', $(this));
                if(login.length) {
                    login = login.html();
                } else {
                    login = "anonymous";
                }
                output += "\n            '"+$('span.horloge', $(this)).html()+"': '"+login+"',";
            });
            output += "\n        },";
            output += "\n    },";
        });
        output += "\n};";
        // Registre des horloges reconnus comme appartenant à l'utilisateur
        output += "\n\nUSER_POSTS_CLOCK = {";
        var spacer = "";
        $.each( USER_POSTS_CLOCK, function(key, val){
            spacer = "    ";
            if( key.length < 6 ) spacer = "          ";
            output += "\n    '"+ key + "':"+ spacer +"['"+val.join("', '")+"'],";
        });
        output += "\n};";
        
        $("#ui_clock_debug_container textarea").val(output);
        $("#ui_clock_debug_container .field").show();
        
        refreshTimer.setTimer( "backend", 'get_TribuneBackend()', wrapPreference.getPref("refresh_time_shifting") );
        return false;
    } );
    
    // Configuration de la boite de 'dialog' des options
    ConfigDialog();
    // MenuSlide
    MenuSlider.init_html();
});

