//termino baten irudiak        
var current_termimages;
//terminoa
var current_term;
var current_termkey;

//bilaketa kontagailua, history.back eta history.forward kontrolatu ahal izateko
var searchCounter = 0;

ApplicationState = function(tab, searchText, addWildcardChecked, langOption, knowledgeOption, defChecked, resultOptionSelected, resultPageToShow, imagesPerPage, keyToShow) {
    this.tab = tab;
    this.searchCounter = searchCounter;
    this.searchText = searchText;
    this.addWildcardChecked = addWildcardChecked;
    this.langOption = langOption;
    this.knowledgeOption = knowledgeOption;
    this.defChecked = defChecked;
    this.resultOptionSelected = resultOptionSelected;
    this.resultPageToShow = resultPageToShow;
    this.imagesPerPage = imagesPerPage;
    this.keyToShow = keyToShow ? keyToShow : '';
    this.currentTerm = current_term;
    this.currentTermKey = current_termkey;
}

dojo.extend(ApplicationState, {
    back: function(){
        restoreApplicationState(this);
    },

    forward: function(){
        restoreApplicationState(this);
    }
});

function restoreApplicationState(appState) {
    var tab = document.getElementsByTagName("body")[0].id;

    switch(appState.tab) {
    case 'ata1':
        if (tab != appState.tab) {                    
            displayBasicSearch();
        }
        
        document.getElementById("txtBilagaila").value = appState.searchText;
        document.getElementById("chkErantsi").checked = appState.addWildcardChecked;
        document.getElementById("radio_tes").checked = appState.defChecked;
        document.getElementById("selectHizkuntza").selectedIndex = appState.langOption;
        document.getElementById("selectAlorra").selectedIndex = appState.knowledgeOption;
        
        if ((tab != appState.tab) || (searchCounter != appState.searchCounter) || (0 == appState.searchCounter)) {
            if (appState.searchCounter == 0 || appState.searchText.length == 0) {
                doInitialSearch(appState.currentTermKey, appState.currentTerm);
            }
            else {
                doBasicSearch(appState.resultOptionSelected);
            }
        }
        else {
            getActiveList().selectedIndex = appState.resultOptionSelected;
        }

        if (appState.keyToShow) {
            current_term = appState.currentTerm;
            current_termkey = appState.currentTermKey;
            doShowDocumentOfKey(appState.keyToShow, current_term);
        }
        
        break;
        
    case 'ata2':
        if (tab != appState.tab) {                    
            displayImageSearch();
        }
        
        document.getElementById("selectAlorra").selectedIndex = appState.knowledgeOption;
        
        if ((tab != appState.tab) || (searchCounter != appState.searchCounter) || (0 == appState.searchCounter)) {
            if (appState.searchCounter == 0) {
                doInitialImageSearch(appState.currentTermKey, appState.currentTerm);
            }
            else {
                doImageSearch(appState.resultPageToShow, appState.imagesPerPage, appState.resultOptionSelected);
            }
        }
        else {
            getActiveList().selectedIndex = appState.resultOptionSelected;
        }

        if (appState.keyToShow) {
            current_term = appState.currentTerm;
            current_termkey = appState.currentTermKey;

            if (!appState.keyToShow.match(/^[A-Z]\d+$/))
                doShowDocumentOfKey(appState.keyToShow, current_term);
            else
                doShowSelectedTermsImages(appState.keyToShow, current_term, appState.resultPageToShow, appState.imagesPerPage);
        }
        
        break
        
    case 'ata3':
        if (tab != appState.tab) {
            displayArticleSearch();
        }
        
        document.getElementById("selectAlorra").selectedIndex = appState.knowledgeOption;
        
        if ((tab != appState.tab) || (searchCounter != appState.searchCounter) || (0 == appState.searchCounter)) {

            if (appState.searchCounter == 0) {
                doInitialArticleSearch(appState.currentTermKey, appState.currentTerm);
            }
            else {
                doArticleSearch(appState.resultPageToShow, appState.imagesPerPage, appState.resultOptionSelected);
            }
        }
        else {
            getActiveList().selectedIndex = appState.resultOptionSelected;
        }
        
        if (appState.keyToShow) {

            current_term = appState.currentTerm;
            current_termkey = appState.currentTermKey;

            if (appState.keyToShow.match(/\.xhtml$/)) {
                doShowSelectedTermsArticles(appState.keyToShow);
            }
            else {
                doShowDocumentOfKey(appState.keyToShow, current_term);
            }
        }
        
        break;
        
    case 'ata4':
        if (tab != appState.tab) {
            displayAnnex();
            doInitialAnnexSearch();
        }

        if (appState.keyToShow) {
            doShowAnnexOfKey(appState.keyToShow);
        }
        
        break;
          
    case 'ata5':
        if (tab != appState.tab) {
            displayInfoTab();
        }
        
        if (appState.keyToShow) {
            current_term = appState.currentTerm;
            current_termkey = appState.currentTermKey;
            doShowDocumentOfKey(appState.keyToShow, current_term);
        }
        
        break;
    }
                
    searchCounter = appState.searchCounter;
}

function saveApplicationState(resultPageToShow, imagesPerPage, keyToShow) {
    var tab = document.getElementsByTagName("body")[0].id;
    var searchText = '';
    var addWildcardChecked = false;
    var langOption = 0;
    var knowledgeOption = 0;
    var defChecked = false;
    var resultOptionSelected = getActiveList().selectedIndex;
    
    switch(tab) {
    case 'ata1':
        searchText = document.getElementById("txtBilagaila").value;
        addWildcardChecked = document.getElementById("chkErantsi").checked;
        defChecked = document.getElementById("radio_tes").checked;
        langOption = document.getElementById("selectHizkuntza").selectedIndex;
        knowledgeOption = document.getElementById("selectAlorra").selectedIndex;
        break;
    case 'ata2':
    case 'ata3':
        knowledgeOption = document.getElementById("selectAlorra").selectedIndex;
        break;
    case 'ata4':
        break;
    }
    
    var appState = new ApplicationState(tab, searchText, addWildcardChecked, langOption, knowledgeOption, defChecked, resultOptionSelected, resultPageToShow, imagesPerPage, keyToShow);
    dojo.back.addToHistory(appState);
}

//zerbitzarira deiak:
searchTerms = function(term, def, lang, usg, fuzzy) {
    request = {'action': 'searchTerms', 'term': term, 'term': term, 'definition': def, 'lang': lang, 'usg': usg, 'fuzzy': fuzzy};
    response = []
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

searchImages = function(usg) {
    request = {'action': 'searchImages', 'usg': usg};
    response = []
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

searchArticles = function(usg) {
    request = {'action': 'searchArticles', 'usg': usg};
    response = []
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

searchAnnexes = function() {
    request = {'action': 'searchAnnexes'};
    response = []
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

retrieveRandomTerm = function() {
    request = {'action': 'retrieveRandomTerm'};
    response = []
    dojo.xhrGet({
        preventCache: true,
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

retrieveRandomImages = function() {
    request = {'action': 'retrieveRandomImages'};
    response = []
    dojo.xhrGet({
        preventCache: true,
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

retrieveRandomArticles = function() {
    request = {'action': 'retrieveRandomArticles'};
    response = []
    dojo.xhrGet({
        preventCache: true,
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

retrieveTerm = function(key, term) {
    request = {'action': 'retrieveTerm', 'key': key, 'term': term};
    response = ''
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = data; },
        handleAs: "text",
        content: request
    });
    
    return response;
}

retrieveImages = function(key, usg) {
    request = {'action': 'retrieveImages', 'key': key, 'usg': usg};
    response = []
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = eval(data); },
        handleAs: "text",
        content: request
    });
    
    return response;
}

retrieveArticles = function(key) {
    request = {'action': 'retrieveArticles', 'key': key};
    response = ''
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = data; },
        handleAs: "text",
        content: request
    });
    
    return response;
}

retrieveAnnexes = function() {
    request = {'action': 'retrieveAnnexes'};
    response = ''
    dojo.xhrGet({
        url: "api/search",
        sync: true,
        load: function (data) { response = data; },
        handleAs: "text",
        content: request
    });
    
    return response;
}

//funtzio lagungarriak
function getActiveList() {
    if (document.getElementById("selectEmaitza").style.display != 'none') {
        return document.getElementById("selectEmaitza");
    }
    else {
        return document.getElementById("selectZuzenketa");
    }
}

function updatelist(entries, entryList, selectedIndex) {
    var selectIndex = (selectedIndex) ? selectedIndex : 0;
    if (entries) {
        for (var i = 0; i < entries.length; ++i) {
            entryList.options[i] = new Option(entries[i].cleanedTerm, entries[i].termId + "#" + entries[i].term, (i == selectIndex), (i == selectIndex));

            if (i == selectIndex) {
                current_term = entries[i].term;
                current_termkey = entries[i].termId;
                doShowDocumentOfKey(entries[i].termId, entries[i].term);
            }
        }
    }
    
    return entryList.options.length;
}

function updateImagelist(entries, entryList, resultPageToShow, imagesPerPage, selectedIndex) {
    var selectIndex = (selectedIndex) ? selectedIndex : 0;
    if (entries) {
        
        for (var i = 0; i < entries.length; ++i) {
            entryList.options[i] = new Option(entries[i].cleanedTerm, entries[i].termId + "#" + entries[i].term, (i == selectIndex));

            if (i == selectIndex) {
                current_term = entries[i].term;
                current_termkey = entries[i].termId;
         
                doShowSelectedTermsImages(entries[i].termId, entries[i].term, resultPageToShow, imagesPerPage);
            }
        }
    }
    
    return entryList.options.length;
}

function updateArticlelist(entries, entryList, resultPageToShow, imagesPerPage, selectedIndex) {
    var selectIndex = (selectedIndex) ? selectedIndex : 0;
    if (entries) {
        
        for (var i = 0; i < entries.length; ++i) {
            entryList.options[i] = new Option(entries[i].title, entries[i].url, (i == selectIndex));
        
            if (i == selectIndex) {
                current_term = entries[i].title;
                current_termkey = entries[i].url;
                doShowSelectedTermsArticles(entries[i].url);
            }
        }
    }
    
    return entryList.options.length;
}

function updateAnnexList(entries, entryList, selectedIndex) {
    var selectIndex = (selectedIndex) ? selectedIndex : 0;
    if (entries) {
        for (var i = 0; i < entries.length; ++i) {
            entryList.options[i] = new Option(entries[i].text, entries[i].id, (i == selectIndex), (i == selectIndex));
        }
    }
    
    return entryList.options.length;
}

function updateAlorraList(entries) {
    var selectIndex = 0;
    var list = document.getElementById('selectAlorra');
    if (entries) {
        for (var i = 0; i < entries.length; ++i) {
            list.options[i] = new Option(entries[i].text, entries[i].id, (i == selectIndex), (i == selectIndex));
        }
    }
    
    return list.options.length;
}

function getSearchTerm(searchTerm) {
    var query = '';
    
    if (searchTerm)
        query = searchTerm;
    else
        query = document.getElementById("txtBilagaila").value.replace(/^\s+|\s+$/g, '').toLowerCase();
    
    var mustAddWildcard = document.getElementById("chkErantsi").checked;
    
    if (mustAddWildcard && (query.length > 0) && ('%' != query.charAt(query.length - 1)))
        query = query + '%';
    
    return query;
}

function emptyResultLists() {
    document.getElementById("selectEmaitza").options.length = 0;
    document.getElementById("selectZuzenketa").options.length = 0;
    fillDiv('');
}

function showResultPage(pageToShow, imagesPerPage) {
    doShowResultPage(pageToShow, imagesPerPage);
    saveApplicationState(pageToShow, imagesPerPage, current_termkey);
}

function doShowResultPage(pageToShow, imagesPerPage) {
    var resultList = current_termimages;
    var term = current_term;
    var lastPage = Math.ceil(resultList.length / imagesPerPage);
    var startIdx = (pageToShow - 1) * imagesPerPage;
    var endIdx = startIdx + imagesPerPage;
    var html = '<h2 class="sarrera" title="sarrera">' + term + '</h2><div class="irudiak">';
    
    var image;
    for (var i = startIdx; (i < endIdx) && i < resultList.length; i++) {
        html = html + resultList[i].content;
    }
    
    //nabigazio barraren sorkuntza
    html = html + '</div><div id="irudi-nab"><ol>';
    html = html + '<li class="gezia"><a href="javascript:showResultPage(' + (pageToShow > 1 ? pageToShow - 1 : 1)  + ', ' + imagesPerPage + ')"><img src="irudiak/iko_gezia-atzera.gif" alt="aurrekoa" /></a></li>';
        
    for (var i = 1; i <= lastPage; i++) {
        html = html + '<li';
        
        if (i == pageToShow) {
            html = html + ' class="on"';
        }
        
        html = html + '><a href="javascript:showResultPage(' + i + ', ' + imagesPerPage + ')">' + i + "</a></li>";
    }            

    html = html + '<li class="gezia"><a href="javascript:showResultPage(' + (pageToShow < lastPage ? pageToShow + 1 : lastPage)  + ', ' + imagesPerPage + ')"><img src="irudiak/iko_gezia-aurrera.gif" alt="hurrengoa" /></a></li>';
    html = html + '</ol></div>';
    
    //inprimatzeko botoiak
    html = html + '<ul id="menu_3"><li class="bot_inprimatu"><a href="javascript:window.print()" title="Inprimatu"><span>Inprimatu</span></a></li></ul>';
    
    fillDiv(html);
}

function showSelectedTermsImages(key, term) {
    
    if (key) {
        current_termkey = key;
        current_term = term;
        doShowSelectedTermsImages(key, term, 1, 8);
        saveApplicationState(1, 8, key);
    }
}

function doShowSelectedTermsImages(key, term, pageIndexToShow, imagesPerPage) {
    
    if (key) {
        var queryUsg = document.getElementById("selectAlorra").value;
        current_termimages = retrieveImages(key, queryUsg);
        doShowResultPage(pageIndexToShow, imagesPerPage);
    }
}

function showSelectedTermsArticles(key, term) {
    
    if (key) {
        current_termkey = key;
        current_term = term;
        doShowSelectedTermsArticles(key);
        saveApplicationState(0, 1, key);
    }
}

function doShowSelectedTermsArticles(key) {
    
    if (key) {
        var html = retrieveArticles(key);
        //var term = current_term;

        if (html.length > 0){ 
            fillDiv(html + '<div id="irudi-nab2"><ul><li><a href="javascript:window.history.back()">Itzuli</a></li></ul></div><ul id="menu_3"><li class="bot_inprimatu"><a href="javascript:window.print()" title="Inprimatu"><span>Inprimatu</span></a></li></ul>');
        }
        else {
            displayMessage("Ez du artikulurik aurkitu");
        }
    }
}

function doShowAnnexOfKey(annexId) {
    goToSection(annexId);
}

function showTermArticle(index) {
    doShowTermArticle(index);
    saveApplicationState(index, 1, current_termkey);
}

function doShowTermArticle(index) {
    var resultList = current_termimages;
    var term = current_term;
    var html= "";
    if (index == 0) {
        html= resultList[0].replace(/<\/p>/i,'</p><p class="bigarrena"><a href="javascript:showTermArticle(1)">Bigarren artikulua</a></p>');
    }
    else {
        html= resultList[1].replace(/<\/p>/i,'</p><p class="lehenengoa"><a href="javascript:showTermArticle(0)">Lehenengo artikulua</a></p>');
    }
    
    html = html + '<div id="irudi-nab2"><ul><li><a href="javascript:window.history.back()">Itzuli</a></li></ul></div><ul id="menu_3"><li class="bot_inprimatu"><a href="javascript:window.print()" title="Inprimatu"><span>Inprimatu</span></a></li></ul>';
    fillDiv(html);
}

function doShowDocumentOfKey(key, term) {
    var html = retrieveTerm(key, term); //hemen egin det aldaketa!!!!!
    fillDiv(html);
    
    if ('laguntza' == key) {
        document.getElementById('emaitza').className = 'laguntza';
    }
    else {
        document.getElementById('emaitza').className = '';
    }
    
    if (document.getElementsByTagName("body")[0].id != 'ata3')
    {
        if (key.match("xhtml$")) {
            document.getElementsByTagName("body")[0].className = 'artikulua';
        }
        else {
            document.getElementsByTagName("body")[0].className = '';
        }
    }
}

function showTermEntryOf(key, term) {
    current_term = term;
    current_termkey = key;
    doShowDocumentOfKey(key, term);
    saveApplicationState(1, 0, key);
}

function showImage(image) {
    //current_termkey = image;
    doShowDocumentOfKey(image, current_term);
    saveApplicationState(1, 8, image);
}

function showArticle(article) {
    //current_termkey = article;
    doShowDocumentOfKey(article, current_term);
    saveApplicationState(1, 1, article);
}

function showAnnexOf(annexId) {
    doShowAnnexOfKey(annexId);
    saveApplicationState(1, 0, annexId);
}
function fillDiv(html) {
    var theDiv = document.getElementById("emaitza");
    theDiv.innerHTML = html;
}

function makeFragmentVisible(name) {
    //Dojo-ren back funtzioa kontrolatzekoarekin ez du ondoegi egiten... horregatik erabili da scrollIntoView
    //window.location.hash = name;
    var fragmentElement = document.getElementsByName(name);
    if (fragmentElement.length > 0) {
        document.getElementsByName(name)[0].scrollIntoView(true);
    }
}

function goToSection(section) {
    var sectionElement = document.getElementById(section);
    if (sectionElement) {
        sectionElement.scrollIntoView(true);
    }
}

function displayMessage(msg) {
    var formattedMsg = '<p class="mezu">' + msg + '</p>';
    fillDiv(formattedMsg);
}

function createRandomLowerCaseLetter() {
    return String.fromCharCode(97 + Math.round(Math.random() * 25));
}

//bilaketa funtzioak
function doInitialSearch(key, term) {
    emptyResultLists();
    if ((!key || key.length == 0) && (!term || term.length == 0)) {
        displayMessage('Bilatzen...');
        var entries = retrieveRandomTerm();
        
        if (!entries || (0 == entries.length)) {
            hideDidYouMeanControl();
            displayMessage('Ez dago horrelako hiztegi-unitaterik');
        }
        else {
            hideDidYouMeanControl();
            updatelist(entries, document.getElementById("selectEmaitza"), 0);
        }
    }
    else if (key && key.length > 0 && term && term.length > 0) {
        hideDidYouMeanControl();
        emptyResultLists();
        var entryList = document.getElementById("selectEmaitza");
        entryList.options[0] = new Option(term.replace(/<[^>]+>/g, ''), key + '#' + term, true);
        doShowDocumentOfKey(key, term);
    }
    else {
        hideDidYouMeanControl();
        displayMessage('Hemen agertuko da emaitza');
    }
}

function doBasicSearch(selectedIndex) {
    var query = getSearchTerm();
    var queryEntry = document.getElementById("radio_ter").checked ? query : '';
    var queryDef = document.getElementById("radio_tes").checked ? query : '';
    var queryLang = document.getElementById("selectHizkuntza").value;
    var queryUsg = document.getElementById("selectAlorra").value;
    
    if (queryEntry.length > 0 || queryLang.length > 0 || queryUsg.length > 0) {
        emptyResultLists();
        displayMessage('Bilatzen...');
        var entries = searchTerms(queryEntry, queryDef, queryLang, queryUsg, false, false, false);
        
        if (!entries || (0 == entries.length)) {
            if (queryEntry.length > 0)
                entries = searchTerms(queryEntry, "", queryLang, queryUsg, false, false, true);
            
            if (!entries || (0 == entries.length)) {
                hideDidYouMeanControl();
                displayMessage('Ez dago horrelako terminorik');
            }
            else {
                showDidYouMeanControl();
                updatelist(entries, document.getElementById("selectZuzenketa"), selectedIndex);
            }
        }
        else {
            hideDidYouMeanControl();
            updatelist(entries, document.getElementById("selectEmaitza"), selectedIndex);
        }
        
        searchCounter++;
    }
    
    return false;
}

function doInitialImageSearch(key, term) {
    emptyResultLists();
    if ((!key || key.length == 0) && (!term || term.length == 0)) {
        displayMessage('Bilatzen...');
        var entries = retrieveRandomImages();
        
        if (!entries || (0 == entries.length)) {
            hideDidYouMeanControl();
            displayMessage('Ez dago horrelako irudirik');
        }
        else {
            hideDidYouMeanControl();
            updateImagelist(entries, document.getElementById("selectEmaitza"), 1, 8, 0);
        }
    }
    else if (key && key.length > 0 && term && term.length > 0) {
        hideDidYouMeanControl();
        emptyResultLists();
        
        var entryList = document.getElementById("selectEmaitza");
        entryList.options[0] = new Option(term.replace(/<[^>]+>/g, ''), key + '#' + term, true);
        doShowSelectedTermsImages(key, term, 1, 8);
    }
    else {
        hideDidYouMeanControl();
        displayMessage('Hemen agertuko da emaitza');
    }
}

function doImageSearch(resultPageToShow, imagesPerPage, selectedIndex) {
    //var query = getSearchTerm();
    var queryUsg = document.getElementById("selectAlorra").value;
    emptyResultLists();
    displayMessage('Bilatzen...');
    
    var entries = searchImages(queryUsg);
    
    if (!entries || (0 == entries.length)) {
        entries = searchImages(queryUsg);
        
        if (!entries || (0 == entries.length)) {
            hideDidYouMeanControl();
            displayMessage('Ez dago horrelako irudirik');
        }
        else {
            showDidYouMeanControl();
            updateImagelist(entries, document.getElementById("selectZuzenketa"), resultPageToShow, imagesPerPage, selectedIndex);
        }
    }
    else {
        hideDidYouMeanControl();
        updateImagelist(entries, document.getElementById("selectEmaitza"), resultPageToShow, imagesPerPage, selectedIndex);
    }
    
    searchCounter++;
    return false;
}

function doInitialAnnexSearch() {
    emptyResultLists();
    displayMessage('Bilatzen...');
    updateAnnexList(searchAnnexes(), document.getElementById("selectEmaitza"), 0);
    document.getElementById("selectEmaitza").selectedIndex = 0;
    var html = retrieveAnnexes();
    fillDiv(html);
    doShowAnnexOfKey(document.getElementById("selectEmaitza").value);
    return false;
}

function doInitialArticleSearch(key, term) {
    emptyResultLists();
    if ((!key || key.length == 0) && (!term || term.length == 0)) {
        displayMessage('Bilatzen...');
        var entries = retrieveRandomArticles();
        
        if (!entries || (0 == entries.length)) {
            hideDidYouMeanControl();
            displayMessage('Ez dago horrelako irudirik');
        }
        else {
            hideDidYouMeanControl();
            updateArticlelist(entries, document.getElementById("selectEmaitza"), 0);
        }
    }
    else if (key && key.length > 0 && term && term.length > 0) {
        hideDidYouMeanControl();
        emptyResultLists();
        
        var entryList = document.getElementById("selectEmaitza");
        entryList.options[0] = new Option(term, key, true);
        doShowSelectedTermsArticles(key);
    }
    else {
        hideDidYouMeanControl();
        displayMessage('Hemen agertuko da emaitza');
    }
}

function doArticleSearch(resultPageToShow, imagesPerPage, selectedIndex) {
    //var query = getSearchTerm();
    var queryUsg = document.getElementById("selectAlorra").value;
    
    emptyResultLists();
    displayMessage('Bilatzen...');
    
    var entries = searchArticles(queryUsg);
    
    if (!entries || (0 == entries.length)) {
        entries = searchArticles(queryUsg);
        
        if (!entries || (0 == entries.length)) {
            hideDidYouMeanControl();
            displayMessage('Ez dago horrelako artikulurik');
        }
        else {
            showDidYouMeanControl();
            updateArticlelist(entries, document.getElementById("selectZuzenketa"), resultPageToShow, imagesPerPage, selectedIndex);
        }
    }
    else {
        hideDidYouMeanControl();
        updateArticlelist(entries, document.getElementById("selectEmaitza"), resultPageToShow, imagesPerPage, selectedIndex);
    }
    
    searchCounter++;
    return false;
}

function hideDidYouMeanControl() {
    document.getElementById("esan_nahi").style.display = 'none';
    document.getElementById("selectZuzenketa").style.display = 'none';
    
    document.getElementById("label_emaitza").style.display = 'block';
    document.getElementById("selectEmaitza").style.display = 'block';
}

function showDidYouMeanControl() {
    document.getElementById("esan_nahi").style.display = 'block';
    document.getElementById("selectZuzenketa").style.display = 'block';
    
    document.getElementById("label_emaitza").style.display = 'none';
    document.getElementById("selectEmaitza").style.display = 'none';
}

function initSearchValues() {
    document.getElementById('txtBilagaila').value = '';
    document.getElementById("chkErantsi").checked = true;
    document.getElementById("radio_ter").checked = true;
    document.getElementById("selectHizkuntza").selectedIndex = 0;
    document.getElementById("selectAlorra").selectedIndex = 0;
    searchCounter = 0;
}

function displayBasicSearch() {
    document.getElementsByTagName("body")[0].id = 'ata1';
    document.getElementsByTagName("body")[0].className = '';
    document.getElementById('bilagailak').style.display = 'block';
    document.getElementById('bilagailaEremuak').style.display = 'block';
    document.getElementById('selektoreak').style.display = 'block';
    document.getElementById('labelAlorrak').style.display = 'block';
    document.getElementById('labelHizkuntza').style.display = 'block';
    document.getElementById('non_bilatu').style.display = 'block';
    document.getElementById('txtBilagaila').focus();
    updateAlorraList([{'id':'','text':'Edozein'}, {'id':'Abel.','text':'Abeltzaintza'}, {'id':'Aeron.','text':'Aeronautika'}, {'id':'Albait.','text':'Albaitaritza'}, {'id':'Anat.','text':'Anatomia'}, {'id':'Antr.','text':'Antropologia'}, {'id':'Arg.','text':'Argazkigintza'}, {'id':'Arkit.','text':'Arkitektura'}, {'id':'Arm.','text':'Armagintza'}, {'id':'Arr.','text':'Arrantza'}, {'id':'Astron.','text':'Astronomia'}, {'id':'Astronaut.','text':'Astronautika'}, {'id':'Autom.','text':'Automobilgintza'}, {'id':'Basog.','text':'Basogintza'}, {'id':'Biokim.','text':'Biokimika'}, {'id':'Biol.','text':'Biologia'}, {'id':'Bot.','text':'Botanika'}, {'id':'Ekol.','text':'Ekologia'}, {'id':'Elektron.','text':'Elektronika'}, {'id':'Elik.','text':'Elikagaigintza'}, {'id':'Eraik.','text':'Eraikuntza'}, {'id':'Estat.','text':'Estatistika'}, {'id':'Fis.','text':'Fisika'}, {'id':'Fisiol.','text':'Fisiologia'}, {'id':'Genet.','text':'Genetika'}, {'id':'Geogr.','text':'Geografia'}, {'id':'Geol.','text':'Geologia'}, {'id':'Inform.','text':'Informatika'}, {'id':'Ingur.','text':'Ingurumena'}, {'id':'Itsas.','text':'Itsasoa'}, {'id':'Kim.','text':'Kimika'}, {'id':'Log.','text':'Logika'}, {'id':'Mar.','text':'Marrazkigintza'}, {'id':'Mat.','text':'Matematika'}, {'id':'Mater.','text':'Materialak'}, {'id':'Meatz.','text':'Meatzaritza'}, {'id':'Med.','text':'Medikuntza'}, {'id':'Metal.','text':'Metalurgia'}, {'id':'Meteorol.','text':'Meteorologia'}, {'id':'Mikol.','text':'Mikologia'}, {'id':'Mikrob.','text':'Mikrobiologia'}, {'id':'Miner.','text':'Mineralogia'}, {'id':'Nekaz.','text':'Nekazaritza'}, {'id':'Orok.','text':'Orokorra'}, {'id':'Ozean.','text':'Ozeanografia'}, {'id':'Paleont.','text':'Paleontologia'}, {'id':'Psikiatr.','text':'Psikiatria'}, {'id':'Teknol.','text':'Teknologia'}, {'id':'Teknol. elektr.','text':'Teknologia elektrikoa'}, {'id':'Teknol. mek.','text':'Teknologia mekanikoa'}, {'id':'Telekom.','text':'Telekomunikazioak'}, {'id':'Tren.','text':'Trenbidea'}, {'id':'Zool.','text':'Zoologia'}]);
    document.getElementById('bot_bilatu').onclick = function() {
        doBasicSearch(0);
        saveApplicationState(1, 0, getActiveList().value.split("#")[0]);
        return false;
    };
    //IE-rako
    document.getElementById('bilagailak').action = "javascript:document.getElementById('bot_bilatu').click()";
    document.getElementById('label_emaitza').innerHTML = 'Emaitza';
    document.getElementById('selectEmaitza').onchange = function() { showTermEntryOf(this.options[this.selectedIndex].value.split("#")[0], this.options[this.selectedIndex].value.split("#")[1]); };
    document.getElementById('selectZuzenketa').onchange = function() { showTermEntryOf(this.options[this.selectedIndex].value.split("#")[0], this.options[this.selectedIndex].value.split("#")[1]); };
    
    initSearchValues();
}

function doShowBasicSearch() {
    displayBasicSearch();
    doInitialSearch();
}

function displayImageSearch() {
    document.getElementsByTagName("body")[0].id = 'ata2';
    document.getElementsByTagName("body")[0].className = '';
    document.getElementById('bilagailak').style.display = 'block';
    document.getElementById('bilagailaEremuak').style.display = 'none';
    document.getElementById('selektoreak').style.display = 'block';
    document.getElementById('labelAlorrak').style.display = 'block';
    document.getElementById('labelHizkuntza').style.display = 'none';
    document.getElementById('non_bilatu').style.display = 'none';
    updateAlorraList([{'id':'','text':'Edozein'}, {'id':'Abel.','text':'Abeltzaintza'}, {'id':'Aeron.','text':'Aeronautika'}, {'id':'Albait.','text':'Albaitaritza'}, {'id':'Anat.','text':'Anatomia'}, {'id':'Antr.','text':'Antropologia'}, {'id':'Arg.','text':'Argazkigintza'}, {'id':'Arkit.','text':'Arkitektura'}, {'id':'Arm.','text':'Armagintza'}, {'id':'Arr.','text':'Arrantza'}, {'id':'Astron.','text':'Astronomia'}, {'id':'Astronaut.','text':'Astronautika'}, {'id':'Autom.','text':'Automobilgintza'}, {'id':'Basog.','text':'Basogintza'}, {'id':'Biokim.','text':'Biokimika'}, {'id':'Biol.','text':'Biologia'}, {'id':'Bot.','text':'Botanika'}, {'id':'Ekol.','text':'Ekologia'}, {'id':'Elektron.','text':'Elektronika'}, {'id':'Elik.','text':'Elikagaigintza'}, {'id':'Eraik.','text':'Eraikuntza'}, {'id':'Estat.','text':'Estatistika'}, {'id':'Fis.','text':'Fisika'}, {'id':'Fisiol.','text':'Fisiologia'}, {'id':'Genet.','text':'Genetika'}, {'id':'Geogr.','text':'Geografia'}, {'id':'Geol.','text':'Geologia'}, {'id':'Inform.','text':'Informatika'}, {'id':'Ingur.','text':'Ingurumena'}, {'id':'Itsas.','text':'Itsasoa'}, {'id':'Kim.','text':'Kimika'}, {'id':'Log.','text':'Logika'}, {'id':'Mar.','text':'Marrazkigintza'}, {'id':'Mat.','text':'Matematika'}, {'id':'Mater.','text':'Materialak'}, {'id':'Meatz.','text':'Meatzaritza'}, {'id':'Med.','text':'Medikuntza'}, {'id':'Metal.','text':'Metalurgia'}, {'id':'Meteorol.','text':'Meteorologia'}, {'id':'Mikol.','text':'Mikologia'}, {'id':'Mikrob.','text':'Mikrobiologia'}, {'id':'Miner.','text':'Mineralogia'}, {'id':'Nekaz.','text':'Nekazaritza'}, {'id':'Orok.','text':'Orokorra'}, {'id':'Ozean.','text':'Ozeanografia'}, {'id':'Paleont.','text':'Paleontologia'}, {'id':'Psikiatr.','text':'Psikiatria'}, {'id':'Teknol.','text':'Teknologia'}, {'id':'Teknol. elektr.','text':'Teknologia elektrikoa'}, {'id':'Teknol. mek.','text':'Teknologia mekanikoa'}, {'id':'Telekom.','text':'Telekomunikazioak'}, {'id':'Tren.','text':'Trenbidea'}, {'id':'Zool.','text':'Zoologia'}]);
    //document.getElementById('selectAlorra').focus();
    document.getElementById('bot_bilatu').onclick = function() {
       doImageSearch(1, 8, 0);
       saveApplicationState(1, 8, getActiveList().value.split("#")[0]);
       return false;
    };
    //IE-rako
    document.getElementById('bilagailak').action = "javascript:document.getElementById('bot_bilatu').click()";
    document.getElementById('label_emaitza').innerHTML = 'Irudien zerrenda';
    document.getElementById('selectEmaitza').onchange = function() { showSelectedTermsImages(this.options[this.selectedIndex].value.split("#")[0], this.options[this.selectedIndex].value.split("#")[1]); };
    document.getElementById('selectZuzenketa').onchange = function() { showSelectedTermsImages(this.options[this.selectedIndex].value.split("#")[0], this.options[this.selectedIndex].value.split("#")[1]); };
    
    initSearchValues();
}

function doShowImageSearch() {
    displayImageSearch();
    doInitialImageSearch();
}

function displayArticleSearch() {
    document.getElementsByTagName("body")[0].id = 'ata3';
    document.getElementsByTagName("body")[0].className = 'artikulua';
    document.getElementById('bilagailak').style.display = 'block';
    document.getElementById('bilagailaEremuak').style.display = 'none';
    document.getElementById('selektoreak').style.display = 'block';
    document.getElementById('labelAlorrak').style.display = 'block';
    document.getElementById('labelHizkuntza').style.display = 'none';
    document.getElementById('non_bilatu').style.display = 'none';
    updateAlorraList([{'id':'','text':'Edozein'}, {'id':'Abel.','text':'Abeltzaintza'}, {'id':'Aeron.','text':'Aeronautika'}, {'id':'Albait.','text':'Albaitaritza'}, {'id':'Anat.','text':'Anatomia'}, {'id':'Antr.','text':'Antropologia'}, {'id':'Arg.','text':'Argazkigintza'}, {'id':'Arkit.','text':'Arkitektura'}, {'id':'Arr.','text':'Arrantza'}, {'id':'Astron.','text':'Astronomia'}, {'id':'Astronaut.','text':'Astronautika'}, {'id':'Autom.','text':'Automobilgintza'}, {'id':'Biokim.','text':'Biokimika'}, {'id':'Biol.','text':'Biologia'}, {'id':'Bot.','text':'Botanika'}, {'id':'Ekol.','text':'Ekologia'}, {'id':'Elektron.','text':'Elektronika'}, {'id':'Elik.','text':'Elikagaigintza'}, {'id':'Eraik.','text':'Eraikuntza'}, {'id':'Estat.','text':'Estatistika'}, {'id':'Fis.','text':'Fisika'}, {'id':'Fisiol.','text':'Fisiologia'}, {'id':'Genet.','text':'Genetika'}, {'id':'Geol.','text':'Geologia'}, {'id':'Inform.','text':'Informatika'}, {'id':'Ingur.','text':'Ingurumena'}, {'id':'Kim.','text':'Kimika'}, {'id':'Mat.','text':'Matematika'}, {'id':'Mater.','text':'Materialak'}, {'id':'Med.','text':'Medikuntza'}, {'id':'Metal.','text':'Metalurgia'}, {'id':'Meteorol.','text':'Meteorologia'}, {'id':'Mikol.','text':'Mikologia'}, {'id':'Mikrob.','text':'Mikrobiologia'}, {'id':'Miner.','text':'Mineralogia'}, {'id':'Nekaz.','text':'Nekazaritza'}, {'id':'Orok.','text':'Orokorra'}, {'id':'Ozean.','text':'Ozeanografia'}, {'id':'Paleont.','text':'Paleontologia'}, {'id':'Psikiatr.','text':'Psikiatria'}, {'id':'Teknol.','text':'Teknologia'}, {'id':'Teknol. elektr.','text':'Teknologia elektrikoa'}, {'id':'Teknol. mek.','text':'Teknologia mekanikoa'}, {'id':'Telekom.','text':'Telekomunikazioak'}, {'id':'Tren.','text':'Trenbidea'}, {'id':'Zool.','text':'Zoologia'}]);
    //document.getElementById('selectAlorra').focus();
    document.getElementById('bot_bilatu').onclick = function() {
       doArticleSearch(0, 1, 0);
       saveApplicationState(0, 1, getActiveList().value);
       return false;
    };
    //IE-rako
    document.getElementById('bilagailak').action = "javascript:document.getElementById('bot_bilatu').click()";
    document.getElementById('label_emaitza').innerHTML = 'Artikuluen zerrenda';
    document.getElementById('selectEmaitza').onchange = function() { showSelectedTermsArticles(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text); };
    document.getElementById('selectZuzenketa').onchange = function() { showSelectedTermsArticles(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text); };
    
    initSearchValues();
}

function doShowArticleSearch() {
    displayArticleSearch();
    doInitialArticleSearch();
}

function displayAnnex() {
    document.getElementsByTagName("body")[0].id = 'ata4';
    document.getElementsByTagName("body")[0].className = '';
    document.getElementById('bilagailak').style.display = 'none';
    document.getElementById('bilagailaEremuak').style.display = 'none';
    document.getElementById('selektoreak').style.display = 'none';
    document.getElementById('bot_bilatu').onclick = '';
    document.getElementById('label_emaitza').innerHTML = 'Grafikoen zerrenda';
    document.getElementById('selectEmaitza').onchange = function() { showAnnexOf(this.options[this.selectedIndex].value);};
    document.getElementById('selectZuzenketa').onchange = '';
    
    initSearchValues();
}

function displayInfoTab() {
    document.getElementsByTagName("body")[0].id = 'ata5';
    document.getElementsByTagName("body")[0].className = '';
    document.getElementById('bilagailak').style.display = 'none';
    document.getElementById('bilagailaEremuak').style.display = 'none';
    document.getElementById('selektoreak').style.display = 'none';
    document.getElementById('non_bilatu').style.display = 'none';
    document.getElementById('bot_bilatu').onclick = '';

    //IE-rako
    document.getElementById('bilagailak').action = "#";
    document.getElementById('label_emaitza').innerHTML = '';
    document.getElementById('selectEmaitza').onchange = '';
    document.getElementById('selectZuzenketa').onchange = '';
    
    initSearchValues();
    emptyResultLists();
}

function doShowInfoTab(key) {
    displayInfoTab();
    current_term = key;
    current_termkey = key;
    doShowDocumentOfKey(key, key);
}

function doShowAnnex() {
    displayAnnex();
    doInitialAnnexSearch();
}

function showAnnex() {
    doShowAnnex();
    saveApplicationState(1, 0, document.getElementById('selectEmaitza').value);
}
function showBasic() {
    doShowBasicSearch();
    saveApplicationState(1, 0, document.getElementById('selectEmaitza').value.split("#")[0]);
}

function showImages() {
    doShowImageSearch();
    saveApplicationState(1, 8, document.getElementById('selectEmaitza').value.split("#")[0]);
}

function showArticles() {
    doShowArticleSearch();
    saveApplicationState(1, 1, document.getElementById('selectEmaitza').value);
}

function showIntroduction() {
    doShowInfoTab('aurkezpena');
    saveApplicationState(1, 0, 'aurkezpena');
}

function showCredits() {
    doShowInfoTab('sortzaileak');
    saveApplicationState(1, 0, 'sortzaileak');
}

function showAbbreviations() {
    doShowInfoTab('laburdurak');
    saveApplicationState(1, 0, 'laburdurak');
}

function showHelp() {
    doShowInfoTab('laguntza');
    saveApplicationState(1, 0, 'laguntza');
}

