var barreShowTimer = new Array() ;
var barreOpened = new Array() ;

var barreExtended = new Array() ;

window.addEvent('domready', function() {								 
									 
	$('hColor').addEvent("click",highlightSelectColor) ;	
	$('tColor').addEvent("click",selectColor) ;								 

	$$('.message .title_bleu').addEvent("mouseover",function () {
									this.style.cursor = 'pointer';					
													var id = this.parentNode.id ;
														
														if (barreShowTimer[id]) clearTimeout(barreShowTimer[id]) ;
														
														if (barreOpened[id] != true) {
															barreShowTimer[id] = setTimeout(function() {barAppear(id);},250) ;
														}									  
													}) ;

	
	$$('.message .title_bleu').addEvent("mouseout",function () {							
														var id = this.parentNode.id ;
														
														if (barreShowTimer[id]) clearTimeout(barreShowTimer[id]) ;
														
														if (barreOpened[id] == true) {
															barreShowTimer[id] = setTimeout(function() {barDisappear(id);},500) ;
														}	  
													}) ;
	
	$$('.top').addEvent("click", function() {
		var myScroll = new Fx.Scroll(window, {'duration':'1000'}).toElement('top') ;
			
		return false ;
	}) ;
	
	$$('.message .barre').set('styles',{'height':0,
							  			'opacity':0,
										'display':'block'}) ;
	
	//accordeon
	var myAccordion = new Accordion($('leftPanel'), 'a.panelToogler', 'div.panel', {
		opacity: false,
		onActive: function(toggler, element){
			toggler.setStyle('color', 'white');
			toggler.setStyle('textDecoration', 'none');
	
			if (element.getElement('iframe')) {
				element.getElement('iframe').fade(1);
				element.getElement('iframe').style.display = "block" ;
			}
		},
		onBackground: function(toggler, element){
			toggler.setStyle('color', 'white');
			toggler.setStyle('textDecoration', 'underline');
			
			if (element.getElement('iframe')) {
				element.getElement('iframe').fade(0);
				element.getElement('iframe').style.display = "none" ;
			}
		}
	});
	
	

}) ;


//faire apparaître la barre lors du survol de la barre bleue
function barAppear(id) {
	var barre = $(id).getElement('.barre') ;
	
	barre.set('styles',{'height':0}) ;		
	barre.getElement('span').set('styles',{'opacity':0}) ;
	
	barre.set('styles',{'height':0,
						'opacity':1}) ;
	
	
	var myFx = new Fx.Tween(barre,{'link':'chain', 'duration':'short'}) ;
	myFx.start("height","16px") ;	
	
	barre.getElement('span').fade(1) ;
	
	barreOpened[id] = true ;
	
	barreMAJBtn(id, barre.getElement(".barre_btn")) ;	
	barre.getElement(".barre_btn").fade(1) ;
	
	barre.addEvent("mouseover", function() {								
						 if (barreShowTimer[id]) clearTimeout(barreShowTimer[id]) ;										 
										 }) ;	
	barre.addEvent("mouseout", function() {								
							 if (barreShowTimer[id]) clearTimeout(barreShowTimer[id]) ;
					barreShowTimer[id] = setTimeout(function() {barDisappear(id);},500) ;								

}) ;
	
	
	var btn = barre.getElement('.barre_btn').getElements("img");
	
	for(i=0; i < btn.length; i++) {
		btn[i].addEvent("click",barBtn) ;
		btn[i].addEvent("mouseover",barBtnO) ;
	}

	
}

//faire disparaître la barre lors du survol de la barre bleue
function barDisappear(id) {	

	//return false ;

	var barre = $(id).getElement('.barre') ;
	
	barre.getElement('span').set('styles',{'opacity':1}) ;	
	barre.getElement('span').set('tween',{duration:'short'}) ;
	barre.getElement('span').tween('opacity',0) ;
	
	barreExtended[id] = false ;
	
	barre.getElement(".barre_btn").set('styles',{'opacity':0}) ;
	barreMAJBtn(id, barre.getElement(".barre_btn")) ;
	
	var myFx = new Fx.Tween(barre,{'link':'chain', 'duration':'short'}) ;
	myFx.start("height","0px").start("opacity","0") ;
	
	
	barreOpened[id] = false ;

}

//fonction générique
function barBtn() {
	var action = this.getProperty('rel') ;
	var id = this.parentNode.parentNode.parentNode.parentNode.parentNode.id ;
	
	eval(action + "('" + id + "');"); 
}

//sélection du type de curseur
function barBtnO() {
	var action = this.getProperty('rel') ;
	
	switch(action) {		
		case 'extend':
			this.style.cursor = "pointer" ;
			break ;
			
		default :
			this.style.cursor = "pointer" ;
			break ;
	}
}

//creation d'un nouveau bouton
function newBtn(rel,text, title) {
	var btn = new Element("button",{'rel':rel,
						  			'class':'bouton',
									'title':title}) ;
	
	btn.addEvent("click",barBtn) ;
	
	var btn_texte = new Element("a") ;
	btn_texte.set("text",text) ;
	
	var btn_image = new Element("img",{'src':'/img/icons/big/' + rel + '.png'}) ;
	
	btn.adopt(btn_image) ;
	btn.adopt(btn_texte) ;
	
	return btn ;
}

//creation d'un nouveau raccourci
function newRac(rel, title) {
	var btn_image = new Element("img",{'src':'/img/icons/' + rel + '.png',
									   'rel':rel,
									   'title':title}) ;
	
	return btn_image ;
}

//mise à jour de la barre de bouton
function barreMAJBtn(id, barreBtn) {
	
	barreBtn.innerHTML = "&nbsp;" ;	
	
	if (barreExtended[id]) {
		barreBtn.adopt(newBtn('new_message',"Répondre ","Répondre à ce message")) ;	
		barreBtn.adopt(newBtn('quote',"Citer ce message","Citer le message dans votre réponse")) ;		
		barreBtn.adopt(newBtn('new_mp',"Message Privé","Envoyer un message privé à l'utilisateur")) ;
		
		barreBtn.adopt(new Element("br")) ;
		
		barreBtn.adopt(newBtn('addFriend',"Ajouter aux amis","Ajouter cet utilisateur à vos amis (effectif après confirmation par l'utilisateur)")) ;		
		barreBtn.adopt(newBtn('warn',"Avertir modérateur","Avertir un modérateur en cas d'abus")) ;
		barreBtn.adopt(newBtn('spam',"Ceci est un SPAM","Signaler ce message comme SPAM")) ;
		
		barreBtn.style.float = "" ;
		barreBtn.style.margin = "35px" ;
		barreBtn.style.marginTop = "20px" ;		
		barreBtn.style.textAlign = "center" ;
		barreBtn.style.width = "auto" ;
	}
	else {
		
		barreBtn.style.float = "right" ;		
		barreBtn.style.width = "335px" ;
		barreBtn.style.margin = "0px" ;
		barreBtn.style.textAlign = "right" ;

		barreBtn.adopt(newRac('spam',"Signaler ce message comme SPAM")) ;
		
		var spacer = new Element("a") ;
		spacer.set("html","&nbsp;&nbsp;&nbsp;") ;
		barreBtn.adopt(spacer) ;
		
		barreBtn.adopt(newRac('warn',"Avertir un modérateur en cas d'abus")) ;
		
		var spacer = new Element("a") ;
		spacer.set("html","&nbsp;&nbsp;&nbsp;") ;
		barreBtn.adopt(spacer) ;
		
		barreBtn.adopt(newRac('quote',"Citer le message dans votre réponse")) ;
		barreBtn.adopt(newRac('new_message',"Répondre à ce message")) ;
		
		var spacer = new Element("a") ;
		spacer.set("html","&nbsp;&nbsp;&nbsp;") ;
		barreBtn.adopt(spacer) ;
		
		barreBtn.adopt(newRac('extend',"Aggrandir la barre d'outils")) ;		
	}
}


//extension de la barre
function extend(id) {
	
	var barre = $(id).getElement('.barre') ;

	barre.getElement(".barre_btn").set('styles',{'opacity':0}) ;
	
	var myFx = new Fx.Tween(barre,{'link':'chain', 'duration':'short'}) ;
	myFx.start("height","120px") ;	
	
	barreExtended[id] = true ;
	
	barreMAJBtn(id, barre.getElement(".barre_btn")) ;
	
	window.setTimeout("fadeBtn('" + id + "',1);",800) ;
	
}

function quote(id) {
	
	var request = new Request({url: "/ajax/forum/getQuote.cgi",
							   method: 'post'}) ;
	
	request.onSuccess = function(responseText, responseXML) {
		
		if (responseText.length > 0) {
			field = document.getElementById('message') ;
			field = textFieldInit(field) ;
			
			field.replaceSelection(responseText, false) ;
			
			var myScroll = new Fx.Scroll(window, {'duration':'1000'}).toElement('message').chain(function() {
				$('message').focus() ;	
			}) ;
		}
	}
	
	request.send("id=" + id) ;
	
}

function warn(id) {
	var request = new Request({url: "/ajax/forum/warn.cgi",
							   method: 'post'}) ;
	
	request.onSuccess = function(responseText, responseXML) {
		alert(responseText) ;		
	}
	
	if (confirm("Etes-vous sûr de vouloir alerter un modérateur à propos de ce message ?\nTout signalement abusif pourra être sanctionné par un bannissement temporaire ou définitif.")) {
		request.send("id=" + id + "&type=generic") ;
	}
}

function spam(id) {
	var request = new Request({url: "/ajax/forum/warn.cgi",
							   method: 'post'}) ;
	
	request.onSuccess = function(responseText, responseXML) {
		alert(responseText) ;		
	}
	
	if (confirm("Etes-vous sûr de vouloir signaler ce message comme spam ?\nTout signalement abusif pourra être sanctionné par un bannissement temporaire ou définitif.")) {
		request.send("id=" + id + "&type=spam") ;
	}
}

function new_message(id) {
	var myScroll = new Fx.Scroll(window, {'duration':'3500'}).toElement('message').chain(function() {
		$('message').focus() ;	
	}) ;	
}


function new_mp(id) {
	location.href = "https://www.actualite-francaise.com/messagerie/write.cgi?mp=" + id ;
}

//faire disparaitre les boutons
function fadeBtn(id,opacity) {
	var barre = $(id).getElement('.barre') ;
	var myFx = new Fx.Tween(barre.getElement(".barre_btn"),{'link':'chain', 'duration':'150'}) ;
	myFx.start("opacity","1") ;	
}


//ajouter un smiley
function addSmiley(smiley,prmForm) {
	
	var argv  = addSmiley.arguments ;
	var argc = argv.length ;
	
	var field = (argc > 1) ? argv[1] : prmForm ;
	
	if(smiley == "smile") field.value += " :-)" ;
	if(smiley == "wink") field.value += " ;-)" ;
	if(smiley == "biz") field.value += " :-@" ;
	if(smiley == "oh") field.value += " :-o" ;
	if(smiley == "no") field.value += " 8o|" ;
	if(smiley == "sorry") field.value += " 8-(" ;
	if(smiley == "angry") field.value += " :-C" ;
	if(smiley == "pff") field.value += " :P" ;
	if(smiley == "cool") field.value += " 8-)" ;
	if(smiley == "bravo") field.value += " :D" ;
	if(smiley == "beer") field.value += " :o)" ;
	if(smiley == "lol") field.value += " LOL" ;
	if(smiley == "cry") field.value += " ;-(" ;
	if(smiley == "eek") field.value += " 8-O" ;
	if(smiley == "yes") field.value += " :-D" ;
	if(smiley == "oups") field.value += " ;-s" ;
	if(smiley == "crazy") field.value += " 8-8" ;
	if(smiley == "faith") field.value += " :-|" ;

	field.focus() ;
	
}


// ------- formatage de la saisie des textes --------
// --- initialise le textarea pour qu'il soit manipulé plus simplement
function textFieldInit(field) {

	field.getSelection = function ()
	{
		if (this.setSelectionRange)
			return this.value.substring(this.selectionStart, this.selectionEnd);
		else if (document.selection) {
			this.focus();
			return document.selection.createRange().text;
		}
	}
	
	field.getSelectionStart = function()
	{
		if ( typeof this.selectionStart != 'undefined' )
			return this.selectionStart;
		
		// IE Support
		this.focus();
		var range = this.createTextRange();
		range.moveToBookmark(document.selection.createRange().getBookmark());
		range.moveEnd('character', this.value.length);
		return this.value.length - range.text.length;
	}
	
	field.getSelectionEnd = function()
	{
		if ( typeof this.selectionEnd != 'undefined' )
			return this.selectionEnd;
	
		// IE Support
		this.focus();
		var range = this.createTextRange();
		range.moveToBookmark(document.selection.createRange().getBookmark());
		range.moveStart('character', - this.value.length);
		return range.text.length;
	}
	
	field.setCaretPos = function(start, end)
	{
		end = end || start;
		this.focus();
		if (this.setSelectionRange)
			this.setSelectionRange(start, end);
		else if (document.selection) {
			var range = this.createTextRange();
			range.moveStart('character', start);
			range.moveEnd('character', - this.value.length + end);
			range.select();
		}
	}
	
	field.replaceSelection = function (str, keep)
	{
		this.focus();
		
		var start = this.getSelectionStart();
		var stop = this.getSelectionEnd();
		var end = start + str.length;
		var scrollPos = this.scrollTop;
			
		this.value = this.value.substring(0, start) + str + this.value.substring(stop);
		if ( keep ) this.setCaretPos(start, end);
		else this.setCaretPos(end);
		this.scrollTop = scrollPos;
	}

	return field; 
	
}


var textColor = "rouge" ;
var highlightColor = "jaune" ;

//ajouter une balise de mise en forme
function addBalise(bType, fieldId) {

	var field ;
	
	field = document.getElementById(fieldId) ;
	field = textFieldInit(field) ;
	
	if (field) {
		
		switch(bType) {
			
			case "bold" :
				wrapTag(field,"[b]","[/b]") ;			
				break ;
		
			case "italic" :
				wrapTag(field,"[i]","[/i]") ;	
				break ;
				
			case "underline" :
				wrapTag(field,"[u]","[/u]") ;	
				break ;
			
			case "stroke" :
				wrapTag(field,"[s]","[/s]") ;	
				break ;
				
			case "color" :
				wrapTag(field,"[color=" + textColor + "]","[/color]") ;	
				break ;

			case "highlight" :
				wrapTag(field,"[highlight=" + highlightColor + "]","[/highlight]") ;	
				break ;
				
			case "link" :
				makeLink(field) ;
				break ;
				
			case "quote" :
				wrapTag(field,"[quote]","[/quote]") ;	
				break ;

			default :			
				break ;			
		}
		
	}
	
}


function addImage(imgId, fieldId) {
	var field ;
	
	field = document.getElementById(fieldId) ;
	field = textFieldInit(field) ;
		
	field.replaceSelection("[img id='" + imgId + "']", false) ;
	
}


//cree un lien
function makeLink(field) {
	
	selection = field.getSelection() ;
	
	//si la selection est une url
	if (isUrl(selection)) {	
		var textLink = prompt("Entrez le texte du lien",selection) ; //on demande le texte du lien
		
		var preUrl = "" ;
		//si pas de préfixe de proto, on mets http par defaut
		if ((selection.substr(0,7) != "http://") && (selection.substr(0,8) != "https://")) {
			 preUrl = "http://" ;
		}
	
		if (textLink.length > 0) { //si on a saisi un texte pour le lien on l'enveloppe
			wrapTag(field,"[url=" + preUrl,"]" + textLink + "[/url]") ;
		}
		else wrapTag(field,'[url]' + selection + "[/url]") ; //sinon on fait un lien brut
		
	}
	else { //si on a sélectionnéun mot
		var url = prompt("Entrez l'URL du lien",field.getSelection()) ;	//on demande l'url
		
		if (url.length > 0) { //si pas de préfixe de proto, on mets http par defaut
			if ((url.substr(0,7) != "http://") && (url.substr(0,8) != "https://")) {
				url = "http://" + url ;
			}
			
			wrapTag(field,"[url=" + url + "]" + selection + "[/url]") ;
			
		}
	}
	
}

//détermine si le texte est une url
function isUrl(argvalue) {

  if (argvalue.substr(0,4) == "www.")
  	return true ;

  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("http://") == -1)
    return false;
  else if (argvalue == "http://")
    return false;
  else if (argvalue.indexOf("http://") > 0)
    return false;

  argvalue = argvalue.substring(7, argvalue.length);
  if (argvalue.indexOf(".") == -1)
    return false;
  else if (argvalue.indexOf(".") == 0)
    return false;
  else if (argvalue.charAt(argvalue.length - 1) == ".")
    return false;

  if (argvalue.indexOf("/") != -1) {
    argvalue = argvalue.substring(0, argvalue.indexOf("/"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  if (argvalue.indexOf(":") != -1) {
    if (argvalue.indexOf(":") == (argvalue.length - 1))
      return false;
    else if (argvalue.charAt(argvalue.indexOf(":") + 1) == ".")
      return false;
    argvalue = argvalue.substring(0, argvalue.indexOf(":"));
    if (argvalue.charAt(argvalue.length - 1) == ".")
      return false;
  }

  return true;

}

//enveloppe la sélection
function wrapTag(field,open,close) {
	var selection = field.getSelection() ;
	
	field.replaceSelection(open + selection + close, false) ;
}

//sélecteur de couleur de surlignage
function highlightSelectColor() {
	
	button = this;
	
	var coords = getAbsolutePos(button.parentNode) ;

	button.parentNode.style.borderBottom = '0px';
	
	var colorSelect = new Element("div",{'id':'hColorSelect',
								  		 'class':'highlight_' + highlightColor,
										 'styles':{
											'opacity':0,
											'top': (parseInt(coords.y) + 22) + "px",
											'left':coords.x,
											'position':'absolute',
											'zIndex':1
										 }
										}) ;



	for(var i = 0; i < hColors.length; i++) {
	
		var btn = new Element("div",{'class':'colorButton highlight_' + hColors[i]}) ;
		
		btn.hColor = hColors[i] ;
		
		btn.btnTop = button.parentNode ;

		btn.addEvent("mouseover",function () {
									
									this.btnTop.className = 'highlight_' + this.hColor + " button" ;
									
									$('hColorSelect').className = 'highlight_' + this.hColor ;
										
							     }) ;
		
		
		btn.addEvent("mouseout",function () {
									this.btnTop.className = 'highlight_' + highlightColor + " button" ;
									
									$('hColorSelect').className = 'highlight_' + highlightColor ;
								 }) ;
		
		
		btn.addEvent("click",function () {
									highlightColor = this.hColor ;
							  }) ;

		
		colorSelect.adopt(btn) ;
	
	}
		
	$(document.body).adopt(colorSelect) ;
	
	button.removeEvents("click") ;
	
	button.addEvent("click",highlightHidePanel);

	colorSelect.fade(1) ;
	
}

function highlightHidePanel() {
	
	$('hColorSelect').fade(0) ;
		
	this.removeEvents("click") ;
	
	this.addEvent("click",highlightSelectColor);	
	
	this.parentNode.style.borderBottom = '1px #333 solid';	
	
	window.setTimeout(function () {
								
								$('hColorSelect').destroy() ;
								
								},"800"); 
	
}


//panel de sélection de la couleur pour le texte
function selectColor() {
	
	button = this;
	
	var coords = getAbsolutePos(button.parentNode) ;
	
	button.parentNode.style.borderBottom = '0px';
	
	var colorSelect = new Element("div",{'id':'tcolorSelect',
								  		 'class':'highlight_' + textColor,
										 'styles':{
											'opacity':0,
											'top': (parseInt(coords.y) + 22) + "px",
											'left':coords.x,
											'position':'absolute',
											'zIndex':1
										 }
										}) ;


	for(var i = 0; i < tColors.length; i++) {
	
		var btn = new Element("div",{'class':'colorButton highlight_' + tColors[i]}) ;
		
		btn.tColors = tColors[i] ;
		
		btn.btnTop = button.parentNode ;

		btn.addEvent("mouseover",function () {
									
									this.btnTop.className = 'highlight_' + this.tColors + " button" ;
									
									$('tcolorSelect').className = 'highlight_' + this.tColors ;
										
							     }) ;
		
		
		btn.addEvent("mouseout",function () {
									this.btnTop.className = 'highlight_' + textColor + " button" ;
									
									$('tcolorSelect').className = 'highlight_' + textColor  ;
								 }) ;
		
		
		btn.addEvent("click",function () {
									textColor = this.tColors ;
									this.btnTop.click() ;
							  }) ;

		
		colorSelect.adopt(btn) ;
	
	}
		
	$(document.body).adopt(colorSelect) ;
	
	button.removeEvents("click") ;
	
	button.addEvent("click",colorHidePanel);

	colorSelect.fade(1) ;
	
}

function colorHidePanel() {
	
	$('tcolorSelect').fade(0) ;
		
	this.removeEvents("click") ;
	
	this.addEvent("click",selectColor);	
	
	this.parentNode.set('styles',{'borderBottom':'1px #333 solid'}) ;	
	
	window.setTimeout(function () {
								
								$('tcolorSelect').destroy() ;
								
								},"800"); 
	
}

var hColors = new Array() ;
	hColors[0] = "jaune" ;
	hColors[1] = "vert" ;
	hColors[2] = "bleu" ;
	hColors[3] = "rose" ;
	hColors[4] = "orange" ;
	hColors[5] = "turquoise" ;
	hColors[6] = "rouge" ;
	
		
var tColors = new Array() ;
	tColors[0] = "jaune" ;
	tColors[1] = "vert" ;
	tColors[2] = "bleu" ;
	tColors[3] = "rose" ;
	tColors[4] = "orange" ;
	tColors[5] = "turquoise" ;
	tColors[6] = "rouge" ;
	
// Le cookie pour retenir le message + auto-extension du champ de saisie
function saveMessage(prmId) {
	return ;
	comms = $('message').value ;
	
	if (comms.length > 660) {		
		/*nbLignes = ((comms.length - 660) / 60) * 10 ;
		
		$('message').style.height = (201 + nbLignes) + "px" ;*/
		
	}
	
	var expire = new Date();
	var dixMinutes = expire.getTime() + (10*60*1000);
	expire.setTime(dixMinutes);

	EcrireCookie("commtopic_" + prmId,comms,expire,"/") ;
}

