var serverPath = null;
var BROWSED_ONTOLOGY_COOKIE = "lastSelectedOntology";

function setServerPath(spath) {
    serverPath = spath;
}

function fireUpdate() {

    //searched all ontologies
    var ontNameEl = document.getElementById("ontologyName");
    var ontName = ontNameEl.options[ontNameEl.selectedIndex].value;
    if (ontName == null || ontName == "null") {

        //update ontology selector
        var termName = document.getElementById("termName");
        var ontPrefix = termName.value.substring(0, termName.value.indexOf(":"));
        var optionsLen = ontNameEl.options.length;
        for (i = 0; i < optionsLen; i++) {
            if (ontNameEl.options[i].value == ontPrefix) {
                ontNameEl.options[i].selected = true;
                break;
            }
        }

        //update term name
        termName.value = termName.value.substring(termName.value.indexOf(":") + 1);

    }

    //fire get metadata ajax call
    var termid = document.getElementById("termId");
    if (termid.value != '') {
        updater.actionElemClicked();
        setMetadataMessage('Retrieving information for: ' + termid.value);
    }
}

function setMetadataMessage(msg) {
    var metadata = document.getElementById("metadata");
    metadata.innerHTML = msg;
}

function showErrorMessage() {
    var termid = document.getElementById("termId");
    setMetadataMessage("An error occurred while retrieving data for term: " + termid.value);
}

function showNoDataMessage() {
    var termid = document.getElementById("termId");
    setMetadataMessage("No additional information available for: " + termid.value);
}

function resetname() {
    var termname = document.getElementById("termName");
    termname.value = "";
    var ontNameEl = document.getElementById("ontologyName");
    var ontName = ontNameEl.options[ontNameEl.selectedIndex].value;
    setOlsCookie(BROWSED_ONTOLOGY_COOKIE, ontName, null);
    resetform();
}

function resetform() {
    var termid = document.getElementById("termId");
    termid.value = '';
    var mdata = document.getElementById("metadata");
    mdata.innerHTML = '';
    var popup = document.getElementById("ajaxAutocompletePopup");
    popup.style.visibility = 'hidden';
}

function browseOntology() {
    var ontNameEl = document.getElementById("ontologyName");
    var ontName = ontNameEl.options[ontNameEl.selectedIndex].value;
    if (ontName != null && ontName != "" && ontName != "null") {
        var termId = document.getElementById("termId").value;
        var termName = document.getElementById("termName").value;
        var url = serverPath + "/browse.do?ontName=" + ontName;
        if (termId != null && termId != "") {
            url += "&termId=" + escape(termId);
            url += "&termName=" + escape(termName);
        }
        window.location.replace(url);
    } else {
        alert("Please select an ontology to browse from the menu.");
    }
}

function setOlsCookie(c_name, value, expiredays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    var cookieStr = c_name + "=" + escape(value) +
                    ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
    //    alert(cookieStr);
    document.cookie = cookieStr;
}

function getOlsCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) {
                c_end = document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

function checkOntologyCookie() {
    var ontCookie = getOlsCookie(BROWSED_ONTOLOGY_COOKIE);
    if (ontCookie != "") {
        var ontNameEl = document.getElementById("ontologyName");
        for (var i = 0; i < ontNameEl.options.length; i++) {
            if (ontNameEl.options[i].value == ontCookie) {
                ontNameEl.options[i].selected = true;
                break;
            }
        }
    }
}

