//funzione globale di ricerca
function search(searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,start,rows,promo,idCliente,contextPath) {
    //se il testo di ricerca è vuoto visualizzo tutto il catalogo
    if(searchText=='') searchText="*";
    //costruisco la query per il testo cercato
    var query = getQuery(searchText);
    //costruisco la query in base alle voci du catalogo selezionate
    query+=getQueryCatalogo(macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId,promo);
    //costruisco le facet
    var facet = getFacet(macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId);
    //alert(query);
    //alert(facet);
    //url chiamata
    var url = getSolrUrl("/search/select/", query, facet,start,rows,searchText);
    //alert(url);
    $.ajax({
        url: url,
        cache: false,
        dataType: "text",
        success: function(html){
            //alert(html);
            var jsonObj = JSON.parse(html);
            //alert(jsonObj);
            printHtml(jsonObj, searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId,start,rows,promo,contextPath,idCliente);
        },
        error: function(){
            alert("Inserire il testo da cercare");
            return false;
        }
    });
}

//costruisce la query relativa al teso cercato
function getQuery(searchText){
    var searchValues = searchText.split(" ");
    var query = "((";
    for(i=0;i<searchValues.length;i++){
        if(i==0) query+="id:"+searchValues[i].toUpperCase();
        else query+="+"+searchValues[i].toUpperCase();
    }
    query +=")+("
    for(i=0;i<searchValues.length;i++){
        if(i==0) query+="codiceProduttore:"+searchValues[i].toUpperCase();
        else query+="+"+searchValues[i].toUpperCase();

    }
    query +=")+("
    for(i=0;i<searchValues.length;i++){
        if(i==0) query+="codiceProduttoreSp:"+searchValues[i].toUpperCase();
        else query+="+"+searchValues[i].toUpperCase();

    }
    query +=")+("
    for(i=0;i<searchValues.length;i++){
        query+="_text_:"+searchValues[i]+"~0.7 ";
    }
    query +=")+("
    for(i=0;i<searchValues.length;i++){
        query+="_desc_:"+searchValues[i]+"~0.7 ";
    }
    query+="))";
    return query;
}

function getQueryCatalogo(macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,promo){
    var query = "";   
    if(macroCategoriaId!=''){
        query+= " AND (macroCategoriaId:"+macroCategoriaId+")";
    }
    if(categoriaId!=''){
        query+= " AND (categoriaId:"+categoriaId+")";
    }
    if(gruppo!=''){
        query+= " AND (gruppo:\""+gruppo+"\")";
    }
    if(catmercId!=''){
        query+= " AND (catMercId:"+catmercId+")";
    }
    if(brand!=''){
        query+= " AND (brandId:"+brand+")";
    }
    if(famigliaId!=''){
        query+= " AND (famigliaId:"+famigliaId+")";
    }
    if(grMasterId!=''){
        query+= " AND (grMasterId:"+grMasterId+")";
    }
    if(promo=='S'){
        query+= " AND (promo:S)";
    }
    return query;
}

function getFacet(macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId){
    var facet = "";
    if(macroCategoriaId==''){
        facet = "facet.field=macroCategoria";
        facet += "&facet.field=categoria";
    }else if(categoriaId==''){
        facet = "facet.field=categoria";
    }else if(gruppo==''){
        facet = "facet.field=gruppo";
    }else if(catmercId ==''){
        facet = "facet.field=catMerc";
    }else{
        if(brand==''){
            facet="facet.field=brand";
        }
        if(famigliaId==''){
            if(facet!='')facet+="&";
            facet+="facet.field=famiglia";
        }
        if(grMasterId==''){
            if(facet!='')facet+="&";
            facet+="facet.field=grMaster";
        }
    }
    if(facet!=''){
        facet = "&facet=on&"+facet;
    }
    return facet;
}

//cotruisce l'url SOLR da chiamare
function getSolrUrl(solrHost,query,facet,start,rows,searchText){
    var solrUrl = solrHost;
    //query
    solrUrl+="?q="+ Url.encode(query).replace(/_text_/g,"%2Btext").replace(/_desc_/g,"%2Bdesc");
    //version
    solrUrl+="&version=2.2";
    //paginazione
    solrUrl+="&start="+start+"&rows="+rows;
    //tipo di output
    solrUrl+="&wt=json";
    //ordinameto dei risutlati
    if(searchText=='*'){
        solrUrl+="&sort=numeroVendite+desc,score+desc";
    }else{
        solrUrl+="&sort=score+desc";
    }
    //aggiungo le facet
    solrUrl+=facet;

    return solrUrl;
}

//costruisce il link della chiamata alla pagina di ricerca
function getSearchLink(searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,promo){
    var url = "<a href=\"";
    url+=getSearchUrl(searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId,promo,'','','',true);
    url+="\">";
    return url;
}

function getSearchUrl(searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,promo,start,rows,total,bSearch){
    var url = "";
    if(bSearch){
        url+="search.jsp?";
    }
    url+="s="+searchText;
    url+="&m="+macroCategoriaId;
    url+="&c="+categoriaId;
    url+="&g="+gruppo;
    url+="&cm="+catmercId;
    url+="&b="+brand;
    url+="&f="+famigliaId;
    url+="&gm="+grMasterId;
    url+="&p="+promo;
    url+="&first="+start+"&max="+rows+"&total="+total;
    return url;
}

//stampa l'elenco degli articoli
function printArticoliList(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,promo,contextPath,start, rows){
    var output = "<ul class=\"price-list\">";
    var articoliList = getArticoliList(jsonObj);
    for(var i =0;i<articoliList.length;i++){
        output+="<li>";
        var articolo = articoliList[i];
        var isPromo = articolo.promo;
        var imageUrl = articolo.immagine;
        var idArticolo = articolo.id;
        var detailUrl = contextPath+"/catalogo/articolo_detail.jsp?idP="+idArticolo;
        detailUrl+="&"+getSearchUrl(searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId, promo, start, rows,'',false);
        //immagine
        output+= "<div class=\"visual\">";
            output+="<a href=\""+detailUrl+"\">";
            if(imageUrl!=''){
                output+="<img title=\""+articolo.immagineTitolo+"\" src=\""+imageUrl+"\" alt=\""+articolo.immagineTitolo+"\">";
            }else{
                output+="<img title=\"Immagine non disponibile\" src=\""+contextPath+"/images/nondispo_small.gif\" alt=\"Immagine non disponibile\" width=\"110\" height=\"84\">";
            }
            output+="</a>";
            if(isPromo=='S'){
                 output+="<a href=\""+detailUrl+"\" class=\"promo\">promo</a>";
            }
        output+="</div>";

        //informazione del prodotto
        output+="<div class=\"product-info\">";
            //codice produttore
            output+="<a href=\""+detailUrl+"\" class=\"cod\">"+ articolo.modello +"</a>";
            output+="<div class=\"product-name\">";
                //modello
                output+="<a href=\""+detailUrl+"\">"+articolo.codiceProduttore+"</a>";
                //descrizione lunga
                output+="<div class=\"info-box\">";
                    output+="<span>";
                    if(articolo.descrizioneEstesa!=''){
                        output+=articolo.descrizioneEstesa;
                    }else{
                        output+=articolo.descrizione;
                    }
                    output+="</span>"
                output+="</div>";
            output+="</div>";
            //descrizione breve
            output+="<span class=\"param\">"+articolo.descrizione+"</span>";
            //validità promo
            if(isPromo=='S'){
                 output+="<span class=\"date\">promozone valida dal" ;
                 output+="<span class=\"mark\"> "+articolo.promoDataInizio+"</span>";
                 output+=" al <span class=\"mark\"> "+articolo.promoDataFine+"</span>";
                 output+="</span>";
            }
            //prezzo
            output+="<strong class=\"price\"><div id=\"prezzo"+i+"\"></div></strong>";
        output+="</div>";

        //colonna destra
        output+="<div class=\"sub-box\">";
            output+="<dl>";
                //disponibilità
                output+="<dt>Disponibilit&agrave;:</dt>";
                output+="<dd>"+articolo.disponibilita+"</dd>";
                output+="<dt>In arrivo:</dt>";
                output+="<dd>"+articolo.arrivi+"</dd>";
            output+="</dl>";
            //form aggiunta al carrello
            output+="<form name=\"form"+i+"\" method=\"get\" action=\""+contextPath+"/cart/cart_add.jsp\" class=\"amount-form\"><fieldset><div class=\"row\">";
            output+="<input type=\"hidden\" name=\"a\" id=\"a\" value=\""+idArticolo+"\">";
            output+="<span><input type=\"text\" class=\"text\" name=\"q\" id=\"q\" value=\"1\" /></span>";
            output+="</div></fieldset></form>";

            output+="<ul class=\"aggiungi-links\"><li id=\"aggiungi"+i+"\">";
            output+="<a href=\"javascript:document.form"+i+".submit()\">";
            output+="<img title=\"Aggiungi al carrello\" src=\""+contextPath+"/images/ico02.gif\" alt=\"Aggiungi al carrello\">";
            output+="</a></li></ul>";
        output+="</div></li>";
    }
    output+="</ul>";
    return output;
}

function getMacroCategoriaSelected(jsonObj,searchText,macroCategoriaId,promo){
    var output = "";
    var articolo = getFirstArticolo(jsonObj);
    output+= getSearchLink(searchText,macroCategoriaId,'','', '', '', '','',promo);
    output+= articolo.macroCategoriaDescrizione;
    output+= "</a>";
    return output;
}

//elenco categorie
function getMacroCategorie(jsonObj,searchText,promo){
    var output = "";
    var macroCategorieList = jsonObj.facet_counts.facet_fields.macroCategoria;
    for(var i =0;i<macroCategorieList.length;i = i+2){
        if(macroCategorieList[i+1]!='0'){
            var macroCategorias = macroCategorieList[i].split("|");
            output += "<ul class=\"sub-nav"+macroCategorias[0]+"\">";
            output += "<li class=\"active\">";
            output+= getSearchLink(searchText,macroCategorias[0],'','', '', '', '','',promo);
            output+= macroCategorias[1];
            output+= "</a>";
            output+=getCategorie(jsonObj, searchText, macroCategorias[0], promo,false);
            output+="</li></ul>"
        }
    }
    return output;
}

//elenco categorie
function getCategorie(jsonObj,searchText,macroCategoriaId,promo,bPrintPromo){
    var output = "<ul>";
    var categorieList = jsonObj.facet_counts.facet_fields.categoria;
    for(var i =0;i<categorieList.length;i = i+2){
        if(categorieList[i+1]!='0'){
            var categorias = categorieList[i].split("|");
            var macroId = categorias[2];
            if(macroId==macroCategoriaId){
                output+= "<li>";
                output+= getSearchLink(searchText,macroCategoriaId, categorias[0], '', '', '', '', '',promo);
                output+= categorias[1] + " ("+ categorieList[i+1] +")";
                output+="</a></li>"
            }
        }else{
            break;
        }
    }
    if(bPrintPromo){
        output+=getPromo(searchText, macroCategoriaId, '', '', '', '', '', '', promo);
    }
    output+="</ul>";
    return output;
}

function getCategoriaSelected(jsonObj,searchText,promo,macroCategoriaId,categoriaId){
    var output = "";
    var articolo = getFirstArticolo(jsonObj);
    output+= getSearchLink(searchText,macroCategoriaId,categoriaId,'', '', '', '','',promo);
    output+= articolo.categoriaDescrizione;
    output+= "</a>";
    output+="<a href=\""+getSearchUrl(searchText,macroCategoriaId,'','', '', '', '','',promo,'','','',true)+"\" class=\"close\">close</a>"
    return output;
}

//elenco gruppi
function getGruppi(jsonObj,searchText,macroCategoriaId,categoriaId,promo){
    var output = "<ul>";
    var gruppoList = jsonObj.facet_counts.facet_fields.gruppo;
    for(var i =0;i<gruppoList.length;i = i+2){
        if(gruppoList[i+1]!='0'){
            output+= "<li>";
            output+= getSearchLink(searchText,macroCategoriaId,categoriaId,gruppoList[i], '', '', '', '',promo);
            output+= gruppoList[i] + " ("+ gruppoList[i+1] +")";
            output+="</a></li>";
        }else{
            break;
        }
    }
    output+="</ul>";
    return output;
}

function getGruppoSelected(jsonObj,searchText,promo,macroCategoriaId,categoriaId,gruppo){
    var output = "";
    var articolo = getFirstArticolo(jsonObj);
    output+= getSearchLink(searchText,macroCategoriaId,categoriaId,gruppo, '', '', '','',promo);
    output+= articolo.gruppo;
    output+= "</a>";
    output+="<a href=\""+getSearchUrl(searchText,macroCategoriaId,categoriaId,'', '', '', '','',promo,'','','',true)+"\" class=\"close\">close</a>"
    return output;
}

//elenco categorie merceologiche
function getCatMercList(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,promo){
    var output = "<ul>";
    var catmercList = jsonObj.facet_counts.facet_fields.catMerc;
    for(var i =0;i<catmercList.length;i = i+2){
        if(catmercList[i+1]!='0'){
            var catmercs = catmercList[i].split("|");
            output+= "<li>";
            output+= getSearchLink(searchText,macroCategoriaId,categoriaId,gruppo, catmercs[0], '', '', '',promo);
            output+= catmercs[1] + " ("+ catmercList[i+1] +")";
            output+="</a></li>";
        }else{
            break;
        }
    }
    output+="</ul>";
    return output;
}

function getCatMercSelected(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,catMercId,promo){
    var output = "";
    var articolo = getFirstArticolo(jsonObj);
    output+= getSearchLink(searchText,macroCategoriaId,categoriaId,gruppo, catMercId, '', '','',promo);
    output+= articolo.catMercDescrizione;
    output+= "</a>";
    output+="<a href=\""+getSearchUrl(searchText,macroCategoriaId,categoriaId,gruppo, '', '', '','',promo,'','','',true)+"\" class=\"close\">close</a>"
    return output;
}

//articoli in promozione
function getPromo(searchText,macroCategoriaId,categoriaId,gruppo,catmerc,brand,famigliaId,grMasterId,promo){
    var output = "<li class=\"active\">";
    output+=getSearchLink(searchText,macroCategoriaId,categoriaId,gruppo, catmerc, brand, famigliaId, grMasterId,'S')
    output+="Tutte le promo</a>";
    if(promo=='S'){
        output+="<a href=\""+getSearchUrl(searchText,macroCategoriaId,categoriaId,gruppo, catmerc, brand, famigliaId, grMasterId,'','','','',true)+"\" class=\"close\">close</a>"
    }
    output+="</li>";
    return output;
}

//elenco e brand o brand selezionato
function getBrand(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,catmerc,brand,famigliaId,grMasterId,promo){
    var output = "<li class=\"active\">";
    output+= "<a href=\"#\">Brand</a>";
    if(brand!=''){
        var articolo = getFirstArticolo(jsonObj);
        output+="<a href=\""+getSearchUrl(searchText,macroCategoriaId,categoriaId,gruppo, catmerc, '', famigliaId, grMasterId,promo,'','','',true)+"\" class=\"close\">close</a>";
        output+="<ul><li class=\"active\"><ul><li>";
        output+="<a href=\"#\">"+articolo.brandDescrizione+"</a>";
        output+="</li></ul></li></ul>";
    }else{
        var brandList = jsonObj.facet_counts.facet_fields.brand;
        output+="<ul><li class=\"active\">";
        for(var i =0;i<brandList.length;i = i+2){
            if(brandList[i+1]!='0'){
                var brandObj = brandList[i].split("|");
                output+="<ul><li>";
                output+= getSearchLink(searchText,macroCategoriaId, categoriaId,gruppo, catmerc, brandObj[0], famigliaId, grMasterId,promo);
                output+= brandObj[1] + " ("+ brandList[i+1] +")</a>";
                output+="</li></ul>";
            }else{
                break;
            }
        }
        output+="</li></ul>";
    }
    output+="</li>";
    return output;
}

//elenco famiglie o famiglia selezionata
function getFamiglia(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,catmerc,brand,famigliaId,grMasterId,promo){
    var output = "<li class=\"active\">";
    output+= "<a href=\"#\">Specifiche</a>";
    if(famigliaId!=''){
        var articolo = getFirstArticolo(jsonObj);
        output+="<a href=\""+getSearchUrl(searchText,macroCategoriaId,categoriaId,gruppo, catmerc, brand, '', grMasterId,promo,'','','',true)+"\" class=\"close\">close</a>";
        output+="<ul><li class=\"active\"><ul><li>";
        output+="<a href=\"#\">"+articolo.famigliaDescrizione+"</a>";
        output+="</li></ul></li></ul>";
    }else{
        var famList = jsonObj.facet_counts.facet_fields.famiglia;
        output+="<ul><li class=\"active\">";
        for(var i =0;i<famList.length;i = i+2){
            if(famList[i+1]!='0'){
                var famiglia = famList[i].split("|");
                output+="<ul><li>";
                output+= getSearchLink(searchText,macroCategoriaId, categoriaId,gruppo, catmerc, brand, famiglia[0], grMasterId,promo);
                output+= famiglia[1] + " ("+ famList[i+1] +")</a>";
                output+="</li></ul>";
            }else{
                break;
            }
        }
        output+="</li></ul>";
    }
    output+="</li>";
    return output;
}

//elenco gruppi master o gruppo master selezionato
function getGrMaster(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,catmerc,brand,famigliaId,grMasterId,promo){
    var output = "<li class=\"active\">";
    output+= "<a href=\"#\">Modello</a>";
    if(grMasterId!=''){
        var articolo = getFirstArticolo(jsonObj);
        output+="<a href=\""+getSearchUrl(searchText,macroCategoriaId,categoriaId,gruppo, catmerc, brand, famigliaId, '',promo,'','','',true)+"\" class=\"close\">close</a>";
        output+="<ul><li class=\"active\"><ul><li>";
        output+="<a href=\"#\">"+articolo.grMasterDescrizione+"</a>";
        output+="</li></ul></li></ul>";
    }else{
        var grMasterList = jsonObj.facet_counts.facet_fields.grMaster;
        output+="<ul><li class=\"active\">";
        for(var i =0;i<grMasterList.length;i = i+2){
            if(grMasterList[i+1]!='0'){
                var grMaster = grMasterList[i].split("|");
                output+="<ul><li>";
                output+= getSearchLink(searchText,macroCategoriaId, categoriaId,gruppo, catmerc, brand, famigliaId, grMaster[0],promo);
                output+= grMaster[1] + " ("+ grMasterList[i+1] +")</a>";
                output+="</li></ul>";
            }else{
                break;
            }
        }
        output+="</li></ul>";
    }
    output+="</li>";
    return output;
}

//restiruisce la lista degli articoli presenti nell'oggetto json
function getArticoliList(jsonObj){
    return jsonObj.response.docs
}

//restituisce il primo articolo presente nella lista del risultato
function getFirstArticolo(jsonObj){
    var articolo;
    var articoliList = getArticoliList(jsonObj);
    for(var i =0;i<articoliList.length;i++){
        articolo = articoliList[i];
        break;
    }
    return articolo;
}

//cancella tutto il contenuto della pagina stampato in precendenza
function cleanHtml(){
    $("#div_totrec").html('');
    $("#div_search").html('');
    $("#div_cat").html('');
    $("#div_brand").html('');
    $("#div_fam").html('');
    $("#div_grMaster").html('');
}

//stampa l'html del risultato
function printHtml(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,start,rows,promo,contextPath,idCliente){
    //totale articoli
    //$("#div_totrec").html("Totale articoli trovati: "+ jsonObj.response.numFound+"<br/>"+query+"<br/>"+url);
    var total = jsonObj.response.numFound;
    if(total==0){
         var message = "";
         if(promo=='S'){
             message = "Siamo spiacenti ma non sono presenti prodotti in promozione nella categoria selezionata.<br/>";
         }else{
             message = "Siamo spiacenti ma la ricerca non ha prodotto risultati.<br/>Se state cercando un prodotto non a catalogo contattate il nostro servizio clienti: <br/><br/>- numero verde: 800.10.12.12<br/>- email: <a href=\"mailto:info@npodirect.it\" style=\"text-decoration:underline;\">info@npodirect.it</a><br/>";
         }
         message+="<br/><br/><a href=\"javascript:history.back()\" style=\"text-decoration:underline;\">Indietro</a>";
         $("#articoli").html(message);
    }else{
        //elenco articoli
        $("#articoli").html(printArticoliList(jsonObj,searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,promo,contextPath,start,rows));
        var articoliList = getArticoliList(jsonObj);
        for(var i =0;i<articoliList.length;i++){
            var articolo = articoliList[i];
            getPrezzo(contextPath,articolo.id, idCliente,i);
        }
        printPaginazione(total, start, rows,searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,promo,contextPath);

        var htmlSideBar = "";
        if(macroCategoriaId==''){
            htmlSideBar = getMacroCategorie(jsonObj, searchText, promo);
        }else{
            htmlSideBar = getSideBar(jsonObj, searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId, promo);
        }

        $("#sidebar").html(htmlSideBar);
    }
}

function printPaginazione(total,start,rows,searchText,macroCategoriaId,categoriaId,gruppo,catmercId,brand,famigliaId,grMasterId,promo,contextPath){
    var url = contextPath+"/include/i_paginazione.jsp?";
    //aggiungo i parametri di ricerca
    url+=getSearchUrl(searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId,promo,start,rows,total,false);
    //alert(url);
    $.ajax({
        url: url,
        cache: false,
        success: function(html){
            //alert(html);
            $("#div_pag_top").html(html);
            $("#div_pag_bottom").html(html);
        },
        error: function(){
            return false;
        }
    });
}

function getSideBar(jsonObj, searchText,macroCategoriaId, categoriaId, gruppo, catmercId,brand,famigliaId,grMasterId,promo){
    var html = "<ul class=\"sub-nav"+macroCategoriaId+"\">";
    html += "<li class=\"active\">";
    //macro categoria selezionata
    html+=getMacroCategoriaSelected(jsonObj, searchText,macroCategoriaId, promo);
    if(categoriaId==''){
        //elenco categorie
        html+= getCategorie(jsonObj,searchText,macroCategoriaId,promo,true);
    }else{
        html+="<ul>";
            html+="<li class=\"active\">";
            //categoria selezionata
            html+=getCategoriaSelected(jsonObj, searchText, promo, macroCategoriaId, categoriaId);
            if(gruppo==''){
                html+=getGruppi(jsonObj, searchText, macroCategoriaId, categoriaId, promo);
            }else{
                //gruppo selezionato
                html+="<ul><li class=\"active\">";
                html+=getGruppoSelected(jsonObj, searchText, promo, macroCategoriaId, categoriaId, gruppo);
                if(catmercId==''){
                    html+=getCatMercList(jsonObj, searchText, macroCategoriaId, categoriaId, gruppo, promo);
                }else{
                    html+="<ul><li class=\"active\">";
                    html+=getCatMercSelected(jsonObj, searchText, macroCategoriaId, categoriaId, gruppo, catmercId, promo);
                    html+="</li></ul>";
                }
                html+="</li></ul>";
            }
            html+="</li>";
            html+=getPromo(searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId, promo);
            if(catmercId!=''){
                //brand
                html+=getBrand(jsonObj, searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId, promo);
                //famiglia
                html+=getFamiglia(jsonObj, searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId, promo);
                //modello
                html+=getGrMaster(jsonObj, searchText, macroCategoriaId, categoriaId, gruppo, catmercId, brand, famigliaId, grMasterId, promo);
            }
        html+="</ul>";
    }
    html +="</li></ul>";
    return html;
}

function getPrezzo(contextPath,idArticolo,idCliente,divId){
    //alert(contextPath+"/util/prezzo_search.jsp?id="+idArticolo+"&cli="+idCliente);
    $.ajax({
        url: contextPath+"/util/prezzo_search.jsp?id="+idArticolo+"&cli="+idCliente,
        cache: false,
        success: function(html){
            if(html!=''){
                $("#prezzo"+divId).html(html);
            }
        },
        error: function(){
            $("#prezzo"+divId).html("");
        }
    });
}