﻿try {
    document.getElementById('sTrova').onkeypress="if(event.keyCode=='13'){ if ( ((document.getElementById('sTrova').value).length) < 3) {alert('Inserire almeno 3 caratteri per effettuare le ricerca'); return false;}  {} };";
    document.getElementById('sTrova').onkeyup=searchHelpText;
    
    var searchFocus=false;
    $("#sTrova").blur(function(){
    	setTimeout('searchMousever()',300);
    	searchFocus=false;
    });
    $("#sTrova").focus(function(){
    	searchFocus=true;
    	var lenghtTestocercato = document.getElementById('sTrova').value.length;
    	if (lenghtTestocercato > 2 && document.getElementById('idSearchHelp').innerHTML.length >0){ 
    		viewDiv("idSearchHelp");
    	}
    });
    
    
//    disabilita l'auto completamento di tutti i browser tranne firefox
    document.getElementById('sTrova').autocomplete="off";

//    disabilita l'auto completamento dei input form di firefox
    document.getElementById('sTrova').setAttribute( "autocomplete", "off" );


    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("idSearchHelp");
	}
}

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;
		}
		return s;
	}
	);
}
/*
function isNumberKey(e){
alert('Running');
var keynum;
var keyboardchars = /[\x00\x08]/;
var validchars = new RegExp("[0-9.]");
if(window.event) // IE
{
keynum = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which;
}
var keychar = String.fromCharCode(keynum);
if (!validchars.test(keychar) && !keyboardchars.test(keychar)) {
return false
} else{
return true;
}
}
 */
var cacheSearch=new Array();
var resultPos=-1;
var oldResultPos=0;
var resultTot=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=document.getElementById('sTrova').value;
	if (testo !=lastSearchViewResult ){ //se la nuova ricerca è diversa dalla precedente effetua ricerca
		if(cacheSearch[testo]!=undefined){
			if ( (testo.length) > 2) {
				viewDiv("idSearchHelp");
				resultPos=-1;
				document.getElementById("idSearchHelp").innerHTML= cacheSearch[testo];
				lastSearchViewResult=testo;
			} else {
				hideDiv("idSearchHelp");
			}
		} else {
			//se non viene piu effetuata la ricerca perche la stringa di caratteri 
			//inserita dall'utente è troppo lunga comunque devo continuare a sottolineare il testo
			/*if(testo.length > 20){
				$("#idSearchHelp .text").each(function(){
					htmlCode = $(this).html();
					if(htmlCode.indexOf("<strong>") != -1){
						htmlCode = htmlCode.replace("<strong>","");
						htmlCode = htmlCode.replace("</strong>","");
						
						htmlCode = underlineSearchString(htmlCode);
						$(this).html(htmlCode);
						//alert(htmlCode);
					}
					
				});
			}*/
			timeOutSearch(500);
			
		}
	}
}

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;
			if (resultPos>=(resultTot-1)){
				resultPos=-1;
			}
			return false;
		case 38:
			resultPos-=1;
			if (resultPos<=-1){
				resultPos=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: 
			return;
		default:
			var testo=document.getElementById('sTrova').value;
		if ( (testo.length) > 2) {
			if(cacheSearch[testo]==undefined){
				search(document.getElementById('sTrova').value);
			}
			timeOutSearch(200);
		} else {
			lastSearchViewResult="";
			hideDiv("idSearchHelp");
		}
		}
	} catch(ex){}
}

function submitSearch() {
	if (resultPos!=-1){
		window.location.href=document.getElementById("result"+resultPos).url;
		return false;
	} else {
		return true;
	}

}

function search(testo) {
	var newmills = new Date().getTime();
	request = "http://www.inps.it/newportal/ricerca/ProxySearch2.aspx?qs=" + encodeURI(testo) + "&hits=10&type=json&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='';

	if (datos!=null && datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET) {
		var totale = parseInt(datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET.HITS);
		var mycategory = "";
		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>';
		}
		
		//inizio Simone Bongini 02/12/2009
		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 && totale > MAX_NUMERO_SEDI; i++) {
			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++;
				}
			}
		}
		//fine Simone Bongini 02/12/2009
// TODO ok
	
		for (var i = 0; i < totale; i++) {
			var link = "";
			var title = "";
			var node;
			var categoria = "";
			var odd=true;
			for (var x = 0; x < 3; x++) {
				if (totale == 1) {
					node = datos.SEGMENTS.SEGMENT.RESULTPAGE.RESULTSET.HIT;
				} 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

				}

				if (node.FIELD[x].NAME == "T") {
					title = node.FIELD[x].value;
				}

			}
			if  (odd){
				odd=false;
				txtHtml+='<div class="resultItem odd">';
			} else {
				odd=true;
				txtHtml+='<div class="resultItem even">';
			}
			if (categoria != mycategory) {
				mycategory = categoria;
				txtHtml+='<p class="categoria'+categoria+'">'+ TornaCategoria(categoria)+'</p>';
			}

			//inizio Simone Bongini 02/12/2009
			if(categoria == "E" && numeroSedi > MAX_NUMERO_SEDI && !stopCreaLinkSede){
				//CREA LINK STATICO
				//index = link.indexOf("?");
				//link = link.substr(0,index);
				//link += "?iIDLink=39";
				
				//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[4];
				
				txtHtml+='<p onclick="location.href=\''+link+'\'" url="'+link+'" class="text" id="result0">Inserire ulteriori caratteri o clicca qui per raffinare la ricerca</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(";", "/");
				}

				//sottolineatura stringa ricercata
				title = underlineSearchString(title,strSearch);

				txtHtml+='<p onclick="location.href=\''+link+'\'" url="'+link+'" class="text" id="result'+ i+ '">'+title+'</p></div>';
			}
			//fine Simone Bongini 02/12/2009

		}
	}
	cacheSearch[strSearch]=txtHtml;
	resultPos=-1;
}

function TornaCategoria(iCategoria){
	if (iCategoria=="A") return "Informazioni"
	if (iCategoria=="B") return "Servizi online"
	if (iCategoria=="C") return "Circolari"
	if (iCategoria=="D") return "Messaggi"
	if (iCategoria=="E") return "Strutture"
	if (iCategoria=="F") return "Moduli"
	if (iCategoria=="G") return "TuttoINPS"
}

/**
 * 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){
	//strSearch = $("#sTrova").val();
	
	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;
}

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;
}

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;
}

$(window).load(function(){
    $("#idSearchHelp").attr("style",'position: absolute; display:none; top: '+($("#sTrova").position().top + $("#sTrova").height() +5)+'px; left: '+($("#sTrova").position().left +1)+'px; width: '+($("#sTrova").width() -1)+'px; height: auto;');
});
