(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('