'formater' -> 'formatter'
[euphorik.git] / js / euphorik.js
index 17748a6..cac44c8 100755 (executable)
 // You should have received a copy of the GNU General Public License
 // along with Euphorik.  If not, see <http://www.gnu.org/licenses/>.
 
-// tout euphorik est contenu dans cet objet
-var euphorik = {}
+/*jslint laxbreak:true */
+
+// all euphorik is contained in this object
+var euphorik = {};
 
 // le main
 $(document).ready(
-   function()
-   {          
-      var formateur = new euphorik.Formateur()
-      var util = new euphorik.Util(formateur)   
-      var client = new euphorik.Client(util)
-      var pages = new euphorik.Pages()
-      
-      // connexion vers le serveur (utilise un cookie qui traine)
-      client.connexionCookie()
+   function() { 
+      var fragment = new Fragment();
+      var formatter = new euphorik.Formatter();
+      var util = new euphorik.Util(formatter);
+      var communication = new euphorik.Communication(
+         function(data) { util.messageDialog(data.error_message); },
+         function() { util.showWaitBar(); },
+         function() { util.hideWaitBar(); }
+      );
+      var client = new euphorik.Client(util, communication);
+      var pages = new euphorik.Pages(fragment, communication);
+           
+      // Client authentification with the cookie information (if  it exists).
+      client.connectionCookie();
       
-      $("#menuCss").change(function(){ client.setCss("styles/" + $("option:selected", this).attr("value") + "/euphorik.css")})
+      $("#menuCss").change(function() { client.setCss("styles/" + $("option:selected", this).attr("value") + "/euphorik.css"); });
 
-      // FIXME : ne fonctionne pas sous opera
-      // voir : http://dev.jquery.com/ticket/2892#preview
-      $(window).unload(function(){client.flush()})
+      // FIXME : doesn't work under Opera
+      // see : http://dev.jquery.com/ticket/2892#preview
+      $(window).unload(function() { client.flush(); });
       
-      $("#menu .minichat").click(function(){ pages.afficherPage("minichat") })
-      $("#menu .admin").click(function(){ pages.afficherPage("admin") })
-      $("#menu .profile").click(function(){ pages.afficherPage("profile") })
-      $("#menu .logout").click(function(){
-         util.messageDialogue("Êtes-vous sur de vouloir vous délogger ?", euphorik.Util.messageType.question,
-            {"Oui" : function()
-               {
-                  client.deconnexion();
-                  pages.afficherPage("minichat", true)
+      $("#menu .minichat").click(function() { pages.displayPage("minichat"); });
+      $("#menu .admin").click(function() { pages.displayPage("admin"); });
+      $("#menu .profile").click(function() { pages.displayPage("profile"); });
+      $("#menu .logout").click(function() {
+         util.messageDialog("Are you sure you want to log out?", euphorik.Util.messageType.question,
+            {
+               "Yes" : function() {
+                  client.disconnect();
+                  pages.displayPage("minichat", true);
                },
-             "Non" : function(){}
+               "No" : function() {}
             }
-         )
-      })
-      $("#menu .register").click(function(){ pages.afficherPage("register") })
-      $("#menu .about").click(function(){ pages.afficherPage("about") })
+         );
+      });
+      $("#menu .register").click(function(){ pages.displayPage("register"); });
+      $("#menu .about").click(function(){ pages.displayPage("about"); });
       
-      // TODO : simplifier et pouvoir créer des liens par exemple : <span class="lien" href="conditions">Conditions d'utilisation</span>
-      $("#footer .conditions").click(function(){ pages.afficherPage("conditions_utilisation") })
-
-      pages.ajouterPage(new euphorik.PageMinichat(client, formateur, util))
-      pages.ajouterPage(new euphorik.PageAdmin(client, formateur, util))
-      pages.ajouterPage(new euphorik.PageProfile(client, formateur, util))
-      pages.ajouterPage(new euphorik.PageRegister(client, formateur, util))
-      pages.ajouterPage(new euphorik.PageAbout(client, formateur, util))
-      pages.ajouterPage("conditions_utilisation")
+      // TODO : simplification : such link[1] should be created and automatically open the right page without
+      //  explicitly add a page.
+      // [1] : <a class="pageLink" href="termes_of_use">Terms of use</a>
+      $("#footer .termsOfUse").click(function(){ pages.displayPage("terms_of_use"); });
+      
+      pages.addPage(new euphorik.PageMinichat(client, formatter, util, communication), true);
+      pages.addPage(new euphorik.PageAdmin(client, formatter, util, communication));
+      pages.addPage(new euphorik.PageProfile(client, formatter, util));
+      pages.addPage(new euphorik.PageRegister(client, formatter, util));
+      pages.addPage(new euphorik.PageAbout(client, formatter, util, communication));
+      pages.addPage("terms_of_use");
       
-      pages.afficherPage("minichat")
+      pages.displayPage(); // display the default page
    }
-)
+);