﻿$(document).ready(function () {


    var query = getParamByName('q');

    if (query.length == 0) return;

    DisplaySuggestions(query);

    $('div.eggContainer img').each(function () {
        var dbIdentifier = $(this).attr('longdesc');
        if (dbIdentifier.length == 0) {
            return;
        }

        DoQuery(dbIdentifier, query);
    });
});

function DisplaySuggestions(query) {

    var suggestionUrl = "http://bioportal.bioontology.org/search/json_search/";

    if (query == "") {
        $("#searchSuggestions").append("Ingen søkeforslag på angitt søkeord...");
        return;
    }

    $.ajax({
        url: suggestionUrl,
        type: "GET",
        data: ({ q: query, response: "json" }),
        dataType: "jsonp",
        success: function (response) {
            ProcessSuggestionResult(response);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {

        }
    });

}

function ProcessSuggestionResult(response) {
    var test = response.data.split("~!~");
    var tempArr = new Array();

    $.each(test, function (key, value) {
        var dataItem = value.split("|");
        if (dataItem[0].length > 0)
            tempArr[tempArr.length] = dataItem[0];
    });

    var uniqueSuggestions = tempArr.unique();

    var arrLength = uniqueSuggestions.length;
    var query = getParamByName('q');
    var suggestions = '';
    for (var i = 0; i < arrLength; ++i) {
        if (uniqueSuggestions[i] != query) {
            suggestions = suggestions + ', <a href="/?q=' + uniqueSuggestions[i].replace(' ', '+') + '" title="' + uniqueSuggestions[i] + '">' + uniqueSuggestions[i] + '</a>'
        }
    }

    if (suggestions.length > 0) {
        $("#searchSuggestions").html(suggestions.substring(2, suggestions.length));
    } else {
    $('.searchSuggestions').hide();
    }
}

function DoQuery(dbIdentifier, query) {
    $.ajax({
        url: "queryResult.aspx",
        type: "GET",
        data: ({ dbIdentifier: dbIdentifier, query: query }),
        dataType: "json",
        success: function (result) {
            ProcessSearchResult(result);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {

        }
    })
}

function ProcessSearchResult(result) {
    var img = $("img[longdesc='" + result.DbIdentifier + "']");

    /*
    var wrapper = $("div[title='" + result.Title + "']");

    if (img == null) {
        return;
    }

    img.attr("src", result.Icon);
    $("a[title='" + result.Title + "']").attr("href", result.Url);
        */
    img.after("<span class='badge'>" + result.Hits + "</span>").fadeIn();
    //img.effect("bounce", { times: 5 }, 300);

}

Array.prototype.unique = function () {
    var r = new Array();
    o: for (var i = 0, n = this.length; i < n; i++) {
        for (var x = 0, y = r.length; x < y; x++) {
            if (r[x].toLowerCase() == this[i].toLowerCase()) {
                continue o;
            }
        }
        r[r.length] = this[i];
    }
    return r;
}


