
/**
 * Awesomecomplete — A lightweight, simple autocomplete plugin
 *  Clint Tseng (clint@dontexplain.com) — 2009-08-20
 *    I think licenses are dumb and superfluous. I'm releasing this into the
 *    wild under public domain, but please do let me know what you think!
 */

(function($)
{
    var ident = 0;

    // Initializer. Call on a text field to make things go.
    $.fn.awesomecomplete = function(options)
    {
        var options = $.extend({}, $.fn.awesomecomplete.defaults, options);

        return this.each(function()
        {
            var $this = $(this);
            var config = $.meta ? $.extend({}, options, $this.data()) : options;
            $this.data('awesomecomplete-config', config);

            var $attachTo = $(config.attachTo || $this);
            var $list = $('<ul/>').addClass(config.suggestionListClass)
                                  .insertAfter($attachTo)
                                  .hide()
                                  .css('width', $attachTo.innerWidth());
            $this.data('awesomecomplete-list', $list);

            var typingDelayPointer;
            var suppressKey = false;
            $this.keyup(function(event)
            {
                if (suppressKey)
                {
                    suppressKey = false;
                    return;
                }

                // ignore arrow keys, shift
                if ( ((event.which > 36) && (event.which < 41)) ||
                     (event.which == 16) )
                    return;

                if (config.typingDelay > 0)
                {
                    clearTimeout(typingDelayPointer);
                    typingDelayPointer = setTimeout(function() { processInput($this); });
                }
                else
                {
                    processInput($this);
                }
            });

        });
    };

    // Data callback.  If you're using callbacks to a server,
    // call this on the autocompleted text field to complete the
    // callback process after you have your matching items.
    $.fn.awesomecomplete.onData = function(data, term)
    {
        return this.each(function()
        {
            var $this = $(this);
            processData($this, data, (term || $this.val()));
        });
    };


// private helpers
    var processInput = function($this)
    {
        if (typeof dataMethod === 'function')
        {
            dataMethod($this.val(), $this);
        }
        else
        {
            processData($this, $this.data('awesomecomplete-config').staticData, $this.val());
        }
        // mostrar no local dos exames
        if ( $('.autocomplete').children().size() > 0 ) {
        	$('#exames_list').hide();
        }else{
        	$('#exames_list').show();
        }
        
    };
    
    var processData = function($this, data, term)
    {
        var $list = $this.data('awesomecomplete-list');
        $list.empty().hide();
        if (term === '')
            return;

        var config = $this.data('awesomecomplete-config');

        var results = [];
        for (var item = 0; item < data.length; item++)
        {
            var dataItem = jQuery.extend({}, data[item]);
            var matchCount = 0;

            var maxFieldMatches = 0;
            var topMatch = null;
            var matchedTerms = [];

            for (var field in dataItem)
            {
                if ((typeof dataItem[field] === 'function') || (typeof dataItem[field] === 'object'))
                    continue;

                for (var j = 0; j < config.dontMatch.length; j++)
                    if (field == config.dontMatch[j])
                        continue;

                var dataString = dataItem[field].toString();
                var terms = [ term ];
                if (config.splitTerm)
                    terms = term.split(config.wordDelimiter);

                for (var j = 0; j < terms.length; j++)
                {
                    if (terms[j] === '')
                        continue;

                    terms[j] = terms[j].replace(/[\\*+?|{}()^$.#]/g, '\\$1');
                    var regex = new RegExp('(' + terms[j] + ')', (config.ignoreCase ? 'ig' : 'g'));

                    var matches = [];
                    if (matches = dataString.match(regex))
                    {
                        matchCount += matches.length;

                        if ((field != config.nameField) && (matches.length > maxFieldMatches))
                        {
                            maxFieldMatches = matches.length;
                            topMatch = field;
                            matchedTerms[j] = true;
                        }
                    }
                }

                if (config.highlightMatches)
                {
                    var regex = new RegExp('(' + terms.join('|') + ')', (config.ignoreCase ? 'ig' : 'g'));
                    dataItem[field] = dataString.replace(regex, '<span class="' + config.highlightClass + '">$1</span>');
                }
            }

            var matchedTermCount = 0;
            for (var j = 0; j < matchedTerms.length; j++)
                if (matchedTerms[j] === true)
                    matchedTermCount++;

            if (matchCount > 0)
                results.push({
                    dataItem: dataItem,
                    originalDataItem: data[item],
                    matchCount: matchCount,
                    topMatch: topMatch,
                    matchedTermCount: matchedTermCount
                });
        }

        results.sort(function(a, b)
        {
            return (a.matchedTermCount == b.matchedTermCount) ?
                   (b.matchCount - a.matchCount) :
                   (b.matchedTermCount - a.matchedTermCount);
        });
        results = results.slice(0, config.resultLimit);

        for (var i in results)
        {
            $('<li>' + config.renderFunction(results[i].dataItem, results[i].topMatch, results[i].originalDataItem) + '</li>')
                .data('awesomecomplete-value', config.valueFunction(results[i].originalDataItem))
                .appendTo($list)
                .click(function()
                {
                    $this.val($(this).data('awesomecomplete-value'));
                })
                .mouseover(function()
                {
                    $(this).addClass(config.activeItemClass)
                           .siblings().removeClass(config.activeItemClass);
                });
        }

        if ((config.noResultsMessage !== undefined) && (results.length == 0))
            $list.append($('<li class="' + config.noResultsClass + '">' + config.noResultsMessage + '</li>'));

        if ((results.length > 0) || (config.noResultsMessage !== undefined))
            $list.show();
    };

// default functions
    var defaultRenderFunction = function(dataItem, topMatch)
    {
        if (topMatch === 'name')
            return '<p class="title">' + dataItem['name'] + '</p>';
        else
            return '<p class="title">' + dataItem['name'] + '</p>' +
                   '<p class="matchRow"><span class="matchedField">' + topMatch + '</span>: ' +
                        dataItem[topMatch] + '</p>';
    };
    
    var defaultValueFunction = function(dataItem)
    {
        return dataItem[config.nameField];
    };

    $.fn.awesomecomplete.defaults = {
        activeItemClass: 'active',
        attachTo: undefined,
        dataMethod: undefined,
        dontMatch: [],
        highlightMatches: true,
        highlightClass: 'highlight1',
        ignoreCase: true,
        nameField: 'name',
        noResultsClass: 'noResults',
        noResultsMessage: undefined,
        splitTerm: true,
        staticData: [],
        suggestionListClass: "autocomplete",
        renderFunction: defaultRenderFunction,
        resultLimit: 9999,
        typingDelay: 0,
        valueFunction: defaultValueFunction,
        wordDelimiter: /[^\da-zàáãéêóôç]+/ig
    };
})(jQuery);

jQuery(document).ready(function($){

$(function()
{
    // Imagine, for instance, that this data was rendered server-side

    var mockData = [
    { url: '/17-hidroxiprogesterona/', name: '17 HIDROXIPROGESTERONA'},
	{ url: '/acido-urico-no-soro/', name: 'ÁCIDO ÚRICO NO SORO'},
	{ url: '/acth/', name: 'ACTH'},
	{ url: '/aldolase/', name: 'ALDOLASE'},
	{ url: '/aldosterona-no-soro/', name: 'ALDOSTERONA'},
	{ url: '/aldosterona-urinaria/', name: 'ALDOSTERONA URINÁRIA'},
	{ url: '/alfa-1-glicoproteina-acida/', name: 'ALFA-1-GLICOPROTEÍNA ÁCIDA'},
	{ url: '/amp-ciclico/', name: 'AMP CÍCLICO'},
	{ url: '/androstenediona-delta-4/', name: 'ANDROSTENEDIONA - DELTA 4'},
	{ url: '/antigeno-australia-hbsag/', name: 'ANTÍGENO AUSTRALIA-HBsAG'},
	{ url: '/anticorpos-anti-gad/', name: 'ANTICORPOS ANTI GAD'},
	{ url: '/anticorpos-antiinsulina/', name: 'ANTICORPOS ANTIINSULINA'},
	{ url: '/anticorpo-antimicrossomal/', name: 'ANTICORPOS ANTIMICROSSOMAL-ANTI TPO'},
	{ url: '/anticorpos-antitiroglobulina/', name: 'ANTICORPOS ANTITIROGLOBULINA'},
	{ url: '/apolipoproteina-a1/', name: 'APOLIPOPROTEINA A1'},
	{ url: '/calcio-no-soro/', name: 'CÁLCIO NO SORO'},
	{ url: '/catecolaminas-plasmaticas/', name: 'CATECOLAMINAS PLASMÁTICAS'},
	{ url: '/catecolaminas-urinarias/', name: 'CATECOLAMINAS URINÁRIAS'},
	{ url: '/caxumba-sorologia-igg-e-igm/', name: 'CAXUMBA- SOROLOGIA IgG e IgM'},
	{ url: '/cd4-e-cd8-linfocitos-t-auxiliadores-helper-e-supressores/', name: 'CD4 e CD8, LINFÓCITOS T - AUXILIADORES (HELPER) E SUPRESSORES'},
	{ url: '/cea/', name: 'CEA'}, 
	{ url: '/ceruloplasmina/', name: 'CERULOPLASMINA'}, 
	{ url: '/chagas-machado-guerreiro/', name: 'CHAGAS, MACHADO GUERREIRO'}, 
	{ url: '/chagas-sorologia/', name: 'CHAGAS, SOROLOGIA'}, 
	{ url: '/ciclosporina/', name: 'CICLOSPORINA'}, 
	{ url: '/cistina/', name: 'CISTINA'}, 
	{ url: '/citomegalovirus/', name: 'CITOMEGALOVÍRUS'}, 
	{ url: '/ckmb/', name: 'CKMB'}, 
	{ url: '/clamidia-sorologia/', name: 'CLAMÍDIA-SOROLOGIA'}, 
	{ url: '/clearance-de-creatinina/', name: 'CLEARANCE DE CREATININA'}, 
	{ url: '/cloro-no-soro/', name: 'CLORO NO SORO'}, 
	{ url: '/coagulograma/', name: 'COAGULOGRAMA'}, 
	{ url: '/cobre-no-soro/', name: 'COBRE NO SORO'}, 
	{ url: '/colesterol-total-e-fracoes/', name: 'COLESTEROL TOTAL E FRAÇÕES'}, 
	{ url: '/complemento-c3/', name: 'COMPLEMENTO C3'}, 
	{ url: '/complemento-c4/', name: 'COMPLEMENTO C4'}, 
	{ url: '/complemento-total/', name: 'COMPLEMENTO TOTAL'}, 
	{ url: '/coombs-direto/', name: 'COOMBS DIRETO'}, 
	{ url: '/coombs-indireto/', name: 'COOMBS INDIRETO'}, 
	{ url: '/corpos-cetonicos-pesquisa-na-urina', name: 'CORPOS CETÔNICOS, PESQUISA NA URINA'}, 
	{ url: '/cortisol/', name: 'CORTISOL'}, 
	{ url: '/cortisol-urinario/', name: 'CORTISOL URINÁRIO'}, 
	{ url: '/cpk/', name: 'CPK'}, 
	{ url: '/creatinina-no-soro/', name: 'CREATININA NO SORO'}, 
	{ url: '/creatinina-urinaria/', name: 'CREATININA URINÁRIA'}, 
	{ url: '/crioglobulinas-sericas/', name: 'CRIOGLOBULINAS SÉRICAS'}, 
	{ url: '/cultura/', name: 'CULTURA'}, 
	{ url: '/cultura-de-bacilos-de-koch/', name: 'CULTURA DE BACILOS DE KOCH'}, 
	{ url: '/cultura-de-fezes/', name: 'CULTURA DE FEZES'}, 
	{ url: '/cultura-de-secrecao-vaginal/', name: 'CULTURA DE SECREÇÃO VAGINAL'}, 
	{ url: '/cultura-de-urina/', name: 'CULTURA DE URINA'}, 
	{ url: '/cultura-para-fungos/', name: 'CULTURA PARA FUNGOS'}, 
	{ url: '/densidade-urinaria/', name: 'DENSIDADE URINÁRIA'}, 
	{ url: '/densitometria-ossea/', name: 'DENSITOMETRIA OSSEA'}, 
	{ url: '/dhea/', name: 'DHEA'}, 
	{ url: '/dht/', name: 'DHT'}, 
	{ url: '/dismorfismo-eritrocitario-urinario/', name: 'DISMORFISMO ERITROCITÁRIO URINÁRIO'}, 
	{ url: '/eletroforese-de-hemoglobina/', name: 'ELETROFORESE DE HEMOGLOBINA'}, 
	{ url: '/eletroforese-de-proteinas/', name: 'ELETROFORESE DE PROTEÍNAS'}, 
	{ url: '/eletroforese-de-proteinas-urinarias/', name: 'ELETROFORESE DE PROTEÍNAS URINÁRIAS'}, 
	{ url: '/ena-anticorpos-anti/', name: 'ENA, ANTICORPOS ANTI'}, 
	{ url: '/eritrograma/', name: 'ERITROGRAMA'}, 
	{ url: '/estradiol/', name: 'ESTRADIOL'}, 
	{ url: '/estriol/', name: 'ESTRIOL'}, 
	{ url: '/estrona/', name: 'ESTRONA'}, 
	{ url: '/exame-a-fresco/', name: 'EXAME A FRESCO'}, 
	{ url: '/exame-micologico-direto-fungos/', name: 'EXAME MICOLÓGICO DIRETO - FUNGOS'}, 
	{ url: '/fosforo-no-soro/', name: 'FÓSFORO NO SORO'}, 
	{ url: '/fosforo-urinario/', name: 'FÓSFORO URINÁRIO'}, 
	{ url: '/fan/', name: 'FAN'}, 
	{ url: '/fator-reumatoide/', name: 'FATOR REUMATÓIDE'}, 
	{ url: '/ferritina/', name: 'FERRITINA'}, 
	{ url: '/ferro-capacidade-de-fixacao-de-ferro/', name: 'FERRO - CAPACIDADE DE FIXAÇÃO DE FERRO'}, 
	{ url: '/ferro-capacidade-livre-de-fixacao/', name: 'FERRO - CAPACIDADE LIVRE DE FIXAÇÃO'}, 
	{ url: '/ferro-serico/', name: 'FERRO SÉRICO'}, 
	{ url: '/fezes-coprologico-funcional/', name: 'FEZES - COPROLÓGICO FUNCIONAL'}, 
	{ url: '/fezes-pesquisa-de-gordura-fecal/', name: 'FEZES - PESQUISA DE GORDURA FECAL'}, 
	{ url: '/fezes-pesquisa-de-leucocitos/', name: 'FEZES - PESQUISA DE LEUCÓCITOS'}, 
	{ url: '/fezes-pesquisa-de-sangue-oculto/', name: 'FEZES - PESQUISA DE SANGUE OCULTO'}, 
	{ url: '/fezes-ph-fecal/', name: 'FEZES - pH FECAL'}, 
	{ url: '/fezes-protoparasitologico/', name: 'FEZES - PROTOPARASITOLÓGICO'}, 
	{ url: '/fosfatase-alcalina/', name: 'FOSFATASE ALCALINA'}, 
	{ url: '/frutosamina/', name: 'FRUTOSAMINA'}, 
	{ url: '/fsh-hormonio-foliculo-estimulante/', name: 'FSH, HORMÔNIO FOLÍCULO ESTIMULANTE'}, 
	{ url: '/gama-gt/', name: 'GAMA GT'}, 
	{ url: '/gastrina/', name: 'GASTRINA'}, 
	{ url: '/gh-hormonio-de-crescimento/', name: 'GH, HORMÔNIO DE CRESCIMENTO'}, 
	{ url: '/glicemia/', name: 'GLICEMIA'}, 
	{ url: '/glicosuria/', name: 'GLICOSÚRIA'}, 
	{ url: '/haptoglobinas-sericas/', name: 'HAPTOGLOBINAS SÉRICAS'}, 
	{ url: '/hba1c/', name: 'HBA1c'}, 
	{ url: '/helicobacter-pylori-sorologia/', name: 'HELICOBACTER PYLORI - SOROLOGIA'}, 
	{ url: '/hematocrito/', name: 'HEMATÓCRITO'}, 
	{ url: '/hemoglobina/', name: 'HEMOGLOBINA'}, 
	{ url: '/hemograma/', name: 'HEMOGRAMA'}, 
	{ url: '/hemossedimentacao/', name: 'HEMOSSEDIMENTAÇÃO'}, 
	{ url: '/hepatite-a-igg-hav-igg/', name: 'HEPATITE A IGG , HAV - IgG'}, 
	{ url: '/hepatite-a-igm-hav-igm/', name: 'HEPATITE A IGM, HAV - IgM'}, 
	{ url: '/hepatite-b-anticorpo-anti-hbc-igm/', name: 'HEPATITE B - ANTICORPO ANTI HBC IGM'}, 
	{ url: '/hepatite-b-anticorpo-anti-hbc-total/', name: 'HEPATITE B - ANTICORPO ANTI HBC TOTAL'}, 
	{ url: '/hepatite-b-anticorpo-anti-hbe/', name: 'HEPATITE B - ANTICORPO ANTI HBE'}, 
	{ url: '/hepatite-b-anticorpo-anti-hbs/', name: 'HEPATITE B - ANTICORPO ANTI HBS'}, 
	{ url: '/hepatite-b-antigeno-anti-hbe/', name: 'HEPATITE B – ANTÍGENO ANTI HBE'}, 
	{ url: '/hepatite-c-anti-hcv/', name: 'HEPATITE C - ANTI HCV'}, 
	{ url: '/hepatite-e-sorologia/', name: 'HEPATITE E - SOROLOGIA'}, 
	{ url: '/hidroxiprolina/', name: 'HIDROXIPROLINA'}, 
	{ url: '/hiv-anti-hiv-1-e-hiv-2-sida/', name: 'HIV - ANTI HIV 1 E HIV 2 - SIDA'}, 
	{ url: '/homocisteina/', name: 'HOMOCISTEÍNA'}, 
	{ url: '/iga-imunoglobulina-a/', name: 'IGA, IMUNOGLOBULINA A'}, 
	{ url: '/ige-imunoglobulina-e/', name: 'IGE -IMUNOGLOBULINA E'}, 
	{ url: '/igfbp3/', name: 'IGFBP3'}, 
	{ url: '/igg-imunoglobulina-g/', name: 'IGG, IMUNOGLOBULINA G'}, 
	{ url: '/igm-imunoglobulina-m/', name: 'IGM, IMUNOGLOBULINA M'}, 
	{ url: '/insulina/', name: 'INSULINA'}, 
	{ url: '/lipides-totais/', name: 'LÍPIDES TOTAIS'}, 
	{ url: '/litio-no-soro/', name: 'LÍTIO NO SORO'}, 
	{ url: '/leptina/', name: 'LEPTINA'}, 
	{ url: '/leucograma/', name: 'LEUCOGRAMA'}, 
	{ url: '/lh-hormonio-luteinizante/', name: 'LH, HORMÔNIO LUTEINIZANTE'}, 
	{ url: '/lipase/', name: 'LIPASE'}, 
	{ url: '/lipidograma/', name: 'LIPIDOGRAMA'}, 
	{ url: '/macroprolactina/', name: 'MACROPROLACTINA'}, 
	{ url: '/magnesio-no-soro/', name: 'MAGNÉSIO NO SORO'}, 
	{ url: '/metanefrinas-urinarias/', name: 'METANEFRINAS URINÁRIAS'}, 
	{ url: '/microalbuminuria/', name: 'MICROALBUMINÚRIA'}, 
	{ url: '/mononucleose/', name: 'MONONUCLEOSE'}, 
	{ url: '/mucoproteinas/', name: 'MUCOPROTEÍNAS'}, 
	{ url: '/osmolaridade-serica-ou-plasmatica/', name: 'OSMOLARIDADE SÉRICA OU PLASMÁTICA'}, 
	{ url: '/osmolaridade-urinaria/', name: 'OSMOLARIDADE URINÁRIA'}, 
	{ url: '/osteocalcina/', name: 'OSTEOCALCINA'}, 
	{ url: '/paratormonio/', name: 'PARATORMÔNIO'}, 
	{ url: '/peptideo-c/', name: 'PEPTÍDEO C'}, 
	{ url: '/plaquetas-contagem-de/', name: 'PLAQUETAS, CONTAGEM DE'}, 
	{ url: '/potassio-urinario/', name: 'POTÁSSIO URINÁRIO'}, 
	{ url: '/progesterona/', name: 'PROGESTERONA'}, 
	{ url: '/prolactina/', name: 'PROLACTINA'}, 
	{ url: '/proteina-c/', name: 'PROTEÍNA C'}, 
	{ url: '/proteinas-totais-e-fracoes/', name: 'PROTEÍNAS TOTAIS E FRAÇÕES'}, 
	{ url: '/proteina-c-reativa/', name: 'PROTEINA "C" REATIVA'}, 
	{ url: '/proteinuria/', name: 'PROTEINÚRIA'}, 
	{ url: '/psa-livre/', name: 'PSA LIVRE'}, 
	{ url: '/psa-total/', name: 'PSA TOTAL'}, 
	{ url: '/renina/', name: 'RENINA'}, 
	{ url: '/rubeola-anticorpos-iggigm/', name: 'RUBÉOLA - ANTICORPOS IgG/IgM'}, 
	{ url: '/sodio-no-soro/', name: 'SÓDIO NO SORO'}, 
	{ url: '/sifilis-sorologia-vdrl-ftaabs-igg-eou-igm/', name: 'SÍFILIS - SOROLOGIA (VDRL+ FTAABS IGG E/OU IGM)'}, 
	{ url: '/sifilis-vdrl/', name: 'SÍFILIS - VDRL'}, 
	{ url: '/sarampo-sorologia/', name: 'SARAMPO, SOROLOGIA'}, 
	{ url: '/sdhea/', name: 'SDHEA'}, 
	{ url: '/somatomedina-c-igf-1/', name: 'SOMATOMEDINA C, IGF-1'}, 
	{ url: '/subunidade-alfa-livre/', name: 'SUBUNIDADE ALFA LIVRE'}, 
	{ url: '/t3/', name: 'T3'}, 
	{ url: '/t4/', name: 'T4'}, 
	{ url: '/t4-livre/', name: 'T4 LIVRE'}, 
	{ url: '/tbg/', name: 'TBG'}, 
	{ url: '/tempo-de-protrombina/', name: 'TEMPO DE PROTROMBINA'}, 
	{ url: '/tempo-de-trombina/', name: 'TEMPO DE TROMBINA'}, 
	{ url: '/tempo-de-tromboplastina-parcial-ativado/', name: 'TEMPO DE TROMBOPLASTINA PARCIAL ATIVADO'}, 
	{ url: '/testosterona/', name: 'TESTOSTERONA'}, 
	{ url: '/testosterona-livre/', name: 'TESTOSTERONA LIVRE'}, 
	{ url: '/tgo/', name: 'TGO'}, 
	{ url: '/tgp/', name: 'TGP'}, 
	{ url: '/tiroglobulina/', name: 'TIROGLOBULINA'}, 
	{ url: '/toxoplamose-sorologia/', name: 'TOXOPLAMOSE SOROLOGIA'}, 
	{ url: '/triglicerides/', name: 'TRIGLICÉRIDES'}, 
	{ url: '/tsh-hormonio-tireoestimulante/', name: 'TSH, HORMÔNIO TIREOESTIMULANTE'}, 
	{ url: '/ureia-no-soro/', name: 'URÉIA NO SORO'}, 
	{ url: '/vitamina-a/', name: 'VITAMINA A'}, 
	{ url: '/vitamina-b-12/', name: 'VITAMINA B 12'}
];

    
    
    $('#search_field').awesomecomplete({
        noResultsMessage: '<p>nenhum resultado encontrado!</p>',
        staticData: mockData,
        attachTo: '#exames_list',
        renderFunction: function(dataItem, topMatch, originalData)
        {
            text = dataItem['name'] ;
            return '<li><a href="/exames-que-realizamos'+originalData['url']+'">' + text + '</a></li>' ;
        },
        valueFunction: function(dataItem) {
            text = dataItem['name'] ;
            return text;
        }
    });
    
    
});

});