function cancel_stopwords(stringa) {
	arr_stringa = stringa.split(" ");
	for(p=0; p<arr_stopwords.length; p++)
		for(q=0; q<arr_stringa.length; q++) {
			if(arr_stopwords[p] == arr_stringa[q]) {
				arr_stringa.splice(q,1);
				q--;
			}
	}
	
	stringa = arr_stringa.join(" ");
	return stringa;
}

function restituisci_tag(selezione) {
	//converte in Stringa e in minuscolo
	selezione = selezione.toString().toLowerCase();
	//prepara il parametro per l'encoding
	selezione_originale = selezione;
	//elimina punteggiatura
	selezione = selezione.replace(/[ \r\n\t//!\"#$%&'()\\*,-.:;<=>?@\[\]\^_`{|}~\+€«»°]+/g," ");
	//elimina spazi iniziali e finali
	selezione = trim(selezione);
	//elimina stopwords (invece per i commenti le stopwords son già eliminate all'inzio da PHP)
	selezione = cancel_stopwords(selezione);
	
	testo_clientarea = "<table style='width:100%; border: outset 0pt;'><tr class='row_clientarea'>"; 
	
	arr_classi_rank = new Array();
	n = 0;
	for(commento in arr_classi_commenti) {
		commento = trim(commento).toLowerCase();
		num_parole_commento = commento.split(" ").length;
		commento1 = " " + trim(commento) + " ";
		//
		//if(selezione == commento)
		//	document.getElementById("div_classi").innerHTML += commento + " " + arr_classi_commenti[commento] + "<br>";
		//	
		//if(commento.search(selezione) != '-1' && selezione != commento)
		//	document.getElementById("div_classi").innerHTML += commento + " " + arr_classi_commenti[commento] + "<br>";
		//
		parole_selezione = selezione.split(" ");
		num_parole_selezione = parole_selezione.length;
		num_parole_trovate = 0;
		for(indice in parole_selezione) {
			if(commento1.search(" "+parole_selezione[indice]+" ") != '-1') {
				num_parole_trovate++;
			}
		}
		
		rank = (num_parole_trovate/num_parole_selezione + num_parole_trovate/num_parole_commento)/2*100;
		
		if(rank) {
			arr_classi_rank[n++] = new Array(rank, arr_classi_commenti[commento]);
		}
	}
	//elimina i doppioni delle classi mantenendo il ranking più elevato (es. casa, 1.5; casa, 2 => casa, 2)
	arr_classi_rank.sort(sortLiteral);
	for(j=0; j<arr_classi_rank.length-1; j++) {
		if(arr_classi_rank[j][1] == arr_classi_rank[j+1][1]) {
			if(parseInt(arr_classi_rank[j][0]) > parseInt(arr_classi_rank[j+1][0]))
				arr_classi_rank.splice(j+1,1);
			else
				arr_classi_rank.splice(j,1);
			j--;
		}
	}
	//ordina in maniera decrescente secondo il rank
	arr_classi_rank.sort(sortNumeric);
	//visualizza i risultati
	if(arr_classi_rank.length) testo_clientarea += "<td class='rank_clientarea'>";
	
	for(i in arr_classi_rank) {		
		for(h=10, s=1; h<=100; h+=20, s++) {
			if(parseInt(arr_classi_rank[i][0]) >= h) {
				if(parseInt(arr_classi_rank[i][0]) >= h+10) {
					testo_clientarea += "<img style='background: transparent url(./immagini/stars.png) no-repeat scroll 0px 0px; height:20px; width:19px;' src='./immagini/pixel.gif' alt='' title='" + arr_classi_rank[i][0].toFixed(1) + "' />";
				}
				else
					testo_clientarea += "<img style='background: transparent url(./immagini/stars.png) no-repeat scroll -19px 0px; height:20px; width:19px;' src='./immagini/pixel.gif' alt='' title='" + arr_classi_rank[i][0].toFixed(1) + "' />";
			}
			else {
					testo_clientarea += "<img style='background: transparent url(./immagini/stars.png) no-repeat scroll -38px 0px; height:20px; width:19px;' src='./immagini/pixel.gif' alt='' title='" + arr_classi_rank[i][0].toFixed(1) + "' />";
			}
		}
		
		testo_clientarea += "</td></tr><tr class='row_clientarea'><td class='classe_clientarea'><span style=''>" + "<a href='javascript:signal_comment_xmlhttprequest(\"" + arr_classi_rank[i][1] + "\",\"" + selezione_originale +"\")' title='" + arr_classi_rank[i][0].toFixed(1) + "'>" + arr_classi_rank[i][1] + "</a>" + "</span>" + "</td></tr><tr class='row_clientarea'><td class='rank_clientarea'>"; //"<br />";
	}
	//se non ci sono commenti che soddisfano il tag, allora proponi di inserire una nuova classe
	if(!arr_classi_rank.length) {
		testo_clientarea += "<td style=''>Non &egrave; stata trovata nessuna classe pertinente con la selezione. Proponine una tu:</td></tr><tr><td>";
		testo_clientarea += "<br /><form name='aggiungi_tag' method='get' onsubmit='return false;' action=''>";
		testo_clientarea += "<table><tr style='vertical-align:middle'><td><input type='text' id='form_classe' name='classe' value='' style='width:140px;' onkeyup='autocomplete_form(this.value)' onblur='blur_form_classe()' /></td>";
		testo_clientarea += "<td><a href='javascript:void(0);' onclick='if(trim(document.getElementById(\"form_classe\").value)) signal_comment_xmlhttprequest(document.getElementById(\"form_classe\").value,\"" + selezione_originale + "\");' ><img src='./immagini/transparentpixel.gif' width='1' height='1' title='OK' alt='OK' style='border:0; background:transparent url(./immagini/ok_reset_ok.png) no-repeat scroll -52px 0px; height:26px; width:26px;' /></a></td></tr></table>";
		testo_clientarea += "<span id='span_select_testo'></span>&nbsp;&nbsp;<br />";
		testo_clientarea += "<input type='hidden' id='form_commento' name='commento' value='" + selezione_originale + "' />";
		
		testo_clientarea += "</form>";
	}
	
	testo_clientarea += "</td></tr></table>";
	document.getElementById("clientarea").innerHTML = testo_clientarea;
}

function sortNumeric(a,b) {
	return b[0] - a[0];
}

function sortLiteral(a,b) {
	return (a[1] > b[1]) ? 1 : -1;
}

function autocomplete_form(testo) {
	testo_select = ''; 
	if(testo) {
		arr_assoc_classi = new Array();
		arr_classi = new Array();
		m=0;
		testo_select = "<select id='select_testo' name='select_testo' size='5' style='width:143px; margin-left:3px;' onchange='change_select(this.value);' onfocus='focus_select();'>";
		//cerca, all'interno delle classi, il testo inserito
		for(i in arr_classi_commenti) {
			if(arr_classi_commenti[i].search(testo) != -1) {
				arr_assoc_classi[arr_classi_commenti[i]] = arr_classi_commenti[i];
			}
		}
		//crea un array tradizionale partendo da quello associativo (per questioni di comodità)
		for(i in arr_assoc_classi) {	
			arr_classi[m++] = arr_assoc_classi[i];
		}
		arr_classi.sort();
		
		for(m=0; m<arr_classi.length; m++) {
			testo_select += "<option style='font-size:10px' value='" + arr_classi[m] + "'>" + arr_classi[m] + "</option>";
		}
		
		testo_select += "</select>";
		//se sono state trovate classi le visualizza altrimenti nasconde il blocco
		if(m) document.getElementById("span_select_testo").style.display = "inline";
		else  document.getElementById("span_select_testo").style.display = "none";
	}	
	else {
		document.getElementById("span_select_testo").style.display = "none";
	}
	document.getElementById("span_select_testo").innerHTML = testo_select;
}

function change_select(valore) {
	document.getElementById("form_classe").value = valore;
	document.getElementById("span_select_testo").style.display = "none";
}

function focus_select() {
	clearTimeout(t);
}

function blur_form_classe() {
	t = setTimeout('if(document.getElementById("span_select_testo")) document.getElementById("span_select_testo").style.display = "none"', 400);
}
