jQuery(function () {

		// fleches de navigation dans les quiz
sofad.interactivites.controleurs.QuizPrecedent.prop("html", '<button class="precedent"><img src="../php/images/navarrow_left.gif" title="{L:sequences.btn_precedent}"/></button>' );
sofad.interactivites.controleurs.QuizSuivant.prop("html", '<button class="suivant"><img src="../php/images/navarrow_right.gif" title="{L:sequences.btn_suivant}"/></button>' );
sofad.surfenetres.widgets.surfenetres.Lexique.prop("parametres", "width=790,height=550,scrollbars=yes,menubar=yes,resizable=yes");
    
    try {

        (function() {
            var habillage = '<p>{0}</p><p class="ferme-blockUI"><button class="ferme-blockUI">OK</button></p>';
            
            sofad.JolieAlerte = function(msg) {
                    jQuery.blockUI({
                        message: sofad.format(habillage, msg), 
                        css: {padding: '1.2em', color: '#3E3429', backgroundColor: '#FBF9ED', border: '1px solid #90360A'}
                    });
                    
                    var fkeypress = function(e) { 
                        if(13 == e.which) {
                            jQuery.unblockUI();
                            jQuery(document).unbind('keypress', fkeypress);
                            return false;
                        }
                        return false;
                    };
                    jQuery(document).bind('keypress', fkeypress);
                    
                    jQuery('.ferme-blockUI, .blockOverlay').click(function() {
                        jQuery.unblockUI();
                        jQuery(document).unbind('keypress', fkeypress);
                    });
             };
        })();
        
        var bati_jolie_confirm = function(etiquette_vrai, etiquette_faux) {
            var habillage = '<p>{0}</p>\
                             <p class="boutouns-blockUI">\
                             <button class="oui-blockUI">'+ etiquette_vrai +'</button>\
                             <button class="non-blockUI">'+ etiquette_faux +'</button></p>';
            return function(msg, foui, fnon) {
                    if(!fnon) fnon = function() {};
                    jQuery.blockUI({
                        message: sofad.format(habillage, msg), 
                        css: {padding: '1.2em', color: '#3E3429', backgroundColor: '#FBF9ED', border: '1px solid #90360A'}
                    });

                    var fkeypress = function(e) { 
                        if(13 == e.which) {
                            foui();
                            jQuery.unblockUI();
                            jQuery(document).unbind('keypress', fkeypress);
                            return false;
                        }
                        return false;
                    };
                    jQuery(document).bind('keypress', fkeypress);
                    
                    jQuery('.oui-blockUI').click(function() {
                        foui();
                        jQuery.unblockUI();
                        jQuery(document).unbind('keypress', fkeypress);
                    });

                    jQuery('.non-blockUI, .blockOverlay').click(function() {
                        fnon();
                        jQuery.unblockUI();
                        jQuery(document).unbind('keypress', fkeypress);
                    });
             };
        };

        sofad.JolieConfirm = bati_jolie_confirm("Oui", "Non");
    
        if('msgLang' in sofad) {
            sofad.msgLang.fr.interactivites.resumer_btn_corrige    = "Correction";
            sofad.msgLang.fr.interactivites.resumer_btn_enregistre = "Verser au journal de bord";
            sofad.msgLang.fr.interactivites.resumer_confirmation_enregistre = "Le résumé à été versé dans votre journal de bord.";
            sofad.msgLang.fr.interactivites.resumer_interdiction_enregistre = "Vous devez compléter et corriger tous les textes avant de verser au journal de bord.";
            sofad.msgLang.fr.interactivites.btn_quiz_demo_inactif    = "Désolé. Cet élément est inactif dans la version de démonstration.";
        }

        //INTERACTIVITE PRISE1/PRISE2 AVEC ENREGISTREMENT AJAX
        //REQUIERT BLOC UI
        sofad.interactivites.widgets.interactivites.FormulaireAjax = (function() {
            var constructeur = sofad.sousType( sofad.questionnaires.widgets.Questionnaire );
            constructeur     = sofad.questionnaires.extensions.enregistreAjax( constructeur );
            var proto        = constructeur.prototype;
            proto.requete    = '.type-formulaire.soustype-prise1, .type-formulaire.soustype-prise2';
            proto.requeteFormulaire = 'form[@action!=""]';
            
            var BoutonEnregistreAjax = sofad.sousType( sofad.questionnaires.controleurs.BoutonEnregistreAjax );
            BoutonEnregistreAjax.prototype.html = '';
            BoutonEnregistreAjax.prototype.requete = 'button.btn-enregistrer';
            proto.factory('questionnaires.controleurs.BoutonEnregistreAjax', BoutonEnregistreAjax);
            
            proto.alert = sofad.JolieAlerte;
            
            return constructeur;
        })();
        
        //SURFENETRES MESSAGES
        sofad.surfenetres.widgets.surfenetres.AlerteChargement.prototype.alert    = sofad.JolieAlerte;
        sofad.interactivites.widgets.interactivites.Resumer.prototype.alert       = sofad.JolieAlerte;
        sofad.interactivites.widgets.interactivites.ActiviteNotee.prototype.alert = sofad.JolieAlerte;
        sofad.interactivites.widgets.interactivites.ActiviteNotee.prototype.confirm = sofad.JolieConfirm;
        sofad.interactivites.widgets.ChampPointage.prototype.alert                = sofad.JolieAlerte;
        sofad.interactivites.widgets.interactivites.Quiz2.prototype.alert         = sofad.JolieAlerte;
        sofad.interactivites.widgets.interactivites.Quiz2.prototype.confirm       = bati_jolie_confirm("Quitter", "Rester");

        sofad.surfenetres.widgets.surfenetres.InactifDansDemo.prototype.alert     = sofad.JolieAlerte;

        //PERSONNALISATION D'ACTIVITE NOTEE
        if(!sofad.interactivites.controleurs) sofad.interactivites.controleurs = {};
        sofad.interactivites.controleurs.BarreVue = (function () {
            var constructeur = sofad.sousType( sofad.controleurs.Controleur );
            var proto = constructeur.prototype;
            proto.requete = '.barre-vue';
            proto.html    = '<div id="activite-notee-barre-vue-{0}" class="barre-vue"></div>';
            proto.insere  = function(widget_parent) { 
                widget_parent.noeuds.find('.activite-notee').prepend( sofad.format(this.html, 'haut') );
                widget_parent.noeuds.find('.activite-notee').append( sofad.format(this.html, 'bas') );
            };
            return constructeur;
        })();

        sofad.interactivites.controleurs.BoutonDescription = (function () {
            var constructeur = sofad.sousType( sofad.controleurs.Controleur );
            var proto = constructeur.prototype;
            proto.requete = 'button.description';
            proto.html    = '<button class="description">Description</button>';
            return constructeur;
        })();

        sofad.interactivites.controleurs.BoutonFormulaire = (function () {
            var constructeur = sofad.sousType( sofad.controleurs.Controleur );
            var proto = constructeur.prototype;
            proto.requete = 'button.formulaire';
            proto.html    = '<button class="formulaire">Formulaire</button>';
            return constructeur;
        })();

        sofad.interactivites.widgets.interactivites.ActiviteNotee = (function () {
            var original = sofad.interactivites.widgets.interactivites.ActiviteNotee;

            var constructeur = sofad.sousType( original, function() {
                original.apply(this, arguments);
                this.controleurs.barreVue          = new (this.factory('interactivites.controleurs.BarreVue'))(this);
                this.controleurs.BoutonDescription = new (this.factory('interactivites.controleurs.BoutonDescription'))(this.controleurs.barreVue);
                this.controleurs.BoutonFormulaire  = new (this.factory('interactivites.controleurs.BoutonFormulaire'))(this.controleurs.barreVue);
                this.noeuds.find('form.questionnaire').attr('action',
                                                            this.noeuds.find('form.questionnaire').attr('action') + '?est_transmis=1');
            });
            var proto = constructeur.prototype;

            proto.afficheDescription = function() {
                this.noeuds.find('.section-texte, .section-question, .evaluation').hide();
                this.noeuds.find('.section-texte:first').show();
                this.controleurs.BoutonDescription.noeuds.removeClass('section-inactive');
                this.controleurs.BoutonFormulaire.noeuds.addClass('section-inactive');
            };

            proto.afficheFormulaire = function() {
                this.noeuds.find('.section-texte, .section-question, .evaluation').show();
                this.noeuds.find('.section-texte:first').hide();
                this.controleurs.BoutonFormulaire.noeuds.removeClass('section-inactive');
                this.controleurs.BoutonDescription.noeuds.addClass('section-inactive');
            };

            proto.deplaceVersHaut = function() {
                location.href = "#";
            }

            var parent_demarre = proto.demarre;
            proto.demarre = function() {
                parent_demarre.apply(this, arguments);
                var that = this;
                this.controleurs.BoutonDescription.noeuds.bind('click', function() {
                    that.afficheDescription();
                    that.deplaceVersHaut();
                });
                this.controleurs.BoutonFormulaire.noeuds.bind('click', function() {
                    that.afficheFormulaire();
                    that.deplaceVersHaut();
                });

                var params_get = sofad.obtientGET();
                if(params_get.est_transmis || this.noeuds.find('.affiche-formulaire').length) {
                    this.afficheFormulaire();
                } else {
                    this.afficheDescription();
                }

            };

            return constructeur;
        })();


        //PERSONNALISATION DE QUIZ2
        //cacher certains liens pendant que l'apprenant fait le quiz
        var parent_branche = sofad.interactivites.widgets.interactivites.Quiz2.prototype.comportements.ouvert.prototype.brancheConfirmationSurSortie;
        sofad.interactivites.widgets.interactivites.Quiz2.prototype.comportements.ouvert.prototype.brancheConfirmationSurSortie = function() {
            parent_branche.apply(this, arguments);
            this.quiz.noeuds.find("#pagenav, #mainnav, #supinfo").hide();
        };

        var parent_debranche = sofad.interactivites.widgets.interactivites.Quiz2.prototype.comportements.ouvert.prototype.debrancheConfirmationSurSortie;
        sofad.interactivites.widgets.interactivites.Quiz2.prototype.comportements.ouvert.prototype.debrancheConfirmationSurSortie = function() {
            parent_debranche.apply(this, arguments);
            this.quiz.noeuds.find("#mainnav, #supinfo").show();
        };


        if('surfenetres' in sofad) {
            sofad.questionnaires.controleurs.BoutonImprimer.prototype.requete = function() { return jQuery('#content button.btn-imprimer'); };
            sofad.questionnaires.controleurs.BoutonImprimer.prototype.insere = function(widget_parent) {
                jQuery("#content").prepend( this.renduHtml() );
            };

            for(var nom_widget in sofad.surfenetres.widgets.surfenetres) {
                var widgets = sofad.batiWidgets( sofad.surfenetres.widgets.surfenetres[ nom_widget ] );
                for(var ii=0; ii<widgets.length; ++ii) widgets[ii].demarre();
            }
        }


        if('interactivites' in sofad) {
            for(var nom_widget in sofad.interactivites.widgets.interactivites) {
                var widgets = sofad.batiWidgets( sofad.interactivites.widgets.interactivites[ nom_widget ] );
                for(var ii=0; ii<widgets.length; ++ii) widgets[ii].demarre();
            }
        }

        var f = 'function' == typeof window.onload ? window.onload : function() {};
        
        window.onload = function() {
            f();
            //Retourner a l'ancre s'il y en a une dans l'adresse.
            //L'ajout de noeuds DOM peut avoir decaler la vue.
            setTimeout(function() {
                    var index_ancre;
                    var href = location.href;
                    if(-1 !== (index_ancre = href.indexOf('#'))) {
                         location.href = location.href; 
                    }
                }, 100);
        };


    } catch(e) {
        if(e.name && 'AucunSousWidget' == e.name) {
            sofad.exposeExceptionAucunSousWidget(e);
        } else {
            alert("exception : " + e);
        }
    }


});
