//////////////
// UTF-8 !! //
//////////////

// contiendra le timeout
var monSuperTimeout = null;

// indiquera si l'aperçu du commentaire est créé
var commentPreviewCreated = false;

// contiendra la couleur du texte du commentaire
var commentColor = null;

// détection IE
var strChUserAgent_t = navigator.userAgent;
var intSplitStart_i = strChUserAgent_t.indexOf("(", 0);
var intSplitEnd_i = strChUserAgent_t.indexOf(")", 0);
var strChMid_t = strChUserAgent_t.substring(intSplitStart_i, intSplitEnd_i);
var inIE6_b = (strChMid_t.indexOf("MSIE 6") != -1) ? true : false;

// 'domready' ou 'load' ?
var domreadyEvent_t = (!inIE6_b) ? 'domready' : 'load';

// quand le chargement de la page est fini (DOM)
window.addEvent(domreadyEvent_t, function() {
	
	// si on est dans le contexte des commentaires
	if ($('c_content') != undefined)
	{
		// préchargement du loader
		new Asset.image('/blog/themes/opinionz/images/ajax-loader.gif')
		
		// quand un commentaire est tapé
		$('c_content').addEvent('keydown', function(e) {
				
			// on reset le timeout
			clearTimeout(monSuperTimeout);
			
			// on lance le timeout
			monSuperTimeout = setTimeout("commentPreview()", 800); // temps en millisecondes
				
		}); // fin de l'événement sur le champ de texte
		
		// quand les smileys sont utilisés
		$$('#comment-form img').each(function(item, index) {
			
			// onclick sur chaque élément
			item.addEvent('click', function() {
			
			    // Facebook Connect
			    if (item.getProperty("id") == "fb_login_image") {
                    return;
			    }
			    //
			
				// on reset le timeout
				clearTimeout(monSuperTimeout);
				
				// mise à jour du commentaire
				commentPreview();
				
			});
			
		});
	
	}
	
}); // fin du "domready"

// fonction appelée quand la barre d'outils est affichée
function enableToolbarCommentPreview() {
	
	// si on est dans le contexte des commentaires
	if ($('c_content') != undefined)
	{
		// quand la barre d'outils est utilisée
		$$('.jstElements button').each(function(item, index) {
			
			// onclick sur chaque élément
			item.addEvent('click', function() {
			
				// on reset le timeout
				clearTimeout(monSuperTimeout);
				
				// mise à jour du commentaire
				commentPreview();
				
			});
			
		});
	}
	
}

// fonction qui gère l'aperçu du commentaire
function commentPreview()
{
	// récupération de la date (du visiteur)
	var objDateVisiteur = new Date();
	var jour = objDateVisiteur.getDate();
	var mois = objDateVisiteur.getMonth();
	var annee = objDateVisiteur.getYear() + 1900; // correction puisque renvoit "107" pour "2007"
	var jourSemaine = objDateVisiteur.getDay();
	
	// jours de la semaine en lettres
	var jourSemaineEnLettres = ['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi']; // "getDay()" renvoit 0 pour dimanche
	// mois en lettres
	var moisEnLettres = ['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'];
	
	// date du jour
	var dateDuJour = jourSemaineEnLettres[jourSemaine] + ' ' + jour + ' ' + moisEnLettres[mois] + ' ' + annee;
	
	// nom du visiteur
	var nomVisiteur = ($('c_name').value.trim() != '') ? $('c_name').value : 'un visiteur anonyme';
	
	// si l'aperçu n'a pas encore été créé
	if (!commentPreviewCreated)
	{
	    // benjamin 20090513 - start
	    if ($('comments') === null) {
            var commentsDiv = new Element("div");
            commentsDiv.setProperty("id", "comments");
            commentsDiv.inject($('comment-form'), 'top');
	    }
	    // benjamin 20090513 - stop
	
		// si le "<dl>" existe (des commentaire existent)
		if ($$('#comments dl').length > 0)
		{
			// référence vers le "<dl>" des commentaires
			var element_dl = $$('#comments dl')[0];
		}
		// sinon (pas encore de commentaire)
		else
		{
			// création du "<dl>"
			var element_dl = new Element('dl');
			
			// on l'ajoute à "comment"
			$('comments').adopt(element_dl);
		}
		
		// si des "<dt>" sont trouvés (des commentaire existent)
		if ($$('#comments dl dt').length > 0)
		{
			// récupération de tous les "<dt>" du "<dl>"
			var list_dt = $$('#comments dl dt');
			
			// numéro du prochain commentaire
			var commentNumber = list_dt.length + 1;
			
			// récupération de l'ID du prochain commentaire
			var recupDernierId = list_dt.getLast().getProperty('id');
			var commentId = parseInt(recupDernierId.substr(1,recupDernierId.length)) + 1;
			
			// classe "odd" ou pas ?
			var classe1 = list_dt.getLast().hasClass('odd') ? '' : 'odd';
			
			// pas de classe "first" (ce n'est pas le premier commenaire)
			var classe2 = '';
		}
		// sinon (pas encore de commentaire)
		else
		{
			// numéro du prochain commentaire
			var commentNumber = 1;
			
			// ID du prochain commentaire
			var commentId = 99999; // fictif donc parce que bon
			
			// classes
			var classe1 = 'odd';
			var classe2 = 'first';
		}
		
		// nouveau "<dt>"
		var element_dt = new Element('dt').setProperty('id','c'+commentId).addClass(classe1).addClass(classe2);
		
		// nouveau lien
		var element_a = new Element('a').setProperty('href','#c'+commentId).addClass('comment-number');
		// on ajoute le numéro du commentaire dans le lien
		element_a.appendText(commentNumber + '.');
		
		// ajout du lien dans le "<dt>"
		element_dt.adopt(element_a);
		
		// on ajoute les infos sur l'auteur du commentaire dans le "<dt>"
		element_dt.appendText(' Le ' + dateDuJour + ', en ce moment même par ' + nomVisiteur);
		
		// ajout du "<dt>" dans le "<dl>"
		element_dl.adopt(element_dt);
		
		// nouveau "<dd>"
		var element_dd = new Element('dd').addClass(classe1).addClass(classe2).addClass('commentPreview');
		
		// ajout du "<dd>" dans le "<dl>"
		element_dl.adopt(element_dd);
		
		// nouveau scroll
		var scrollVersPreview = new Fx.Scroll(window, {
			wait: false,
			duration: 1200,
			transition: Fx.Transitions.Circ.easeIn
		});
		// scroll vers l'aperçu du commentaire
		scrollVersPreview.toElement('c'+commentId);
		
		// on ajoute le loader AJAX dans l'aperçu (en attente du commentaire)
		$$('dd.commentPreview')[0].innerHTML =
			'<img src="/blog/themes/opinionz/images/ajax-loader.gif" alt="chargement en cours..." style="margin-top: 10px" />';
		
		// on indique que l'aperçu est créé
		commentPreviewCreated = true;
	}
	
	// si la couleur originale n'est pas encore mémorisée
	if (commentColor == null) {
		// on mémorise la couleur originale
		commentColor = $$('dd.commentPreview')[0].getStyle('color');
	}
	// on grise le commentaire avant la prochaine mise à jour
	$$('dd.commentPreview')[0].setStyle('color', '#ddd');
	
	// on met à jour le commentaire
	var commentaire = $('c_content').value;
	
	// requête AJAX pour convertir le texte en wiki
	var myRequest = new Request({
        url: '/blog/themes/opinionz/wiki2xhtml.ajax.php',
		method: 'post', 
		data: 'texteSource=' + commentaire,
		onSuccess: function(resp)
		{
			// on réattribue la couleur originale
			$$('dd.commentPreview')[0].setStyle('color', commentColor);
			
			// on met à jour le commentaire
			$$('dd.commentPreview')[0].innerHTML = resp;
			
			// on récupère tous les boutons submit
			var submitBtn_at = $$('#comment-form input.submit');
			// on supprime les boutons qui ne nous intéressent pas
			submitBtn_at.each(function(item, index) {
				// si c'est pas le bouton envoyer
				if (item.getProperty('value') != 'envoyer') {
					// on le supprime
					submitBtn_at.remove(item);
				}
			});
			// si le bouton submit n'est pas encore affiché
			if (submitBtn_at.length == 0) {
				// on créé le bouton
				var submitBtn = new Element('input').addClass('submit').setProperties({name: 'submitbtn', value: 'envoyer', type: 'submit'});
				// et on l'affiche à côté du bouton preview
				$$('input.preview')[0].getParent().adopt(submitBtn);
				// ensuite, on supprime le bouton preview
				$$('input.preview')[0].destroy();
			}
		},
		onFailure: function()
		{
			// on réattribue la couleur originale
			$$('dd.commentPreview')[0].setStyle('color', commentColor);
			
			// log de l'erreur	
			//console.log('error while attempting to generate comment preview');
		}
	}).send();
}