(function() { var fieldSelection = { getSelection: function() { var e = this.jquery ? this[0] : this; return ( ('selectionStart' in e && function() { var l = e.selectionEnd - e.selectionStart; return {start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l)}; }) || (document.selection && function() { e.focus(); var r = document.selection.createRange(); if (r == null) { return {start: 0, end: e.value.length, length: 0} } var re = e.createTextRange(); var rc = re.duplicate(); re.moveToBookmark(r.getBookmark()); rc.setEndPoint('EndToStart', re); return {start: rc.text.length, end: rc.text.length + r.text.length, length: r.text.length, text: r.text}; }) || function() { return {start: 0, end: e.value.length, length: 0}; } )(); }, replaceSelection: function() { var e = this.jquery ? this[0] : this; var text = arguments[0] || ''; return ( ('selectionStart' in e && function() { e.value = e.value.substr(0, e.selectionStart) + text + e.value.substr(e.selectionEnd, e.value.length); return this; }) || (document.selection && function() { e.focus(); document.selection.createRange().text = text; return this; }) || function() { e.value += text; return this; } )(); } }; jQuery.each(fieldSelection, function(i) {jQuery.fn[i] = this;}); })(); url_encode = function(plaintext) { var SAFECHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.!~*'()"; var HEX = "0123456789ABCDEF"; var encoded = ""; for (var i = 0; i < plaintext.length; i++ ) { var ch = plaintext.charAt(i); if (ch == " ") { encoded += "+"; // x-www-urlencoded, rather than %20 } else if (SAFECHARS.indexOf(ch) != -1) { encoded += ch; } else { var charCode = ch.charCodeAt(0); if (charCode > 255) { alert( "Unicode Character '" + ch + "' cannot be encoded using standard URL encoding.\n" + "(URL encoding only supports 8-bit characters.)\n" + "A space (+) will be substituted." ); encoded += "+"; } else { encoded += "%"; encoded += HEX.charAt((charCode >> 4) & 0xF); encoded += HEX.charAt(charCode & 0xF); } } } // for return encoded; }; //Fonction qui va tester le remplissage de tous les champs input de classe obligatoire //et lancer la fonction callback en cas de réussite (kdt) checkform = function(nom_form,callback) { var chp_non_remplis=false; var oldstyle; if($('.obligatoire','#'+nom_form)[0].tagName=='IFRAME') { callback = callback || function(){}; callback(); return true; } $('.obligatoire','#'+nom_form).each( function() { if($(this).val()=='') { $(this).addClass('obligatoire_erreur').focus(function(){$(this).removeClass('obligatoire_erreur');}); chp_non_remplis=true; } }); if(chp_non_remplis==false) { callback = callback || function(){}; callback(); return true; } else { alert("Remplissez les champs obligatoires"); return false; } }; //fonction pour vérifier l'existance de l'utilisateur function check_user_exist(login,target) { if (login.length > 2) { $('#'+target).load('/api/forum/ajax.php?act=recherche_membre_existe',{recherche: escape(login)}); } else { $('#'+target).html(''); } } // Parse avec le BBCode function TextareaParse(obj_textarea) { var tag=new Array(); //option : 1=[url=http://...][/url], 2=[img]url[/img], 3=bbcode this.bbcode = function(bbcode_text,option) { if(typeof(document.selection)!='undefined') var nav='ie';// ie, opera else var nav='firefox';// firefox // Selection du texte en fonction du navigateur var Selection; obj_textarea=$('#txt')[0]; if(nav=='ie') { obj_textarea.focus();// SUPP crée une erreur sous ie Selection=document.selection.createRange().text; } else { var start=obj_textarea.selectionStart; var end=obj_textarea.selectionEnd; var scroll=obj_textarea.scrollTop; var textdeb=obj_textarea.value.substring(0,start); var textfin=obj_textarea.value.substring(end); Selection=obj_textarea.value.substring(start, end); } // Prompt pour demande d'url if(tag[bbcode_text]!=1 && ((option==2 && Selection=='') || option==1)) var url_prompt=prompt('Entrer l\'adresse URL :','http://'); if(option==1 && Selection=='' && url_prompt!=null) var text_prompt=prompt('Entrer le texte du lien :',''); obj_textarea.focus();// SUPP crée une erreur sous ie // null=si clic sur annuler, undefined si pas déclaré if(option==1 && url_prompt==null && (tag[bbcode_text]==undefined || tag[bbcode_text]==0)) {} else if(option==3) { if(nav=='ie') document.selection.createRange().text=bbcode_text; else obj_textarea.value=textdeb+bbcode_text+textfin; obj_textarea.focus(); if(nav=='firefox') obj_textarea.setSelectionRange(textdeb.length + bbcode_text.length, textdeb.length + bbcode_text.length); } else { if(Selection!='')// Une selection : on insert toute la balise : open et close { if(nav=='ie') document.selection.createRange().text='['+bbcode_text+(url_prompt!=undefined?'='+url_prompt:'')+']'+Selection+'[/'+bbcode_text+']'; else obj_textarea.value=textdeb+'['+bbcode_text+(url_prompt!=undefined?'='+url_prompt:'')+']'+Selection+'[/'+bbcode_text+']'+textfin; obj_textarea.focus(); if(nav=='firefox') obj_textarea.setSelectionRange(textdeb.length + bbcode_text.length + 2 + (option==1?1+url_prompt.length:0), textdeb.length + bbcode_text.length + 2 + Selection.length + (option==1?1+url_prompt.length:0)); } else// pas de selection : on insert uniquement une partie : open ou close { if(tag[bbcode_text]=='undefined') tag[bbcode_text]=0;// si pas tag deja seté if(option==2 || (option==1 && text_prompt!=null))// si prompt=2 (img par exemple), ou 1 (url avec texte) { if(url_prompt!=null)// si il y a une url { if(nav=='ie') document.selection.createRange().text='['+bbcode_text+(option==1?'='+url_prompt:'')+']'+(option==1?text_prompt:url_prompt)+'[/'+bbcode_text+']'; else obj_textarea.value=textdeb+'['+bbcode_text+(option==1?'='+url_prompt:'')+']'+(option==1?text_prompt:url_prompt)+'[/'+bbcode_text+']'+textfin; // Permet de rester dans le focus actuel if(nav=='firefox') { if(option==1) obj_textarea.setSelectionRange(textdeb.length + bbcode_text.length + 3 + url_prompt.length, textdeb.length + bbcode_text.length + 3 + url_prompt.length + text_prompt.length); else obj_textarea.setSelectionRange(textdeb.length + bbcode_text.length*2 + 5 + url_prompt.length, textdeb.length + bbcode_text.length*2 + 5 + url_prompt.length); } } } else// si code normal ou prompt=1 (url) { if(tag[bbcode_text]==1)// Fermeture { if(nav=='ie') document.selection.createRange().text='[/'+bbcode_text+']'; else obj_textarea.value=textdeb+'[/'+bbcode_text+']'+textfin; tag[bbcode_text]=0; } else// Ouverture { if(nav=='ie') document.selection.createRange().text='['+bbcode_text+(option==1?'='+url_prompt:'')+']'; else obj_textarea.value=textdeb+'['+bbcode_text+(option==1?'='+url_prompt:'')+']'+textfin; tag[bbcode_text]=1; } // Permet de rester dans le focus actuel if(nav=='firefox') obj_textarea.setSelectionRange(textdeb.length + bbcode_text.length + 3 - tag[bbcode_text] + (url_prompt!=undefined?1+url_prompt.length:0), textdeb.length + bbcode_text.length + 3 - tag[bbcode_text] + (url_prompt!=undefined?1+url_prompt.length:0)); } obj_textarea.focus(); } } if(scroll) obj_textarea.scrollTop=scroll;// On retourne à la position du scroll précédent }; } // Capture le contenu pour detecter les tags function post(forum, sujet, editer, contexte, next, num_mess_pp, api_mode, nocache){ // Pour les sites utilisant les nouvelles versions de jquery - ancienne version hacké // JVFR / DECO if($(contexte).hasClass('newPost')){ nMessage = editer ? editer : ''; $.post('/api/forum/ajax.php?act=checkInsults', {content: $('#txt', contexte).val()}, function(content){ if(content == 'found'){ $.facebox.alert('Votre message contient un mot à caractère insultant.
Merci de le corriger pour pouvoir publier votre message.

En devenant membre, vous ne serez pas soumis à ce type de filtre.', 8); }else{ if(sujet == ''){ $.facebox({url:'#formsujet .loading', titre : 'Création du sujet', close : false, closeOverlay : false}); }else{ if(editer <= 0){ $.facebox({url:'#formsujet .loading', titre : 'Ajout du message', close : false, closeOverlay : false}); } } if(editer > 0){ $.facebox({url:'#formsujet .loading', titre : 'Edition du message', close : false, closeOverlay : false}); } $.ajax({ url: '/api/forum/ajax.php?act=' + (editer != 0 ? 'editer' : 'poster') + '_message', type : 'POST', data : { sujet : sujet, txt : $('#txt', contexte).val(), titre : $('#titre', contexte).val(), contenu : $('#contenu', contexte).val(), id_fiche : $('#id_fiche', contexte).val(), type_fiche : $('#type_fiche', contexte).val(), str_codec : $('#str_codec', contexte).val(), forum : forum, note : ($("input[type=hidden][name='note']", contexte).val() != undefined ? $("input[type=hidden][name='note']", contexte).val() : ''), motcle : $('#motcle', contexte).val(), next : next, api_mode : api_mode, nocache : nocache, num_mess_pp : num_mess_pp, idmsg : nMessage, fiche : (api_mode == 'question' ? $('.question', contexte).val() : ''), redirect : $('#redirect', contexte).val(), newPost : true }, error : function(){ $.facebox.close(); $.facebox.alert('Une erreur est survenue, veuillez essayer ultérieurement'); }, dataType : 'html', success : function(nMessage2){ nMessage = nMessage2 ? nMessage2 : nMessage; if($('#reloadComment', contexte).length){ $('#reloadComment', contexte).hide().html(nMessage2); $.facebox.close(); window.location = '#goto:commentaire'; }else{ if(sujet == ''){ window.location = $('#redirect', contexte).val() + '#stop:' + nMessage; }else{ $.get('/api/forum/ajax.php?act=urlmessage&sujet=' + sujet + '&message=' + nMessage, function(url){ setTimeout(function(){ if(document.location.pathname == url){ window.location = window.location.replace(/\#([0-9]+)/g, '#' + nMessage); window.location.reload(true); }else{ document.location.replace(url + '#' + nMessage); } }, 1500); }); } } } }); } }); }else{ // Sites utilisant une ancienne version de jquery hack avec un overdraw :p // METTRE en none les boutons et afficher le bouton griser avec anime gif pour envoi du post !!! var div=$('#message',contexte); var contenu=div.html(); if($('#txt_tmp',contexte).val()){ // si mode preview var theText=$('#txt_tmp',contexte).val(); var theTextdiv=$('#id_iframe',contexte); } else{ // si mode textarea var theText=$('#txt',contexte).val(); var theTextdiv=$('#txt',contexte); } var txt_tmp=theText;// sauvegarde le contenu var width=theTextdiv[0].offsetWidth; var height=theTextdiv[0].offsetHeight; if($('#txt').size()>0) $('#txt',contexte).val(txt_tmp);// renvoi $('#submit_mess'+(editer!=0 && api_mode?editer:'')).removeAttr('onclick');// Pour éviter les envois répétitifs if(api_mode=='avis_marchand') { var queries = $('#formsujet'+(editer ? editer : '')).serialize(); }else{ var queries = '&sujet='+sujet+ '&txt='+encodeURIComponent(theText)+ ($('#titre_message',contexte).val() ? '&titre_message='+encodeURIComponent($('#titre_message',contexte).val()) : '')+ ($('#id_fiche',contexte).val() ? '&id_fiche='+$('#id_fiche',contexte).val():'')+ ($('#type_fiche',contexte).val() ? '&type_fiche='+$('#type_fiche',contexte).val():'')+ ($('#source_actu',contexte).val() ? '&source_actu='+$('#source_actu',contexte).val():''); } queries += '&forum='+forum+ '&titre='+($('#titre',contexte).size()>0 ? encodeURIComponent($('#titre',contexte).val()) : '')+ '&contenu='+($('#contenu',contexte).size()>0 ? encodeURIComponent($('#contenu',contexte).val()) : '')+ '&motcle='+encodeURIComponent($('#motcle',contexte).val())+ ($("select[name='note']",contexte).val() != undefined?'¬e='+$("select[name='note']",contexte).val():'')+ ($("input[type=radio][name='note']:checked",contexte).val() != undefined?'¬e='+$("input[type=radio][name='note']:checked",contexte).val():'')+ ($("input[type=hidden][name='note']",contexte).val() != undefined?'¬e='+$("input[type=hidden][name='note']",contexte).val():'')+ (editer ? '&idmsg='+editer : '')+ (next ? '&next='+next : '')+ (api_mode ? '&api_mode='+api_mode : '')+ (api_mode=='question' ? '&fiche='+$("input[type=radio][name='forum_fiche'][checked]",contexte).val() : '')+ (nocache ? '&nocache='+nocache : '')+ (num_mess_pp ? '&num_mess_pp='+num_mess_pp : ''); $.post('/api/forum/ajax.php?act=checkInsults', {content: $('#txt', contexte).val()}, function(content){ if(content == 'found'){ if(typeof $.facebox === 'function') { $.facebox.alert('Votre message contient un mot à caractère insultant. Merci de le corriger pour pouvoir publier votre message.', 8); } else { alert('Votre message contient un mot à caractère insultant.\nMerci de le corriger pour pouvoir publier votre message.'); } }else{ $.ajax({ url: (editer!=0 ? '/api/forum/ajax.php?act=editer_message' : '/api/forum/ajax.php?act=poster_message'), type:'post', data : queries, error:function(XMLHttpRequest,textStatus,errorThrown) { $('#idoverdraw').html('Une erreur s\'est produite lors de l\'envoi de votre message.

Cliquer ici pour réessayer' ); }, /*dataType: 'noscript',*/ over_msg: 'Analyse
', over_target: '#message'+(editer!=0 && api_mode?editer:''), over_stop: '1', success: function (msg) { // @TODO : problème de double post sous firefox if(!$('#idoverdraw').length) { $('body').append(''); } $('#idoverdraw').html(msg); if(editer!=0) { //le calque avec le message prend la hauteur du calque de sauvegarde du message if($('#layer_reponse'+editer).html()){ $('#message'+editer).find('.message_txt').html($('#layer_reponse'+editer).html()).css({height:'auto'}); //le calque de sauvegarde reprend une hauteur de 10 //on replace le texte correctement dans le layer du message $('#layer_reponse'+editer).css({height: '10px'}).html(' ').show(); $('body').append('
 
'); } //on met à jour le texte avec la bonne valeur if(!api_mode){ $.ajax({ url: '/api/forum/ajax.php?act=message_contenu', type:'post', dataType:'json', success: function (msg) { //mise a jour du contenu $('#message'+editer).find('.message_txt').html(msg.contenu); //mise a jour du titre et du type if(sujet=='') { //faire le regex pour enlever les crochets du titre; $('#titre_titre').html(msg.titre); } if($('#clubic').length && editer){ $('blockquote div.quote blockquote', '#message' + editer).each(function(){ if($(this).prev().hasClass('moreQuote') === false){ $(this).before($('
').addClass('moreQuote').html('Cliquez-ici pour voir les citations précédentes').click(function(){ $(this).next('blockquote *:not(.spoiler)').show(); $(this).next('blockquote').find('*:not(.spoiler)').show(); $(this).next('blockquote').find('.moreQuote').remove(); $(this).remove(); })); } }); } }, data:'id_message='+editer+'&id_sujet='+sujet+'&html=1&is_sujet='+(sujet=='' ? 1 : 0) }); }else{ if($('#clubic').length && editer){ $('blockquote div.quote blockquote', '#message' + editer).each(function(){ if($(this).prev().hasClass('moreQuote') === false){ $(this).before($('
').addClass('moreQuote').html('Cliquez-ici pour voir les citations précédentes').click(function(){ $(this).next('blockquote *:not(.spoiler)').show(); $(this).next('blockquote').find('*:not(.spoiler)').show(); $(this).next('blockquote').find('.moreQuote').remove(); $(this).remove(); })); } }); } } $('img.btnciter').show(); $('img.btnrepondre').show(); $('img.btnediter').show(); $('#form_layer_fenetre_post_reponse').show(); //on rebinde les boutons avec le fonction du onready ! dans message.js: if(!api_mode){ unbind_element(); ready_message(); $('#message'+editer).Rollover().Tooltip(); } } } }); } }); } } var contexte=''; var css_path = css_path != undefined ? css_path : 'style'; // Créer l'apercu function preview(contexte) { if(contexte) { if($('#txt_tmp',contexte).val()!='')// si en mode preview { theIframe=$('#id_iframe',contexte); //$('.resizehandle').remove(); theTextarea=document.createElement('textarea'); theTextarea.style.width=theIframe[0].offsetWidth; theTextarea.style.height=theIframe[0].offsetHeight; theTextarea.id='txt'; theTextarea.className=theIframe[0].className; theIframe.hide(); theIframe[0].parentNode.replaceChild(theTextarea, theIframe[0]); //$('#txt').resizehandle(); textarea=new TextareaParse($('#txt',contexte)[0]);// initialisation de bbcode pour le textarea $('#bbcode',contexte).show(); $('#bbcode_smiley',contexte).show(); $('#bbcode_smiley_more',contexte).show(); $('#txt',contexte).val($('#txt_tmp',contexte).val()); $('#txt_tmp',contexte).val(''); $('#btnprevisualiser',contexte).attr('src','/forum/img/previsualiser_off.gif'); $(contexte).Rollover().Tooltip(); } else// si en mode textarea { theTextarea=$('#txt',contexte); if(theTextarea.val()!='') { $('#txt_tmp',contexte).val(theTextarea.val()); //$('.resizehandle').remove(); theIframe=document.createElement('iframe'); theIframe.style.border='0px solid #000000'; theIframe.style.marginTop='1px'; theIframe.style.marginBottom='1px'; theIframe.style.width=theTextarea[0].offsetWidth; theIframe.style.height=theTextarea[0].offsetHeight; theIframe.id='id_iframe'; theIframe.className=theTextarea[0].className; $('#id_iframe',contexte).hide(); $('#bbcode',contexte).hide(); $('#bbcode_smiley',contexte).hide(); $('#bbcode_smiley_more',contexte).hide(); theTextarea[0].parentNode.replaceChild(theIframe, theTextarea[0]); //$("#id_iframe").resizehandle(); var docTemplate="
INSERT:CONTENT:END
"; $.ajax({ url: '/api/forum/ajax.php?act=preview_message', type: 'POST', data: 'txt='+escape(theTextarea.val())+($('#desactive_smileys',contexte)>0 ? '&desactive_smileys='+$('#desactive_smileys',contexte)[0].checked : ''), success: function(msg){ docTemplate=docTemplate.replace(/INSERT:CONTENT:END/, msg); theIframe.contentWindow.document.open(); theIframe.contentWindow.document.write(docTemplate); theIframe.contentWindow.document.close(); } }); $('#btnprevisualiser',contexte).attr('src','/forum/img/editer_preview_off.gif'); $(contexte).Rollover().Tooltip(); //over_target: '#message', //over_msg: 'Prévisualisation en cours...', } } } } function vote(id_mess,mode,id_membre,res_sujet_id_mess,api_mode) { if(mode=='supp') { $('#supp'+id_mess).css("display","none"); $('#supp_off'+id_mess).css("display","inline"); $('.message_contenu_moderer','#message_redux'+id_mess).load('/api/forum/ajax.php?act=voter_message',{ mode: mode, id_mess: id_mess, id_membre: id_membre, id_sujet_mess: res_sujet_id_mess, api_mode: api_mode }); $('#message'+id_mess).css("display","none"); $('#message_bottom'+id_mess).css("display","none"); $('#message_redux'+id_mess).css("display","block"); } else if(mode=='restaurer') { $('.message_contenu_moderer','#message_redux'+id_mess).load('/api/forum/ajax.php?act=voter_message',{ mode: mode, id_mess: id_mess, id_membre: id_membre, id_sujet_mess: res_sujet_id_mess, api_mode: api_mode }); $('#message'+id_mess).css("display","block"); $('#message_bottom'+id_mess).css("display","block"); $('#message_redux'+id_mess).css("display","none"); } else if(mode=='up' || mode=='down') { $('#up'+id_mess).css("display","none"); $('#up_off'+id_mess).css("display","inline"); if($('#down'+id_mess)>0) { $('#down'+id_mess).css("display","none"); $('#down_off'+id_mess).css("display","inline"); } if($('#supp'+id_mess)) { $('#supp'+id_mess).css("display","none"); $('#supp_off'+id_mess).css("display","inline"); } if(mode!='down') { $.ajax({ url: '/api/forum/ajax.php?act=voter_message', data: { mode: mode, id_mess: id_mess, id_membre: id_membre, id_sujet_mess: res_sujet_id_mess, api_mode: api_mode }, over_msg: 'Envoi...', over_target: '#message_vote'+id_mess, success: function (msg) { if(api_mode && msg) alert(msg); else $('#idoverdraw').append(msg); } }); } else $('#vote').css("display","none"); } } jQuery.extend({ upload_ugc: function(options){ var settings = $.extend({ width: 760, height: 560, cible: '#txt', titre: 'Photos', url: true, align: true, size: true, upload: true }, options); if(settings.url == true && ($(settings.cible).get(0).tagName.toLowerCase() == 'textarea' || $(settings.cible).get(0).tagName.toLowerCase() == 'input') && $(settings.cible).getSelection().length > 0){ $(settings.cible).replaceSelection('[img]' + $(settings.cible).getSelection().text + '[/img]'); } else { $.facebox({ titre: settings.titre, height: 400, url:'/api/forum/photo.php?' + $.param(settings) }); } return false; } }); $(document).ready(function(){ $('.message_light textarea.obligatoire').focus(function() { if($('.message_light textarea.obligatoire').val() == "Écrivez votre commentaire ici...") { $('.message_light textarea.obligatoire').val(''); } }); }); $(document).ready(function(){ if($('#clubic').length){ $('blockquote div.quote blockquote').each(function(){ if($(this).prev().hasClass('moreQuote') === false){ $(this).before($('
').addClass('moreQuote').html('Cliquez-ici pour voir les citations précédentes').click(function(){ $(this).next('blockquote *:not(.spoiler)').show(); $(this).next('blockquote').find('*:not(.spoiler)').show(); $(this).next('blockquote').find('.moreQuote').remove(); $(this).remove(); })); } }); } });