-// coding: utf-8\r
+// coding: utf-8\r
// Copyright 2008 Grégory Burri\r
//\r
// This file is part of Euphorik.\r
this.setCaretToPos(input, selectionStart + replaceString.length)\r
}\r
else if (document.selection)
- {\r
- var range = document.selection.createRange();\r
+ {
+ input.focus()\r
+ var range = document.selection.createRange()\r
if (range.parentElement() == input)
{\r
var isCollapsed = range.text == ''\r
range.text = replaceString\r
if (!isCollapsed)
- {
- // there has been a selection\r
- // it appears range.select() should select the newly \r
- // inserted text but that fails with IE\r
+ {\r
range.moveStart('character', -replaceString.length);\r
- range.select();\r
}\r
}\r
}\r
document.cookie = "cookie=; max-age=0"\r
}
-Client.prototype.setCookie = function(cookie)
+Client.prototype.setCookie = function()
{
- if (this.cookie == null)
+ if (this.cookie == null || this.cookie == undefined)
return
- document.cookie =
- "cookie="+this.cookie+
- "; max-age=" + (60 * 60 * 24 * 365)
+ // ne fonctionne pas sous IE....
+ /*document.cookie = "cookie=" + this.cookie + "; max-age=" + (60 * 60 * 24 * 365) */
+
+ document.cookie =
+ "cookie="+this.cookie+"; expires=" + new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 365).toUTCString()
}
Client.prototype.authentifie = function()
/**
* classe permettant de gérer les événements (push serveur).
+ * l'information envoyé est sous la forme :
+ * {
+ * "action" : "wait_event"
+ * "page" : <page>
+ * [..]
+ * }
+ * l'information reçu est sous la forme :
+ * {
+ * "reply" : <reply>
+ * }
* @page la page
*/
function PageEvent(page, util)
/**
* Attend un événement lié à la page.
* @funSend une fonction renvoyant les données json à envoyer
- * @funReceive une fonction qui accepte un paramètre correspondant au données reçues
+ * @funsReceive est un objet comprenant les fonctions à appeler en fonction du "reply"
+ * les fonctions acceptent un paramètre correspondant au données reçues.
+ * exemple : {"new_message" : function(data){ ... }}
*/
-PageEvent.prototype.waitEvent = function(funSend, funReceive)
+PageEvent.prototype.waitEvent = function(funSend, funsReceive)
{
this.stopAttenteCourante()
{
;; dumpObj(data)
- funReceive(data)
+ funsReceive[data["reply"]](data)
// rappel de la fonction dans 100 ms
- setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 100)
+ setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive) }, 100)
},
error:
function(XMLHttpRequest, textStatus, errorThrown)
{
- setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funReceive) }, 1000)
+ ;; console.log("Connexion perdue dans waitEvent")
+ setTimeout(function(){ thisPageEvent.waitEvent2(funSend, funsReceive) }, 1000)
}
})
}
/**
* Si un stopAttenteCourante survient un peu n'importe quand il faut imédiatement arreter de boucler.
*/
-PageEvent.prototype.waitEvent2 = function(funSend, funReceive)
+PageEvent.prototype.waitEvent2 = function(funSend, funsReceive)
{
if (this.stop)
return
- this.waitEvent(funSend, funReceive)
+ this.waitEvent(funSend, funsReceive)
}
///////////////////////////////////////////////////////////////////////////////////////////////////
$("#menu .register").click(function(){ pages.afficherPage("register") })
$("#menu .about").click(function(){ pages.afficherPage("about") })
- // simplifier et pouvoir créer des liens par exemple : <span class="lien" href="conditions">Conditions d'utilisation</span>
+ // 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 PageMinichat(client, formateur, util))