/********************************************************************************************/
// Variables globales
/********************************************************************************************/
var sitear='http://www.renault-trucks.de';
var squarear='http://www.renault-trucks.de/cafecentral';
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Loading Ajax
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Aficher / cacher le loading
/********************************************************************************************/
function loading(targetid) {
var chaine=document.getElementById(targetid).className;
// Si en train de loader, cacher le loader
if (chaine.indexOf('loading')!=-1) {
var reg=new RegExp("(loading)", "gi");
document.getElementById(targetid).className = chaine.replace(reg,'');
}
// Sinon, afficher le loader
else {
document.getElementById(targetid).className=chaine+' loading';
}
}
/********************************************************************************************/
// AJAX permet de charcher le contenu d un fichier dans un
/********************************************************************************************/
function load(url, targetid) {
// Sans autre instruction, utiliser le jardin
if (!targetid) {var targetid='backyard';}
var myAjax = new Ajax.Updater(targetid, url, {method:'get', evalScripts:true, onLoading:function () {loading(targetid)}, onComplete:function () {loading(targetid)}});
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Post
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Post comment
/********************************************************************************************/
function poston(objet, onobjet) {
// A la fin, on load quoi ?
loadthis=sitear+'/node.php?ajx=refresh&what=make_'+objet+onobjet;
// Notre formulaire et notre liste
form='form'+objet+'on'+onobjet;
list='listof'+objet+'on'+onobjet;
// Ce que je fais
// alert('je post '+form+' et rafraichis '+list+' puis j\'appelle '+loadthis);
// aller, on poste en ajax
post(form, sitear+'/node.php?pageclef=form', null, true, null, loadthis, list);
}
/********************************************************************************************/
// AJAX permet de envoyer un formulaire sans reloader une page
/********************************************************************************************/
// Poster un formulaire
function post(form, url, etat, asynchronous, gohere, loadthat, loadithere, dothat) {
// Quel formulaire on envoie ?
if (!form){form='main';}
// Si le formulaire existe
if (document.getElementById(form)) {
// Loading ?
if (loading) {
var complete = function(objet) {loading(loading);}
}
// Si AJAX trouve la page
var success = function(objet) {
// DEBUG : Voilà le retour
// alert('Dont panic, just a test: '+objet.responseText);
// Se rendre à l'objet ?
if (gohere=='reach') {location.href=objet.responseText;}
// Si gohere de n'importe quelle url, y aller
else if (gohere || loadthat || dothat) {
// Voilà ce que je fais
// alert(loadthat+' here '+loadithere);
if (loadthat) {load(loadthat+'&alerteclef='+objet.responseText, loadithere);}
if (gohere) {location.href=gohere;}
if (dothat) {eval(dothat);}
}
// Ou montrer le contenu retourné ?
else if (objet.responseText) {alert(objet.responseText);}
// Sous Café Central : Pumpitdown
pumpitdown();
}
// Si AJAX retourne un echec
var failure = function(objet) {
alert('Error ' + objet.status + ' : ' + objet.statusText);
}
// Special TinyMCE : sauvegarder le contenu
if (typeof(tinyMCE)!='undefined') {tinyMCE.triggerSave();}
// On récupère les valeurs des champs
var content = Form.serialize(form);
// On ajoute l'etat demandé
if (etat) {
var table=document.getElementById('table').value;
content=content+'&'+table+'_setetat='+etat;
}
// Doit-on atteindre l'objet à la fin ?
if (gohere=='reach') {
content=content+'&return=reach';
}
// On envoie là où le form le demande
if (!url) {var url=document.getElementById(form).action;}
// Asynchrone par defaut
if (!asynchronous) {var asynchronous=true;}
// Et voilà
var query = new Ajax.Request(
url, {
asynchronous:asynchronous,
evalScripts:true,
method:'post',
parameters:content,
onComplete:complete,
onSuccess:success,
onFailure:failure /*pas de virgule ici pour ie6*/
}
);
}
// Si le formulaire n'existe pas mais qu'on a un goto
else if (gohere) {location.href=gohere;}
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Champs et formulaires
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Vérifier les formulaires
/********************************************************************************************/
// Quelques fonctions de vérification
function is_ko(fieldid) {
// Ssi le champ existe
if (field=document.getElementById(fieldid)) {
// Récupérer le type de champ
type=getfieldtype(fieldid);
// Et vérifier le champ en fonction du type
switch (type) {
// Checkboxes ?
case 'checkbox' :
// Boucler pour voir si au moins une est cochée
var ok=null;
i=0;
while (document.getElementById(fieldid+i)) {
if (document.getElementById(fieldid+i).checked === true ) {ok=true;}
i=i+1;
}
if (!ok) {return true;}
break;
// Email ?
case 'email' :
if (field.value.indexOf('@')<0 || field.value.indexOf('.')<0 || field.value==0) {return true;}
break;
// Unique
case 'unique' :
break;
// Capcha
case 'captcha' :
if (field.value!=captcha) {return true;}
break;
// Date ?
case 'date' :
// Boucler pour voir si les trois (jour, mois, année) sont remplis
var mydate = field.getElementsByTagName('select');
var ko=false;
var year = mydate[2].options[mydate[2].selectedIndex].value;
var month = mydate[1].options[mydate[1].selectedIndex].value;
var day = mydate[0].options[mydate[0].selectedIndex].value;
if (day == '00') {ko=true;}
if (month == '00') {ko=true;}
if (year == '0000') {ko=true;}
source_date = new Date(year,month-1,day);
//alert(source_date);
if(year != source_date.getFullYear()) { ko=true; }
if(month-1 != source_date.getMonth()) { ko=true; }
if(day != source_date.getDate()) { ko=true; }
//alert(ko);
if (ko) {return true;}
break;
// Password & email check
case 'password_check' :
case 'email_check' :
// Trouver le nom du champs qui est vérifié
checkedfield=fieldid.replace('_check', '');
// Si le champs qu'on vérifie est vide
if (document.getElementById(checkedfield).value==0) {return true;}
// Si le champs qu'on vérifie est rempli, mais qu'ils ne sont pas identiques
else if (document.getElementById(checkedfield) && field.value!=document.getElementById(checkedfield).value) {return true;}
break;
// Password (Comme une chaine)
case 'password' :
// Pour les chaines et tout le reste
default:
// Pour les chaines avec taille limite (min ou max)
control=type.substr(0,3);
if (control=='min' || control=='max') {
// Limite ?
limit=type.substr(3);
if (control=='min' && field.value.length
limit) {return true;}
}
// Les autres chaines ne doivent pas être vides
else if (field.value==0 || (field.value==field.title && field.value.indexOf('flush')==-1)) {return true;}
break;
}
}
}
/********************************************************************************************/
// Récupérer le type d'un champ dans un formulaire standard Café Central
/********************************************************************************************/
function getfieldtype(fieldid) {
// SSI le li a la bonne id
if (document.getElementById(fieldid).parentNode) {
type=document.getElementById(fieldid).parentNode.className.replace('compulsory', '');
type=type.replace(' ', '');
return type;
}
}
/********************************************************************************************/
// Savoir si un champ est obligatoire ou pas
/********************************************************************************************/
function is_compulsory(fieldid) {
// SSI le li a la bonne id
if (document.getElementById(fieldid).parentNode) {
if (document.getElementById(fieldid).parentNode.className.indexOf('compulsory')!=-1) {return true;}
}
}
/********************************************************************************************/
// Fonction de vérification des formulaires (lit les lignes avec la class "compulsory")
/********************************************************************************************/
var firstkofield=null;
function check(formid) {
// SSi le form existe
if (document.getElementById(formid)) {
// Récupérer la liste des champs compulsory
FORMfields=document.getElementById(formid).getElementsByTagName("li");
// Construire le tableau des champs compulsory
COMPULSORYfield = new Array();
for (var i=0; i textarea.clientHeight && !window.opera) {textarea.rows += 1};
}
/********************************************************************************************/
// Changer une class
/********************************************************************************************/
function switchclass(id, newclass) {
var chaine=document.getElementById(id).className;
// Si la classe est déjà montée, l'enlever
if (chaine.indexOf(newclass)!=-1) {
chaine=document.getElementById(id).className=chaine.replace(newclass, '');
chaine=document.getElementById(id).className=chaine.replace(' '+newclass, '');
}
// Sinon, l'ajouter
else {document.getElementById(id).className = chaine+' '+newclass;}
}
/********************************************************************************************/
// Ajouter une bulle d'aide à un champ mal rempli
/********************************************************************************************/
function appendhelp(fieldid) {
// SSi l'alerte n'est pas déjà là
if (!document.getElementById(fieldid+'_alerte')) {
// Récupérer le type du champs
type=getfieldtype(fieldid);
if (document.getElementById(fieldid).parentNode) {
ligne=document.getElementById(fieldid).parentNode;
id=fieldid+"_alerte";
var THISalerte=Builder.node('div', {id:id, className:"alerte", style:"display:none"});
ligne.appendChild(THISalerte);
// Et mettre le texte (avec l'ornement)
new Ajax.Request(
sitear+'/node.php?ajx=constant&constant=form_ko_'+type, {
method:'get',
evalScripts:true,
onLoading:function () {loading(targetid)},
onComplete:function () {loading(targetid)},
onSuccess: function(r) {
THISalerte.innerHTML=r.responseText+'';
}
}
);
// Et faire apparaître
showit(id);
}
}
}
/********************************************************************************************/
// Changer les états des champs
/********************************************************************************************/
function switchfield(fieldid, event) {
var field=document.getElementById(fieldid);
var chaine=field.className;
switch(event) {
// ONBLUR : S'il est onfocus, le remettre sans onfocus, ni ko
case 'onblur':
// Si le champs n'a pas été rempli, lui rendre son préremplissage
if (field.className.indexOf('flush')!=-1 && field.value=="") {document.getElementById(fieldid).value=field.title;}
// Si le champ n'a pas ce qu'il veut, le dire
if (is_compulsory(fieldid) && is_ko(fieldid)) {
appendhelp(fieldid);
chaine=document.getElementById(fieldid).className=chaine.replace(' ok', '');
if (chaine.indexOf('ko')==-1) {switchfield(fieldid, 'ko');}
}
// Si le champ a ce qu'il veut, tout va bien
else {
// Cacher eventuellement l'alerte
if (document.getElementById(fieldid+'_alerte')) {
document.getElementById(fieldid).parentNode.removeChild(document.getElementById(fieldid+'_alerte'));
}
// Passer tout au vert
chaine=document.getElementById(fieldid).className=chaine.replace(' onfocus', '');
chaine=document.getElementById(fieldid).className=chaine.replace(' ko', '');
if (chaine.indexOf('ok')==-1) {switchfield(fieldid, 'ok');}
}
// Dans les deux cas, on a modifié le formulaire
THISform_modified=true;
break;
// ONMOUSEEVENT : S'il est onfocus ou ko, ne rien faire
case 'onmouseout':
case 'onmouseover':
if (chaine.indexOf('onfocus')!=-1 || chaine.indexOf('ko')!=-1) {break;}
// Dans tous les autres cas :
default:
// ONFOCUS : s'il est flush, le vider de son préremplissage
if (event=="onfocus" && field.className.indexOf('flush')!=-1 && field.value==field.title) {document.getElementById(fieldid).value="";}
// Ajouter la class à la chaine
if (chaine.indexOf('onmouseout')!=-1 || chaine.indexOf('onmouseover')!=-1 || chaine.indexOf('onfocus')!=-1 || chaine.indexOf('onblur')!=-1) {
chaine=chaine.substring(0, chaine.lastIndexOf(" "));
}
if (chaine.indexOf(event)==-1) {document.getElementById(fieldid).className = chaine+' '+event;}
if (event=='ko' && is_ko(fieldid)) {appendhelp(fieldid)};
break;
}
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Popup
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Remplir une popup avec une alerte
/********************************************************************************************/
function popupalerte(clef) {
// Lancer la fenêtre vide
popup(sitear+'/node.php?ajx=alerte&clef='+clef);
}
/********************************************************************************************/
// Remplir une popup avec une page ajax
/********************************************************************************************/
var donewithpopup=false;
function popup(url, width, height, top, popupsysteme) {
// Popup pour le site par défaut
if (typeof(systeme)=="undefined") {systeme='site';}
if (typeof(popupsysteme)=="undefined") {popupsysteme=systeme;}
// Si le code n'est pas dans la page, l'ajouter
if (!donewithpopup) {
// Code à insérer
var popup=
// Popup
Builder.node('div', {id:'popup', className:popupsysteme, style:'display:none'}, [
// Overlay
Builder.node('div', {id:'popupoverlay', onclick:'closepopup()'}),
// Boite
Builder.node('div', {id:'popupbox', style:'display:none'}, [
// Close button (width a space for ie6)
Builder.node('a', {id:'popupclose', href:'javascript:closepopup();'}, ' '),
// Welcome Ajax content
Builder.node('div', {id:'popupcontent'}),
]),
]);
// Insérer
document.getElementsByTagName("body").item(0).appendChild(popup);
document.getElementById("body").setAttribute("onkeypress", "keyPressHandler(event);");
// Hauteur du overlay
document.getElementById('popupoverlay').style.height=document.viewport.getHeight()+'px';
// Et voilà
donewithpopup=true;
}
// Trouver sa position top
if (typeof(top)=="undefined") {var top=130;}
var scrolled=document.viewport.getScrollOffsets().top;
var displayhere=parseInt(top)+parseInt(scrolled);
// Top, Hauteur et largeur
if (displayhere) {document.getElementById('popupbox').style.top=displayhere+'px';}
if (width) {document.getElementById('popupbox').style.width=width;}
if (height=='auto') {height=document.viewport.getHeight()*0.9+'px';}
if (height) {document.getElementById('popupbox').style.height=height;}
// Afficher le popup
showit('popup', 1, true);
Effect.Grow('popupbox', {duration:0.2, direction:'bottom-left'});
// Loader le contenu
load (url, 'popupcontent');
}
function keyPressHandler(e) {
var kC = (window.event) ? // MSIE or Firefox?
event.keyCode : e.keyCode;
var Esc = (window.event) ?
27 : e.DOM_VK_ESCAPE // MSIE : Firefox
if(kC==Esc) {closepopup();}
}
/********************************************************************************************/
// Fermer un popup
/********************************************************************************************/
function closepopup() {
Effect.Shrink('popupbox', {duration:0.2, direction:'bottom-left'});
Effect.Fade('popup');
// Loading Cafe Central
if (window.pumpitdown) {pumpitdown();}
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Travail sur les objets
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Afficher le lexique
/********************************************************************************************/
function showlexique(articleid, lexiqueid) {
// ID de la bulle de lexique
var dfn="dfn";
// Si besoin, Constuire la bulle de reception
if (!document.getElementById(dfn)) {
var lexique=Builder.node('div', {id:dfn, style:"display:none", onmouseout:"hidelexique()"});
document.getElementsByTagName("body").item(0).appendChild(lexique);
}
// La repositionner
var pos=findPos(document.getElementById('lexique'+lexiqueid+'_'+articleid));
document.getElementById(dfn).style.top=pos[1]+'px';
document.getElementById(dfn).style.left=pos[0]+'px';
// Et ajouter le texte (avec l'ornement)
new Ajax.Request(
sitear+'/node.php?ajx=lexique&articleid='+articleid, {
method:'get',
evalScripts:true,
onLoading:function () {loading(targetid)},
onComplete:function () {loading(targetid)},
onSuccess: function(r) {
document.getElementById(dfn).innerHTML=r.responseText+'';
}
}
);
var timing=500;
if (stop!=null) {clearTimeout(stop);}
stop=setTimeout('showit(\'dfn\');', timing);
}
/********************************************************************************************/
// Cacher le lexique
/********************************************************************************************/
function hidelexique() {
var timing=400;
if (stop!=null) {clearTimeout(stop);}
stop=setTimeout('hideit(\'dfn\');', timing);
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Notes
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Poser une note
/********************************************************************************************/
function note() {
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Favoris
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Ajouter aux favoris
/********************************************************************************************/
function addtofav(objet, objetid, key) {
// Construire la CSSid (éventuellement avec une clef)
if (key) {id = objet+objetid+'_faver_'+key;}
else {id = objet+objetid+'_faver';}
// Trouver les classes
var chaine=document.getElementById(id).className;
// Mais ne travailler seulement si le truc n'est pas déjà favori
if (chaine.indexOf('faved')==-1) {
// Pour dire qu'un objet a été mis en favoris
function faved(id) {
// Dire qu'il est favori
document.getElementById(id).className=chaine+' faved';
if (document.getElementById('countfav')) {new Effect.Bounce('countfav');}
new Effect.Bounce(id);
// Et mettre à jour aussi le countfav, s'il existe
if (document.getElementById('countfav')) {load('http://www.renault-trucks.de/node.php?ajx=countfav', 'countfav');;}
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=addtofav&objet='+objet+'&objetid='+objetid, {method:'get', evalScripts:true, onComplete:function () {faved(id)}});
}
}
/********************************************************************************************/
// Supprimer aux favoris
/********************************************************************************************/
function deletefromfav(objet, objetid) {
// Pour dire qu'un objet a été mis en favoris
function deleted(objet, objetid) {
// Dire qu'il est effacé
new Effect.DropOut('userfav'+objet+objetid);
// Et mettre à jour aussi le countfav, s'il existe
if (document.getElementById('countfav')) {load('http://www.renault-trucks.de/node.php?ajx=countfav', 'countfav');;}
new Effect.Highlight('countfav');
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=deletefromfav&objet='+objet+'&objetid='+objetid, {method:'get', evalScripts:true, onComplete:function () {deleted(objet, objetid)}});
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Amis
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Ajouter aux amis
/********************************************************************************************/
function addasfriend(userid) {
// Pour dire qu'un objet a été demandé comme ami
function added(userid) {
var id='addasfriend'+userid;
new Effect.Highlight(id);
var chaine=document.getElementById(id).className;
document.getElementById(id).className=chaine+' added';
document.getElementById(id).href=null;
document.getElementById(id).innerHTML='';
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=addasfriend&userid='+userid, {method:'get', evalScripts:true, onComplete:function () {added(userid)}});
}
/********************************************************************************************/
// Supprimer un ami
/********************************************************************************************/
function deletefriend(userid) {
// Pour dire qu'un ami a été supprimé
function deleted(userid) {
var id='listofactivefriends'+userid;
new Effect.DropOut(id);
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=deletefriend&userid='+userid, {method:'get', evalScripts:true, onComplete:function () {deleted(userid)}});
}
/********************************************************************************************/
// Refuser un ami
/********************************************************************************************/
function refusefriend(userid) {
// Pour dire qu'un ami a été refusé
function refused(userid) {
var id='listofstandbyfriends'+userid;
new Effect.DropOut(id);
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=refusefriend&userid='+userid, {method:'get', evalScripts:true, onComplete:function () {refused(userid)}});
}
/********************************************************************************************/
// Accepter un ami
/********************************************************************************************/
function acceptfriend(userid) {
// Pour dire qu'un ami a été accepté
function accepted(userid) {
var id='listofstandbyfriends'+userid;
var chaine=document.getElementById(id).className;
document.getElementById(id).className=chaine+' accepted';
new Effect.Highlight(id);
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=acceptfriend&userid='+userid, {method:'get', evalScripts:true, onComplete:function () {accepted(userid)}});
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Objets
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// Effacer un objet
/********************************************************************************************/
function deleteobjet(objet, objetid, cssid) {
// Loading
loading(cssid);
// Pour dire qu'un objet a été effacé
function deleted(cssid) {
new Effect.DropOut(cssid);
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=delete&objet='+objet+'&objetid='+objetid, {method:'get', evalScripts:true, onComplete:function () {deleted(cssid)}});
}
/********************************************************************************************/
// Signaler un objet
/********************************************************************************************/
function reportobjet(objet, objetid, cssid) {
// Pour dire qu'un objet a été mis en favoris
function reported(cssid) {
var chaine=document.getElementById(cssid).className;
document.getElementById(cssid).className=chaine+' reported';
new Effect.Pulsate(cssid, {pulses:3, duration:1})
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=report&objet='+objet+'&objetid='+objetid, {method:'get', evalScripts:true, onComplete:function () {reported(cssid)}});
}
/********************************************************************************************/
// Changer l'etat d'un objet
/********************************************************************************************/
function changeetat(newetat, objet, objetid, cssid) {
// Pour dire qu'un ami a été supprimé
function changed(cssid) {
new Effect.DropOut(cssid);
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx='+newetat+'&objet='+objet+'&objetid='+objetid, {method:'get', evalScripts:true, onComplete:function () {changed(cssid)}});
}
/********************************************************************************************/
// Rate
/********************************************************************************************/
function rate(objet, objetid, rate, key) {
// Construire la CSSid (éventuellement avec une clef)
if (key) {
rater = objet+objetid+'_rater_'+key;
currentrating=objet+objetid+'_currentrating_'+key;
confirm=objet+objetid+'_confirm_'+key;
}
else {
rater = objet+objetid+'_rater';
currentrating=objet+objetid+'_currentrating';
confirm=objet+objetid+'_confirm';
}
// Trouver les classes
var chaine=document.getElementById(rater).className;
// Mais ne travailler seulement si le truc n'est pas déjà noté
if (chaine.indexOf('rated')==-1) {
// Pour dire qu'un objet a été noté
function rated(response, rater, confirm) {
// Dire qu'il est favori
document.getElementById(rater).className=chaine+' rated';
// Nouvelle note
var newrating=response.responseText;
document.getElementById(currentrating).style.width=newrating*20+'%';
// Afficher la confirmation, puis la cacher
showit(confirm);
var timing=3000;
if (stop!=null) {clearTimeout(stop);}
stop=setTimeout('hideit(\''+confirm+'\');', timing);
// Rated
document.getElementById(rater).className=chaine+' rated';
new Effect.Pulsate(rater, {pulses:3, duration:1});
// Eventuellement rafraichir le nombre de votes
if (document.getElementById('ratinghit')) {
load(sitear+'/node.php?ajx=countvotes&objet='+objet+'&objetid='+objetid, 'ratinghit');
}
}
// Ajax
var myAjax = new Ajax.Updater('backyard', sitear+'/node.php?ajx=rate&objet='+objet+'&objetid='+objetid+'&rate='+rate, {method:'get', evalScripts:true, onComplete:function (response) {rated(response, rater, confirm)}});
}
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Show/Hide
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
// show/hide Scriptaculous
/********************************************************************************************/
showhide = function(element, opacity, noeffect) {
// Si invisible : afficher
if(document.getElementById(element).style.display == 'none') {new showit(element, opacity, noeffect);}
// Si visible : le cacher
else {new hideit(element, noeffect);}
}
/********************************************************************************************/
// Show
/********************************************************************************************/
showit = function(element, opacity, noeffect) {
// Passer outre les effets
if (noeffect==true) {document.getElementById(element).style.display='block';}
// Utiliser les effets
else {
// opacité
if (!opacity) {opacity=1;}
new Effect.Appear(element, {duration: 0.2, queue:'end', to:opacity});
}
}
/********************************************************************************************/
// Hide
/********************************************************************************************/
hideit = function(element, noeffect) {
// ssi l'element existe
if (document.getElementById(element)) {
// Passer outre les effets
if (noeffect==true) {document.getElementById(element).style.display='none';}
// Utiliser les effets
else {new Effect.Fade(element, {duration: 0.1});}
}
}
/********************************************************************************************/
//////////////////////////////////////////////////////////////////////////////////////////////
// Checkbox & order
//////////////////////////////////////////////////////////////////////////////////////////////
/********************************************************************************************/
/********************************************************************************************/
/** * Rendre un checkbox & order droppable
/********************************************************************************************/
function cbo_makedroppable(Fid, Fobjet, Ftable) {
Droppables.add(Fid+'_droppable', {accept:Fid, onDrop:function(element){cbo_insert(Fid, Fobjet, Ftable, element.id);}, hoverclass:'ready'});
}
/********************************************************************************************/
// Rendre sortable
/********************************************************************************************/
function cbo_makesortable(Fid, Fobjet) {
Sortable.create(Fid+'_selected', {handle:'handle', onUpdate:function(){cbo_order(Fid, Fobjet);}});
}
/********************************************************************************************/
// Ordonner les sélectionnés
/********************************************************************************************/
function cbo_order(Fid, Fobjet) {
var liste=Sortable.serialize(Fid+'_selected');
load(squarear+'/ajx.php?action=checkboxorder_order&field='+Fid+'&objet='+Fobjet+'&objetclef='+cbo_clef+'&'+liste);
}
/********************************************************************************************/
// Mettre à jour les listes
/********************************************************************************************/
function cbo_update(Fid, Fobjet, Fwhat) {
load(squarear+'/ajx.php?action=checkboxorder_update&field='+Fid+'&objet='+Fobjet+'&objetclef='+cbo_clef+'&type='+Fwhat, Fid+'_'+Fwhat);
}
/********************************************************************************************/
// Ajouter un truc
/********************************************************************************************/
function cbo_insert(Fid, Fobjet, Ftable, Finsertid) {
load(squarear+'/ajx.php?action=checkboxorder_insert&field='+Fid+'&objet='+Fobjet+'&table='+Ftable+'&objetclef='+cbo_clef+'&type=selected&insertid='+Finsertid, Fid+'_selected');
}
/********************************************************************************************/
// Ajouter un truc dans un embranchement
/********************************************************************************************/
function cbo_insertintree(Fid, nodeid, insertid) {
alert('insert in node '+nodeid+' id '+insertid);
// load(''.$_SESSION['square']['absoluteroot'].'/ajx.php?action=checkboxorder_insert&field='+Fid+'&objet='.$THISpage['table'].'&objetclef='.$clef.'&type=selected&table='.$FNTvalues['table'].'&insertid='+insertid, Fid+'_selected');
}
/********************************************************************************************/
// Supprimer un truc
/********************************************************************************************/
function cbo_delete(Fid, Fobjet, Fdeleteid) {
load(squarear+'/ajx.php?action=checkboxorder_delete&field='+Fid+'&objet='+Fobjet+'&objetclef='+cbo_clef+'&type=selected&deleteid='+Fdeleteid);
}
/********************************************************************************************/
// Scrollto
/********************************************************************************************/
function scrollto(id, noeffect) {
// Si l'id existe
if (document.getElementById(id)) {
new Effect.ScrollTo(id, {offset: -200});
// Highlight
if (id!='body' && noeffect!=true) {new Effect.Highlight(id, {duration: 3});};
}
}
/********************************************************************************************/
// Ne pas quitter la page avec un formulaire commencé...
/********************************************************************************************/
var THISform_modified=null;
var THISform_saved=null;
function confirmexit() {
if (THISform_modified && !THISform_saved) {return 'Si vous quittez ce formulaire, tous vos changements seront perdus.';}
}
/********************************************************************************************/
// Créer des légendes aux images qui portent la classe "captioned"
/********************************************************************************************/
function createcaptions() {
if (!document.getElementsByTagName) return false;
if (!document.createElement) return false;
var images = document.getElementsByTagName("img");
if (images.length < 1) return false;
for (var i=0; i