// ************************************************************** //
// * Au dela de l'Oraison                                       * //
// ************************************************************** //
// * Copyright (c) 2007-2008                                    * //
// * Web           http://www.samantha-bailly.com               * //
// ************************************************************** //
// ************************************************************** //
// * $ Date: 2007-10-06 19:50:46 +0200 (Sat, 06 Oct 2007)     $ * //
// * $ Developper: Dietrich Christophe                        $ * //
// * $ Developper: DESPORTES Florian                          $ * //
// ************************************************************** //
// ************************************************************** //
// * $ Source: script_blog.js                                 $ * //
// * $ Source type: javascript with mootools framework        $ * //
// * $ Works with: includes/blog.inc.php                      $ * //
// ************************************************************** //


window.addEvent("domready", function() {

	var nb_blog = $$("div.blog").length;

	/* Afficher les commentaires */
	for( var i=0 ; i<nb_blog ; i++ ) {
		$("blog_comm_texte_"+ i).slide("hide");
	}
	
	for( var i=0 ; i<nb_blog ; i++ ) {
		$("id_comm_"+ i).addEvent("click", function(evt) {
			evt.preventDefault();
			var id = evt.target.id.substr(evt.target.id.lastIndexOf("_")+1, 1);
			$("blog_comm_texte_"+ id).slide("toggle");
			for( var j=0 ; j<nb_blog ; j++ ) {
				if( j != id ) {
					$("blog_comm_texte_"+ j).slide("out");
				}
			}
			return false;
		});
	}
	
	/* Afficher les formulaires */
	for( var i=0 ; i<nb_blog ; i++ ) {
		$("blog_ajou_"+ i).slide("hide");
	}
	for( var i=0 ; i<nb_blog ; i++ ) {
		$("id_ajou_"+ i).addEvent("click", function(evt) {
			evt.preventDefault();
			var id = evt.target.id.substr(evt.target.id.lastIndexOf("_")+1, 1);
			$("blog_ajou_"+ id).slide("toggle");
			for( var j=0 ; j<nb_blog ; j++ ) {
				if( j != id ) {
					$("blog_ajou_"+ j).slide("out");
				}
			}
			return false;
		});
	}
	
	/* Gestion des smileys et de la mise en forme des textes */
	for( var i=0 ; i<$$("form").length ; i++ ) {
		$("blog_reponse_"+i).slide("hide");

		$("form_"+ i).addEvent("submit", submit_form);
		$("form_"+ i).addEvent("reset", reset_length);
		$("msg_"+ i).addEvent("keyup", check_length);
		$("msg_"+ i).addEvent("keydown", check_length);
		
		$("smile_baby_"+ i).addEvent("click", smileBaby);
		$("smile_biggrin_"+ i).addEvent("click", smileBiggrin);
		$("smile_confused_"+ i).addEvent("click", smileConfused);
		$("smile_cool_"+ i).addEvent("click", smileCool);
		$("smile_crying_"+ i).addEvent("click", smileCrying);
		$("smile_eek_"+ i).addEvent("click", smileEek);
		$("smile_evil_"+ i).addEvent("click", smileEvil);
		$("smile_frown_"+ i).addEvent("click", smileFrown);
		$("smile_happy_"+ i).addEvent("click", smileHappy);
		$("smile_mad_"+ i).addEvent("click", smileMad);
		$("smile_pleased_"+ i).addEvent("click", smilePleased);
		$("smile_redface_"+ i).addEvent("click", smileRedface);
		$("smile_rolleyes_"+ i).addEvent("click", smileRolleyes);
		$("smile_smile_"+ i).addEvent("click", smileSmile);
		$("smile_tongue_"+ i).addEvent("click", smileTongue);
		$("smile_wink_"+ i).addEvent("click", smileWink);
	
		$("img_bold_"+ i).addEvent("click", bold);
		$("img_italic_"+ i).addEvent("click", italic);
		$("img_underline_"+ i).addEvent("click", underline);
		$("img_left_"+ i).addEvent("click", left);
		$("img_center_"+ i).addEvent("click", center);
		$("img_right_"+ i).addEvent("click", right);
		$("img_link_"+ i).addEvent("click", link);
	}
});


function length_verif(id) {
	var texte = $("msg_"+ id).value;
	var taille = texte.length;
	$("lg_"+id).innerHTML = taille;
	if( taille >= 1000 ) {
		$("msg_"+id).value = texte.substr(0, 1000);
		$("lg_"+id).innerHTML = 1000;
	}
}

function check_length(evt) {
	var id = evt.target.id.substr(evt.target.id.length-1, 1);
	length_verif(id);
}


function reset_length(evt) {
	var id = evt.target.id.substr(evt.target.id.length-1, 1);
	$("lg_"+id).innerHTML = "0";
}


function reset_form(id) {
	$("nom_"+id).value  = "";
	$("mail_"+id).value = "";
	$("msg_"+id).value  = "";
	$("code_"+id).value = "";
}


function refresh_codes() {
	$$("img.code").each( function(item) {
		var new_img = new Element("img").set({
			"src"    : "includes/image.inc.php",
			"alt"    : "code",
			"class"  : "code",
			"styles" : {
				"width"  : 90,
				"height" : 14 
			}
		});
		var parent = item.getParent();
		item.destroy();
		parent.insertBefore(new_img, parent.getFirst());
	});
}


function smile(id, code) {
	( $("msg_"+id).value == "" ) ?
		$("msg_"+id).value = code :
		$("msg_"+id).value += " "+ code;
}


function smileBaby(evt)     { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":baby:");     length_verif(id); }
function smileBiggrin(evt)  { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":D");         length_verif(id); }
function smileConfused(evt) { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, "?(");         length_verif(id); }
function smileCool(evt)     { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, "8)");         length_verif(id); }
function smileCrying(evt)   { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ";(");         length_verif(id); }
function smileEek(evt)      { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, "8o");         length_verif(id); }
function smileEvil(evt)     { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":evil:");     length_verif(id); }
function smileFrown(evt)    { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":(");         length_verif(id); }
function smileHappy(evt)    { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":))");        length_verif(id); }
function smileMad(evt)      { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, "X(");         length_verif(id); }
function smilePleased(evt)  { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":]");         length_verif(id); }
function smileRedface(evt)  { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":0");         length_verif(id); }
function smileRolleyes(evt) { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":rolleyes:"); length_verif(id); }
function smileSmile(evt)    { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":)");         length_verif(id); }
function smileTongue(evt)   { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ":P");         length_verif(id); }
function smileWink(evt)     { var id = evt.target.id.substr(evt.target.id.length-1,1);  smile(id, ";)");         length_verif(id); }


function addStyle(id, question, style) {
	var texte   = $("msg_"+id).value;
	var message = prompt(question, "");
	if( message != null ) {
		( $("msg_"+id).value == "" ) ?
			$("msg_"+id).value += "["+ style +"]" + message +"[/"+ style +"]" :
			$("msg_"+id).value += " ["+ style +"]"+ message +"[/"+ style +"]" ;
	}
}


function bold(evt)      { var id = evt.target.id.substr(evt.target.id.length-1,1);  addStyle(id, "Entrez le texte a mettre en gras", "b");           length_verif(id); }
function link(evt)      { var id = evt.target.id.substr(evt.target.id.length-1,1);  addStyle(id, "Entrez une url valide", "url");                    length_verif(id); }
function italic(evt)    { var id = evt.target.id.substr(evt.target.id.length-1,1);  addStyle(id, "Entrez le texte a mettre en italique", "i");       length_verif(id); }
function underline(evt) { var id = evt.target.id.substr(evt.target.id.length-1,1);  addStyle(id, "Entrez le texte a souligner", "u");                length_verif(id); }
function left(evt)      { var id = evt.target.id.substr(evt.target.id.length-1,1);  addStyle(id, "Entrez le texte a positionner a gauche", "left");  length_verif(id); }
function center(evt)    { var id = evt.target.id.substr(evt.target.id.length-1,1);  addStyle(id, "Entrez le texte a centrer", "center");             length_verif(id); }
function right(evt)     { var id = evt.target.id.substr(evt.target.id.length-1,1);  addStyle(id, "Entrez le texte a positionner a droite", "right"); length_verif(id); }



function submit_form(evt) {
	evt.preventDefault();
	var id = evt.target.id.substr(evt.target.id.length-1, 1);
	if( check_form(id) === true ) {
		sendRequest(id);
	}
}


function check_form(id) {
	var input_nom  = $("nom_"+id).value;
	var input_mail = $("mail_"+id).value;
	var textarea   = $("msg_"+id).value;
	var code       = $("code_"+id).value;
	var regexp     = new RegExp("^[a-zA-Z0-9][a-zA-Z0-9\.\-_]*@[a-zA-Z0-9][a-zA-Z0-9\-_]*\.[a-zA-Z0-9][a-zA-Z\-_]+$");
	var reponse    = true;
	var texte      = "";
	if( input_nom == "" || input_mail == "" || textarea == "" || code == "" || ! regexp.test(input_mail) ) {
		texte += "Merci de remplir le(s) champ(s) suivant(s) :\n";
		if( input_nom  == "" ) { texte += "- Nom\n";     $("nom_"+id).focus();  }
		if( input_mail == "" ) { texte += "- Email\n";   $("mail_"+id).focus(); }
		if( ! regexp.test(input_mail) ) { texte += "- Adresse email non valide.\n"; $("mail_"+id).focus(); }
		if( code       == "" ) { texte += "- Code\n";    $("code_"+id).focus(); }
		if( textarea   == "" ) { texte += "- Message\n"; $("msg_"+id).focus();  }
		reponse = false;
	}
	if( texte != "" ) {
		alert(texte);
	}
	return reponse;
}


function sendRequest(id) {
	var req_form = new Request.JSON({
		url  : $("form_"+id).action,
		data : $("form_"+id).toQueryString()
	});

	req_form.addEvent("request", function(e) { waitResponse(id); });
	req_form.addEvent("success", function(tag,text) { if( showResponse(tag.answer,id) ) updateComs(id); /*reset_form(id);*/ refresh_codes() });
	req_form.addEvent("failure", function(xhr) { failureResponse(xhr,id); });
	req_form.send();
}


function waitResponse(id) {
	$("blog_reponse_"+ id).slide("in");
	$("blog_reponse_text_"+ id).set("html", "Envoi des donn&eacute;es...");
	$("blog_reponse_text_"+ id).setStyle("font-weight", "normal");
}


function failureResponse(xhr, id) {
	$("blog_reponse_text_"+ id).set("html", "Une erreur du serveur est survenue. Merci de recommencer");
}


function showResponse(evtTag, id) {
	var estOK = ( evtTag.added == "OK" ? true : false );
	if( estOK ) {
		$("blog_reponse_text_"+ id).setStyle("font-weight", "bold");
	}
	$("blog_reponse_text_"+ id).set("html", evtTag.reason);
	$("blog_reponse_a_"+ id).addEvent("click", function(evt) {
		evt.preventDefault();
		$("blog_reponse_"+ id).slide("out");
		$("blog_reponse_text_"+ id).setStyle("font-weight", "normal");
	});
	return estOK;
}


function updateComs(id) {
	//$("blog_ajou_"+ id).slide("toggle");
	/*
	Create a new element which looks like
	<div class="comm">
		<h3>
			<span style="color:#3c1a34;">
				<i>le [JJ/MM/AAAA] par</i>
				[auteur]
			</span>
		</h3>
		<span> [commentaire] </span>
	</div>
	*/
	
	var newCommDiv       = new Element("div", {"class" : "comm" });
	var newCommHTrois    = new Element("h3");
	var newCommSpanDate  = new Element("span", { "styles" : { "color" : "#3c1a34" } });
	var newCommI         = new Element("i");
	var newCommSpanTexte = new Element("span");

	var date = new Date();
	newCommI.set("html", "le "+ date.getDate() +"/"+ (date.getMonth()+1) +"/"+ date.getFullYear() +" &agrave; "+ date.getHours() +":"+ date.getMinutes() +":"+ date.getSeconds() +" par ");
	
	newCommSpanDate.adopt(newCommI);
	newCommSpanDate.appendText($("nom_"+id).value);
	newCommHTrois.adopt(newCommSpanDate);
	newCommDiv.adopt(newCommHTrois);
	newCommSpanTexte.set("html", replace_message($("msg_"+id).value) );
	newCommDiv.adopt(newCommSpanTexte);
	
	var taille_deb = $("blog_comm_texte_"+id).getStyle("height").toInt();
	newCommDiv.inject($("blog_comm_texte_"+id), "top");
	var taille_fin = $("blog_comm_texte_"+id).getStyle("height").toInt();
	if( $("blog_comm_texte_"+id).getParent().getStyle("height").toInt() != 0 ) {
		$("blog_comm_texte_"+id).getParent().morph({
			"height" : taille_fin
		});
	} else {
		$("blog_comm_texte_"+ id).slide("in");
	}
	
	var bg_deb = "#92708A";
	var bg_fin = "#FF0000";
	var myFx2 = new Fx.Tween(newCommDiv);
	myFx2.start("background-color", bg_deb, bg_fin).chain(
		function() { this.start("background-color", bg_fin, bg_deb); },
		function() { this.start("background-color", bg_deb, bg_fin); },
		function() { this.start("background-color", bg_fin, bg_deb); },
		function() { this.start("background-color", bg_deb, bg_fin); },
		function() { this.start("background-color", bg_fin, bg_deb); },
		function() { this.start("background-color", bg_deb, bg_fin); },
		function() { this.start("background-color", bg_fin, bg_deb); },
		function() { this.start("background-color", bg_deb, bg_fin); },
		function() { this.start("background-color", bg_fin, bg_deb); }
	);
	
	$("nb_comm_"+id).set("text",  $("nb_comm_"+id).get("text").toInt() + 1);
	
}


function replace_message(message) {
	message = message.replace( /\n/g , "<br/>" );
	
	message = message.replace( /\[b\]/g   , "<b>" );
	message = message.replace( /\[\/b\]/g , "</b>");
	message = message.replace( /\[i\]/g   , "<i>" );
	message = message.replace( /\[\/i\]/g , "</i>");
	message = message.replace( /\[u\]/g   , "<u>" );
	message = message.replace( /\[\/u\]/g , "</u>");
	
	message = message.replace( /\[left\]/g     , "<p align=\"left\">"  );
	message = message.replace( /\[\/left\]/g   , "</p>"                );
	message = message.replace( /\[right\]/g    , "<p align=\"right\">" );
	message = message.replace( /\[\/right\]/g  , "</p>"                );
	message = message.replace( /\[center\]/g   , "<center>"            );
	message = message.replace( /\[\/center\]/g , "</center>"           );

//	message = message.replace( /\[imgr\](.*?)\[\/imgr\]/gi        , "<img src=\"\$1\" class=\"news_imgr\" alt=\"\" />"       );
//	message = message.replace( /\[imgl\](.*?)\[\/imgl\]/gi        , "<img src=\"\$1\" class=\"news_imgl\" alt=\"\" />"       );
	message = message.replace( /\[url\]http:\/\/(.*?)\[\/url\]/gi , "<a href=\"http://$1\" target=\"_blank\">http://$1</a>" );
	message = message.replace( /\[url\](.*?)\[\/url\]/gi          , "<a href=\"http://$1\" target=\"_blank\">$1</a>"        );
	//smilies
	message = message.replace( /:baby:/g     , "<img src=\"includes/smilies/baby.gif\"     width=\"15\" height=\"15\" alt=\"B&eacute;b&eacute;\" title=\"B&eacute;b&eacute;\" />" );
	message = message.replace( /:D/g         , "<img src=\"includes/smilies/biggrin.gif\"  width=\"15\" height=\"15\" alt=\"Joyeux\"             title=\"Joyeux\" />"             );
	message = message.replace( /\?\(/g       , "<img src=\"includes/smilies/confused.gif\" width=\"15\" height=\"22\" alt=\"Confus\"             title=\"Confus\" />"             );
	message = message.replace( /8\)/g        , "<img src=\"includes/smilies/cool.gif\"     width=\"15\" height=\"15\" alt=\"Cool\"               title=\"Cool\" />"               );
	message = message.replace( /;\(/g        , "<img src=\"includes/smilies/crying.gif\"   width=\"15\" height=\"15\" alt=\"Pleure\"             title=\"Pleure\" />"             );
	message = message.replace( /8o/g         , "<img src=\"includes/smilies/eek.gif\"      width=\"15\" height=\"15\" alt=\"Surpris\"            title=\"Surpris\" />"            );
	message = message.replace( /:evil:/g     , "<img src=\"includes/smilies/evil.gif\"     width=\"15\" height=\"15\" alt=\"M&eacute;chant\"     title=\"M&eacute;chant\" />"     );
	message = message.replace( /:\(/g        , "<img src=\"includes/smilies/frown.gif\"    width=\"15\" height=\"15\" alt=\"D&eacute;&ccedil;u\" title=\"D&eacute;&ccedil;u\" />" );
	message = message.replace( /:\)\)/g      , "<img src=\"includes/smilies/happy.gif\"    width=\"15\" height=\"15\" alt=\"Heureux\"            title=\"Heureux\" />"            );
	message = message.replace( /X\(/g        , "<img src=\"includes/smilies/mad.gif\"      width=\"15\" height=\"15\" alt=\"En col&egrave;re\"   title=\"En col&egrave;re\" />"   );
	message = message.replace( /:\]/g        , "<img src=\"includes/smilies/pleased.gif\"  width=\"15\" height=\"15\" alt=\"Content\"            title=\"Content\" />"            );
	message = message.replace( /:0/g         , "<img src=\"includes/smilies/redface.gif\"  width=\"15\" height=\"15\" alt=\"Soupir\"             title=\"Soupir\" />"             );
	message = message.replace( /:rolleyes:/g , "<img src=\"includes/smilies/rolleyes.gif\" width=\"15\" height=\"15\" alt=\"Amus&eacute;\"       title=\"Amus&eacute;\" />"       );
	message = message.replace( /:\)/g        , "<img src=\"includes/smilies/smile.gif\"    width=\"15\" height=\"15\" alt=\"Sourire\"            title=\"Sourire\" />"            );
	message = message.replace( /:tongue:/g   , "<img src=\"includes/smilies/tongue2.gif\"  width=\"15\" height=\"15\" alt=\"Tire la langue\"     title=\"Tire la langue\" />"     );
	message = message.replace( /:P/g         , "<img src=\"includes/smilies/tongue.gif\"   width=\"15\" height=\"15\" alt=\"Tire la langue\"     title=\"Tire la langue\" />"     );
	message = message.replace( /;\)/g        , "<img src=\"includes/smilies/wink.gif\"     width=\"15\" height=\"15\" alt=\"Clin d'&oelig;il\"   title=\"Clin d'&oelig;il\" />"   );

	return message;
}