/**
 * FMIS javaskript för klientsidan, AJAX-funktioner för sökflikar
 * Version: CVS $Id: ajax_tab.js,v 1.21 2009/10/07 12:59:05 niklas Exp $
 */


/*
 * Variabler för aktuell flik och koder för att ange flik i URL till sidan.
 * OBS: koder sätts i tabmacros.jxt
 */
var tab = null;
var TAB_SEARCH = null;
var TAB_SEARCH_RESULTS = null;
var TAB_SHOW_OBJECT = null;
var initialQueryString = null;


/**
 * Initiera flikar som valts genom direkt inpostad parameter.
 */
RAA.initTabs = function(e) {
    if (RAA.isSet(tab)) {
        if (tab == TAB_SEARCH_RESULTS) {
            RAA.searchFormQueryString = initialQueryString;
            RAA.updateSearchResultPanel(e, RAA.searchResultPage);
            if (objectId) {
                // visa objektflik i bakgrunden
                RAA.doUpdateShowObjectPanel(objectId, true);
            }
        } else if (tab == TAB_SHOW_OBJECT) {
            RAA.doUpdateShowObjectPanel(objectId);
            // ladda sökresultat i bakgrunden
            RAA.searchFormQueryString = initialQueryString;
            RAA.updateSearchResultPanel(e, RAA.searchResultPage, true, true);
        }
    }
}

/**
 * Visa och markera flik. Övriga flikhuvuden blir avmarkerade, men behåller
 * tidigare tillstånd som dold/synlig. Innehåll för aktuell flik visas, övriga döljs.
 * Uppdatera parameter för angivelse av aktuell flik som visas.
 *
 * @param e
 * @param tabBaseName Basnamn för flik, tex "searchTab".
 *
 * Antar att id för flikhuvud är tabBaseName + "Item", samt att id för
 * flikens container för innehåll är tabBaseName + "Container".
 *
 */
RAA.showTab = function(e, tabBaseName) {
    if (RAA.isSet(tabBaseName)) {

        var tabItemId = tabBaseName + 'Item';
        var tabContainerId = tabBaseName + 'Container';

        RAA.deselectTabItems(e);
        RAA.selectTabItem(e, tabItemId);

        RAA.hideTabContainers(e);
        RAA.showTabContainer(e, tabContainerId);
        // todo: generic?
        if (tabBaseName == "searchResultTab") {
            RAA.updateMapForSearchResultPanel();
        }
        if (tabBaseName == "showObjectTab") {
            RAA.updateMapForShowObjectPanel();
        }

        if (tabBaseName == 'searchTab') {
            tab = TAB_SEARCH;
        } else if (tabBaseName == 'searchResultTab') {
            tab = TAB_SEARCH_RESULTS;
        } else if (tabBaseName == 'showObjectTab') {
            tab = TAB_SHOW_OBJECT;
        }
    }
}

/**
 * Dölj flik (huvud och innehåll).
 *
 * @param e
 * @param tabBaseName Basnamn för flik, tex "searchTab".
 *
 * Antar att id för flikhuvud är tabBaseName + "Item", samt att id för
 * flikens container för innehåll är tabBaseName + "Container".
 */
RAA.hideTab = function(e, tabBaseName) {
    if (tabBaseName) {
        var tabItemId = tabBaseName + 'Item';
        var tabContainerId = tabBaseName + 'Container';
        RAA.addClass(e, tabItemId, 'hide');
        RAA.addClass(e, tabContainerId, 'hide');
    }
}

/**
 * Återställ flikar, dvs visa enbart sökfliken och rensa sökformuläret.
 */
RAA.resetTabs = function(e) {
    RAA.showTab(e, 'searchTab');
    RAA.hideTab(e, 'searchResultTab');
    RAA.hideTab(e, 'showObjectTab');
    RAA.clearSearchForm(e);
}

/**
 * Rensa sökformulär och återställ tillstånd för dropdown-menyer.
 */
RAA.clearSearchForm = function(e) {
    // #1538 - after login or direct URL/bookmark with form values we cannot
    // use form reset since we really want to clear all input fields
    var form = document.getElementById('searchTabForm');
    if (form) {
        try {
            form.textsearch.value = "";
            form.raa_number.value = "";

            form.county.value = "";
            form.municipality.value = "";
            form.cadastralUnit.value = "";

            form.province.value = "";
            form.parish.value = "";

            form.category.value = "";
            form.monumentType.value = "";
            form.propertyType.value = "";
            form.propertyValue.value = "";
            form.p_12.value = "";
            form.p_163.value = "";
            form.p_164.value = "";
            form.p_13.value = "";
            form.use_extent.value = false;
            form.p_710.value = "";

            if (form.rep_reg_ansvarig) form.rep_reg_ansvarig.value = "";
            if (form.rdo) form.rdo.value = "";
            if (form.rep_reg_regdatum) form.rep_reg_regdatum.value = "";
            if (form.rep_reg_organisation) form.rep_reg_organisation.value = "";
            if (form.iep_inventering_inventeringstyp) form.iep_inventering_inventeringstyp.value = "";
            if (form.iep_inventerarorg) form.iep_inventerarorg.value = "";
            if (form.iep_ansvarig) form.iep_ansvarig.value = "";
            if (form.ep_diarienummer) form.ep_diarienummer.value = "";
            if (form.erp_externid_id) form.erp_externid_id.value = "";
            if (form.crp_artefaktsamling_invnr) form.crp_artefaktsamling_invnr.value = "";
        } catch (e) {
            // last resort (code is not in synch with form)
            form.reset();
        }
    }
    RAA.disable("municipality");
    RAA.disable('cadastralUnit');
    RAA.disable('parish');
    RAA.enable('county');
    RAA.enable('province');
    RAA.doUpdateMonumentType('');
}

/**
 * Visar flik och gör den vald om inte dontSelect är sant.
 * TODO: borde byta namn till typ showTabItem
 */
RAA.selectTabItem = function(e, id, dontSelect) {
    RAA.removeClass(e, id, 'hide');
    RAA.removeClass(e, id, 'nada');
    if (!dontSelect) {
        RAA.addClass(e, id, 'selected');
    }
}

RAA.deselectTabItems = function(e) {
    RAA.removeClass(e, 'searchTabItem', 'selected');
    RAA.removeClass(e, 'searchResultTabItem', 'selected');
    RAA.removeClass(e, 'showObjectTabItem', 'selected');
    RAA.addClass(e, 'searchTabItem', 'nada');
    RAA.addClass(e, 'searchResultTabItem', 'nada');
    RAA.addClass(e, 'showObjectTabItem', 'nada');
}

RAA.showTabContainer = function(e, id) {
    RAA.removeClass(e, id, 'hide');
}

RAA.hideTabContainers = function(e) {
    RAA.addClass(e, 'searchTabContainer', 'hide');
    RAA.addClass(e, 'searchResultTabContainer', 'hide');
    RAA.addClass(e, 'showObjectTabContainer', 'hide');
}

// Lyssnare

YAHOO.util.Event.addListener("searchTab", "click", RAA.showTab, "searchTab");
YAHOO.util.Event.addListener("searchResultTab", "click", RAA.showTab, "searchResultTab");
YAHOO.util.Event.addListener("showObjectTab", "click", RAA.showTab, "showObjectTab");


// buttonTabSearch - starta sökning
RAA.initButtonTabSearch = function() {
    new YAHOO.widget.Button("buttonTabSearch");
    YAHOO.util.Event.addListener("buttonTabSearch", "click", RAA.newSearch);
}
// lägg till utseende och lyssnare så snart inlagd i DOM (anpassning för IE)
YAHOO.util.Event.onContentReady("buttonTabSearch", RAA.initButtonTabSearch);


// buttonTabReset - rensa flikar
RAA.initButtonTabReset = function() {
    new YAHOO.widget.Button("buttonTabReset");
    YAHOO.util.Event.addListener("buttonTabReset", "click", RAA.resetTabs);
}
// lägg till utseende och lyssnare så snart inlagd i DOM (anpassning för IE)
YAHOO.util.Event.onContentReady("buttonTabReset", RAA.initButtonTabReset);


// sökformulär - starta sökning vid tryck på enter i formuläret
RAA.runSearchOnEnter = function(e) {
    if (e.keyCode == 13) {
        RAA.newSearch(e);            // kör ajax-baserad sökning
        // blur på fält (främst för IE:s skull)
        var target = YAHOO.util.Event.getTarget(e);
        if (target) {
            target.blur();
        }
    }
}
YAHOO.util.Event.addListener("searchTabForm", "keydown", RAA.runSearchOnEnter);


// sidomladdning - ladda flik vald genom direkt inpostad parameter
YAHOO.util.Event.onDOMReady(RAA.initTabs);

