function ajouter_balises(balise_debut, balise_fin)
{
	var champ = document.getElementById("message");
	var scroll = champ.scrollTop;

	if (champ.curseur)
	{
		champ.curseur.text = balise_debut + champ.curseur.text + balise_fin;
	}
	else if (champ.selectionStart >= 0 && champ.selectionEnd >= 0)
	{
		var debut = champ.value.substring(0, champ.selectionStart);
		var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);
		var fin = champ.value.substring(champ.selectionEnd);
		champ.value = debut + balise_debut + entre + balise_fin + fin;
		champ.focus();
		champ.setSelectionRange(debut.length + balise_debut.length, champ.value.length - fin.length - balise_fin.length);
	}
	else
	{
		champ.value  += balise_debut + balise_fin;
		champ.focus();
	}
	champ.scrollTop = scroll;
}

function ajouter_balises_listes(nom, val, id_liste)
{
	balise = document.getElementById(id_liste).value;
	ajouter_balises('['+nom+val+'="'+balise+'"]','[/'+nom+']');
	if (document.getElementById(id_liste))
		document.getElementById(id_liste).options[0].selected = true;
}

function integrer_guillemets(element, propriete, valeur)
{
	var input = window.document.forms['gtacform'].message;
	input.focus();
	
	if(typeof document.selection != 'undefined')
	{
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = '[' + element + propriete + '="' + valeur +'"]' + insText + '[/' + element + ']';
		range = document.selection.createRange();
		if (insText.length == 0)
		{
			range.move('character', -fin.length);
		}
		else
		{
			range.moveStart('character', debut.length + insText.length + fin.length);
		}
			range.select();
	}
		
	else if(typeof input.selectionStart != 'undefined')
	{
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + '[' + element + propriete + '="' + valeur +'"]' + insText + '[/' + element + ']' + input.value.substr(end);
		var pos;
		if (insText.length == 0)
		{
			pos = start + debut.length;
		}
		else
		{
			pos = start + debut.length + insText.length + fin.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}

	else
	{
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos))
		{
			pos = prompt("insertion (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length)
		{
			pos = input.value.length;
		}
		var insText = prompt("Taper le texte");
		input.value = input.value.substr(0, pos) + '[' + element + propriete + '="' + valeur +'"]' + insText + '[/' + element + ']' + input.value.substr(pos);
	}
}
function remplacer_balises(reg,rep,t) 
{
	return t.replace(reg,rep);
}
function nl2br(t) 
{
	message=new String(t);
	return message.replace(/\n/g,'<br />');
}
function apercu_direct() 
{
	t=document.forms['gtacform'].message.value;
	t=code_to_html(t);
	document.getElementById("direct").innerHTML=t;
	
	timer = 0;
	timer=setTimeout(apercu_direct,1);
}
function code_to_html(t) 
{
	
	t=remplacer_balises(/\[b\]([\s\S]*?)\[\/b\]/g,'<span style="font-weight : bold;">$1</span>',t) 
	t=remplacer_balises(/\[i\]([\s\S]*?)\[\/i\]/g,'<span style="font-style : italic;">$1</span>',t) 
	t=remplacer_balises(/\[u\]([\s\S]*?)\[\/u\]/g,'<span style="text-decoration : underline;">$1</span>',t) 
	t=remplacer_balises(/\[s\]([\s\S]*?)\[\/s\]/g,'<span style="text-decoration : line-through;">$1</span>',t)
	t=remplacer_balises(/\[url="(http:\/\/.+?)"\]([\s\S]*?)\[\/url\]/g,'<a href="$1">$2</a>',t)
	t=remplacer_balises(/\[url="(.+?)"\]([\s\S]*?)\[\/url\]/g,'<a href="http://$1">$2</a>',t)
	t=remplacer_balises(/\[url\](http:\/\/.+?)\[\/url\]/g,'<a href="$1">$1</a>',t)
	t=remplacer_balises(/\[url\](.+?)\[\/url\]/g,'<a href="http://$1">$1</a>',t)
	t=remplacer_balises(/\[img\](http:\/\/[\s\S]*?)\[\/img\]/g,'<img src="$1" alt = "Image" class = "msg" />',t)
	t=remplacer_balises(/\[img="(http:\/\/[\s\S]*?)"\]\[\/img\]/g,'<img src="$1" alt = "Image" class = "msg" />',t)
	t=remplacer_balises(/\[img\]([\s\S]*?)\[\/img\]/g,'<img src="http://$1" alt = "Image" class = "msg" />',t)
	t=remplacer_balises(/\[img="([\s\S]*?)"\]\[\/img\]/g,'<img src="http://$1" alt = "Image" class = "msg" />',t)
	t=remplacer_balises(/\[p="(arial|comic|courrier|georgia|impact|times|trebuchet)"\](.+?)\[\/p\]/g,'<span style = "font-family : $1;">$2</span>',t)
	t=remplacer_balises(/\[position="(left|right|center)"\](.+?)\[\/position\]/g,'<span style = "display : block; text-align : $1;">$2</span>',t)

	return nl2br(t);
}

function seeRaces(sens, type, auteur, cps)
{
	if((sens == false && Number(document.getElementById("num_page").innerHTML) > 1) || (sens == true && Number(document.getElementById("num_page").innerHTML) < Number(document.getElementById("total_pages").innerHTML)))
	{
		var xhr;
		if(window.XMLHttpRequest || window.ActiveXObject)
		{
			
			if(window.XMLHttpRequest)
			{
				xhr = new XMLHttpRequest();
			} 
			else
			{
				try 
				{
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e)
				{
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
			}
		}
		else 
		{
			alert("Votre navigateur ne supporte pas l\'objet XMLHTTPRequest...");
			return;
		}
		
		if(sens)
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) + 1;
		}
		else
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) - 1;
		}
		
		xhr.onreadystatechange = function() 
		{
			if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
			{
				eval(xhr.responseText);
			}
		}
		
		xhr.open("GET", "races-afficher-liste-" + type + "-" + auteur + "-" + cps + "-" + document.getElementById("num_page").innerHTML + ".html", true);
		xhr.send(null);
	}
}

function seeTeams(sens, nom, nationalite, specialite, recrutement)
{
	if((sens == false && Number(document.getElementById("num_page").innerHTML) > 1) || (sens == true && Number(document.getElementById("num_page").innerHTML) < Number(document.getElementById("total_pages").innerHTML)))
	{
		var xhr;
		if(window.XMLHttpRequest || window.ActiveXObject)
		{
			
			if(window.XMLHttpRequest)
			{
				xhr = new XMLHttpRequest();
			} 
			else
			{
				try 
				{
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e)
				{
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
			}
		}
		else 
		{
			alert("Votre navigateur ne supporte pas l\'objet XMLHTTPRequest...");
			return;
		}
		
		if(sens)
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) + 1;
		}
		else
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) - 1;
		}
		
		xhr.onreadystatechange = function() 
		{
			if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
			{
				eval(xhr.responseText);
			}
		}
		
		xhr.open("GET", "teams-list-" + nom + "-" + nationalite + "-" + specialite + "-" + recrutement + "-" + document.getElementById("num_page").innerHTML + ".html", true);
		xhr.send(null);
	}
}

function seeComments(sens, id)
{
	if((sens == false && Number(document.getElementById("num_page").innerHTML) > 1) || (sens == true && Number(document.getElementById("num_page").innerHTML) < Number(document.getElementById("total_pages").innerHTML)))
	{
		var xhr;
		if(window.XMLHttpRequest || window.ActiveXObject)
		{
			
			if(window.XMLHttpRequest)
			{
				xhr = new XMLHttpRequest();
			} 
			else
			{
				try 
				{
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e)
				{
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
			}
		}
		else 
		{
			alert("Votre navigateur ne supporte pas l\'objet XMLHTTPRequest...");
			return;
		}
		
		if(sens)
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) + 1;
		}
		else
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) - 1;
		}
		
		xhr.onreadystatechange = function() 
		{
			if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
			{
				document.getElementById("comments_list").innerHTML = xhr.responseText;
			}
		}
		
		xhr.open("GET", "races-comments-" + id + "-" + document.getElementById("num_page").innerHTML + ".html", true);
		xhr.send(null);
	}
}

function seePlayers(sens, nom, ladder)
{
	if((sens == false && Number(document.getElementById("num_page").innerHTML) > 1) || (sens == true && Number(document.getElementById("num_page").innerHTML) < Number(document.getElementById("total_pages").innerHTML)))
	{
		var xhr;
		if(window.XMLHttpRequest || window.ActiveXObject)
		{
			
			if(window.XMLHttpRequest)
			{
				xhr = new XMLHttpRequest();
			} 
			else
			{
				try 
				{
					xhr = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e)
				{
					xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
			}
		}
		else 
		{
			alert("Votre navigateur ne supporte pas l\'objet XMLHTTPRequest...");
			return;
		}
		
		if(sens)
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) + 1;
		}
		else
		{
			document.getElementById("num_page").innerHTML = Number(document.getElementById("num_page").innerHTML) - 1;
		}
		
		xhr.onreadystatechange = function() 
		{
			if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
			{
				eval(xhr.responseText);
			}
		}
		
		xhr.open("GET", "profiles-list-" + nom + "-" + ladder + "-" + document.getElementById("num_page").innerHTML + ".html", true);
		xhr.send(null);
	}
}


function thumbnail(adress, id)
{
	p = document.getElementById(adress);
	
	if(p.style.width == "300px")
	{
		p.style.width = "200%";
		p.style.overflow = "auto";
		p.style.position = "absolute";
		p.style.top = "0px";
		p.style.left = "0px";
	}
	else if(p.src == "http://www.gtacup.net/races-image-" + id + ".html")
	{
		p.src = "http://www.gtacup.net/races-image-zoom-" + id + ".html";
		window.location = "#header";
	}
	else
	{
		p.src = "http://www.gtacup.net/races-image-" + id + ".html";
		p.style.width = "300px";
		p.style.position = "relative";
		p.style.top = "0px";
		p.style.left = "0px";
	}
}

function spoiler(id_spoil)
{	
	spoil = document.getElementById(id_spoil);
	
	if(spoil.style.display == "block")
	{
		spoil.style.display = "none";
	}
	else
	{
		spoil.style.display = "block";
	}
}

