//COSTANTI
var idInputField = "sTrova";
var idDivSuggerimenti = "idSearchHelp";

var charFineArray = new Array(" ", ",", "."); //caratteri che determinano dove si puo troncare la descrizione
var testoAppend = "..."; //testo da aggiungere alla descrizione se quest ultima viene troncata

var isCurrentSpecial = false;

/**
 * Controllo al submit per verificare eventuali condizioni speciali che modificheranno la pagina da chiamare
 */
$('#Ricerca > form').submit(function() {
	if(isSpecialCondition(inputField.value)){
		var primaParola = null;
		var anno = null;
		var numero = null;
		
		var testo = inputField.value;
		
		testo = trim(testo);//effetuo il trim del testo
		testo = testo.replace(/  /g, " "); //tolgo i doppi spazi
		
		testoSplittato = testo.split(" ",4); //splitto il testo sugli spazi
		
		if(testoSplittato.length > 0 && testoSplittato.length <= 3){//potrebbe essere un caso speciale
			primaParola = testoSplittato[0].toLowerCase();
			
			if(testoSplittato.length > 1){//ce pure la seconda parola che deve essere un numero
				numero = testoSplittato[1];
					
				if(testoSplittato.length > 2){//la terza parola deve essere un anno (intero)
					if(testoSplittato[2].length < 5){
						anno = testoSplittato[2];
					}
				}
			}
		}
			
		if(primaParola == "messaggio"){
			categoria = "Messaggi";
		}if(primaParola == "circolare"){
			categoria = "Circolari";
		}
	  
	    var url = null;

	    url = "http://www.inps.it/newsearch/ricerca.aspx?";
	    url += "adv=1";
	    if(numero !== null){
		  url += "&Numero="+numero;
	    }
	    url += "&categorie="+categoria;
	    url += "&Sorting=desc";
	    if(anno !== null){
		  url += "&Anno="+anno;
	    }
	    url += "&AnnoDal=1979";
	    url += "&AnnoAl=2011";
	    //url += "&Testo=";
	    
	    window.location = url;
	    return false;
	}
});

function objCache() {
    this.htmlCode = ""; 		//codice html dei suggerimenti
    this.width = "450px"; 		//larghezza della finestra dei suggerimenti
    this.left = "507.8px"; 		//posizione sinistra della finestra dei suggerimenti
    this.resultTot = 0; 		//numero dei risultati restituiti nella finestra dei suggerimenti
}

function Categoria(id, descrizione, link, testoLink) {
    this.id = id;
    this.descrizione = descrizione;
    this.link = link;
    this.testoLink = testoLink;
}

//============= IMPOSTO ARRAY CATEGORIE =================================//
var objCategoria = null;
var arrayCategorie = new Array();

objCategoria = new Categoria("A", "Informazioni", null, null);
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("B", "Servizi online", null, null);
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("C", "Circolari", "http://www.inps.it/newsearch/ricerca.aspx?sTrova=Ultime+circolari&categorie=Circolari", "[Ricerca Circolari]");//&nbsp;&nbsp;&nbsp;
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("D", "Messaggi", "http://www.inps.it/newsearch/ricerca.aspx?sTrova=Ultimi+messaggi&categorie=Messaggi", "[Ricerca Messaggi]");
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("E", "Strutture", null, null);
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("F", "Moduli", null, null);
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("G", "TuttoINPS", null, null);
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("H", "Approfondimenti", null, null);
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("I", "News", null, null);
arrayCategorie[objCategoria.id] = objCategoria;
//==========================================================================//

var inputField = document.getElementById(idInputField); //input field di ricerca

//disegno il contenitore dei suggerimenti
document.write('<div id="' + idDivSuggerimenti + '" name="idSearchHelp" class="jsonSuggestResults" style="display:none;top: 111px; left: 507.8px; width: 471px; height: auto;">');

var divSuggerimenti = document.getElementById(idDivSuggerimenti);


var baseWidth = "451"; 		//width di default del div dei suggerimenti 
var baseLeft = "507.8"; 	//posizione left di default del div dei suggerimenti 
//Funzione che parte allo start-up
$(window).load(function() {

    //impostazioni iniziali dei suggerimenti
    baseWidth = (inputField.clientWidth) - 9;
    baseLeft = ($(inputField).position().left + 3);
    baseTop = ($(inputField).position().top + $(inputField).height() + 5);

    $(divSuggerimenti).attr("style", 'position: absolute; display:none; top: ' + baseTop + 'px; left: ' + baseLeft + 'px; width: ' + baseWidth + 'px; height: auto; padding: 3px;');
});

try {
    inputField.onkeypress = "if(event.keyCode=='13'){ if ( ((document.getElementById('sTrova').value).length) < 3) {alert('Inserire almeno 3 caratteri per effettuare le ricerca'); return false;}  {} };";
    inputField.onkeyup = searchHelpText;
    inputField.onkeydown = otherKey;

    var searchFocus = false;
    $(inputField).blur(function() {
        setTimeout('searchMousever()', 300);
        searchFocus = false;
    });
    $(inputField).focus(function() {
        searchFocus = true;
        var lenghtTestocercato = inputField.value.length;
        if (lenghtTestocercato > 2 && divSuggerimenti.innerHTML.length > 0) {
            viewDiv(idDivSuggerimenti);
        }
    });


    //    disabilita l'auto completamento di tutti i browser tranne firefox
    inputField.autocomplete = "off";

    //    disabilita l'auto completamento dei input form di firefox
    inputField.setAttribute("autocomplete", "off");

    //disegno il contenitore dei suggerimenti
    //document.write('<div id="idSearchHelp" name="idSearchHelp" class="jsonSuggestResults" style="display:none;top: 111px; left: 507.8px; width: 471px; height: auto;">');


} catch (ex) { alert(ex); }

function searchMousever() {
    if (!searchFocus) {
        hideDiv(idDivSuggerimenti);
    }
}

function php_urlencode(str) {
    str = escape(str);
    return str.replace(/[*+\/@]|%20/g,
			function(s) {
			    switch (s) {
			        case "*": s = "%2A"; break;
			        case "+": s = "%2B"; break;
			        case "/": s = "%2F"; break;
			        case "@": s = "%40"; break;
			        case "%20": s = "+"; break;
			        default: break;
			    }
			    return s;
			}
	);
}

var cacheSearch = new Array();
var resultPos = -1;
var oldResultPos = 0;

function viewDiv(viewDiv) {
    if (document.getElementById(viewDiv).style.display != 'block') {
        document.getElementById(viewDiv).style.display = 'block';
    }
}

function hideDiv(hideDiv) {
    if (document.getElementById(hideDiv).style.display != 'none') {
        document.getElementById(hideDiv).style.display = 'none';
    }
}

var workTimeOut = false;
function timeOutSearch(msec) {
    if (!workTimeOut) {
        workTimeOut = true;
        setTimeout("viewResult()", msec);
    }
}

var lastSearchViewResult = "";
function viewResult() {
    workTimeOut = false;
    var testo = inputField.value;
    if (testo != lastSearchViewResult) { //se la nuova ricerca è diversa dalla precedente effetua ricerca
        if (cacheSearch[testo] != undefined) {//la parola cercata è in cache
            if ((testo.length) > 2) {
                viewDiv(idDivSuggerimenti);
                resultPos = -1;

                responseCache = cacheSearch[testo];

                divSuggerimenti.innerHTML = responseCache.htmlCode;

                var isAumnetateDimensioni = false;

                $(".descrizione").each(function() {
                    //se almeno una descrizione occupa piu di una righa
                    if (this.offsetHeight > 12) {
                        //allargo i suggerimenti
                        if (!isAumnetateDimensioni) {
                            responseCache.width = (baseWidth + 350) + "px"; //"750px";//450
                            responseCache.left = (baseLeft - 350) + "px"; //"212px";

                            divSuggerimenti.style.left = (responseCache.left);
                            divSuggerimenti.style.width = (responseCache.width);
                            isAumnetateDimensioni = true;
                        }
                        testo = $(this).html();

                        do {
                            testo = accorciaTesto(testo);
                            $(this).html(testo);
                        } while (this.offsetHeight > 12);

                        testo = accorciaTesto(testo);
                        testo = accorciaTesto(testo);
                        $(this).html(testo + "...");

                    }
                });

                //se nessuna descrizione occupa piu di una righa allora i suggerimenti devono mantenere la dimensione originale
                if (isAumnetateDimensioni === false) {
                    responseCache.width = (baseWidth) + "px";
                    responseCache.left = (baseLeft) + "px";
                    divSuggerimenti.style.left = (responseCache.left);
                    divSuggerimenti.style.width = (responseCache.width);
                }

                //divSuggerimenti.style.left = (responseCache.left);
                //divSuggerimenti.style.width = (responseCache.width);

                lastSearchViewResult = testo;
            } else {
                hideDiv(idDivSuggerimenti);
            }
        } else {
            timeOutSearch(500);
        }
    }
}

/**
 * Accorcia il parametro testo tagliando la frase all'utlimo carattere che trova in cui e' possibile tagliare il testo.
 * I caratteri ammessi per tagliare il testo sono definiti nell'array charFineArray
 * 
 * @param testo
 * @return testo accorciato
 */
function accorciaTesto(testo) {
    var maxIndex = -1;
    var otherIndex = -1;

    for (var i = 0; i < charFineArray.length; i++) {
        otherIndex = testo.lastIndexOf(charFineArray[i]);
        if (otherIndex > maxIndex) {
            maxIndex = otherIndex;
        }
    }
    return testo.substring(0, maxIndex);
}

function otherKey(e) {
    try {
        var keynum;

        if (window.event) {// IE 
            keynum = event.keyCode;
        } else {
            keynum = e.keyCode;
        }
        switch (keynum) {
            case 13:
                if (resultPos != -1) {
                    location.href = $("#result" + resultPos).attr("url");
                    return false;
                }
                return;
            default:
                var testo = inputField.value;
        }
    } catch (ex) { }
}

function searchHelpText(e) {
    try {
        var keynum;

        if (window.event) {// IE 
            keynum = event.keyCode;
        } else {
            keynum = e.keyCode;
        }
        switch (keynum) {
            case 40:
                if (resultPos <= -1) {
                    resultPos = -1;
                }
                resultPos += 1;
                document.getElementById("result" + oldResultPos).style.backgroundcolor = "";
                document.getElementById("result" + oldResultPos).style.borderBottom = "";
                document.getElementById("result" + resultPos).style.backgroundcolor = "#F3F3F3";
                document.getElementById("result" + resultPos).style.borderBottom = "1px solid #808080";
                oldResultPos = resultPos;

                responseCache = cacheSearch[inputField.value];

                if (resultPos >= (responseCache.resultTot - 1)) {
                    resultPos = -1;
                }
                return false;
            case 38:
                resultPos -= 1;
                if (resultPos <= -1) {
                    responseCache = cacheSearch[inputField.value];
                    resultPos = responseCache.resultTot - 1;

                }
                document.getElementById("result" + oldResultPos).style.backgroundcolor = "";
                document.getElementById("result" + oldResultPos).style.borderBottom = "";
                document.getElementById("result" + resultPos).style.backgroundcolor = "#F3F3F3";
                document.getElementById("result" + resultPos).style.borderBottom = "1px solid #808080";
                oldResultPos = resultPos;
                /*if (resultPos<=-1){
                resultPos=resultTot;
                }*/
                return false;
                //		case 13: 
                //			if(resultPos != -1){
                //				alert($("#result"+resultPos).attr("url"));
                //				location.href = $("#result"+resultPos).attr("url");
                //				return false;
                //			}
                //			return;
            default:
                var testo = inputField.value;
                if ((testo.length) > 2) {
                    if (cacheSearch[testo] == undefined) {//se il testo inserito dell'utente non e' in cache
                    	//TODO
                    	//verifico se il testo inserito matcha con qualche condizione speciale
                    	
                    	var isCurrentSpecial = isSpecialCondition(inputField.value);
                    	
                    	if(isCurrentSpecial){
                    		drawSpecialCondition(inputField.value);
                    	}else{
                    		search(inputField.value);//esegui la ricerca lato server
                    	}
                    }
                    timeOutSearch(200);
                } else {
                    lastSearchViewResult = "";
                    hideDiv(idDivSuggerimenti);
                }
        }
    } catch (ex) { }
}

/**
 * Verifica se si verifica qualche condizione speciale
 * 
 * @param testo
 * @return
 */
function isSpecialCondition(testo){
	isCurrentSpecial = false; //indica se si sta verificando una condizione speciale
	
	var primaParola = "";
	
	testo = trim(testo);//effetuo il trim del testo
	testo = testo.replace(/  /g, " "); //tolgo i doppi spazi
	
	testoSplittato = testo.split(" ",4); //splitto il testo sugli spazi
	
	if(testoSplittato.length > 0 && testoSplittato.length <= 3){//potrebbe essere un caso speciale
		primaParola = testoSplittato[0];
		if(primaParola.toLowerCase() == "circolare" || primaParola.toLowerCase() == "messaggio"){
			//la prima parola è una parola speciale
			//quindi per ora e' una condizione speciale
			isCurrentSpecial = true;
			
			//controlliamo altre condizione
			if(testoSplittato.length > 1){//ce pure la seconda parola che deve essere un numero
				
				if(isInt(testoSplittato[1])){
					//la seconda condizione è verificata
					//la seconda parola e' un numero 
					isCurrentSpecial = true;
					
					//controllo altra condizione
					if(testoSplittato.length > 2){//la terza parola deve essere un anno (intero)
						if(isInt(testoSplittato[2] && testoSplittato[2].length < 5)){
							//1980 - 2020
							isCurrentSpecial = false;
							if(testoSplittato[2].length == 1){
								if(testoSplittato[2] >= 1 && testoSplittato[2] <= 2){
									isCurrentSpecial = true;
								}
							}else if(testoSplittato[2].length == 2){
								if(testoSplittato[2] >= 19 && testoSplittato[2] <= 20){
									isCurrentSpecial = true;
								}
							}else if(testoSplittato[2].length == 3){
								if(testoSplittato[2] >= 198 && testoSplittato[2] <= 202){
									isCurrentSpecial = true;
								}
							}else if(testoSplittato[2].length == 4){
								if(testoSplittato[2] >= 1980 && testoSplittato[2] <= 2020){
									isCurrentSpecial = true;
								}
							}

						}else{
							isCurrentSpecial = false;
						}
					}
				}else{
					isCurrentSpecial = false;
				}
			}
		}
	}
	
	return isCurrentSpecial;
}

/**
 * Disegna la suggest per le condizioni speciali
 * 
 * @param testo: testo contenuto nella buca di ricerca
 * @return
 */
function drawSpecialCondition(testo){
	if(isCurrentSpecial){
		testo = trim(testo);//effetuo il trim del testo
		testo = testo.replace(/  /g, " "); //tolgo i doppi spazi
		
		testoSplittato = testo.split(" ",4); //splitto il testo sugli spazi
		
		primaParola = testoSplittato[0];
		
		if(primaParola.toLowerCase() == "circolare"){
			primaParola = "Circolare";
		}else if(primaParola.toLowerCase() == "messaggio"){
			primaParola = "Messaggio";
		}
		
		txtHtml = '<div class="resultItem odd">';
		txtHtml += '<div style="padding-top:4px; padding-left:1px;"><img src="http://www.inps.it/newsearch/img/suggerimenti.gif"/><p class="text" >Inserire ' + primaParola + ' <i>numero</i> <i>anno</i></p></div>';
		//txtHtml += '<img srl="http://www.inps.it/newsearch/img/suggerimenti.gif"/><p class="text" >Inserire ' + primaParola + ' <i>numero</i> <i>anno</i></p>';
	    txtHtml += '</div>';
	    
	    divSuggerimenti.innerHTML = txtHtml;
	    
	    //reimposto le dimensioni piccole alla suggest
	    divSuggerimenti.style.left = (baseLeft) + "px"; //"212px";
	    divSuggerimenti.style.width = (baseWidth) + "px"; //"750px";//450
	}
}

/**
 * Funzione che effetua la chiamata al server per la ricerca
 * 
 * @param testo: frase da cercare
 * @return
 */
function search(testo) {
    //vengono aggiunti i millisecondi alla query cosi da non cacheare le chiamate http
    var newmills = new Date().getTime();

    //request = "http://localhost:2203/Search.Portal/proxy/getDataWrapper_newjs.ashx?qs=" + encodeURI(testo) + "&hits=12&group=3&type=json&t=" + newmills;
    request = "http://www.inps.it/newsearch/proxy/getDataWrapper_newjs.ashx?qs=" + encodeURI(testo) + "&hits=12&group=3&type=json&t=" + newmills;
    //request = "http://www.inps.it/newsearch/proxy/getDataWrapper_newjs.ashx?qs=" + encodeURI(testo) + "&hits=12&group=3&type=json&t=" + newmills;

    //TODO togliere
//	if(testo == "circ"){
//		request = "http://localhost/inps/server/circ.html?t=" + newmills;
//	}else if(testo == "circo"){
//		request = "http://localhost/inps/server/circo.html?t=" + newmills;
//	}else if(testo == "test"){
//    	request = "http://localhost/inps/server/test.html?t=" + newmills;
//    }

    aObj = new JSONscriptRequest(request);
    aObj.buildScriptTag();
    aObj.addScriptTag();
}

var oldmills = new Date().getTime();
var newmills = new Date().getTime();
var oldtext = '[{"text":""}]';

function responseIntervalSearch(datos, strSearch) {
    var txtHtml = '';

    var responseCache = new objCache();
    //responseCache.width = baseWidth+"px";//"750px";//450
    //responseCache.left = baseLeft+"px"; //"212px";

    if (datos !== null && datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET) {
        var totale = parseInt(datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET.HITS);
        var mycategory = "";

        responseCache.resultTot = totale;
        if (totale == 0) {
            //txtHtml+='<p style="background-color: #f6f6f6; BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 3px; Z-INDEX: 1; PADDING-BOTTOM: 3px; MARGIN: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 3px; BORDER-BOTTOM: #ccc 1px solid; FONT-FAMILY: Sans-Serif; POSITION: absolute; font-family:Verdana;">Nessun suggerimento trovato. Prova la ricerca completa</p>';
            txtHtml = '<div class="resultItem odd">';
            txtHtml += '<p class="text" >Nessun suggerimento trovato. Prova la ricerca completa</p>';
            txtHtml += '</div>';
        }

        var MAX_NUMERO_SEDI = 3; //indica il numero massimo di sedi per cui bisogna inserire il link nel menu a tendina
        var numeroSedi = 0; //indica il numero di sedi trovate, se nel conteggio arriva a MAX_NUMERO_SEDI +1 ferma il conteggio
        var stopCreaLinkSede = false; //indica se bloccare la creazione dei link per le sedi

        //conto il numero di sedi trovate
        for (var i = 0; i < totale && numeroSedi < MAX_NUMERO_SEDI; i++) { //TODO new
            for (var x = 0; x < 3; x++) {
                //recupero un dato trovato dalla ricerca
                node = datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET.HIT[i];
                //se è una sede

                if (node.FIELD[x].NAME == "C" && node.FIELD[x].value == "E") {
                    //incremento il numero di sedi
                    numeroSedi++;
                }
            }
        }

        for (var i = 0; i < totale; i++) {
            var link = "";
            var title = "";
            var description = null;
            var node;
            var categoria = "";
            var odd = true;

            //for (var x = 0; x < 3; x++) {
            for (var x = 0; x < node.FIELD.length; x++) {
                if (totale == 1) {
                    node = datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET.HIT[0]; //TODO new
                } else {
                    node = datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET.HIT[i];
                }

                if (node.FIELD[x].NAME == "C") {
                    categoria = node.FIELD[x].value;
                }

                if (node.FIELD[x].NAME == "U") {
                    link = node.FIELD[x].value;

                    //inizio correzione anomalia: non funziona link apice 30/11/2009
                    index = link.indexOf("LastRic=") + 8;
                    testoTemp = link.substr(index);

                    testoTemp = testoTemp.replace("''", "\\'\\'");
                    link = link.substr(0, index) + testoTemp;
                    //fine correzione anomalia: non funziona link apice 30/11/2009

                }

                //recupero la descrizione del nodo
                if (node.FIELD[x].NAME == "T") {
                    title = node.FIELD[x].value;
                }

                //recupero l'abstract
                if (node.FIELD[x].NAME == "A") {
                    if (node.FIELD[x].value != "") {
                        description = node.FIELD[x].value;
                    }
                }

            }
  // Errore ricerca sedi nel menu a tendina corretto con il secondo ciclo sotto riportato 
   //          if (odd) {
  //              odd = false;
 //               txtHtml += '<div class="resultItem odd" style="margin-bottom: 2px;">';
 //            } else {
 //               odd = true;
 //               txtHtml += '<div class="resultItem even" style="margin-bottom: 2px;">';
 
 // Modifica Eseguita il 10/04/2010 Da Giuseppe per bug righe vuote presenti dopo il nome sede ricercato. 
 
 if (categoria != "E" || !stopCreaLinkSede){
             if (odd) {
                 odd = false;
                 txtHtml += '<div class="resultItem odd" style="margin-bottom: 2px;">';
             } else {
                 odd = true;
                 txtHtml += '<div class="resultItem even" style="margin-bottom: 2px;">';
             }

            }
            if (categoria != mycategory) {
                mycategory = categoria;
                //txtHtml+='<p class="categoria'+categoria+'">'+ TornaCategoria(categoria)+'</p>';

                var classCategoria = "";
                if(categoria=="H"){
                    classCategoria = "G";
                }else{
                    classCategoria = categoria;
                }
                
                txtHtml += '<p class="categoria' + classCategoria + '">'
                txtHtml += arrayCategorie[categoria].descrizione


                if (arrayCategorie[categoria].link != null) {
                    txtHtml += ' <span style="position: absolute; right: 10px;"><a href="' + arrayCategorie[categoria].link+'&testo='+inputField.value + '">' + arrayCategorie[categoria].testoLink + '</a></span>'
                }

                txtHtml += '</p>';

                //se la categoria è C (circolare) allora allarga il box di suggerimenti
                //				if(categoria == "C"){
                //					responseCache.width = (baseWidth + 350)+"px";//"750px";//450
                //					responseCache.left = (baseLeft - 350)+"px"; //"212px";
                //				}
            }

            if (categoria == "E" && numeroSedi >= MAX_NUMERO_SEDI && !stopCreaLinkSede) {
                //CREA LINK STATICO
                //index = link.indexOf("?");
                //link = link.substr(0,index);
                //link = "?iIDLink=32";
                link = "http://www.inps.it/newsearch/ricerca.aspx?sTrova=" + inputField.value + "&Categorie=Struttura";

                //CREA LINK DINAMICO
                //il link dinamico si basa sulla posizione del link da utilizzare nel menu in alto a destra
                // la posizione 5 ovvero link[4] corrisponde al link "Le sedi Inail"
                //list = $("#utilita > li > a");
                //link = list[5];

                txtHtml += '<p onclick="location.href=\'' + link + '\'" url="' + link + '" class="text" id="result0">Inserire ulteriori caratteri o clicca qui</p></div>';
                stopCreaLinkSede = true; //variabile che se a true impedisce di creare i link per le sedi nel menu a tendina
            } else if (categoria != "E" || (categoria == "E" && !stopCreaLinkSede)) {

                if (categoria == "E") {
                    title = title.replace("*", "/");

                    title = rimuoviCaratteriFineRiga(title, ";");
                    title = title.replace(";", "/");
                }


				// INTEGRAZIONE - Sostituisce "Circolare Numero" con "Circolare n." e "Messaggio numero" con "Messaggio n."
       			if (categoria == "C" || "D") 
       			{
         			title = title.replace("numero", "n.");
        		}
				//FINE INTEGRAZIONE



                //sottolineatura stringa ricercata
                title = underlineSearchString(title, strSearch);

                // ======================================================================== //
                //ABSTRACT SU STESSA RIGA
                txtHtml += '<p onclick=location.href="' + link + '" url="' + link + '" class="text" id="result' + i + '"><span style="font-weight: bold;">' + title +'</span>';
                if (description != null) {
                    //description = accorciaTesto(description,100,charFineArray,testoAppend)
                    txtHtml += '<span class="descrizione" style="PADDING-LEFT: 15px; font-style: italic; font-size: xx-small; cursor: hand;">' + description + '</span>';
                }
                txtHtml +=  '</p>'
                
                //ABSTRACT SU ALTRA RIGA
//                txtHtml += '<p onclick="location.href=\'' + link + '\'" url="' + link + '" class="text" id="result' + i + '">' + title + '</p>';
//                if (description != null) {
//                    //description = accorciaTesto(description,100,charFineArray,testoAppend)
//                    txtHtml += '<span onclick="location.href=\'' + link + '\'" url="' + link + '" class="descrizione" style="PADDING-LEFT: 15px; font-style: italic; font-size: xx-small; cursor: hand;">' + description + '</span>';
//                    //txtHtml += '<span class="descrizione" style="PADDING-LEFT: 15px; font-style: italic; font-size: xx-small; cursor: default;">' + description + '</span>';
//                }
                // ======================================================================== //
                
                txtHtml += '</div>';
            }
        }
    }
    responseCache.htmlCode = txtHtml;

    //	responseCache.width = (baseWidth + 350)+"px";//"750px";//450
    //	responseCache.left = (baseLeft - 350)+"px"; //"212px";

    cacheSearch[strSearch] = responseCache;
    resultPos = -1;
}

/**
* underlineSearchString
* 
* @param title titolo dell'elemento caricato via ajax dal motore di ricerca
* @param strSearch tringa immessa dall'utente nel campo di ricerca
* @return titolo con parte sottolineata corrispondente alla stringa immessa dall'utente nel campo di ricerca
*/
function underlineSearchString(title, strSearch) {
    /*titleL = title.toLowerCase();
    strSearchL = strSearch.toLowerCase();
    strSearchLength = strSearch.length;
    index = titleL.indexOf(strSearchL);

    if (index != -1) {
        titleTemp = title.substr(0, index);
        titleTemp += "<strong>";
        titleTemp += title.substr(index, strSearchLength);
        titleTemp += "</strong>";
        titleTemp += title.substr(index + strSearchLength);
        title = titleTemp;
    }*/

    return title;
}

/**
* Rimuove il carattere 'carattere' se situato a fine stringa del parametro 'stringa'
* 
* @param stringa
* @param carattere carattere da rimuovere
* @return restituisce 'stringa' modificata
*/
function rimuoviCaratteriFineRiga(stringa, carattere) {
    stringa = trim(stringa);
    index = stringa.lastIndexOf(carattere)
    if (index != -1 && index == (stringa.length - carattere.length)) {
        stringa = stringa.substr(0, index);
    }

    return stringa;
}

/**
* Effetua il trim sulla stringa passata come parametro
* 
* @param stringa
* @return restituisce la stringa passata come parametro dopo il trim
*/
function trim(stringa) {
    while (stringa.substring(0, 1) == ' ') {
        stringa = stringa.substring(1, stringa.length);
    }
    while (stringa.substring(stringa.length - 1, stringa.length) == ' ') {
        stringa = stringa.substring(0, stringa.length - 1);
    }
    return stringa;
}

/**
 * Verifica che una stringa sia composta solo da numeri interi
 * 
 * @param sText: Stringa da controllare
 * @return
 */
function isInt(sText){
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++){ 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1){
         IsNumber = false;
      }
   }
   return IsNumber;
}