if (typeof(mots_bulle)=='undefined' || mots_bulle===null) 
	var mots_bulle = '/lexique/{mot}';
if (typeof(mots_liste)=='undefined' || mots_liste===null) 
	var mots_liste = '';
if (typeof(mots_separateur)=='undefined' || mots_separateur===null) 
	var mots_separateur = '|';
if (typeof(mots_lien)=='undefined' || mots_lien===null) 
	var mots_lien = 'http://fr.wiktionary.org/wiki/{mot}';


/* ----- APPELS EN AJAX ----------- */
function GetXmlHttpObject()
	{ 
	var objXMLHttp=null
	if (window.XMLHttpRequest)
		{
		objXMLHttp=new XMLHttpRequest()
		}
	else if (window.ActiveXObject)
		{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
		}
	return objXMLHttp
	} 

/* ----- DIVERS ----------- */

function $() 
	{
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) 
		{
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		if (arguments.length == 0)
			return null;
		elements.push(element);
		}
	return elements;
	}
function GetId(id)
	{
	return document.getElementById(id);
	}


function TrouverPos(AObject) /* obcisse et ordonnee d'un objet dans l'ecran */
	{
	var posX = 0, posY = 0;
	do
		{
		posX += AObject.offsetLeft;
		posY += AObject.offsetTop;
		AObject = AObject.offsetParent;
		}
	while( AObject != null );

	var pos = [];
	pos['X'] = posX;
	pos['Y'] = posY;

	return pos;
	}




/* ----- INFOBULLES ------- */
var bulleName = 'bulle';
var i=false; // La variable i nous dit si la bulle est visible ou non

function Creation_Bulle() {
	window.document.write('<div id="'+bulleName+'" class="infobulle" onmouseover="this.style.display=\'\';this.style.visibility=\'visible\'"  onmouseout="i=true;unbulle()" ></div> ');
	
}

function bulle_lexique(mot, obj)
	{
  	if(i==false) 
		{
		/*
		var bu=GetId(bulleName);
		if (bu==null) {	
			Creation_Bulle();
		}
		*/			
			
		LoadBulle(mot);
		var bul=GetId(bulleName)
		var p = TrouverPos(obj)
		bul.style.left =  p['X']+'px';
		bul.style.top= (p['Y']+obj.offsetHeight)+'px';
		vu = 0;

		bul.style.display=""; // Si il est cacher (la verif n'est qu'une securitÃ©) on le rend visible.
		bul.style.visibility="visible"; // Si il est cacher (la verif n'est qu'une securitÃ©) on le rend visible.
//		GetId(bulleName).innerHTML = text; // on copie notre texte dans l'Ã©lÃ©ment html
		i=true;
  		}		
	}
var xL;
var xLinfo;
function LoadBulle(a)
	{

	xL=GetXmlHttpObject()
	if (xL==null)
		{
		alert ("Browser does not support HTTP Request")
		return
		} 

	var url = mots_bulle.replace('{mot}',a) ;

	url = url.replace("\u00E8" , 'e' );
	url = url.replace("\u00E9" , 'e' );
	url = url.replace("\u00EA" , 'e' );
	url = url.replace("\u00EB" , 'e' );

	url = url.replace("\u00E0" , 'a' );
	url = url.replace("\u00E1" , 'a' );
	url = url.replace("\u00E2" , 'a' );

	url = url.replace("\u00EE" , 'i' );
	url = url.replace("\u00F4" , 'o' );
	url = url.replace("\u00E7" , 'c' );
	url = url.replace("\u00F9" , 'u' );
	url = url.replace("\u00FB" , 'u' );
 
	if (url.search(/[?]/)>=0) 	url = url + "&sid="+Math.random();
	else 	url = url + "?sid="+Math.random();
	xLinfo = 'URL:' + url;
	//alert(url);

	xL.onreadystatechange=GetBulle; 
	xL.open("GET",url,true)
	xL.send(null)	
	
	$(bulleName).innerHTML = '<h3>'+a+'</h3><div id="'+bulleName+'_texte">Chargement en cours</div>';
	};
function GetBulle()
	{
	var r;
	if (xL.readyState==4 || xL.readyState=="complete")
		{ 
		if (xL.status != 200) 
			{	
			var d = $(bulleName+'_texte');
			d.innerHTML = 'Un probl&egrave;me est survenu lors du chargement de '+xLinfo;//+ta; 
			}
		else
			{
			r = xL.responseText;
			var d = $(bulleName+'_texte');
			d.innerHTML =  r;			
            }
		} 		
	
	};


function unbulle() {
	if(i==true) {
	GetId(bulleName).style.visibility="hidden"; // Si la bulle est visible on la cache
	GetId(bulleName).style.display="none"; // Si il est cacher (la verif n'est qu'une securitÃ©) on le rend visible.
	i=false;
	}
}






/* ---------  PARSEUR -----------------------*/
var mots = new Array();
var conteneur;
function Load_Mots()
	{
	xL=GetXmlHttpObject()
	if (xL==null)
		{
		alert ("Browser does not support HTTP Request")
		return
		} 
	var url = '' + mots_liste +'?' ;
	url = url + "&sid="+Math.random();

	xL.onreadystatechange=Get_Mots; 
	xL.open("GET",url,true)
	xL.send(null)	
	};
function Get_Mots()
	{
	var r;
	if (xL.readyState==4 || xL.readyState=="complete")
		{ 
		if (xL.status != 200) 
			{	
			alert('probleme lors du chargement du lexique');
			}
		else
			{
			r = xL.responseText;
			mots = r.split(mots_separateur);
			mots.sort();
			Lance_Parseur();
			}
		} 		
	};

//document.write('mots cherch&eacute;s ('+mots.length+') :'+mots.join('; ')+'<br>');

function lexique_parseur_1(txt) {
	var reg = new RegExp( '\b('+ mots.join('|') + ')(s?)\b' , 'gi');
	txt = txt.replace( reg, "<span class=\"mot_lexique\" onmouseover=\"bulle_lexique('$1',this)\" onmouseout=\"unbulle()\" onclick=\"document.location='"+mots_lien.replace('{mot}','$1')+"'\" >$1$2</span>" ) ;    
	return(txt);
	} 
	
	
function lexique_parseur_2(txt) {
	for(var i=0; i<mots.length; i++)
		txt = txt.replace( RegExp("\\b("+mots[i]+")(s?)\\b","i") , "<span class=\"mot_lexique\" onmouseover=\"bulle_lexique('$1',this)\" onmouseout=\"unbulle()\"  onclick=\"document.location='"+mots_lien.replace('{mot}','$1')+"'\" >$1$2</span>" ) ;    
	return(txt);
} 

function Lance_Parseur() {
	
	conteneur.innerHTML = lexique_parseur_2(conteneur.innerHTML) ;
} 

function Start_Parseur(ctrl) {
	if ((typeof ctrl)=='string')
		conteneur = $(ctrl);
	else
		conteneur = ctrl;
	
	if (mots_liste!='') Load_Mots();
} 

Creation_Bulle();


