var selObj;
var noeud;
var newDiv;
var newRange;
var selObjTmp;
var headCss= false;

var searchURL = 'http://wikipedia.orange.fr/w/index.php?title=Sp%C3%A9cial%3ARecherche&fulltext=Rechercher&search=';
var lireURL   = 'http://wikipedia.orange.fr/w/index.php?title=Sp%C3%A9cial%3ARecherche&go=Lire&search=';
var finalURL  = '';

/**
* Enlève l'icone WikiWorld du document 
*/
function cleanUp(once) {
	var node;
	while (node= document.getElementById("WIKIPOINTID"))
	//if (node)
	node.parentNode.removeChild(document.getElementById("WIKIPOINTID"));
}

/**
* Lance la popup de recherche Wikipédia 
*/
function lanceWiki() {
	// effacer l'icone
	cleanUp();
	var url = finalURL + encodeURIComponent(selObjTmp);    
	var newwin = window.open(url,'','height=550,width=1030,location=false,menubar=false,toolbar=false,status=false,resizable, scrollbars');
	if (newwin)
	newwin.focus();
}

function trim (myString) {
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'');
}

/**
* Evénement mousedown: faire place nette 
*/
function mousedown(mEvent) {

	// on n'efface l'icone que si on n'a pas clique dessus
	if (mEvent.srcElement)
	{
		clicBtn= mEvent.button;
		classe= mEvent.srcElement.className;
	}
	// Netscape and Firefox
	else if (mEvent.target)
	{
		clicBtn= mEvent.which;
		classe= mEvent.target.className;
	}
	


	if (clicBtn==1) {
		if (classe!= "WIKIPOINT") 
			cleanUp();
		if (window.getSelection)
		{ // FIREFOX
			window.getSelection().removeAllRanges() ;    
		}
		else if (document.selection)
		{ // IE
			document.selection.empty();
		}
		if (classe!= "WIKIPOINT")
			newDiv=null;
	}
}

/**
* Evénement mouseup: afficher l'icone 
*/
function mouseup(mEvent) {
	//document.getElementById("laSelection").innerHTML="mouseup "+Math.random()*100;
	if (newDiv!= null) {
		mousedown(mEvent);
	} else
	if (window.getSelection)
	{ // FIREFOX
		selObj= window.getSelection();      
		if (selObj.toString()!="") {

			selObjTmp= trim(selObj.toString()); 
			noeud= selObj.getRangeAt(0);

			newDiv= document.createElement("span");
			newDiv.className='WIKIPOINT';
			newDiv.id= "WIKIPOINTID";          
			newDiv.addEventListener("click", lanceWiki, true); 

			newRange = document.createRange();          
			newRange.setStart(selObj.focusNode, noeud.endOffset);
			newRange.insertNode(newDiv);
		}      
	}
	else if (document.getSelection)
	{
		txt = "document "+document.getSelection();        
	}
	else if (document.selection)
	{ // IE        
		if (document.selection.type== "None") { 
			newDiv=null;   
			cleanUp();   
		} else {
			selObj= document.selection.createRange();
			if (selObj.text!="") {

				selObjTmp= trim(selObj.text); 
				noeud= selObj;

				newDiv= document.createElement("span");
				newDiv.className='WIKIPOINT';
				newDiv.id= "WIKIPOINTID";          
				newDiv.setAttribute("onclick", 'lanceWiki();'); 

				var tmp = document.createElement("div");
				tmp.appendChild(newDiv);
				newRange = selObj.duplicate();
				newRange.setEndPoint( "StartToEnd", selObj);
				newRange.pasteHTML(tmp.innerHTML);
			}      
		}    
	}  
	return false;
}

/**
* Initialisation de la brique 
* gestion des événements souris 
*/
function initWikiClic(idDiv, directPage) {
	if (directPage == null){
		finalURL= searchURL;
	}
	else {
		finalURL= lireURL;
	}

	var doc= document.getElementById(idDiv);  

	if (typeof(doc)!= "undefined") {

		/*
<link rel="stylesheet" type="text/css" href="http://static.wikipedia.orange.fr/Css/wikiClic.css" />
*/
		if (headCss== false) {
			var headTag = document.getElementsByTagName('head')[0];
			var cssTag = document.createElement('link');
			cssTag.setAttribute('rel','stylesheet');
			cssTag.setAttribute('type','text/css');
			cssTag.setAttribute('media','screen');
			cssTag.setAttribute('href','http://static.wikipedia.orange.fr/Css/wikiClic.css');
			headTag.appendChild(cssTag);
			headCss= true;
		}

		if (doc.addEventListener) {    
			// FIREFOX
			doc.addEventListener ("mouseup",function(event) {mouseup(event);},false);
			doc.addEventListener ("mousedown",function(event) {mousedown(event);},false);      
			window.addEventListener ("mousedown",function(event) {mousedown(event);},false);
		} else if (doc.attachEvent) {
			// IE    
			doc.attachEvent ("onmouseup",function(event) {mouseup(event);});
			doc.attachEvent ("onmousedown",function(event) {mousedown(event);});
			window.document.attachEvent ("onmousedown",function(event) {mousedown(event);});
		} else {    
			doc.onmouseup = function(event) {mouseup(event);};
			doc.onmousedown = function(event) {mouseup(event);};
		}
	}  
	return false;
}

