// JavaScript Document
var xmlHttp;
var time = 20;
var red = 255;
var green = 255;
var blue = 255;
var delta = -3;
var running = false;
var original_value;

var mnemonics = new Array();
var word_list = new Array();

function signal()
{
	if (running==true)
	{
		var color = "rgb("+red+','+green+','+blue+")";
		blue = blue + delta;
		green = green + delta;
		if (green<100) delta=10;
		if (green>255) delta=-10;
		
		document.getElementById("sendNumBut").style.backgroundColor=color;
		setTimeout("signal()",time);
	}
	else
	{
		// Bring back to normal
		document.getElementById("sendNumBut").style.backgroundColor=original_value;
		red=255;
		green=255;
		blue=255;
	}
}

function show_mnemonics(phoneNum)
 { 
 xmlHttp=GetXmlHttpObject()
 if (xmlHttp==null)
  {
  alert ("HTTP Request non supporté par le naviguateur")
  return
  } 
  var _content="phoneNum=" + phoneNum
  //var _content="category=Société"
 var url="http://www.debarena.com/fr/php/phone.php5"
 xmlHttp.onreadystatechange=stateChanged 
 xmlHttp.open("POST",url,true)
 //xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
 xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
 xmlHttp.send(_content)
 
 running = true;
 original_value=document.getElementById("sendNumBut").style.backgroundColor;
 signal();
 }
 
 function addPhoneComment(phAuth, phNum, phTxt, oID)
{
 objectID= oID;
 running = true;
 original_value=document.getElementById(objectID).style.backgroundColor;
 signal();
 
 var _content="author=" + phAuth + "&num=" + phNum + "&message=" + phTxt
 xmlHttp=GetXmlHttpObject()
 if (xmlHttp==null)
  {
  alert ("HTTP Request non support par le naviguateur")
  return
  } 
 var _url="http://www.debarena.com/fr/php/addComPhone.php"
 xmlHttp.onreadystatechange=stateChangedCom
 xmlHttp.open("POST",_url,true)
 xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 xmlHttp.send(_content)
}

function stateChangedCom() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
running=false;
alert(xmlHttp.responseText);
 }
} 

function highlight_word(bt,wd)
{
	resDiv = document.getElementById("phone_results");
	spans = resDiv.getElementsByTagName("span");
	if (bt.className== "telbut_show_high") bt.className= "telbut_show"; else bt.className= "telbut_show_high";
	for (i=0; i<spans.length;i++)
	{
		var cl;
		if (spans[i].className =="highlighted_mnemo_chunck") 
		{
			cl = "mnemo_chunck";
			if (spans[i].innerHTML==wd || spans[i].innerHTML=="-"+wd) spans[i].className = cl;
		}
		else if (spans[i].className =="mnemo_chunck") 
		{
			cl = "highlighted_mnemo_chunck"; 
			if (spans[i].innerHTML==wd || spans[i].innerHTML=="-"+wd) spans[i].className = cl;
		}
		else if (spans[i].className =="highlighted_mnemo_chunck_num") 
		{
			cl = "mnemo_chunck_num";
			if (spans[i].innerHTML==wd || spans[i].innerHTML=="-"+wd) spans[i].className = cl;
		}
		else if (spans[i].className =="mnemo_chunck_num") 
		{
			cl = "highlighted_mnemo_chunck_num"; 
			if (spans[i].innerHTML==wd || spans[i].innerHTML=="-"+wd) spans[i].className = cl;
		}
		
	}
}

function hide_word(bt,wd)
{
	resDiv = document.getElementById("phone_results");
	spans = resDiv.getElementsByTagName("span");
	if (bt.className== "telbut_hide_high") bt.className= "telbut_hide"; else bt.className= "telbut_hide_high";
	for (i=0; i<spans.length;i++)
	{
		var disp;
		if (bt.className== "telbut_hide_high" && spans[i].parentNode.style.display == "block") 
		{
			disp = "none";
			if (spans[i].innerHTML==wd || spans[i].innerHTML=="-"+wd) spans[i].parentNode.style.display = disp;
		}
		else if (bt.className== "telbut_hide" && spans[i].parentNode.style.display == "none") 
		{
			disp = "block"; 
			if (spans[i].innerHTML==wd || spans[i].innerHTML=="-"+wd) spans[i].parentNode.style.display = disp;
		}
		
	}
}


function stateChanged() 
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{
		running=false;
		resDiv = document.getElementById("phone_results");
		wordDiv = document.getElementById("words");
		
		// Remove children (clear previous children, if any)
		while (resDiv.firstChild) 
		 {
			resDiv.removeChild(resDiv.firstChild);
		 };
		 while (wordDiv.firstChild) 
		 {
			wordDiv.removeChild(wordDiv.firstChild);
		 };
		
		// Objectification!
		result = eval("(" + xmlHttp.responseText + ")");
		
		// Sorting by score
		function sortScore(a,b)
		{
			return b.s - a.s;
		}
		result.arr = result.arr.sort(sortScore);
		
		// Browsing results _ Filling indexed array
		mnemonics = new Array();
		for (i=0;i<result.arr.length;i++)
		{
			mnemonics[result.arr[i].m]= result.arr[i].s;
		}
		
		
		// Filling the RESULT div
		var nh = document.createElement("h2");
		nh.className= "tel";
		nh.innerHTML = "Résultats :";
		resDiv.appendChild(nh);
		var np = document.createElement("p");
		np.innerHTML = "Tapez une des combinaisons suivantes sur un téléphone pour appeler le " + result.requ + "!";
																																																																		   		np.className = "discretion";
		resDiv.appendChild(np);
		var prevscore = -1;
		var count = 1;
		for (mnem in mnemonics)
		{
			if (prevscore != mnemonics[mnem])
			{
				// Display separator
				prevscore = mnemonics[mnem];
				var nsp = document.createElement("div");
				nsp.className = "mnemseparator";
				var nsp2 = document.createElement("span");
				nsp2.className="separatorlabel";
				nsp2.innerHTML = "Mnemo-score : " + prevscore + "pts";
				nsp.appendChild(nsp2);
				var nd = document.createElement("div");
				nd.className = "mnemometer";
				var vv = (mnemonics[mnem] - 15)*4;
				if (vv<=0) vv = 2;
				nd.style.width = vv + "px";
				nsp.appendChild(nd);
				resDiv.appendChild(nsp);
			}
			var nsp = document.createElement("span");
			nsp.className="normal_mnemonic";
			nsp.style.display="block";
			var ind = document.createElement("span");
			ind.className = "mnemindex";
			ind.innerHTML = count;
			nsp.appendChild(ind);
			var ta = new Array();
			ta = mnem.split('-');
			var first = "true";
			for (wo in ta)
			{
				var ssp = document.createElement("span");
				if (ta[wo].match(/[0-9]/) )
				{
					ssp.className = "mnemo_chunck_num";
				}
				else
				{
					ssp.className = "mnemo_chunck";
				}
				if (first=="true") {first="false";ssp.innerHTML = ta[wo];} else ssp.innerHTML = "-"+ta[wo];
				ssp.style.display="block";
				nsp.appendChild(ssp);
			}
			resDiv.appendChild(nsp);
			count++;
		}
		
		// Filling the word div
		var nh = document.createElement("h2");
		nh.innerHTML = "Les mots contenus dans votre numéro :";
		nh.className= "tel";
		wordDiv.appendChild(nh);
		var np = document.createElement("p");
		np.innerHTML = "Pour localiser plus facilement les combinaisons qui vous intéressent, utilisez les boutons suivants. 'S' met le mot en valeur en le Surlignant (appuyer une seconde fois pour annuler). 'C' permet de Cacher les mots qui ne vous intéressent pas (appuyer une deuxième fois pour les ré-afficher).";
																																																																		   		np.className = "discretion";
		wordDiv.appendChild(np);
		tword_list = new Array();
		for (mnem in mnemonics)
		{
			var ta = new Array();
			ta = mnem.split('-');
			for (wo in ta)
			{
				tword_list[ta[wo]] = ta[wo].length;
			}
		}
		word_list = new Array();
		for (w in tword_list)
		{
			word_list.push(w);
		}
		
		// Sorting by length
		function sortNumber(a,b)
		{
			var d=0;
			if (a > b) d = 1; else d=-1;
			return (b.length - a.length)*10 + d;
		}
		word_list = word_list.sort(sortNumber);
		
	
		// Displaying word list
		var prevsize = -1;
		for (word in word_list)
		{
			if (prevsize != word_list[word].length)
			{
				// Display separator
				prevsize = word_list[word].length;
				var nsp = document.createElement("div");
				nsp.className = "wordseparator";
				if (word_list[word].length==1)
				{
					nsp.innerHTML = "Une lettre";
				}
				else
				{
					nsp.innerHTML = word_list[word].length + " lettres";
				}
				wordDiv.appendChild(nsp);
			}
			var nd = document.createElement("div");
			var ns = document.createElement("span");
			nd.className = "wordD";
			ns.className = "wordS";
			ns.innerHTML = word_list[word];
			nd.appendChild(ns);
			// Hide/show buttons
			var nb = document.createElement("input");
			nb.className = "telbut_show";
			nb.type = "submit";
			nb.value = "S";
			nb.onclick = function(){highlight_word(this,this.previousSibling.innerHTML)};
			nd.appendChild(nb);
			var nb2 = document.createElement("input");
			nb2.className = "telbut_hide";
			nb2.type = "submit";
			nb2.value = "C";
			nb2.onclick = function(){hide_word(this,this.previousSibling.previousSibling.innerHTML)};
			nd.appendChild(nb2);
			wordDiv.appendChild(nd);
		}
		
	} // if state complete
} 

function GetXmlHttpObject()
 { 
 var objXMLHttp=null
 if (window.XMLHttpRequest)
  {
  objXMLHttp=new XMLHttpRequest()
  }
 else if (window.ActiveXObject)
  {
  objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
 return objXMLHttp
 }
