﻿//COSTANTI
var protocol = location.protocol;


//chiave per attivare gestione delle vecchie ricerche valori ammessi true e false
var useCacheManager = true;

//chiave per attivare la tendina
var useTendina = true;


var ambienteINPS = "www.inps.it/Search122/"; //--> produzione
//var ambienteINPS = "www.wmo.inps.it/Search122/"; //--> collaudo wmo
//var ambienteINPS = "localhost:14750/Search.Portal.NewGUI/"; //--> localhost sviluppo

var response_auto = null;
var responseCache = new objCache();
var txtHtml = '';
var htmlHelp = '';
var countElementiTendina = 0;



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;

var sqs = location.search;

// Verifico che la pagina contenga una querystring
// ed in caso lancio la procedura di recupero dei dati,
// altrimenti avviso che non ci sono querystring definite
var ml = "ml=";
var mlValue = "ml=";
var mlVal = ml;

/*
*Prende il valore del ml in un array della query string
*
*@param mlValue: array da scorrere
*@return
*/
function isMl(mlValue) {
    var mlValore = "";
    for (i = 0; i < mlValue.length; i++) {
        if (mlValue[i] == "ml=0" || mlValue[i] == "ml=1") {
            mlValore = mlValue[i];
        }
    }
    return mlValore;
}

if (sqs) {
    ml = (sqs.split("?"))[1];
    mlValue = ml.split("&");
    mlVal = isMl(mlValue);
}

/**
* 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";
        }
        if (primaParola == "messaggi") {
            categoria = "Messaggi";
        }
        if (primaParola == "circolari") {
            categoria = "Circolari";
        }

        var url = null;

        url = protocol + "//" + ambienteINPS + "ricerca.aspx?"; //--> collaudo wmo
        //url += "adv=1";
        //url += "&" + mlVal;
        url += "sTrova=" + testo;
        url += "&" + mlVal;
        url += "&from=tendina";
        /*if (numero !== null) {
        url += "&Numero=" + numero;
        }
        url += "&tipologia=" + categoria;
        url += "&Sorting=desc";
        if (anno !== null) {
        url += "&Anno=" + anno;
        }
        url += "&AnnoDal=1979";
        url += "&AnnoAl=2011";
        //testo = sTrova;
        url += "&Testo=";*/

        window.location = url;
        return false;
    }
});
function searchHelpText(e) {
    //try {
    var keynum;

    if (window.event) {// IE 
        keynum = event.keyCode;
    } else {
        keynum = e.keyCode;
    }
    switch (keynum) {
        case 40: //click freccia in giù
            if (resultPos <= -1) {
                resultPos = -1;
            }
            //style = "background-color: #d6d6d6;"

            resultPos += 1;
            //            if (document.getElementById("result" + resultPos) == undefined) { 
            //            
            //            }
            //document.getElementById("result" + oldResultPos).style.backgroundColor = "";
            //document.getElementById("result" + oldResultPos).style.borderBottom = "";
            document.getElementById("itemTendina" + oldResultPos).className = document.getElementById("itemTendina" + oldResultPos).className.replace(" evidenza", "");
            if (document.getElementById("itemTendina" + resultPos) != null) {
                //document.getElementById("result" + resultPos).style.backgroundColor = "#D6D6D6";
                document.getElementById("itemTendina" + resultPos).className += " evidenza";
            } else {
                var resultExist = EsisteIdScorrendo(resultPos);
                if (resultExist == resultPos) {
                    resultPos = 0;
                } else {
                    resultPos = resultExist;
                }
                //document.getElementById("result" + resultPos).style.backgroundColor = "#D6D6D6";
                document.getElementById("itemTendina" + resultPos).className += " evidenza";
            }
            //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: //click freccia in sù
            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("itemTendina" + oldResultPos).className = document.getElementById("itemTendina" + oldResultPos).className.replace(" evidenza", "");
            if (document.getElementById("itemTendina" + resultPos) != null) {

                //document.getElementById("result" + resultPos).style.backgroundColor = "#D6D6D6";
                document.getElementById("itemTendina" + resultPos).className += " evidenza";
            } else {
                //var resultExist = EsisteIdScorrendo(resultPos);
                //if (resultExist == resultPos) {
                resultPos = 0;
                //} else {
                //resultPos = resultExist;
                //}
                //document.getElementById("result" + resultPos).style.backgroundColor = "#D6D6D6";
                document.getElementById("itemTendina" + resultPos).className += " evidenza";
            }
            //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;
            //        case 8:
            //            var testo = inputField.value;
            //            responseCache.htmlCode = cacheSearch[testo].htmlCode;
            //            resultPos = -1;

            //            return true;

            //        case 8:
            //            var testo = inputField.value;
            //            responseCache.htmlCode = cacheSearch[testo].htmlCode;
            //            resultPos = -1;
            //            timeOutSearch(200);

        default:
            var testo = inputField.value;
            if ((testo.length) > 2) {
                if (useCacheManager == true) {
                    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
                        }
                    }
                } else {
                    //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) { }
}

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 controlArray(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}

//if (controlArray(mlValue, "ml=0")) {
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("C", "Circolari", protocol + "//" + ambienteINPS + "ricerca.aspx?" + mlVal + "&sTrova=Ultime+circolari&tipologia=Circolari", "[Ricerca Circolari]"); //&nbsp;&nbsp;&nbsp;
arrayCategorie[objCategoria.id] = objCategoria;

objCategoria = new Categoria("D", "Messaggi", protocol + "//" + ambienteINPS + "ricerca.aspx?" + mlVal + "&sTrova=Ultimi+messaggi&tipologia=Messaggi", "[Ricerca Messaggi]");
arrayCategorie[objCategoria.id] = objCategoria;

var inputField = document.getElementById("sTrova"); //input field di ricerca

//disegno il contenitore dei suggerimenti
document.write('<dl id="' + idDivSuggerimenti + '" class="jsonSuggestResults" style="display:none; right: 95px; 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");



//} 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) {
    $(".wrapper").attr('style', 'z-index:-1;position:relative');
    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';
    }
    $(".wrapper").removeAttr('style');
}

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() {
                    var testoNew = $(this).html();
                    var pulizia = "";
                    $(this).html(pulizia);
                    var heightStandard = this.offsetHeight;
                    $(this).html(testoNew);

                    //se almeno una descrizione occupa piu di una riga
                    if (this.offsetHeight > heightStandard) {
                        //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 > heightStandard);

                        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);
                }

                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);
}

/**
* 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 = '<dd class="resultItem odd">';
        txtHtml += '<div class="sugg"><img src="' + protocol + '//' + ambienteINPS + 'img/suggerimenti.gif"/><p class="text" >Inserire ' + primaParola + ' <i>numero</i> <i>anno</i></p></div>';
        txtHtml += '</dd>';

        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) {

    autocompleteGoogle(testo);

    //vengono aggiunti i millisecondi alla query cosi da non cacheare le chiamate http
    var newmills = new Date().getTime();

    var sentenzaFlag = "";

    if (!useTendina) {

        sentenzaFlag = "&sentenze=1";
    }

    request = protocol + "//" + ambienteINPS + "proxy/getDataWrapper_newjs.ashx?protocol=" + protocol + "&qs=" + encodeURI(testo) + "&hits=12&group=3&type=json&t=" + newmills + sentenzaFlag;
    //request = "http://www.wmo.inps.it/newsearch/proxy/getDataWrapper_newjs.ashx?qs=" + encodeURI(testo) + "&hits=8&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":""}]';

/*
*Funzione che chiama wrapper che restituisce un json da processare
*che contiene le parole per andare a formare autocomplete sia in tendina che
*sulla texbox.
*/
function autocompleteGoogle(testo) {
    var newmills = new Date().getTime();

    request = protocol + "//" + ambienteINPS + "proxy/getDataWrapper_AutoComplete.ashx?q=" + encodeURI(testo);

    aObj = new JSONscriptRequest(request);
    aObj.buildScriptTag();
    aObj.addScriptTag();
}

function responseAutoComplete(strSearch) {
    var arrayParole = response_auto.split(",", 4);
    htmlHelp = '';
    if (response_auto != null && response_auto != "no-result") {
        for (var i = 0; i < arrayParole.length; i++) {
            var classStyle = "Suggest";
            if (i == arrayParole.length - 1) {
                classStyle += " Last";
            }
            htmlHelp += '<dd id="itemTendina' + i + '" class="' + classStyle + '"><p id="result' + i + '" class="text" url="javascript:portaInBucaFocus(\'' + arrayParole[i].replace("'", "\\'") + '\');" onclick="portaInBucaFocus(\'' + arrayParole[i].replace("'", "\\'") + '\');"><span>' + arrayParole[i].toLowerCase().replace(strSearch.toLowerCase(), strSearch + "<span style='font-weight:bold'>") + '</span></span></p></dd>';
            //txtHtml +=                                                          //'<p onclick="location.href=\'' + link + '\'" url="' + link + '" class="text" id="result0">Inserire ulteriori caratteri o clicca qui</p></div>';

        }
        //var divHtml = "<div class='inlineComplete'><span class='noneVisble'>" + strSearch + "</span>" + arrayParole[0].replace(strSearch,'') + "</div>";
        //$("#ricerca").append(divHtml);

    } else {
        htmlHelp = '';
    }
    if (arrayParole.length == 1) {
        if (arrayParole[0] != "no-result") {
            countElementiTendina = arrayParole.length;
        } else {
            countElementiTendina = 0;
        }
    } else {
        countElementiTendina = arrayParole.length;
    }
    //    responseCache.htmlCode = htmlHelp + txtHtml;

    //    cacheSearch[strSearch] = responseCache;
    //    resultPos = -1;
}

function portaInBucaFocus(word) {
    document.getElementById(idInputField).value = word;
    $("#sTrova").keyup();
    document.getElementById(idInputField).focus();
}

function responseIntervalSearch(datos, strSearch) {

    responseCache = new objCache();

    txtHtml = '';
    var suggHtml = '';

    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 = '<dd class="resultItem odd">';
            txtHtml += '<p class="text" >Nessun suggerimento trovato. Prova la ricerca completa</p>';
            txtHtml += '</dd>';
        }

        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 == "STRUTTURA") {
                    //incremento il numero di sedi
                    numeroSedi++;
                }
            }
        }

        for (var i = countElementiTendina; i < totale; i++) {
            var link = "";
            var title = "";
            var description = null;
            var node;
            var categoria = "";
            var odd = true;

            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;
                    }
                }

            }

            if (categoria != "STRUTTURA" || !stopCreaLinkSede) {
                if (odd) {
                    odd = false;
                    txtHtml += '<dd id="itemTendina' + i + '" class="resultItem odd" style="margin-bottom: 2px;">';
                } else {
                    odd = true;
                    txtHtml += '<dd id="itemTendina' + i + '" class="resultItem even" style="margin-bottom: 2px;">';
                }
            }

            if (categoria != mycategory) {
                mycategory = categoria;
                //txtHtml+='<p class="categoria'+categoria+'">'+ TornaCategoria(categoria)+'</p>';

                var classCategoria = "C";
                if (categoria == "INFORMAZIONI") {
                    classCategoria = "A";
                }
                if (categoria == "SERVIZI") {
                    classCategoria = "B";
                }

                if (arrayCategorie[categoria] == undefined) {
                    var objCategoria = new Categoria(categoria, categoria, null, null);
                    arrayCategorie[objCategoria.id] = objCategoria;
                }

                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 == "STRUTTURA" && numeroSedi >= MAX_NUMERO_SEDI && !stopCreaLinkSede) {
                //CREA LINK STATICO
                link = protocol + "//" + ambienteINPS + "ricerca.aspx?sTrova=" + inputField.value + "&Categorie=Struttura&raffina=1";

                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 != "STRUTTURA" || (categoria == "STRUTTURA" && !stopCreaLinkSede)) {

                if (categoria == "STRUTTURA") {
                    title = title.replace("*", "/");

                    title = rimuoviCaratteriFineRiga(title, ";");
                    title = title.replace(";", "/");
                }

                // INTEGRAZIONE - Sostituisce "Circolare Numero" con "Circolare n." e "Messaggio numero" con "Messaggio n."
                if (categoria == "CIRCOLARI" || "MESSAGGI") {
                    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) {
                    txtHtml += '<span class="descrizione" style="PADDING-LEFT: 15px; font-style: italic; font-size: xx-small; cursor: hand;">' + description + '</span>';
                }
                txtHtml += '</p>'

                txtHtml += '</dd>';
            }
            suggHtml = "<dd class='InpsSuggest'><p class='text'>INPS SUGGERISCE</p></dd>";
        }
    }
    if (htmlHelp == '') {
        suggHtml = '';
    }
    responseCache.htmlCode = htmlHelp + suggHtml + txtHtml;

    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;
}
//}

/**
*Verifico se dato l'id di un elemento che non esiste scorrendo il suo indice, 
*quindi result1 non esiste verifico se esiste result2,3,4...n e quando l'elemento esiste restituisco l'id
*
*/
function EsisteIdScorrendo(indice) {
    var indiceEx = indice;
    for (i = indice; i < indice + 3; i++) {
        if (document.getElementById("result" + i) != null) {
            indiceEx = i;
            break;
        }
    }
    return indiceEx;
}
