/********************************************************************************************/ // 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