/********************************************************************************************/
// Variables globales
/********************************************************************************************/
var sitear='http://www.netglobers.com';
var squarear='http://www.netglobers.com/cafecentral';
/********************************************************************************************/
// 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)}});
// var myAjax = new Ajax.Updater(targetid, url, {method:'get', evalScripts:true});
}
/********************************************************************************************/
// 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);
// 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) {
// Voilà le retour
// alert(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) {window[dothat]();}
}
// Ou montrer le contenu retourné ?
else if (objet.responseText) {alert(objet.responseText);}
}
// 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;}
}
/********************************************************************************************/
// 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;
// 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 check
case 'password_check' :
// Trouver le nom du champs qui est vérifié
checkedfield=fieldid.replace('_check', '');
// Si le champs password qu'on vérifie est vide
if (document.getElementById(checkedfield).value==0) {return true;}
// Si le champs password 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.lengthlimit) {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 0) {
$('nbcomment').innerHTML = $('nbcomment').innerHTML - 1;
}
}
// 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 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});}
}
}
/********************************************************************************************/
// 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});};
}
}
/********************************************************************************************/
// Flush des champs
/********************************************************************************************/
function flush(id) {
if (document.getElementById(id).value) {document.getElementById(id).value='';}
}
/********************************************************************************************/
// Select and go
/********************************************************************************************/
function selectandgo() {
box = document.forms[0].navi;
destination = box.options[box.selectedIndex].value;
if (destination) location.href = destination;
}
/********************************************************************************************/
// Smartlist
/********************************************************************************************/
var stop=null;
var timing=400;
function smartme(string, target) {
if (stop!=null) {clearTimeout(stop);}
stop=setTimeout('load(\''+string+'\', \''+target+'\');', timing);
}
/********************************************************************************************/
// Autogrow des textarea
/********************************************************************************************/
function autogrow(textarea) {
// Opera isn't just broken. It's really twisted.
if (textarea.scrollHeight > 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;}
}
/********************************************************************************************/
// 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.';}
}
/********************************************************************************************/
// Input Placeholder Text
/********************************************************************************************/
/* Project: Input Placeholder Text
Title: Automatic population of form fields with contents of title attributes
Created: 13 August 2005 by Jon Gibbins (aka dotjay)
Modified: 13 November 2006 by Jon Gibbins (aka dotjay)
Add the following classes to text inputs or textareas to get the desired behaviour:
auto-select : Will pre-populate the input with the title attribute and select the text when it receives focus.
auto-clear : Will pre-populate the input with the title attribute and clear the text when it receives focus.
populate : Will just populate the input with the title attribute.
Note: if auto-select and auto-clear are set, auto-select takes precedence.
*/
function populateforms() {
if (!document.getElementsByTagName) return true;
ourForms = document.getElementsByTagName('form');
// go through each form
var numForms = ourForms.length;
for (var i=0;i