X-Git-Url: http://git.euphorik.ch/?p=euphorik.git;a=blobdiff_plain;f=js%2Feuphorik.js;h=afe0251e7da2334b843588c58c77a5bcf00a2d96;hp=28cba42f848e6c73878136ecf6803c7894c8c2a8;hb=d1dff528ecf8ace680f8ba92d11b09e84fd6ff2f;hpb=deff7a2f11dca2b300b258d1e93d71e3b2e34c84 diff --git a/js/euphorik.js b/js/euphorik.js index 28cba42..afe0251 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -26,7 +26,7 @@ // tout euphorik est contenu dans cet objet var euphorik = {} // ;; euphorik.include = -// ;; euphorik.include = function(f) { var s = document.createElement('script'); s.type = 'text/javascript'; s.src = "js/" + f + ".js"; document.getElementsByTagName('head')[0].appendChild(s); } + //;; euphorik.include = function(f) { var s = document.createElement('script'); s.type = 'text/javascript'; s.src = "js/" + f + ".js"; document.getElementsByTagName('head')[0].appendChild(s); } // version jQuery : function(f) { jQuery.ajax({async : false, url : "js/" + f + ".js", dataType : "script"}) } @@ -34,49 +34,72 @@ var euphorik = {} ;; euphorik.include = function(f) { ;; var req, url = 'js/' + f + '.js' ;; if (window.XMLHttpRequest) { -;; req = new XMLHttpRequest(); req.open("GET", url, false /* async */); req.send(null); +;; req = new XMLHttpRequest(); req.open("GET", url, false); req.send(null); ;; } else if (window.ActiveXObject) { ;; req = new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"); ;; if (req) { req.open("GET", url, false); req.send(); } ;; } ;; if (req!==false) { if (req.status==200) { window.eval(req.responseText); } else if (req.status==404) { alert("erreur de chargement (404) de : " + url) } } -;; } - -;; euphorik.include("jquery") -;; euphorik.include("jquery.lightbox") -;; euphorik.include("md5") -;; euphorik.include("json2") - -;; euphorik.include("conf") -;; euphorik.include("util") -;; euphorik.include("formateur") -;; euphorik.include("pages") - -;; euphorik.include("pageMinichat") -;; euphorik.include("pageAdmin") -;; euphorik.include("pageProfile") -;; euphorik.include("pageRegister") -;; euphorik.include("pageAbout") - +;; }; + +;; euphorik.include("jquery"); +;; euphorik.include("jquery.lightbox"); +;; euphorik.include("md5"); +;; euphorik.include("json2"); +;; euphorik.include("comet"); + +;; euphorik.include("conf"); +;; euphorik.include("util"); +;; euphorik.include("formateur"); +;; euphorik.include("pages"); +;; euphorik.include("client"); + +;; euphorik.include("pageMinichat/pageMinichat"); +;; euphorik.include("pageMinichat/conversation"); +;; euphorik.include("pageMinichat/conversations"); +;; euphorik.include("pageMinichat/message"); +;; euphorik.include("pageMinichat/commandes"); +;; euphorik.include("pageAdmin"); +;; euphorik.include("pageProfile"); +;; euphorik.include("pageRegister"); +;; euphorik.include("pageAbout"); + +// tout un tas d'améliorations de JavaScript ;) +/** + * Pour chaque propriété de l'objet execute f(p, v) ou p est le nom de la propriété et v sa valeur. + * Ne parcours pas les propriétés des prototypes. + * FIXME : Normalement : Object.prototype.each = function(f) mais non supporté par jquery + */ +//Object.prototype.each = function(f) { +var objectEach = function(o, f) { + for (var k in o) { + if (o.hasOwnProperty(k)) { + f(k, o[k]); + } + } +}; -// tout un tas d'améliorations de JavaScript ;) -/** - * Pour chaque propriété de l'objet execute f(p, v) ou p est le nom de la propriété et v sa valeur. - * Ne parcours pas les propriétés des prototypes. - */ -Object.prototype.each = function(f) { - for (var k in this) { - if (this.hasOwnProperty(k)) { - f(k, this[k]) +var objectMemberCount = function(o) { + var nb = 0; + for (var k in o) { + if (o.hasOwnProperty(k)) { + nb += 1; } } -} - -Array.prototype.each = function(f) { - for (var i = 0; i < this.length; i++) { - f(i, this[i]) - } -} + return nb; +}; + +Array.prototype.each = function(f) { + for (var i = 0; i < this.length; i++) { + f(i, this[i]); + } +}; + +Array.prototype.map = function(f) { + for (var i = 0; i < this.length; i++) { + this[i] = f(this[i]) + } +}; String.prototype.trim = function() { return jQuery.trim(this) // anciennement : this.replace(/^\s+|\s+$/g, ""); @@ -91,18 +114,47 @@ String.prototype.rtrim = function() { } +/** + * Voir : http://www.coolpage.com/developer/javascript/Correct%20OOP%20for%20Javascript.html + * + * Exemple : + * + * function Mammal(name) { + * this.name = name; + * } + * + * Cat.Inherits(Mammal); + * function Cat(name) { + * this.Super(Mammal, name); + * } + */ +/*Object.prototype.Super = function(parent) { + if(arguments.length > 1) { + parent.apply( this, Array.prototype.slice.call( arguments, 1 ) ); + } else { + parent.call( this ); + } +} +Function.prototype.Inherits = function(parent) { + this.prototype = new parent(); + this.prototype.constructor = this; +}*/ + + + /////////////////////////////////////////////////////////////////////////////////////////////////// // le main $(document).ready( function() - { + { var formateur = new euphorik.Formateur() - var util = new euphorik.Util(formateur) - var client = new Client(util) + 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() @@ -132,11 +184,11 @@ $(document).ready( // TODO : simplifier et pouvoir créer des liens par exemple : Conditions d'utilisation $("#footer .conditions").click(function(){ pages.afficherPage("conditions_utilisation") }) - pages.ajouterPage(new PageMinichat(client, formateur, util)) - pages.ajouterPage(new PageAdmin(client, formateur, util)) - pages.ajouterPage(new PageProfile(client, formateur, util)) - pages.ajouterPage(new PageRegister(client, formateur, util)) - pages.ajouterPage(new PageAbout(client, formateur, util)) + 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") pages.afficherPage("minichat")