﻿/**
* Konstruktor
*/
var QueryBuilder = new function() {
}

/******************************************************************************
***                              Hauptfunktionen                            ***
******************************************************************************/

/**
* Fügt den angebenen Text in das Suchfeld ein
* @param string strText Der einzufügende Text
* @param boolean walkback Gibt an ob der Cursor zurück gesetzt wird oder nicht
*/
QueryBuilder.appendQuery = function(strText, walkback) {
    var obj = document.getElementById('words');

    if (obj != null) {
        // ---
        obj.focus();

        /* für Internet Explorer */
        if (typeof document.selection != 'undefined') {
            /* Einfügen des Formatierungscodes */
            var range = document.selection.createRange();
            var insText = range.text;
            range.text = strText;

            /* Anpassen der Cursorposition */
            range = document.selection.createRange();

            if (insText.length == 0) {
                if (walkback)
                    range.move('character', -2);
            }
            else {
                if (walkback)
                    range.moveStart('character', insText.length);
            }
            range.select();
        }

        /* für neuere auf Gecko basierende Browser */
        else if (typeof obj.selectionStart != 'undefined') {
            /* Einfügen des Formatierungscodes */
            var start = obj.selectionStart;
            var end = obj.selectionEnd;

            var insText = obj.value.substring(start, end);

            obj.value = obj.value.substr(0, start) + strText + obj.value.substr(end);

            /* Anpassen der Cursorposition */
            var pos;


            if (insText.length == 0)
                pos = start + strText.length;

            else
                pos = start + insText.length;

            obj.selectionStart = pos;

            if (walkback) {
                obj.selectionEnd = pos - 2;
            }
            else {
                obj.selectionEnd = pos;
            }

        }

        /* für die übrigen Browser */
        else {
            obj.value += strText;
        }

    }
}

/******************************************************************************
***                          Funktionen der Buttons                         ***
******************************************************************************/

/**
* Der Hilfe Button
*/
QueryBuilder.showHelp = function() {
    ShowHelp('QueryBuilderControl', 'querybuildercontrolhelp');
}

/**
* Der Reset Button
*/
QueryBuilder.reset = function() {
    var specialSearchDiv = $get('specialSearchContainer');
    var inputs = specialSearchDiv.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].type == 'text')
            inputs[i].value = '';
        else if (inputs[i].type == 'radio')
            inputs[i].checked = false;
    }
    QueryBuilder.collapseAllSpecialSearches('');
}

/**
* Der Schließen Button
*/
QueryBuilder.close = function() {
    entferneAktuelleSuchOption();
    var element = $get('QueryBuilderControl');
    if (element != null)
        element.style.display = 'none';
}

/**
* Blendet Spezialsuchen ein und aus
*/
QueryBuilder.deselectAllSpecialSearches = function() {
    var checkboxIds = new Array('chkap', 'chkadajur', 'chkimmdat', 'chklsk');

    for (var i = 0; i < checkboxIds.length; i++) {
        var checkbox = $get(checkboxIds[i]);

        if (checkbox == null)
            continue;

        if (checkbox.checked)
            checkbox.checked = false;
    }
}
QueryBuilder.collapseAllSpecialSearches = function(exceptId) {
    var chkContainerIds = new Array('chkapcontent', 'chkadajurcontent', 'chkimmdatcontent', 'chklskcontent');

    for (var i = 0; i < chkContainerIds.length; i++) {
        if (chkContainerIds[i] == exceptId)
            continue;

        var container = $get(chkContainerIds[i]);
        if (container == null)
            continue;

        if (container.style.display == 'block')
            container.style.display = 'none';
    }
}

QueryBuilder.toggleSpecialSearch = function(id, disableclose) {
    var content = document.getElementById('chk' + id + 'content');
    var checkbox = document.getElementById('chk' + id);

    if (content.style.display == 'none') {
        content.style.display = 'block';
        checkbox.checked = "checked"
    }
    else if (!disableclose) {
        content.style.display = 'none';
    }

    this.collapseAllSpecialSearches(content.id);
}

/******************************************************************************
***                              Hilfsmethoden                              ***
******************************************************************************/

/**
* Zeigt das Control erstmalig an
*/
QueryBuilder.init = function(anchorId) {
    var queryBuilder = $get('QueryBuilderControl');
    if (queryBuilder.children.length == 0)
        XmlLoader.loadXml('17', null, null, null, null, false, QueryBuilder.onLoadedXml, anchorId);
    else if (queryBuilder.style.display == 'none')
        queryBuilder.style.display = 'block';
    else
        queryBuilder.style.display = 'none';
    OptionenLayer.close();
    markiereAktuelleSuchOption(1);
}

/**
* Wird nach dem fertig ausgeführten Ajax-Request ausgeführt
*/
QueryBuilder.onLoadedXml = function(executor, eventArgs) {
    XmlLoader.onLoadedXml(executor, eventArgs);

    var queryBuilder = $get('QueryBuilderControl');
    if (queryBuilder != null) {
        if (queryBuilder.style.display == 'none')
            queryBuilder.style.display = 'block';
    }
    var specialSearchDiv = $get('specialSearchContainer');

    var inputlist = specialSearchDiv.getElementsByTagName("input");
    for (i = 0; i < inputlist.length; i++) {
        if (inputlist[i].type == 'text' && inputlist[i].value != '') {
            inputlist[i].disabled = false;
        }
    }

    var words = $get('words');
    words.disabled = false;

    if (words.attributes['autocomplete'] != null) {

        //LSK
        $("#lsktxtrgebiet").autocomplete('SuggestHandler.aspx?typ=rechtsgebiet', { selectFirst: false, delay: 250 });
        $("#lsktxtUrheber").autocomplete('SuggestHandler.aspx?typ=autor', { selectFirst: false, delay: 250 });
        $("#lsktxtgericht").autocomplete('SuggestHandler.aspx?typ=gericht', { selectFirst: false, delay: 250 });
        $("#lsktxtbehoerde").autocomplete('SuggestHandler.aspx?typ=behoerde', { selectFirst: false, delay: 250 });
        $("#lsktxtAZ").autocomplete('SuggestHandler.aspx?typ=az', { selectFirst: false, delay: 250 });
        $("#lsktxtnorm").autocomplete('SuggestHandler.aspx?typ=norm', { selectFirst: false, delay: 250 });
        $("#lsktxtparfundst").autocomplete('SuggestHandler.aspx?typ=lskfundst', { selectFirst: false, delay: 250 });

        //IMMDAT
        $("#immdattxtVerletzung").autocomplete('SuggestHandler.aspx?typ=immdatverletzung', { selectFirst: false, delay: 250 });
        $("#immdattxtImmdatNr").autocomplete('SuggestHandler.aspx?typ=immdatnr', { selectFirst: false, delay: 250 });
        $("#immdattxtImmdatBetrag").autocomplete('SuggestHandler.aspx?typ=immdatbetrag', { selectFirst: false, delay: 250 });
        $("#immdattxtgericht").autocomplete('SuggestHandler.aspx?typ=immdatgericht', { selectFirst: false, delay: 250 });
        //$("#immdattxtdatum").autocomplete('SuggestHandler.aspx?typ=immdatdatum', { selectFirst: false, delay: 250 });
        $("#immdattxtAZ").autocomplete('SuggestHandler.aspx?typ=immdataz', { selectFirst: false, delay: 250 });

        //AP
        $("#aptxtAPNorm").autocomplete('SuggestHandler.aspx?typ=apnorm', { selectFirst: false, delay: 250 });
        $("#aptxtSW").autocomplete('SuggestHandler.aspx?typ=apsw', { selectFirst: false, delay: 250 });
        $("#aptxtAPNr").autocomplete('SuggestHandler.aspx?typ=apnr', { selectFirst: false, delay: 250 });

        //ADAJUR
        $("#adajurtxtUrheber").autocomplete('SuggestHandler.aspx?typ=adajurautor', { selectFirst: false, delay: 250 });
        $("#adajurtxtgericht").autocomplete('SuggestHandler.aspx?typ=adajurgericht', { selectFirst: false, delay: 250 });        
        //$("#adajurtxtdatum").autocomplete('SuggestHandler.aspx?typ=adajurdatum', { selectFirst: false, delay: 250 });
        $("#adajurtxtAZ").autocomplete('SuggestHandler.aspx?typ=adajuraz', { selectFirst: false, delay: 250 });
        $("#adajurtxtDOKNR").autocomplete('SuggestHandler.aspx?typ=adajurnr', { selectFirst: false, delay: 250 });
        $("#adajurtxtnorm").autocomplete('SuggestHandler.aspx?typ=adajurnorm', { selectFirst: false, delay: 250 });
        $("#adajurtxtparfundst").autocomplete('SuggestHandler.aspx?typ=adajurfundst', { selectFirst: false, delay: 250 });
        $("#adajurtxtSWLSK").autocomplete('SuggestHandler.aspx?typ=adajursw', { selectFirst: false, delay: 250 });
    }
}
